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

From Erik Rijkers
Subject Re: SQL/JSON: JSON_TABLE
Date
Msg-id 19181987.22943.1617141503618@webmailclassic.xs4all.nl
Whole thread Raw
In response to Re: SQL/JSON: JSON_TABLE  (Nikita Glukhov <n.gluhov@postgrespro.ru>)
List pgsql-hackers
> On 2021.03.30. 22:25 Nikita Glukhov <n.gluhov@postgrespro.ru> wrote:
>
>
> 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-oneunderstands the problem off-hand, I'll try to construct such a table later this week (the one I'm using is large,
1.5GB). 
>
> 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.

It does almost fix it, but in the above is a typo:
+  ExecEvalIsJsonPredicate     should to be changed to:
+  ExecEvalJsonIsPredicate.

With that change the problem vanishes.

Thanks!

Erik Rijkers








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



pgsql-hackers by date:

Previous
From: Isaac Morland
Date:
Subject: Trouble with initdb trying to run regression tests
Next
From: Daniel Gustafsson
Date:
Subject: Re: Refactor SSL test framework to support multiple TLS libraries