On 30.03.2021 19:56, Erik Rijkers wrote:
On 2021.03.27. 02:12 Nikita Glukhov <n.glu...@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
<http://www.postgrespro.com>The Russian Postgres Company