git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: a8a968a) | patch
Improve JsonLexContext's freeability
Thu, 5 Oct 2023 08:59:08 +0000 (10:59 +0200)
Thu, 5 Oct 2023 08:59:08 +0000 (10:59 +0200)
commit 1c99cde2f3440c59f582d45b251412c9a9b54f62
Improve JsonLexContext's freeability

Previously, the JSON code didn't have to worry too much about freeing
JsonLexContext, because it was never too long-lived. With new features
being added for SQL/JSON this is no longer the case. Add a routine
that knows how to free this struct and apply that to a few places, to
prevent this from becoming problematic.

At the same time, we change the API of makeJsonLexContextCstringLen to
make it receive a pointer to JsonLexContext for callers that want it to
be stack-allocated; it can also be passed as NULL to get the original
behavior of a palloc'ed one.

This also causes an ABI break due to the addition of flags to
JsonLexContext, so we can't easily backpatch it. AFAICS that's not much
of a problem; apparently some leaks might exist in JSON usage of
text-search, for example via json_to_tsvector, but I haven't seen any
complaints about that.

Per Coverity complaint about datum_to_jsonb_internal().

Discussion: https://postgr.es/m/20230808174110.oq3iymllsv6amkih@alvherre.pgsql
src/backend/utils/adt/json.c diff | blob | blame | history
src/backend/utils/adt/jsonb.c diff | blob | blame | history
src/backend/utils/adt/jsonfuncs.c diff | blob | blame | history
src/bin/pg_verifybackup/parse_manifest.c diff | blob | blame | history
src/common/jsonapi.c diff | blob | blame | history
src/include/common/jsonapi.h diff | blob | blame | history
src/include/utils/jsonfuncs.h diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /