At 2012-01-15 11:08:05 -0500, and...@dunslane.net wrote: > > Here's an update that adds row_to_json, plus a bit more cleanup.
I've started reviewing this patch, but it'll take me a bit longer to go through json.c properly. Here are a few preliminary notes: 1. The patch has a lot of whitespace errors (primarily lines ending in whitespace), but applying with git apply --whitespace=fix isn't safe, because the test results need some (but not all) of those spaces. I applied the patch, backed out the changes to expected/json.out, and created the file from the patch, then removed the superfluous whitespace. 2. I bumped some function OIDs to avoid conflicts. 3. One documentation typo. Everything other than json.c (which I haven't read yet) looks fine (builds, passes tests). I've attached a patch covering the changes I made. More later. -- ams
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 4f8b35e..ce4c4f6 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -9626,7 +9626,7 @@ table2-mapping </indexterm> <para> - This section descripbes the functions that are available for creating + This section describes the functions that are available for creating JSON (see <xref linkend="datatype-json">) data. </para> diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index cdfa4cc..02c8679 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -4027,11 +4027,11 @@ DATA(insert OID = 323 ( json_recv PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 11 DESCR("I/O"); DATA(insert OID = 324 ( json_send PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 17 "114" _null_ _null_ _null_ _null_ json_send _null_ _null_ _null_ )); DESCR("I/O"); -DATA(insert OID = 3144 ( query_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 114 "25 16" _null_ _null_ _null_ _null_ query_to_json _null_ _null_ _null_ )); +DATA(insert OID = 3153 ( query_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s 2 0 114 "25 16" _null_ _null_ _null_ _null_ query_to_json _null_ _null_ _null_ )); DESCR("I/O"); -DATA(insert OID = 3145 ( array_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 114 "2277" _null_ _null_ _null_ _null_ array_to_json _null_ _null_ _null_ )); +DATA(insert OID = 3154 ( array_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 114 "2277" _null_ _null_ _null_ _null_ array_to_json _null_ _null_ _null_ )); DESCR("I/O"); -DATA(insert OID = 3146 ( row_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 114 "2249" _null_ _null_ _null_ _null_ row_to_json _null_ _null_ _null_ )); +DATA(insert OID = 3155 ( row_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s 1 0 114 "2249" _null_ _null_ _null_ _null_ row_to_json _null_ _null_ _null_ )); DESCR("I/O"); /* uuid */ diff --git a/src/test/regress/expected/json.out b/src/test/regress/expected/json.out index b975d72..1984106 100644 --- a/src/test/regress/expected/json.out +++ b/src/test/regress/expected/json.out @@ -278,11 +278,11 @@ SELECT query_to_json('select x as b, x * 2 as c from generate_series(1,3) x',tru (1 row) SELECT query_to_json(' - SELECT $$a$$ || x AS b, - y AS c, + SELECT $$a$$ || x AS b, + y AS c, ARRAY[ROW(x.*,ARRAY[1,2,3]), - ROW(y.*,ARRAY[4,5,6])] AS z - FROM generate_series(1,2) x, + ROW(y.*,ARRAY[4,5,6])] AS z + FROM generate_series(1,2) x, generate_series(4,5) y',true); query_to_json ---------------------------------------------------------------------- @@ -299,19 +299,19 @@ SELECT query_to_json('select array_agg(x) as d from generate_series(5,10) x',fal (1 row) -- array_to_json -SELECT array_to_json(array_agg(x)) +SELECT array_to_json(array_agg(x)) FROM generate_series(1,10) x; array_to_json ------------------------ [1,2,3,4,5,6,7,8,9,10] (1 row) -SELECT array_to_json(array_agg(q)) -FROM (SELECT $$a$$ || x AS b, - y AS c, +SELECT array_to_json(array_agg(q)) +FROM (SELECT $$a$$ || x AS b, + y AS c, ARRAY[ROW(x.*,ARRAY[1,2,3]), - ROW(y.*,ARRAY[4,5,6])] AS z - FROM generate_series(1,2) x, + ROW(y.*,ARRAY[4,5,6])] AS z + FROM generate_series(1,2) x, generate_series(4,5) y) q; array_to_json ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -331,12 +331,12 @@ SELECT row_to_json(row(1,'foo')); {"f1":1,"f2":"foo"} (1 row) -SELECT row_to_json(q) -FROM (SELECT $$a$$ || x AS b, - y AS c, +SELECT row_to_json(q) +FROM (SELECT $$a$$ || x AS b, + y AS c, ARRAY[ROW(x.*,ARRAY[1,2,3]), - ROW(y.*,ARRAY[4,5,6])] AS z - FROM generate_series(1,2) x, + ROW(y.*,ARRAY[4,5,6])] AS z + FROM generate_series(1,2) x, generate_series(4,5) y) q; row_to_json -------------------------------------------------------------------- @@ -349,7 +349,7 @@ FROM (SELECT $$a$$ || x AS b, CREATE TEMP TABLE rows AS SELECT x, 'txt' || x as y FROM generate_series(1,3) AS x; -SELECT row_to_json(q) +SELECT row_to_json(q) FROM rows q; row_to_json --------------------
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers