Re: SQL/JSON: JSON_TABLE - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: SQL/JSON: JSON_TABLE
Date
Msg-id CAFj8pRDwWBVe-_5NS6BFOW2576u7R_o1AFrS-vHzzHthpXUixQ@mail.gmail.com
Whole thread Raw
In response to Re: SQL/JSON: JSON_TABLE  (Nikita Glukhov <n.gluhov@postgrespro.ru>)
Responses Re: SQL/JSON: JSON_TABLE  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-hackers


út 12. 11. 2019 v 1:13 odesílatel Nikita Glukhov <n.gluhov@postgrespro.ru> napsal:
Attached 40th version of the patches.


On 19.10.2019 18:31, Pavel Stehule wrote:
This patch is still pretty big - it is about 6000 lines (without any documentation). I checked the standard - and this patch try to implement

JSON_TABLE as part of T821
Plan clause T824
Plan default clause T838.

Unfortunately for last two features there are few documentation other than standard, and probably other databases doesn't implement these features (I didn't find it in Oracle, MySQL, MSSQL and DB2) . Can be this patch divided by these features? I hope so separate review and commit can increase a chance to merge this code (or the most significant part) in this release.

It is pretty hard to do any deeper review without documentation and without other information sources.

What do you think?

I think it is a good idea. So I have split JSON_TABLE patch into three patches, each SQL feature. This really helped to reduce the size of the main patch by about 40%.

super, I'lll check main patch only now - to time when it will be merged to core


On 30.09.2019 19:09, Pavel Stehule wrote:
Regress tests fails on my comp - intel 64bit Linux, gcc 9.2.1

Unfortunately, this is still not reproducible on my computer with 64bit Linux and gcc 9.2.1.

Maybe it is locale depending issue. My LANG is  LANG=cs_CZ.UTF-8




Comments:

* +<->/* Only XMLTABLE and JSON_TABLE are supported currently */

this comment has not sense more. Can be removed. Probably long time there will not be new format like XML or JSON
Fixed.

* there are new 600 lines to parse_clause.c, maybe this code can be placed in new file parse_jsontable.c ? parse_clause.c is pretty long already (json_table has very complex syntax)
Ok, the code was moved to parse_jsontable.c.

*
+<->if (list_length(ci->passing.values) > 0)
+<->{
+<-><-->ListCell   *exprlc;
+<-><-->ListCell   *namelc;
+

It's uncommon usage of list_length function. More common is just "if (ci->passing.values) {}". Is there any reason for list_length?

Fixed.

* I tested some examples that I found on net. It works very well. Minor issues are white chars for json type. Probably json_table should to trim returned values, because after cutting from document, original white chars lost sense. It is not a problem jsonb type, that reduce white chars on input.

I did only simple tests and I didn't find any other issues than white chars problems for json type. I'll continue in some deeper tests. Please, prepare documentation. Without documentation there is not clean what features are supported. I have to do blind testing.

I have added some documentation to the patches which has simply been copied from [1], but It still needs some work.


ok

Pavel

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Add SQL function to show total block numbers in the relation
Next
From: Dilip Kumar
Date:
Subject: Re: cost based vacuum (parallel)