I added some tests again json_value for the sake of coverager test.
A previous email thread mentioned needing to check *empty in ExecEvalJsonExpr. since JSON_VALUE_OP, JSON_QUERY_OP, JSON_EXISTS_OP all need to have *empty cases, So I refactored a little bit. might be helpful. Maybe we can also refactor *error cases.
The following part is not easy to understand. res = ExecPrepareJsonItemCoercion(jbv, + jsestate->item_jcstates, + &post_eval->jcstate); + if (post_eval->jcstate && + post_eval->jcstate->coercion && + (post_eval->jcstate->coercion->via_io || + post_eval->jcstate->coercion->via_populate))