pg_query 4.2.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +6 -8
- data/Rakefile +5 -6
- data/ext/pg_query/extconf.rb +14 -4
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
- data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
- data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
- data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
- data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
- data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
- data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
- data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
- data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
- data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
- data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
- data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
- data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +534 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +79 -5
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +6 -10
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +23 -5
- data/lib/pg_query/version.rb +1 -1
- metadata +432 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
- /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* backend's command progress counters, without ascribing meaning to the
|
|
7
7
|
* individual fields. See commands/progress.h and system_views.sql for that.
|
|
8
8
|
*
|
|
9
|
-
* Copyright (c) 2001-
|
|
9
|
+
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
|
|
10
10
|
*
|
|
11
11
|
* src/include/utils/backend_progress.h
|
|
12
12
|
* ----------
|
|
@@ -36,6 +36,7 @@ typedef enum ProgressCommandType
|
|
|
36
36
|
extern void pgstat_progress_start_command(ProgressCommandType cmdtype,
|
|
37
37
|
Oid relid);
|
|
38
38
|
extern void pgstat_progress_update_param(int index, int64 val);
|
|
39
|
+
extern void pgstat_progress_incr_param(int index, int64 incr);
|
|
39
40
|
extern void pgstat_progress_update_multi_param(int nparam, const int *index,
|
|
40
41
|
const int64 *val);
|
|
41
42
|
extern void pgstat_progress_end_command(void);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* backend_status.h
|
|
3
3
|
* Definitions related to backend status reporting
|
|
4
4
|
*
|
|
5
|
-
* Copyright (c) 2001-
|
|
5
|
+
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
|
|
6
6
|
*
|
|
7
7
|
* src/include/utils/backend_status.h
|
|
8
8
|
* ----------
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#include "datatype/timestamp.h"
|
|
14
14
|
#include "libpq/pqcomm.h"
|
|
15
15
|
#include "miscadmin.h" /* for BackendType */
|
|
16
|
+
#include "storage/backendid.h"
|
|
16
17
|
#include "utils/backend_progress.h"
|
|
17
18
|
|
|
18
19
|
|
|
@@ -76,6 +77,7 @@ typedef struct PgBackendGSSStatus
|
|
|
76
77
|
char gss_princ[NAMEDATALEN]; /* GSSAPI Principal used to auth */
|
|
77
78
|
bool gss_auth; /* If GSSAPI authentication was used */
|
|
78
79
|
bool gss_enc; /* If encryption is being used */
|
|
80
|
+
bool gss_delegation; /* If credentials delegated */
|
|
79
81
|
|
|
80
82
|
} PgBackendGSSStatus;
|
|
81
83
|
|
|
@@ -247,6 +249,13 @@ typedef struct LocalPgBackendStatus
|
|
|
247
249
|
*/
|
|
248
250
|
PgBackendStatus backendStatus;
|
|
249
251
|
|
|
252
|
+
/*
|
|
253
|
+
* The backend ID. For auxiliary processes, this will be set to a value
|
|
254
|
+
* greater than MaxBackends (since auxiliary processes do not have proper
|
|
255
|
+
* backend IDs).
|
|
256
|
+
*/
|
|
257
|
+
BackendId backend_id;
|
|
258
|
+
|
|
250
259
|
/*
|
|
251
260
|
* The xid of the current transaction if available, InvalidTransactionId
|
|
252
261
|
* if not.
|
|
@@ -258,6 +267,17 @@ typedef struct LocalPgBackendStatus
|
|
|
258
267
|
* not.
|
|
259
268
|
*/
|
|
260
269
|
TransactionId backend_xmin;
|
|
270
|
+
|
|
271
|
+
/*
|
|
272
|
+
* Number of cached subtransactions in the current session.
|
|
273
|
+
*/
|
|
274
|
+
int backend_subxact_count;
|
|
275
|
+
|
|
276
|
+
/*
|
|
277
|
+
* The number of subtransactions in the current session which exceeded the
|
|
278
|
+
* cached subtransaction limit.
|
|
279
|
+
*/
|
|
280
|
+
bool backend_subxact_overflowed;
|
|
261
281
|
} LocalPgBackendStatus;
|
|
262
282
|
|
|
263
283
|
|
|
@@ -313,8 +333,9 @@ extern uint64 pgstat_get_my_query_id(void);
|
|
|
313
333
|
* ----------
|
|
314
334
|
*/
|
|
315
335
|
extern int pgstat_fetch_stat_numbackends(void);
|
|
316
|
-
extern PgBackendStatus *
|
|
317
|
-
extern LocalPgBackendStatus *
|
|
336
|
+
extern PgBackendStatus *pgstat_get_beentry_by_backend_id(BackendId beid);
|
|
337
|
+
extern LocalPgBackendStatus *pgstat_get_local_beentry_by_backend_id(BackendId beid);
|
|
338
|
+
extern LocalPgBackendStatus *pgstat_get_local_beentry_by_index(int idx);
|
|
318
339
|
extern char *pgstat_clip_activity(const char *raw_activity);
|
|
319
340
|
|
|
320
341
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Declarations for operations on built-in types.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/builtins.h
|
|
@@ -34,6 +34,8 @@ extern int errdomainconstraint(Oid datatypeOid, const char *conname);
|
|
|
34
34
|
/* encode.c */
|
|
35
35
|
extern uint64 hex_encode(const char *src, size_t len, char *dst);
|
|
36
36
|
extern uint64 hex_decode(const char *src, size_t len, char *dst);
|
|
37
|
+
extern uint64 hex_decode_safe(const char *src, size_t len, char *dst,
|
|
38
|
+
Node *escontext);
|
|
37
39
|
|
|
38
40
|
/* int.c */
|
|
39
41
|
extern int2vector *buildint2vector(const int16 *int2s, int n);
|
|
@@ -44,13 +46,20 @@ extern int namestrcmp(Name name, const char *str);
|
|
|
44
46
|
|
|
45
47
|
/* numutils.c */
|
|
46
48
|
extern int16 pg_strtoint16(const char *s);
|
|
49
|
+
extern int16 pg_strtoint16_safe(const char *s, Node *escontext);
|
|
47
50
|
extern int32 pg_strtoint32(const char *s);
|
|
51
|
+
extern int32 pg_strtoint32_safe(const char *s, Node *escontext);
|
|
48
52
|
extern int64 pg_strtoint64(const char *s);
|
|
53
|
+
extern int64 pg_strtoint64_safe(const char *s, Node *escontext);
|
|
54
|
+
extern uint32 uint32in_subr(const char *s, char **endloc,
|
|
55
|
+
const char *typname, Node *escontext);
|
|
56
|
+
extern uint64 uint64in_subr(const char *s, char **endloc,
|
|
57
|
+
const char *typname, Node *escontext);
|
|
49
58
|
extern int pg_itoa(int16 i, char *a);
|
|
50
|
-
extern int pg_ultoa_n(uint32
|
|
51
|
-
extern int pg_ulltoa_n(uint64
|
|
52
|
-
extern int pg_ltoa(int32
|
|
53
|
-
extern int pg_lltoa(int64
|
|
59
|
+
extern int pg_ultoa_n(uint32 value, char *a);
|
|
60
|
+
extern int pg_ulltoa_n(uint64 value, char *a);
|
|
61
|
+
extern int pg_ltoa(int32 value, char *a);
|
|
62
|
+
extern int pg_lltoa(int64 value, char *a);
|
|
54
63
|
extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth);
|
|
55
64
|
extern char *pg_ultostr(char *str, uint32 value);
|
|
56
65
|
|
|
@@ -64,7 +73,7 @@ extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive,
|
|
|
64
73
|
Oid collation, bool *exact);
|
|
65
74
|
|
|
66
75
|
/* ruleutils.c */
|
|
67
|
-
extern PGDLLIMPORT __thread
|
|
76
|
+
extern PGDLLIMPORT __thread bool quote_all_identifiers;
|
|
68
77
|
extern const char *quote_identifier(const char *ident);
|
|
69
78
|
extern char *quote_qualified_identifier(const char *qualifier,
|
|
70
79
|
const char *ident);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Declarations for BYTEA data type support.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/bytea.h
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* guarantee that there can only be one matching row for a key combination.
|
|
11
11
|
*
|
|
12
12
|
*
|
|
13
|
-
* Portions Copyright (c) 1996-
|
|
13
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
15
15
|
*
|
|
16
16
|
* src/include/utils/catcache.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Definitions for the SQL "date" and "time" types.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/date.h
|
|
@@ -42,21 +42,49 @@ typedef struct
|
|
|
42
42
|
#define DATE_IS_NOEND(j) ((j) == DATEVAL_NOEND)
|
|
43
43
|
#define DATE_NOT_FINITE(j) (DATE_IS_NOBEGIN(j) || DATE_IS_NOEND(j))
|
|
44
44
|
|
|
45
|
+
#define MAX_TIME_PRECISION 6
|
|
46
|
+
|
|
45
47
|
/*
|
|
46
|
-
*
|
|
48
|
+
* Functions for fmgr-callable functions.
|
|
47
49
|
*
|
|
48
50
|
* For TimeADT, we make use of the same support routines as for int64.
|
|
49
51
|
* Therefore TimeADT is pass-by-reference if and only if int64 is!
|
|
50
52
|
*/
|
|
51
|
-
|
|
53
|
+
static inline DateADT
|
|
54
|
+
DatumGetDateADT(Datum X)
|
|
55
|
+
{
|
|
56
|
+
return (DateADT) DatumGetInt32(X);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static inline TimeADT
|
|
60
|
+
DatumGetTimeADT(Datum X)
|
|
61
|
+
{
|
|
62
|
+
return (TimeADT) DatumGetInt64(X);
|
|
63
|
+
}
|
|
52
64
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
65
|
+
static inline TimeTzADT *
|
|
66
|
+
DatumGetTimeTzADTP(Datum X)
|
|
67
|
+
{
|
|
68
|
+
return (TimeTzADT *) DatumGetPointer(X);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static inline Datum
|
|
72
|
+
DateADTGetDatum(DateADT X)
|
|
73
|
+
{
|
|
74
|
+
return Int32GetDatum(X);
|
|
75
|
+
}
|
|
56
76
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
77
|
+
static inline Datum
|
|
78
|
+
TimeADTGetDatum(TimeADT X)
|
|
79
|
+
{
|
|
80
|
+
return Int64GetDatum(X);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
static inline Datum
|
|
84
|
+
TimeTzADTPGetDatum(const TimeTzADT *X)
|
|
85
|
+
{
|
|
86
|
+
return PointerGetDatum(X);
|
|
87
|
+
}
|
|
60
88
|
|
|
61
89
|
#define PG_GETARG_DATEADT(n) DatumGetDateADT(PG_GETARG_DATUM(n))
|
|
62
90
|
#define PG_GETARG_TIMEADT(n) DatumGetTimeADT(PG_GETARG_DATUM(n))
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* including date, and time.
|
|
7
7
|
*
|
|
8
8
|
*
|
|
9
|
-
* Portions Copyright (c) 1996-
|
|
9
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
10
10
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
11
11
|
*
|
|
12
12
|
* src/include/utils/datetime.h
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
#ifndef DATETIME_H
|
|
17
17
|
#define DATETIME_H
|
|
18
18
|
|
|
19
|
-
#include "nodes/nodes.h"
|
|
20
19
|
#include "utils/timestamp.h"
|
|
21
20
|
|
|
22
21
|
/* this struct is declared in utils/tzparser.h: */
|
|
@@ -276,13 +275,30 @@ extern PGDLLIMPORT const int day_tab[2][13];
|
|
|
276
275
|
* Datetime input parsing routines (ParseDateTime, DecodeDateTime, etc)
|
|
277
276
|
* return zero or a positive value on success. On failure, they return
|
|
278
277
|
* one of these negative code values. DateTimeParseError may be used to
|
|
279
|
-
* produce a
|
|
278
|
+
* produce a suitable error report. For some of these codes,
|
|
279
|
+
* DateTimeParseError requires additional information, which is carried
|
|
280
|
+
* in struct DateTimeErrorExtra.
|
|
280
281
|
*/
|
|
281
282
|
#define DTERR_BAD_FORMAT (-1)
|
|
282
283
|
#define DTERR_FIELD_OVERFLOW (-2)
|
|
283
284
|
#define DTERR_MD_FIELD_OVERFLOW (-3) /* triggers hint about DateStyle */
|
|
284
285
|
#define DTERR_INTERVAL_OVERFLOW (-4)
|
|
285
286
|
#define DTERR_TZDISP_OVERFLOW (-5)
|
|
287
|
+
#define DTERR_BAD_TIMEZONE (-6)
|
|
288
|
+
#define DTERR_BAD_ZONE_ABBREV (-7)
|
|
289
|
+
|
|
290
|
+
typedef struct DateTimeErrorExtra
|
|
291
|
+
{
|
|
292
|
+
/* Needed for DTERR_BAD_TIMEZONE and DTERR_BAD_ZONE_ABBREV: */
|
|
293
|
+
const char *dtee_timezone; /* incorrect time zone name */
|
|
294
|
+
/* Needed for DTERR_BAD_ZONE_ABBREV: */
|
|
295
|
+
const char *dtee_abbrev; /* relevant time zone abbreviation */
|
|
296
|
+
} DateTimeErrorExtra;
|
|
297
|
+
|
|
298
|
+
/* Result codes for DecodeTimezoneName() */
|
|
299
|
+
#define TZNAME_FIXED_OFFSET 0
|
|
300
|
+
#define TZNAME_DYNTZ 1
|
|
301
|
+
#define TZNAME_ZONE 2
|
|
286
302
|
|
|
287
303
|
|
|
288
304
|
extern void GetCurrentDateTime(struct pg_tm *tm);
|
|
@@ -293,20 +309,21 @@ extern int date2j(int year, int month, int day);
|
|
|
293
309
|
extern int ParseDateTime(const char *timestr, char *workbuf, size_t buflen,
|
|
294
310
|
char **field, int *ftype,
|
|
295
311
|
int maxfields, int *numfields);
|
|
296
|
-
extern int DecodeDateTime(char **field, int *ftype,
|
|
297
|
-
int
|
|
298
|
-
|
|
299
|
-
extern int DecodeTimezone(char *str, int *tzp);
|
|
300
|
-
extern int DecodeTimeOnly(char **field, int *ftype,
|
|
301
|
-
int
|
|
302
|
-
|
|
312
|
+
extern int DecodeDateTime(char **field, int *ftype, int nf,
|
|
313
|
+
int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp,
|
|
314
|
+
DateTimeErrorExtra *extra);
|
|
315
|
+
extern int DecodeTimezone(const char *str, int *tzp);
|
|
316
|
+
extern int DecodeTimeOnly(char **field, int *ftype, int nf,
|
|
317
|
+
int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp,
|
|
318
|
+
DateTimeErrorExtra *extra);
|
|
303
319
|
extern int DecodeInterval(char **field, int *ftype, int nf, int range,
|
|
304
320
|
int *dtype, struct pg_itm_in *itm_in);
|
|
305
321
|
extern int DecodeISO8601Interval(char *str,
|
|
306
322
|
int *dtype, struct pg_itm_in *itm_in);
|
|
307
323
|
|
|
308
|
-
extern void DateTimeParseError(int dterr,
|
|
309
|
-
const char *datatype
|
|
324
|
+
extern void DateTimeParseError(int dterr, DateTimeErrorExtra *extra,
|
|
325
|
+
const char *str, const char *datatype,
|
|
326
|
+
struct Node *escontext);
|
|
310
327
|
|
|
311
328
|
extern int DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp);
|
|
312
329
|
extern int DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr, pg_tz *tzp);
|
|
@@ -322,14 +339,18 @@ extern void EncodeSpecialTimestamp(Timestamp dt, char *str);
|
|
|
322
339
|
extern int ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc,
|
|
323
340
|
struct pg_tm *tm);
|
|
324
341
|
|
|
325
|
-
extern int DecodeTimezoneAbbrev(int field, char *lowtoken,
|
|
326
|
-
int *offset, pg_tz **tz
|
|
327
|
-
|
|
328
|
-
extern int
|
|
342
|
+
extern int DecodeTimezoneAbbrev(int field, const char *lowtoken,
|
|
343
|
+
int *ftype, int *offset, pg_tz **tz,
|
|
344
|
+
DateTimeErrorExtra *extra);
|
|
345
|
+
extern int DecodeSpecial(int field, const char *lowtoken, int *val);
|
|
346
|
+
extern int DecodeUnits(int field, const char *lowtoken, int *val);
|
|
347
|
+
|
|
348
|
+
extern int DecodeTimezoneName(const char *tzname, int *offset, pg_tz **tz);
|
|
349
|
+
extern pg_tz *DecodeTimezoneNameToTz(const char *tzname);
|
|
329
350
|
|
|
330
|
-
extern int j2day(int
|
|
351
|
+
extern int j2day(int date);
|
|
331
352
|
|
|
332
|
-
extern Node *TemporalSimplify(int32 max_precis, Node *node);
|
|
353
|
+
extern struct Node *TemporalSimplify(int32 max_precis, struct Node *node);
|
|
333
354
|
|
|
334
355
|
extern bool CheckDateTokenTables(void);
|
|
335
356
|
|
|
@@ -337,8 +358,7 @@ extern TimeZoneAbbrevTable *ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs,
|
|
|
337
358
|
int n);
|
|
338
359
|
extern void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl);
|
|
339
360
|
|
|
340
|
-
extern
|
|
341
|
-
|
|
342
|
-
bool *error);
|
|
361
|
+
extern bool AdjustTimestampForTypmod(Timestamp *time, int32 typmod,
|
|
362
|
+
struct Node *escontext);
|
|
343
363
|
|
|
344
364
|
#endif /* DATETIME_H */
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* of the Datum. (We do it this way because in most situations the caller
|
|
9
9
|
* can look up the info just once and use it for many per-datum operations.)
|
|
10
10
|
*
|
|
11
|
-
* Portions Copyright (c) 1996-
|
|
11
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
13
13
|
*
|
|
14
14
|
* src/include/utils/datum.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* dsa.h
|
|
4
4
|
* Dynamic shared memory areas.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* IDENTIFICATION
|
|
@@ -99,6 +99,10 @@ typedef pg_atomic_uint64 dsa_pointer_atomic;
|
|
|
99
99
|
*/
|
|
100
100
|
typedef dsm_handle dsa_handle;
|
|
101
101
|
|
|
102
|
+
/* Sentinel value to use for invalid dsa_handles. */
|
|
103
|
+
#define DSA_HANDLE_INVALID ((dsa_handle) DSM_HANDLE_INVALID)
|
|
104
|
+
|
|
105
|
+
|
|
102
106
|
extern dsa_area *dsa_create(int tranche_id);
|
|
103
107
|
extern dsa_area *dsa_create_in_place(void *place, size_t size,
|
|
104
108
|
int tranche_id, dsm_segment *segment);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES error reporting/logging definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/elog.h
|
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
#include <setjmp.h>
|
|
18
18
|
|
|
19
|
+
#include "lib/stringinfo.h"
|
|
20
|
+
|
|
21
|
+
/* We cannot include nodes.h yet, so forward-declare struct Node */
|
|
22
|
+
struct Node;
|
|
23
|
+
|
|
24
|
+
|
|
19
25
|
/* Error level codes */
|
|
20
26
|
#define DEBUG5 10 /* Debugging messages, in categories of
|
|
21
27
|
* decreasing detail. */
|
|
@@ -83,7 +89,7 @@
|
|
|
83
89
|
*/
|
|
84
90
|
#if defined(errno) && defined(__linux__)
|
|
85
91
|
#define pg_prevent_errno_in_scope() int __errno_location pg_attribute_unused()
|
|
86
|
-
#elif defined(errno) && (defined(__darwin__) || defined(
|
|
92
|
+
#elif defined(errno) && (defined(__darwin__) || defined(__FreeBSD__))
|
|
87
93
|
#define pg_prevent_errno_in_scope() int __error pg_attribute_unused()
|
|
88
94
|
#else
|
|
89
95
|
#define pg_prevent_errno_in_scope()
|
|
@@ -138,7 +144,7 @@
|
|
|
138
144
|
if (__builtin_constant_p(elevel) && (elevel) >= ERROR ? \
|
|
139
145
|
errstart_cold(elevel, domain) : \
|
|
140
146
|
errstart(elevel, domain)) \
|
|
141
|
-
__VA_ARGS__, errfinish(__FILE__, __LINE__,
|
|
147
|
+
__VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \
|
|
142
148
|
if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \
|
|
143
149
|
pg_unreachable(); \
|
|
144
150
|
} while(0)
|
|
@@ -148,7 +154,7 @@
|
|
|
148
154
|
const int elevel_ = (elevel); \
|
|
149
155
|
pg_prevent_errno_in_scope(); \
|
|
150
156
|
if (errstart(elevel_, domain)) \
|
|
151
|
-
__VA_ARGS__, errfinish(__FILE__, __LINE__,
|
|
157
|
+
__VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \
|
|
152
158
|
if (elevel_ >= ERROR) \
|
|
153
159
|
pg_unreachable(); \
|
|
154
160
|
} while(0)
|
|
@@ -233,6 +239,63 @@ extern int getinternalerrposition(void);
|
|
|
233
239
|
ereport(elevel, errmsg_internal(__VA_ARGS__))
|
|
234
240
|
|
|
235
241
|
|
|
242
|
+
/*----------
|
|
243
|
+
* Support for reporting "soft" errors that don't require a full transaction
|
|
244
|
+
* abort to clean up. This is to be used in this way:
|
|
245
|
+
* errsave(context,
|
|
246
|
+
* errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
|
|
247
|
+
* errmsg("invalid input syntax for type %s: \"%s\"",
|
|
248
|
+
* "boolean", in_str),
|
|
249
|
+
* ... other errxxx() fields as needed ...);
|
|
250
|
+
*
|
|
251
|
+
* "context" is a node pointer or NULL, and the remaining auxiliary calls
|
|
252
|
+
* provide the same error details as in ereport(). If context is not a
|
|
253
|
+
* pointer to an ErrorSaveContext node, then errsave(context, ...)
|
|
254
|
+
* behaves identically to ereport(ERROR, ...). If context is a pointer
|
|
255
|
+
* to an ErrorSaveContext node, then the information provided by the
|
|
256
|
+
* auxiliary calls is stored in the context node and control returns
|
|
257
|
+
* normally. The caller of errsave() must then do any required cleanup
|
|
258
|
+
* and return control back to its caller. That caller must check the
|
|
259
|
+
* ErrorSaveContext node to see whether an error occurred before
|
|
260
|
+
* it can trust the function's result to be meaningful.
|
|
261
|
+
*
|
|
262
|
+
* errsave_domain() allows a message domain to be specified; it is
|
|
263
|
+
* precisely analogous to ereport_domain().
|
|
264
|
+
*----------
|
|
265
|
+
*/
|
|
266
|
+
#define errsave_domain(context, domain, ...) \
|
|
267
|
+
do { \
|
|
268
|
+
struct Node *context_ = (context); \
|
|
269
|
+
pg_prevent_errno_in_scope(); \
|
|
270
|
+
if (errsave_start(context_, domain)) \
|
|
271
|
+
__VA_ARGS__, errsave_finish(context_, __FILE__, __LINE__, __func__); \
|
|
272
|
+
} while(0)
|
|
273
|
+
|
|
274
|
+
#define errsave(context, ...) \
|
|
275
|
+
errsave_domain(context, TEXTDOMAIN, __VA_ARGS__)
|
|
276
|
+
|
|
277
|
+
/*
|
|
278
|
+
* "ereturn(context, dummy_value, ...);" is exactly the same as
|
|
279
|
+
* "errsave(context, ...); return dummy_value;". This saves a bit
|
|
280
|
+
* of typing in the common case where a function has no cleanup
|
|
281
|
+
* actions to take after reporting a soft error. "dummy_value"
|
|
282
|
+
* can be empty if the function returns void.
|
|
283
|
+
*/
|
|
284
|
+
#define ereturn_domain(context, dummy_value, domain, ...) \
|
|
285
|
+
do { \
|
|
286
|
+
errsave_domain(context, domain, __VA_ARGS__); \
|
|
287
|
+
return dummy_value; \
|
|
288
|
+
} while(0)
|
|
289
|
+
|
|
290
|
+
#define ereturn(context, dummy_value, ...) \
|
|
291
|
+
ereturn_domain(context, dummy_value, TEXTDOMAIN, __VA_ARGS__)
|
|
292
|
+
|
|
293
|
+
extern bool errsave_start(struct Node *context, const char *domain);
|
|
294
|
+
extern void errsave_finish(struct Node *context,
|
|
295
|
+
const char *filename, int lineno,
|
|
296
|
+
const char *funcname);
|
|
297
|
+
|
|
298
|
+
|
|
236
299
|
/* Support for constructing error strings separately from ereport() calls */
|
|
237
300
|
|
|
238
301
|
extern void pre_format_elog_string(int errnumber, const char *domain);
|
|
@@ -248,7 +311,7 @@ typedef struct ErrorContextCallback
|
|
|
248
311
|
void *arg;
|
|
249
312
|
} ErrorContextCallback;
|
|
250
313
|
|
|
251
|
-
extern PGDLLIMPORT __thread
|
|
314
|
+
extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
|
|
252
315
|
|
|
253
316
|
|
|
254
317
|
/*----------
|
|
@@ -308,39 +371,47 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
|
|
|
308
371
|
* pedantry; we have seen bugs from compilers improperly optimizing code
|
|
309
372
|
* away when such a variable was not marked. Beware that gcc's -Wclobbered
|
|
310
373
|
* warnings are just about entirely useless for catching such oversights.
|
|
374
|
+
*
|
|
375
|
+
* Each of these macros accepts an optional argument which can be specified
|
|
376
|
+
* to apply a suffix to the variables declared within the macros. This suffix
|
|
377
|
+
* can be used to avoid the compiler emitting warnings about shadowed
|
|
378
|
+
* variables when compiling with -Wshadow in situations where nested PG_TRY()
|
|
379
|
+
* statements are required. The optional suffix may contain any character
|
|
380
|
+
* that's allowed in a variable name. The suffix, if specified, must be the
|
|
381
|
+
* same within each component macro of the given PG_TRY() statement.
|
|
311
382
|
*----------
|
|
312
383
|
*/
|
|
313
|
-
#define PG_TRY() \
|
|
384
|
+
#define PG_TRY(...) \
|
|
314
385
|
do { \
|
|
315
|
-
sigjmp_buf *_save_exception_stack = PG_exception_stack; \
|
|
316
|
-
ErrorContextCallback *_save_context_stack = error_context_stack; \
|
|
317
|
-
sigjmp_buf _local_sigjmp_buf; \
|
|
318
|
-
bool _do_rethrow = false; \
|
|
319
|
-
if (sigsetjmp(_local_sigjmp_buf, 0) == 0) \
|
|
386
|
+
sigjmp_buf *_save_exception_stack##__VA_ARGS__ = PG_exception_stack; \
|
|
387
|
+
ErrorContextCallback *_save_context_stack##__VA_ARGS__ = error_context_stack; \
|
|
388
|
+
sigjmp_buf _local_sigjmp_buf##__VA_ARGS__; \
|
|
389
|
+
bool _do_rethrow##__VA_ARGS__ = false; \
|
|
390
|
+
if (sigsetjmp(_local_sigjmp_buf##__VA_ARGS__, 0) == 0) \
|
|
320
391
|
{ \
|
|
321
|
-
PG_exception_stack = &_local_sigjmp_buf
|
|
392
|
+
PG_exception_stack = &_local_sigjmp_buf##__VA_ARGS__
|
|
322
393
|
|
|
323
|
-
#define PG_CATCH() \
|
|
394
|
+
#define PG_CATCH(...) \
|
|
324
395
|
} \
|
|
325
396
|
else \
|
|
326
397
|
{ \
|
|
327
|
-
PG_exception_stack = _save_exception_stack; \
|
|
328
|
-
error_context_stack = _save_context_stack
|
|
398
|
+
PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
|
|
399
|
+
error_context_stack = _save_context_stack##__VA_ARGS__
|
|
329
400
|
|
|
330
|
-
#define PG_FINALLY() \
|
|
401
|
+
#define PG_FINALLY(...) \
|
|
331
402
|
} \
|
|
332
403
|
else \
|
|
333
|
-
_do_rethrow = true; \
|
|
404
|
+
_do_rethrow##__VA_ARGS__ = true; \
|
|
334
405
|
{ \
|
|
335
|
-
PG_exception_stack = _save_exception_stack; \
|
|
336
|
-
error_context_stack = _save_context_stack
|
|
406
|
+
PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
|
|
407
|
+
error_context_stack = _save_context_stack##__VA_ARGS__
|
|
337
408
|
|
|
338
|
-
#define PG_END_TRY() \
|
|
409
|
+
#define PG_END_TRY(...) \
|
|
339
410
|
} \
|
|
340
|
-
if (_do_rethrow) \
|
|
411
|
+
if (_do_rethrow##__VA_ARGS__) \
|
|
341
412
|
PG_RE_THROW(); \
|
|
342
|
-
PG_exception_stack = _save_exception_stack; \
|
|
343
|
-
error_context_stack = _save_context_stack; \
|
|
413
|
+
PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
|
|
414
|
+
error_context_stack = _save_context_stack##__VA_ARGS__; \
|
|
344
415
|
} while (0)
|
|
345
416
|
|
|
346
417
|
/*
|
|
@@ -355,7 +426,7 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
|
|
|
355
426
|
(pg_re_throw(), pg_unreachable())
|
|
356
427
|
#endif
|
|
357
428
|
|
|
358
|
-
extern PGDLLIMPORT __thread
|
|
429
|
+
extern PGDLLIMPORT __thread sigjmp_buf *PG_exception_stack;
|
|
359
430
|
|
|
360
431
|
|
|
361
432
|
/* Stuff that error handlers might want to use */
|
|
@@ -412,7 +483,7 @@ extern char *GetErrorContextStack(void);
|
|
|
412
483
|
|
|
413
484
|
/* Hook for intercepting messages before they are sent to the server log */
|
|
414
485
|
typedef void (*emit_log_hook_type) (ErrorData *edata);
|
|
415
|
-
extern PGDLLIMPORT __thread
|
|
486
|
+
extern PGDLLIMPORT __thread emit_log_hook_type emit_log_hook;
|
|
416
487
|
|
|
417
488
|
|
|
418
489
|
/* GUC-configurable parameters */
|
|
@@ -439,6 +510,8 @@ extern PGDLLIMPORT bool syslog_split_messages;
|
|
|
439
510
|
#define LOG_DESTINATION_JSONLOG 16
|
|
440
511
|
|
|
441
512
|
/* Other exported functions */
|
|
513
|
+
extern void log_status_format(StringInfo buf, const char *format,
|
|
514
|
+
ErrorData *edata);
|
|
442
515
|
extern void DebugFileOpen(void);
|
|
443
516
|
extern char *unpack_sql_state(int sql_state);
|
|
444
517
|
extern bool in_error_recursion_trouble(void);
|
|
@@ -456,10 +529,6 @@ extern void write_pipe_chunks(char *data, int len, int dest);
|
|
|
456
529
|
extern void write_csvlog(ErrorData *edata);
|
|
457
530
|
extern void write_jsonlog(ErrorData *edata);
|
|
458
531
|
|
|
459
|
-
#ifdef HAVE_SYSLOG
|
|
460
|
-
extern void set_syslog_parameters(const char *ident, int facility);
|
|
461
|
-
#endif
|
|
462
|
-
|
|
463
532
|
/*
|
|
464
533
|
* Write errors to stderr (or by equal means when stderr is
|
|
465
534
|
* not available). Used before ereport/elog can be used
|
|
@@ -467,4 +536,10 @@ extern void set_syslog_parameters(const char *ident, int facility);
|
|
|
467
536
|
*/
|
|
468
537
|
extern void write_stderr(const char *fmt,...) pg_attribute_printf(1, 2);
|
|
469
538
|
|
|
539
|
+
/*
|
|
540
|
+
* Write a message to STDERR using only async-signal-safe functions. This can
|
|
541
|
+
* be used to safely emit a message from a signal handler.
|
|
542
|
+
*/
|
|
543
|
+
extern void write_stderr_signal_safe(const char *fmt);
|
|
544
|
+
|
|
470
545
|
#endif /* ELOG_H */
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* value if they fail partway through.
|
|
35
35
|
*
|
|
36
36
|
*
|
|
37
|
-
* Portions Copyright (c) 1996-
|
|
37
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
38
38
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
39
39
|
*
|
|
40
40
|
* src/include/utils/expandeddatum.h
|
|
@@ -44,6 +44,8 @@
|
|
|
44
44
|
#ifndef EXPANDEDDATUM_H
|
|
45
45
|
#define EXPANDEDDATUM_H
|
|
46
46
|
|
|
47
|
+
#include "varatt.h"
|
|
48
|
+
|
|
47
49
|
/* Size of an EXTERNAL datum that contains a pointer to an expanded object */
|
|
48
50
|
#define EXPANDED_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_expanded))
|
|
49
51
|
|
|
@@ -133,8 +135,17 @@ struct ExpandedObjectHeader
|
|
|
133
135
|
* (More of these might be worth inlining later.)
|
|
134
136
|
*/
|
|
135
137
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
static inline Datum
|
|
139
|
+
EOHPGetRWDatum(const struct ExpandedObjectHeader *eohptr)
|
|
140
|
+
{
|
|
141
|
+
return PointerGetDatum(eohptr->eoh_rw_ptr);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
static inline Datum
|
|
145
|
+
EOHPGetRODatum(const struct ExpandedObjectHeader *eohptr)
|
|
146
|
+
{
|
|
147
|
+
return PointerGetDatum(eohptr->eoh_ro_ptr);
|
|
148
|
+
}
|
|
138
149
|
|
|
139
150
|
/* Does the Datum represent a writable expanded object? */
|
|
140
151
|
#define DatumIsReadWriteExpandedObject(d, isnull, typlen) \
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* expandedrecord.h
|
|
4
4
|
* Declarations for composite expanded objects.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/utils/expandedrecord.h
|
|
@@ -138,10 +138,20 @@ typedef struct ExpandedRecordHeader
|
|
|
138
138
|
MemoryContextCallback er_mcb;
|
|
139
139
|
} ExpandedRecordHeader;
|
|
140
140
|
|
|
141
|
-
/* fmgr macros for expanded record objects */
|
|
141
|
+
/* fmgr functions and macros for expanded record objects */
|
|
142
|
+
static inline Datum
|
|
143
|
+
ExpandedRecordGetDatum(const ExpandedRecordHeader *erh)
|
|
144
|
+
{
|
|
145
|
+
return EOHPGetRWDatum(&erh->hdr);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static inline Datum
|
|
149
|
+
ExpandedRecordGetRODatum(const ExpandedRecordHeader *erh)
|
|
150
|
+
{
|
|
151
|
+
return EOHPGetRODatum(&erh->hdr);
|
|
152
|
+
}
|
|
153
|
+
|
|
142
154
|
#define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n))
|
|
143
|
-
#define ExpandedRecordGetDatum(erh) EOHPGetRWDatum(&(erh)->hdr)
|
|
144
|
-
#define ExpandedRecordGetRODatum(erh) EOHPGetRODatum(&(erh)->hdr)
|
|
145
155
|
#define PG_RETURN_EXPANDED_RECORD(x) PG_RETURN_DATUM(ExpandedRecordGetDatum(x))
|
|
146
156
|
|
|
147
157
|
/* assorted other macros */
|