Re: Variable substitution in jsonb functions fails for jsonpath operator like_regex
От | Tom Lane |
---|---|
Тема | Re: Variable substitution in jsonb functions fails for jsonpath operator like_regex |
Дата | |
Msg-id | 3157573.1697663770@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Variable substitution in jsonb functions fails for jsonpath operator like_regex (Erwin Brandstetter <brsaweda@gmail.com>) |
Ответы |
Re: Variable substitution in jsonb functions fails for jsonpath operator like_regex
|
Список | pgsql-bugs |
Erwin Brandstetter <brsaweda@gmail.com> writes: > The functions jsonb_path_exists() and friends accept a "vars" parameter for > parameter substitution in the jsonpath argument. This seems to work for all > jsonpath operators except "like_regex": > SELECT * FROM tbl > WHERE jsonb_path_exists(data, '$[*].value ? (@ like_regex $foo)', '{"foo": > "CEO"}'); >> ERROR: syntax error at or near "$foo" of jsonpath input >> LINE 3: WHERE jsonb_path_exists(data, '$[*].value ? (@ like_regex $... > Notably, the same works even for "starts with": Hmm, maybe just an oversight in jsonpath_gram.y? predicate: ... | expr STARTS_P WITH_P starts_with_initial | expr LIKE_REGEX_P STRING_P | expr LIKE_REGEX_P STRING_P FLAG_P STRING_P ; starts_with_initial: STRING_P { $$ = makeItemString(&$1); } | VARIABLE_P { $$ = makeItemVariable(&$1); } ; Maybe it wouldn't take more than s/STRING_P/starts_with_initial/ here (though I'd then rename starts_with_initial to something more generic). With bad luck there might be some dependency on this restriction downstream of the grammar, but I suspect not. Didn't try though. regards, tom lane
В списке pgsql-bugs по дате отправления: