Hi Anton, On Tue, Oct 17, 2023 at 4:11 PM Anton A. Melnikov <a.melni...@postgrespro.ru> wrote: > On 17.10.2023 07:02, Amit Langote wrote: > > > One thing jian he missed during the debugging is that > > ExecEvalJsonExprCoersion() receives the EMPTY ARRAY value via > > *op->resvalue/resnull, set by ExecEvalJsonExprBehavior(), because > > that's the ON EMPTY behavior specified in the constraint. The bug was > > that the code in ExecEvalJsonExprCoercion() failed to set val_string > > to that value ("[]") before passing to InputFunctionCallSafe(), so the > > latter would assume the input is NULL. > > > Thank a lot for this remark! > > I tried to dig to the transformJsonOutput() to fix it earlier at the analyze > stage, > but it looks like a rather hard way.
Indeed. As I said, the problem was a bug in ExecEvalJsonExprCoercion(). > > Maybe simple in accordance with you note remove the second condition from > this line: > if (jb && JB_ROOT_IS_SCALAR(jb)) ? Yeah, that's how I would fix it. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com