On Tue, Mar 19, 2024 at 6:46 PM Amit Langote <amitlangot...@gmail.com> wrote: > > I intend to commit 0001+0002 after a bit more polishing. >
V43 is far more intuitive! thanks! if (isnull || (exprType(expr) == JSONBOID && btype == default_behavior)) coerce = true; else coerced_expr = coerce_to_target_type(pstate, expr, exprType(expr), returning->typid, returning->typmod, COERCION_EXPLICIT, COERCE_EXPLICIT_CAST, exprLocation((Node *) behavior)); obviously, there are cases where "coerce" is false, and "coerced_expr" is not null. so I think the bool "coerce" variable naming is not very intuitive. maybe we can add some comments or change to a better name. JsonPathVariableEvalContext JsonPathVarCallback JsonItemType JsonExprPostEvalState these should remove from src/tools/pgindent/typedefs.list +/* + * Performs JsonPath{Exists|Query|Value}() for a given context_item and + * jsonpath. + * + * Result is set in *op->resvalue and *op->resnull. Return value is the + * step address to be performed next. + * + * On return, JsonExprPostEvalState is populated with the following details: + * - error.value: true if an error occurred during JsonPath evaluation + * - empty.value: true if JsonPath{Query|Value}() found no matching item + * + * No return if the ON ERROR/EMPTY behavior is ERROR. + */ +int +ExecEvalJsonExprPath(ExprState *state, ExprEvalStep *op, + ExprContext *econtext) " No return if the ON ERROR/EMPTY behavior is ERROR." is wrong? counter example: SELECT JSON_QUERY(jsonb '{"a":[12,2]}', '$.a' RETURNING int4RANGE omit quotes error on error); also "JsonExprPostEvalState" does not exist any more. overall feel like ExecEvalJsonExprPath comments need to be rephrased.