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

From Nikita Glukhov
Subject Re: SQL/JSON: JSON_TABLE
Date
Msg-id 69eefc5a-cabc-8dd3-c689-93da038c0d6a@postgrespro.ru
Whole thread Raw
In response to Re: SQL/JSON: JSON_TABLE  (Erik Rijkers <er@xs4all.nl>)
Responses Re: SQL/JSON: JSON_TABLE  (Erik Rijkers <er@xs4all.nl>)
List pgsql-hackers

On 30.03.2021 19:56, Erik Rijkers wrote:

On 2021.03.27. 02:12 Nikita Glukhov <n.gluhov@postgrespro.ru> wrote:

Attached 47th version of the patches.
Hi,

Apply, build all fine.  It also works quite well, and according to specification, as far as I can tell.

But today I ran into:

ERROR:  function ExecEvalJson not in llvmjit_types.c

I think that it is caused by:

set enable_bitmapscan = off;

(I installed llvm a few days ago. llvm-3.9-dev on this debian stretch).


This is the test sql I concocted, which runs fine with enable_bitmapscan on (the default):

select jt1.* 
from myjsonfile100k as t(js, id)   , json_table(      t.js   , '$' columns (        "lastname"   text    path  '$. "lastname"     '      , "firstname"  text    path  '$. "firstname"    '      , "date"       text    path  '$. "date"         '      , "city"       text    path  '$. "city"         '      , "country"    text    path  '$. "country"      '      , "name 0(1)"  text    path  '$. "array"[0]     '      , "name 4(5)"  text    path  '$. "array"[4]     '      , "names"      text[]  path  '$. "array"        '      , "randfloat"  float   path  '$. "random float" '    )
) as jt1
where  js @> ('[ { "city": "Santiago de Cuba" } ]')   and js[0]->>'firstname' = 'Gilda'
;
ERROR:  function ExecEvalJson not in llvmjit_types.c

That statement only errors out if the table is large enough. I have no time now to make a sample table but if no-one understands the problem off-hand, I'll try to construct such a table later this week (the one I'm using is large, 1.5 GB).
Thank you for testing. 


I think you can try to add 3 missing functions references to the end of 
src/backend/jit/llvm/llvmjit_types.c:
 void       *referenced_functions[] = {
     ...
     ExecEvalXmlExpr,
+    ExecEvalJsonConstructor,
+    ExecEvalIsJsonPredicate,
+    ExecEvalJson,
     MakeExpandedObjectReadOnlyInternal,
     ... };


If this fixes problem, I will add this to the new version of the patches.


-- 
Nikita Glukhov
Postgres Professional: http://www.postgrespro.co
The Russian Postgres Company

pgsql-hackers by date:

Previous
From: Joe Conway
Date:
Subject: Re: "has_column_privilege()" issue with attnums and non-existent columns
Next
From: Thomas Munro
Date:
Subject: Re: Remove page-read callback from XLogReaderState.