postgresql/contrib/hstore
Tom Lane 0986e95161 Revise APIs for pushJsonbValue() and associated routines.
Instead of passing "JsonbParseState **" to pushJsonbValue(),
pass a pointer to a JsonbInState, which will contain the
parseState stack pointer as well as other useful fields.
Also, instead of returning a JsonbValue pointer that is often
meaningless/ignored, return the top-level JsonbValue pointer
in the "result" field of the JsonbInState.

This involves a lot of (mostly mechanical) edits, but I think
the results are notationally cleaner and easier to understand.
Certainly the business with sometimes capturing the result of
pushJsonbValue() and sometimes not was bug-prone and incapable of
mechanical verification.  In the new arrangement, JsonbInState.result
remains null until we've completed a valid sequence of pushes, so
that an incorrect sequence will result in a null-pointer dereference,
not mistaken use of a partial result.

However, this isn't simply an exercise in prettier notation.
The real reason for doing it is to provide a mechanism whereby
pushJsonbValue() can be told to construct the JsonbValue tree
in a context that is not CurrentMemoryContext.  That happens
when a non-null "outcontext" is specified in the JsonbInState.
No callers exercise that option in this patch, but the next
patch in the series will make use of it.

I tried to improve the comments in this area too.

Author: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: jian he <jian.universality@gmail.com>
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Discussion: https://postgr.es/m/1060917.1753202222@sss.pgh.pa.us
2025-12-07 11:51:33 -05:00
..
data Add GIN support for pg_trgm. From Guillaume Smet <guillaume.smet@gmail.com> 2007-03-14 14:21:53 +00:00
expected Handle \v as a whitespace character in parsers 2023-07-06 08:16:24 +09:00
sql Handle \v as a whitespace character in parsers 2023-07-06 08:16:24 +09:00
.gitignore Support "make check" in contrib 2011-04-25 22:27:11 +03:00
hstore--1.1--1.2.sql Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
hstore--1.2--1.3.sql Introduce jsonb, a structured format for storing json. 2014-03-23 16:40:19 -04:00
hstore--1.3--1.4.sql Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
hstore--1.4--1.5.sql Distinguish selectivity of < from <= and > from >=. 2017-09-13 11:12:39 -04:00
hstore--1.4.sql Update extensions with GIN/GIST support for parallel query. 2016-06-14 13:34:37 -04:00
hstore--1.5--1.6.sql Add a 64-bit hash function for type hstore. 2018-11-23 13:37:34 -05:00
hstore--1.6--1.7.sql Improve selectivity estimation for assorted match-style operators. 2020-04-01 10:32:33 -04:00
hstore--1.7--1.8.sql Remove deprecated containment operators for contrib types. 2021-03-05 10:45:41 -05:00
hstore.control Allow subscripting of hstore values. 2020-12-11 18:58:21 -05:00
hstore.h Fix final warnings produced by -Wshadow=compatible-local 2022-10-07 13:13:27 +13:00
hstore_compat.c Fix most -Wundef warnings 2019-10-19 18:31:38 +02:00
hstore_gin.c Fix varatt versus Datum type confusions 2025-08-05 12:11:36 +02:00
hstore_gist.c Use more palloc_object() and palloc_array() in contrib/ 2025-12-05 16:40:26 +09:00
hstore_io.c Revise APIs for pushJsonbValue() and associated routines. 2025-12-07 11:51:33 -05:00
hstore_op.c Fix varatt versus Datum type confusions 2025-08-05 12:11:36 +02:00
hstore_subs.c Fix stray references to SubscriptRef 2025-12-03 14:44:14 +01:00
Makefile hstore: Tighten key/value parsing check for whitespaces 2023-06-12 09:14:03 +09:00
meson.build Update copyright for 2025 2025-01-01 11:21:55 -05:00