> comparison.
>
> Maybe we can do without any "keyword arguments" or "labeled function
> params" if we define a way to construct records in-place.
That sounds a lot cleaner to me.
> something like
> RECORD( 'Zdanek'::text AS name, 22::int AS age); -- like SELECT
> or
> RECORD( name 'Zdanek'::text, age 22::int); -- like CREATE TABLE/TYPE
> or
> RECORD(name, age) .... from sometable; -- get values & types from table
In most cases, you can just do this using SELECT without the need for
any special syntax. For example:
SELECT json(p) FROM person p;
SELECT json(p) FROM (SELECT first_name, last_name FROM person) p;
The only problem is that this doesn't work if you try to put the
select into the attribute list:
SELECT json(select first_name, last_name) FROM person p;
ERROR: syntax error at or near "select"
SELECT json((select first_name, last_name)) FROM person p;
ERROR: subquery must return only one column
Unfortunately this is a pretty common situation, because you might
easily want to do:
SELECT json((select first_name, last_name)), age FROM person p;
...and you are out of luck.
I'm not sure whether the ROW() syntax could possibly be extended to
address this problem. It doesn't seem to help in its present form.
> Then we could pass these records to any PL for processing with minimal
> confusion to programmer, and without introducing new concepts like
> "variadic argument position labels"
Amen.
...Robert
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
No comments:
Post a Comment