postgresql/src/common
Andrew Dunstan 3311ea86ed Introduce a non-recursive JSON parser
This parser uses an explicit prediction stack, unlike the present
recursive descent parser where the parser state is represented on the
call stack. This difference makes the new parser suitable for use in
incremental parsing of huge JSON documents that cannot be conveniently
handled piece-wise by the recursive descent parser. One potential use
for this will be in parsing large backup manifests associated with
incremental backups.

Because this parser is somewhat slower than the recursive descent
parser, it  is not replacing that parser, but is an additional parser
available to callers.

For testing purposes, if the build is done with -DFORCE_JSON_PSTACK, all
JSON parsing is done with the non-recursive parser, in which case only
trivial regression differences in error messages should be observed.

Author: Andrew Dunstan
Reviewed-By: Jacob Champion

Discussion: https://postgr.es/m/7b0a51d6-0d9d-7366-3a1a-f74397a02f55@dunslane.net
2024-04-04 06:46:40 -04:00
..
unicode Run perltidy on generate-unicode_version.pl. 2024-03-27 13:21:29 -07:00
.gitignore Replace the data structure used for keyword lookup. 2019-01-06 17:02:57 -05:00
Makefile Unicode case mapping tables and functions. 2024-03-07 11:15:06 -08:00
archive.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
base64.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
binaryheap.c Add functions to binaryheap for efficient key removal and update. 2024-04-03 10:44:21 +09:00
blkreftable.c Repair various defects in dc21234005. 2024-01-11 13:06:10 -05:00
checksum_helper.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
compression.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
config_info.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
controldata_utils.c Expose new function get_controlfile_by_exact_path(). 2024-03-13 12:06:44 -04:00
cryptohash.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
cryptohash_openssl.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
d2s.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
d2s_full_table.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
d2s_intrinsics.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
digit_table.h Change floating-point output format for improved performance. 2019-02-13 15:20:33 +00:00
encnames.c Simplify pg_enc2gettext_tbl[] with C99-designated initializer syntax 2024-03-01 18:03:48 +09:00
exec.c Fix errorhandling for reading from a pipe 2024-03-08 22:53:06 +01:00
f2s.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
fe_memutils.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
file_perm.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
file_utils.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
hashfn.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
hmac.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
hmac_openssl.c Unwind #if spaghetti in hmac_openssl.c a bit. 2024-04-02 10:41:44 -04:00
ip.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
jsonapi.c Introduce a non-recursive JSON parser 2024-04-04 06:46:40 -04:00
keywords.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
kwlookup.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
link-canary.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
logging.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
md5.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
md5_common.c Fix documentation comment for pg_md5_hash 2024-03-14 09:23:37 +01:00
md5_int.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
meson.build Unicode case mapping tables and functions. 2024-03-07 11:15:06 -08:00
parse_manifest.c Support json_errdetail in FRONTEND code 2024-03-17 23:56:15 +01:00
percentrepl.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
pg_get_line.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
pg_lzcompress.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
pg_prng.c Add functions to generate random numbers in a specified range. 2024-03-27 10:12:39 +00:00
pgfnames.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
protocol_openssl.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
psprintf.c Use printf's %m format instead of strerror(errno) in more places 2024-03-12 10:02:54 +09:00
relpath.c Replace BackendIds with 0-based ProcNumbers 2024-03-03 19:38:22 +02:00
restricted_token.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
rmtree.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
ryu_common.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
saslprep.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
scram-common.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
sha1.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
sha1_int.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
sha2.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
sha2_int.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
sprompt.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
string.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
stringinfo.c Add destroyStringInfo function for cleaning up StringInfos 2024-03-16 23:18:28 +01:00
unicode_case.c Add unicode_strtitle() for Unicode Default Case Conversion. 2024-03-29 17:35:07 -07:00
unicode_category.c Add Unicode property tables. 2024-03-06 12:50:01 -08:00
unicode_norm.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
username.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
wait_error.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
wchar.c Inline basic UTF-8 functions. 2024-03-20 09:40:57 -07:00