Hi Jian, SELECT (test_json -> 'field1')::int4 FROM test_jsonb WHERE json_type > = 'object'; > -ERROR: cannot cast jsonb string to type integer > +ERROR: unknown jsonb type: 1125096840 >
Thanks for the report! The reason is I return the address of a local variable. jsonb_object_field_start(PG_FUNCTION_ARGS) { JsonbValue *v; JsonbValue vbuf; v = getKeyJsonValueFromContainer(&jb->root, VARDATA_ANY(key),\ VARSIZE_ANY_EXHDR(key), &vbuf); PG_RETURN_POINTER(v); } Here the v points to vbuf which is a local variable in stack. I'm confused that why it works on my local machine and also works in the most queries in cfbot, the fix is below v = getKeyJsonValueFromContainer(&jb->root, VARDATA_ANY(key),\ VARSIZE_ANY_EXHDR(key), NULL); I will send an updated version soon. -- Best Regards Andy Fan