On Fri, Dec 23, 2022 at 9:20 AM Andrew Dunstan <and...@dunslane.net> wrote:
> > On 2022-12-22 Th 11:44, Tom Lane wrote: > > Andrew Dunstan <and...@dunslane.net> writes: > >> Yeah, I started there, but it's substantially more complex - unlike cube > >> the jsonpath scanner calls the error routines as well as the parser. > >> Anyway, here's a patch. > > I looked through this and it seems generally OK. A minor nitpick is > > that we usually write "(Datum) 0" not "(Datum) NULL" for dont-care Datum > > values. > > > Fixed in the new version attached. > > > > A slightly bigger issue is that makeItemLikeRegex still allows > > an error to be thrown from RE_compile_and_cache if a bogus regex is > > presented. But that could be dealt with later. > > > I'd rather fix it now while we're paying attention. > > > > > > (I wonder why this is using RE_compile_and_cache at all, really, > > rather than some other API. There doesn't seem to be value in > > forcing the regex into the cache at this point.) > > > > > > > I agree. The attached uses pg_regcomp instead. I had a lift a couple of > lines from regexp.c, but not too many. > > > cheers > > > andrew > > > -- > Andrew Dunstan > EDB: https://www.enterprisedb.com Hi, In makeItemLikeRegex : + /* See regexp.c for explanation */ + CHECK_FOR_INTERRUPTS(); + pg_regerror(re_result, &re_tmp, errMsg, sizeof(errMsg)); + ereturn(escontext, false, Since an error is returned, I wonder if the `CHECK_FOR_INTERRUPTS` call is still necessary. Cheers