Обсуждение: pgsql: Add all structured objects passed to pushJsonbValue piecewise.

Поиск
Список
Период
Сортировка

pgsql: Add all structured objects passed to pushJsonbValue piecewise.

От
Andrew Dunstan
Дата:
Add all structured objects passed to pushJsonbValue piecewise.

Commit 9b74f32cdbff8b9be47fc69164eae552050509ff did this for objects of
type jbvBinary, but in trying further to simplify some of the new jsonb
code I discovered that objects of type jbvObject or jbvArray passed as
WJB_ELEM or WJB_VALUE also caused problems. These too are now added
component by component.

Backpatch to 9.4.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/54547bd87f49326d67051254c363e6597d16ffda

Modified Files
--------------
src/backend/utils/adt/jsonb_util.c |   14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)


Re: pgsql: Add all structured objects passed to pushJsonbValue piecewise.

От
Peter Eisentraut
Дата:
On 5/26/15 11:24 AM, Andrew Dunstan wrote:
> Add all structured objects passed to pushJsonbValue piecewise.
>
> Commit 9b74f32cdbff8b9be47fc69164eae552050509ff did this for objects of
> type jbvBinary, but in trying further to simplify some of the new jsonb
> code I discovered that objects of type jbvObject or jbvArray passed as
> WJB_ELEM or WJB_VALUE also caused problems. These too are now added
> component by component.
>
> Backpatch to 9.4.

This causes a compiler warning:

jsonb_util.c: In function 'pushJsonbValue':
jsonb_util.c:535:3: error: passing argument 1 of 'JsonbIteratorInit'
from incompatible pointer type [-Werror]
   it = JsonbIteratorInit(jbval);
   ^
In file included from jsonb_util.c:20:0:
../../../../src/include/utils/jsonb.h:422:23: note: expected 'struct
JsonbContainer *' but argument is of type 'struct JsonbValue *'
 extern JsonbIterator *JsonbIteratorInit(JsonbContainer *container);
                       ^



Re: pgsql: Add all structured objects passed to pushJsonbValue piecewise.

От
Tom Lane
Дата:
Peter Eisentraut <peter_e@gmx.net> writes:
> On 5/26/15 11:24 AM, Andrew Dunstan wrote:
>> Add all structured objects passed to pushJsonbValue piecewise.

> This causes a compiler warning:

> jsonb_util.c: In function 'pushJsonbValue':
> jsonb_util.c:535:3: error: passing argument 1 of 'JsonbIteratorInit'
> from incompatible pointer type [-Werror]

I'm getting multiple warnings (probably Peter's build is aborting
after the first one).  Please fix.

jsonb_util.c: In function 'pushJsonbValue':
jsonb_util.c:535: warning: passing argument 1 of 'JsonbIteratorInit' from incompatible pointer type
../../../../src/include/utils/jsonb.h:422: note: expected 'struct JsonbContainer *' but argument is of type 'struct
JsonbValue*' 
jsonfuncs.c: In function 'addJsonbToParseState':
jsonfuncs.c:3257: warning: passing argument 3 of 'pushJsonbValue' from incompatible pointer type
../../../../src/include/utils/jsonb.h:420: note: expected 'struct JsonbValue *' but argument is of type 'struct
JsonbContainer*' 
jsonfuncs.c:3259: warning: passing argument 3 of 'pushJsonbValue' from incompatible pointer type
../../../../src/include/utils/jsonb.h:420: note: expected 'struct JsonbValue *' but argument is of type 'struct
JsonbContainer*' 
jsonfuncs.c:3237: warning: unused variable 'type'

            regards, tom lane