pg_query 5.1.0 → 6.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 +30 -0
- data/README.md +1 -1
- data/Rakefile +4 -4
- data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
- data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
- data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/extconf.rb +20 -6
- data/ext/pg_query/include/pg_query.h +4 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
- data/ext/pg_query/include/postgres/access/amapi.h +14 -3
- data/ext/pg_query/include/postgres/access/attmap.h +1 -1
- data/ext/pg_query/include/postgres/access/attnum.h +1 -1
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +2 -3
- data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
- data/ext/pg_query/include/postgres/access/detoast.h +1 -1
- data/ext/pg_query/include/postgres/access/genam.h +17 -4
- data/ext/pg_query/include/postgres/access/gin.h +1 -1
- data/ext/pg_query/include/postgres/access/htup.h +1 -1
- data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
- data/ext/pg_query/include/postgres/access/itup.h +3 -3
- data/ext/pg_query/include/postgres/access/parallel.h +1 -2
- data/ext/pg_query/include/postgres/access/printtup.h +1 -1
- data/ext/pg_query/include/postgres/access/relation.h +1 -1
- data/ext/pg_query/include/postgres/access/relscan.h +1 -1
- data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
- data/ext/pg_query/include/postgres/access/sdir.h +1 -1
- data/ext/pg_query/include/postgres/access/skey.h +1 -1
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
- data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
- data/ext/pg_query/include/postgres/access/table.h +1 -1
- data/ext/pg_query/include/postgres/access/tableam.h +35 -25
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
- data/ext/pg_query/include/postgres/access/transam.h +50 -7
- data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
- data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
- data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
- data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
- data/ext/pg_query/include/postgres/access/twophase.h +2 -2
- data/ext/pg_query/include/postgres/access/xact.h +5 -5
- data/ext/pg_query/include/postgres/access/xlog.h +20 -12
- data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
- data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
- data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
- data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
- data/ext/pg_query/include/postgres/c.h +32 -37
- data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
- data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
- data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
- data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
- data/ext/pg_query/include/postgres/catalog/index.h +22 -18
- data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
- data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +2 -6
- data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
- data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
- data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
- data/ext/pg_query/include/postgres/commands/explain.h +19 -3
- data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
- data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
- data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
- data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
- data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
- data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +79 -4
- data/ext/pg_query/include/postgres/common/keywords.h +1 -1
- data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
- data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
- data/ext/pg_query/include/postgres/common/relpath.h +4 -4
- data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
- data/ext/pg_query/include/postgres/common/sha2.h +1 -1
- data/ext/pg_query/include/postgres/common/string.h +1 -1
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
- data/ext/pg_query/include/postgres/executor/executor.h +6 -5
- data/ext/pg_query/include/postgres/executor/functions.h +2 -1
- data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
- data/ext/pg_query/include/postgres/executor/spi.h +2 -8
- data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
- data/ext/pg_query/include/postgres/fmgr.h +2 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
- data/ext/pg_query/include/postgres/funcapi.h +2 -2
- data/ext/pg_query/include/postgres/gram.h +871 -830
- data/ext/pg_query/include/postgres/gramparse.h +1 -1
- data/ext/pg_query/include/postgres/jit/jit.h +4 -3
- data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
- data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
- data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
- data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
- data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
- data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
- data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
- data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
- data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
- data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
- data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
- data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/postgres/miscadmin.h +72 -52
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
- data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
- data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
- data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
- data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
- data/ext/pg_query/include/postgres/nodes/params.h +1 -1
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
- data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
- data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
- data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
- data/ext/pg_query/include/postgres/nodes/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
- data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
- data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
- data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
- data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
- data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
- data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
- data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
- data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
- data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
- data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
- data/ext/pg_query/include/postgres/parser/parser.h +3 -3
- data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
- data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
- data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/postgres/pg_config.h +53 -45
- data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
- data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
- data/ext/pg_query/include/postgres/pg_trace.h +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +13 -11
- data/ext/pg_query/include/postgres/pgtime.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
- data/ext/pg_query/include/postgres/plpgsql.h +15 -13
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
- data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
- data/ext/pg_query/include/postgres/port/atomics.h +93 -6
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
- data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +48 -1
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
- data/ext/pg_query/include/postgres/port.h +39 -4
- data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres/postgres.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
- data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
- data/ext/pg_query/include/postgres/regex/regex.h +92 -9
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
- data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
- data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
- data/ext/pg_query/include/postgres/replication/origin.h +1 -1
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
- data/ext/pg_query/include/postgres/replication/slot.h +45 -5
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
- data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
- data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/postgres/storage/block.h +1 -1
- data/ext/pg_query/include/postgres/storage/buf.h +1 -1
- data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
- data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
- data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
- data/ext/pg_query/include/postgres/storage/fd.h +30 -13
- data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
- data/ext/pg_query/include/postgres/storage/item.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
- data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
- data/ext/pg_query/include/postgres/storage/latch.h +4 -2
- data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
- data/ext/pg_query/include/postgres/storage/lock.h +19 -19
- data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
- data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
- data/ext/pg_query/include/postgres/storage/off.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
- data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
- data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
- data/ext/pg_query/include/postgres/storage/proc.h +48 -26
- data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
- data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
- data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
- data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
- data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
- data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
- data/ext/pg_query/include/postgres/storage/spin.h +1 -1
- data/ext/pg_query/include/postgres/storage/standby.h +13 -3
- data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/postgres/storage/sync.h +4 -4
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
- data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
- data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
- data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
- data/ext/pg_query/include/postgres/utils/acl.h +19 -7
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/postgres/utils/array.h +1 -2
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
- data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
- data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
- data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
- data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
- data/ext/pg_query/include/postgres/utils/date.h +1 -1
- data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
- data/ext/pg_query/include/postgres/utils/datum.h +1 -1
- data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
- data/ext/pg_query/include/postgres/utils/elog.h +3 -8
- data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/postgres/utils/float.h +1 -1
- data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/postgres/utils/guc.h +20 -6
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
- data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
- data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +1 -1
- data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
- data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
- data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
- data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
- data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
- data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
- data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
- data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
- data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
- data/ext/pg_query/include/postgres/utils/portal.h +10 -10
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
- data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
- data/ext/pg_query/include/postgres/utils/rel.h +14 -15
- data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
- data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
- data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
- data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
- data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
- data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
- data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
- data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
- data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
- data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
- data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
- data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
- data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +4 -4
- data/ext/pg_query/include/postgres/varatt.h +1 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
- data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
- data/ext/pg_query/pg_query.pb-c.c +6598 -3739
- data/ext/pg_query/pg_query_normalize.c +42 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/postgres_deparse.c +601 -172
- data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +3 -7
- data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
- data/ext/pg_query/src_backend_parser_parser.c +8 -8
- data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
- 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 +4 -5
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
- data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
- data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
- data/ext/pg_query/src_common_encnames.c +43 -44
- 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 +511 -466
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +18 -1
- data/ext/pg_query/src_common_wchar.c +92 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
- 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 +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_port_pg_bitutils.c +173 -28
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +15 -18
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +1 -1
- data/lib/pg_query/fingerprint.rb +3 -5
- data/lib/pg_query/param_refs.rb +2 -2
- data/lib/pg_query/parse.rb +5 -7
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +27 -25
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +38 -15
- data/lib/pg_query/truncate.rb +18 -20
- data/lib/pg_query/version.rb +1 -1
- metadata +31 -82
- data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
- data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -12,7 +12,7 @@
|
|
12
12
|
* scansup.c
|
13
13
|
* scanner support routines used by the core lexer
|
14
14
|
*
|
15
|
-
* Portions Copyright (c) 1996-
|
15
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
16
16
|
* Portions Copyright (c) 1994, Regents of the University of California
|
17
17
|
*
|
18
18
|
*
|
@@ -130,6 +130,7 @@ scanner_isspace(char ch)
|
|
130
130
|
ch == '\t' ||
|
131
131
|
ch == '\n' ||
|
132
132
|
ch == '\r' ||
|
133
|
+
ch == '\v' ||
|
133
134
|
ch == '\f')
|
134
135
|
return true;
|
135
136
|
return false;
|
@@ -15,7 +15,7 @@
|
|
15
15
|
* exit-time cleanup for either a postmaster or a backend.
|
16
16
|
*
|
17
17
|
*
|
18
|
-
* Portions Copyright (c) 1996-
|
18
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
19
19
|
* Portions Copyright (c) 1994, Regents of the University of California
|
20
20
|
*
|
21
21
|
*
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/*--------------------------------------------------------------------
|
2
2
|
* Symbols referenced in this file:
|
3
3
|
* - debug_query_string
|
4
|
-
* - whereToSendOutput
|
5
|
-
* - ProcessInterrupts
|
6
|
-
* - check_stack_depth
|
7
4
|
* - stack_is_too_deep
|
8
5
|
* - stack_base_ptr
|
9
6
|
* - max_stack_depth_bytes
|
7
|
+
* - whereToSendOutput
|
8
|
+
* - ProcessInterrupts
|
9
|
+
* - check_stack_depth
|
10
10
|
* - max_stack_depth
|
11
11
|
*--------------------------------------------------------------------
|
12
12
|
*/
|
@@ -16,7 +16,7 @@
|
|
16
16
|
* postgres.c
|
17
17
|
* POSTGRES C Backend Interface
|
18
18
|
*
|
19
|
-
* Portions Copyright (c) 1996-
|
19
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
20
20
|
* Portions Copyright (c) 1994, Regents of the University of California
|
21
21
|
*
|
22
22
|
*
|
@@ -49,6 +49,7 @@
|
|
49
49
|
#include "access/xact.h"
|
50
50
|
#include "catalog/pg_type.h"
|
51
51
|
#include "commands/async.h"
|
52
|
+
#include "commands/event_trigger.h"
|
52
53
|
#include "commands/prepare.h"
|
53
54
|
#include "common/pg_prng.h"
|
54
55
|
#include "jit/jit.h"
|
@@ -84,12 +85,14 @@
|
|
84
85
|
#include "tcop/tcopprot.h"
|
85
86
|
#include "tcop/utility.h"
|
86
87
|
#include "utils/guc_hooks.h"
|
88
|
+
#include "utils/injection_point.h"
|
87
89
|
#include "utils/lsyscache.h"
|
88
90
|
#include "utils/memutils.h"
|
89
91
|
#include "utils/ps_status.h"
|
90
92
|
#include "utils/snapmgr.h"
|
91
93
|
#include "utils/timeout.h"
|
92
94
|
#include "utils/timestamp.h"
|
95
|
+
#include "utils/varlena.h"
|
93
96
|
|
94
97
|
/* ----------------
|
95
98
|
* global variables
|
@@ -117,6 +120,9 @@ __thread int max_stack_depth = 100;
|
|
117
120
|
/* Time between checks that the client is still connected. */
|
118
121
|
|
119
122
|
|
123
|
+
/* flags for non-system relation kinds to restrict use */
|
124
|
+
|
125
|
+
|
120
126
|
/* ----------------
|
121
127
|
* private typedefs etc
|
122
128
|
* ----------------
|
@@ -182,7 +188,6 @@ static __thread char *stack_base_ptr = NULL;
|
|
182
188
|
|
183
189
|
|
184
190
|
|
185
|
-
|
186
191
|
/* reused buffer to pass to SendRowDescriptionMessage() */
|
187
192
|
|
188
193
|
|
@@ -200,7 +205,6 @@ static bool check_log_statement(List *stmt_list);
|
|
200
205
|
static int errdetail_execute(List *raw_parsetree_list);
|
201
206
|
static int errdetail_params(ParamListInfo params);
|
202
207
|
static int errdetail_abort(void);
|
203
|
-
static int errdetail_recovery_conflict(void);
|
204
208
|
static void bind_param_error_callback(void *arg);
|
205
209
|
static void start_xact_command(void);
|
206
210
|
static void finish_xact_command(void);
|
@@ -556,10 +560,18 @@ valgrind_report_error_query(const char *query)
|
|
556
560
|
|
557
561
|
|
558
562
|
/*
|
559
|
-
*
|
560
|
-
*
|
561
|
-
|
562
|
-
|
563
|
+
* Tell the next CHECK_FOR_INTERRUPTS() to check for a particular type of
|
564
|
+
* recovery conflict. Runs in a SIGUSR1 handler.
|
565
|
+
*/
|
566
|
+
|
567
|
+
|
568
|
+
/*
|
569
|
+
* Check one individual conflict reason.
|
570
|
+
*/
|
571
|
+
|
572
|
+
|
573
|
+
/*
|
574
|
+
* Check each possible recovery conflict reason.
|
563
575
|
*/
|
564
576
|
|
565
577
|
|
@@ -686,6 +698,18 @@ stack_is_too_deep(void)
|
|
686
698
|
*/
|
687
699
|
|
688
700
|
|
701
|
+
/* GUC assign hook for transaction_timeout */
|
702
|
+
|
703
|
+
|
704
|
+
/*
|
705
|
+
* GUC check_hook for restrict_nonsystem_relation_kind
|
706
|
+
*/
|
707
|
+
|
708
|
+
|
709
|
+
/*
|
710
|
+
* GUC assign_hook for restrict_nonsystem_relation_kind
|
711
|
+
*/
|
712
|
+
|
689
713
|
|
690
714
|
/*
|
691
715
|
* set_debug_options --- apply "-d N" command line option
|
@@ -14,7 +14,7 @@
|
|
14
14
|
* storage implementation and the details about individual types of
|
15
15
|
* statistics.
|
16
16
|
*
|
17
|
-
* Copyright (c) 2001-
|
17
|
+
* Copyright (c) 2001-2024, PostgreSQL Global Development Group
|
18
18
|
*
|
19
19
|
* IDENTIFICATION
|
20
20
|
* src/backend/utils/activity/pgstat_database.c
|
@@ -23,9 +23,9 @@
|
|
23
23
|
|
24
24
|
#include "postgres.h"
|
25
25
|
|
26
|
+
#include "storage/procsignal.h"
|
26
27
|
#include "utils/pgstat_internal.h"
|
27
28
|
#include "utils/timestamp.h"
|
28
|
-
#include "storage/procsignal.h"
|
29
29
|
|
30
30
|
|
31
31
|
static bool pgstat_should_report_connstat(void);
|
@@ -11,7 +11,7 @@
|
|
11
11
|
* datum.c
|
12
12
|
* POSTGRES Datum (abstract data type) manipulation routines.
|
13
13
|
*
|
14
|
-
* Portions Copyright (c) 1996-
|
14
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
16
16
|
*
|
17
17
|
*
|
@@ -51,12 +51,11 @@
|
|
51
51
|
#include "postgres.h"
|
52
52
|
|
53
53
|
#include "access/detoast.h"
|
54
|
-
#include "catalog/pg_type_d.h"
|
55
54
|
#include "common/hashfn.h"
|
56
55
|
#include "fmgr.h"
|
57
|
-
#include "utils/builtins.h"
|
58
56
|
#include "utils/datum.h"
|
59
57
|
#include "utils/expandeddatum.h"
|
58
|
+
#include "utils/fmgrprotos.h"
|
60
59
|
|
61
60
|
|
62
61
|
/*-------------------------------------------------------------------------
|
@@ -284,9 +283,12 @@ datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen)
|
|
284
283
|
* datum_image_eq() in all cases can use this as their "equalimage" support
|
285
284
|
* function.
|
286
285
|
*
|
287
|
-
*
|
288
|
-
*
|
289
|
-
*
|
286
|
+
* Currently, we unconditionally assume that any B-Tree operator class that
|
287
|
+
* registers btequalimage as its support function 4 must be able to safely use
|
288
|
+
* optimizations like deduplication (i.e. we return true unconditionally). If
|
289
|
+
* it ever proved necessary to rescind support for an operator class, we could
|
290
|
+
* do that in a targeted fashion by doing something with the opcintype
|
291
|
+
* argument.
|
290
292
|
*-------------------------------------------------------------------------
|
291
293
|
*/
|
292
294
|
|
@@ -11,7 +11,7 @@
|
|
11
11
|
* expandeddatum.c
|
12
12
|
* Support functions for "expanded" value representations.
|
13
13
|
*
|
14
|
-
* Portions Copyright (c) 1996-
|
14
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
16
16
|
*
|
17
17
|
*
|
@@ -10,7 +10,7 @@
|
|
10
10
|
* Display type names "nicely".
|
11
11
|
*
|
12
12
|
*
|
13
|
-
* Portions Copyright (c) 1996-
|
13
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
15
15
|
*
|
16
16
|
* IDENTIFICATION
|
@@ -10,7 +10,7 @@
|
|
10
10
|
* numutils.c
|
11
11
|
* utility functions for I/O of built-in numeric types.
|
12
12
|
*
|
13
|
-
* Portions Copyright (c) 1996-
|
13
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
15
15
|
*
|
16
16
|
*
|
@@ -25,9 +25,8 @@
|
|
25
25
|
#include <limits.h>
|
26
26
|
#include <ctype.h>
|
27
27
|
|
28
|
-
#include "common/int.h"
|
29
|
-
#include "utils/builtins.h"
|
30
28
|
#include "port/pg_bitutils.h"
|
29
|
+
#include "utils/builtins.h"
|
31
30
|
|
32
31
|
/*
|
33
32
|
* A table of all two-digit numbers. This is used to speed up decimal digit
|
@@ -372,7 +371,7 @@ invalid_syntax:
|
|
372
371
|
* so that caller can parse the rest. Otherwise, it's an error if anything
|
373
372
|
* but whitespace follows.
|
374
373
|
*
|
375
|
-
* typname is what is reported in error
|
374
|
+
* typname is what is reported in error messages.
|
376
375
|
*
|
377
376
|
* If escontext points to an ErrorSaveContext node, that is filled instead
|
378
377
|
* of throwing an error; the caller must check SOFT_ERROR_OCCURRED()
|
@@ -390,7 +389,7 @@ invalid_syntax:
|
|
390
389
|
* so that caller can parse the rest. Otherwise, it's an error if anything
|
391
390
|
* but whitespace follows.
|
392
391
|
*
|
393
|
-
* typname is what is reported in error
|
392
|
+
* typname is what is reported in error messages.
|
394
393
|
*
|
395
394
|
* If escontext points to an ErrorSaveContext node, that is filled instead
|
396
395
|
* of throwing an error; the caller must check SOFT_ERROR_OCCURRED()
|
@@ -2,6 +2,7 @@
|
|
2
2
|
* Symbols referenced in this file:
|
3
3
|
* - quote_identifier
|
4
4
|
* - quote_all_identifiers
|
5
|
+
* - quote_qualified_identifier
|
5
6
|
*--------------------------------------------------------------------
|
6
7
|
*/
|
7
8
|
|
@@ -11,7 +12,7 @@
|
|
11
12
|
* Functions to convert stored expressions/querytrees back to
|
12
13
|
* source text
|
13
14
|
*
|
14
|
-
* Portions Copyright (c) 1996-
|
15
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
15
16
|
* Portions Copyright (c) 1994, Regents of the University of California
|
16
17
|
*
|
17
18
|
*
|
@@ -29,7 +30,6 @@
|
|
29
30
|
#include "access/amapi.h"
|
30
31
|
#include "access/htup_details.h"
|
31
32
|
#include "access/relation.h"
|
32
|
-
#include "access/sysattr.h"
|
33
33
|
#include "access/table.h"
|
34
34
|
#include "catalog/pg_aggregate.h"
|
35
35
|
#include "catalog/pg_am.h"
|
@@ -58,7 +58,6 @@
|
|
58
58
|
#include "optimizer/optimizer.h"
|
59
59
|
#include "parser/parse_agg.h"
|
60
60
|
#include "parser/parse_func.h"
|
61
|
-
#include "parser/parse_node.h"
|
62
61
|
#include "parser/parse_oper.h"
|
63
62
|
#include "parser/parse_relation.h"
|
64
63
|
#include "parser/parser.h"
|
@@ -122,14 +121,16 @@ typedef struct
|
|
122
121
|
{
|
123
122
|
StringInfo buf; /* output buffer to append to */
|
124
123
|
List *namespaces; /* List of deparse_namespace nodes */
|
124
|
+
TupleDesc resultDesc; /* if top level of a view, the view's tupdesc */
|
125
|
+
List *targetList; /* Current query level's SELECT targetlist */
|
125
126
|
List *windowClause; /* Current query level's WINDOW clause */
|
126
|
-
List *windowTList; /* targetlist for resolving WINDOW clause */
|
127
127
|
int prettyFlags; /* enabling of pretty-print functions */
|
128
128
|
int wrapColumn; /* max line length, or -1 for no limit */
|
129
129
|
int indentLevel; /* current indent level for pretty-print */
|
130
130
|
bool varprefix; /* true to print prefixes on Vars */
|
131
|
-
|
132
|
-
|
131
|
+
bool colNamesVisible; /* do we care about output column names? */
|
132
|
+
bool inGroupBy; /* deparsing GROUP BY clause? */
|
133
|
+
bool varInOrderBy; /* deparsing simple Var in ORDER BY? */
|
133
134
|
Bitmapset *appendparents; /* if not null, map child Vars of these relids
|
134
135
|
* back to the parent rel */
|
135
136
|
} deparse_context;
|
@@ -360,8 +361,7 @@ static char *pg_get_partkeydef_worker(Oid relid, int prettyFlags,
|
|
360
361
|
bool attrsOnly, bool missing_ok);
|
361
362
|
static char *pg_get_constraintdef_worker(Oid constraintId, bool fullCommand,
|
362
363
|
int prettyFlags, bool missing_ok);
|
363
|
-
static text *pg_get_expr_worker(text *expr, Oid relid,
|
364
|
-
int prettyFlags);
|
364
|
+
static text *pg_get_expr_worker(text *expr, Oid relid, int prettyFlags);
|
365
365
|
static int print_function_arguments(StringInfo buf, HeapTuple proctup,
|
366
366
|
bool print_table_args, bool print_defaults);
|
367
367
|
static void print_function_rettype(StringInfo buf, HeapTuple proctup);
|
@@ -408,27 +408,19 @@ static void get_query_def(Query *query, StringInfo buf, List *parentnamespace,
|
|
408
408
|
int prettyFlags, int wrapColumn, int startIndent);
|
409
409
|
static void get_values_def(List *values_lists, deparse_context *context);
|
410
410
|
static void get_with_clause(Query *query, deparse_context *context);
|
411
|
-
static void get_select_query_def(Query *query, deparse_context *context
|
412
|
-
|
413
|
-
static void
|
414
|
-
bool colNamesVisible);
|
415
|
-
static void get_update_query_def(Query *query, deparse_context *context,
|
416
|
-
bool colNamesVisible);
|
411
|
+
static void get_select_query_def(Query *query, deparse_context *context);
|
412
|
+
static void get_insert_query_def(Query *query, deparse_context *context);
|
413
|
+
static void get_update_query_def(Query *query, deparse_context *context);
|
417
414
|
static void get_update_query_targetlist_def(Query *query, List *targetList,
|
418
415
|
deparse_context *context,
|
419
416
|
RangeTblEntry *rte);
|
420
|
-
static void get_delete_query_def(Query *query, deparse_context *context
|
421
|
-
|
422
|
-
static void get_merge_query_def(Query *query, deparse_context *context,
|
423
|
-
bool colNamesVisible);
|
417
|
+
static void get_delete_query_def(Query *query, deparse_context *context);
|
418
|
+
static void get_merge_query_def(Query *query, deparse_context *context);
|
424
419
|
static void get_utility_query_def(Query *query, deparse_context *context);
|
425
|
-
static void get_basic_select_query(Query *query, deparse_context *context
|
426
|
-
|
427
|
-
static void get_target_list(List *targetList, deparse_context *context,
|
428
|
-
TupleDesc resultDesc, bool colNamesVisible);
|
420
|
+
static void get_basic_select_query(Query *query, deparse_context *context);
|
421
|
+
static void get_target_list(List *targetList, deparse_context *context);
|
429
422
|
static void get_setop_query(Node *setOp, Query *query,
|
430
|
-
deparse_context *context
|
431
|
-
TupleDesc resultDesc, bool colNamesVisible);
|
423
|
+
deparse_context *context);
|
432
424
|
static Node *get_rule_sortgroupclause(Index ref, List *tlist,
|
433
425
|
bool force_colno,
|
434
426
|
deparse_context *context);
|
@@ -447,6 +439,10 @@ static void resolve_special_varno(Node *node, deparse_context *context,
|
|
447
439
|
rsv_callback callback, void *callback_arg);
|
448
440
|
static Node *find_param_referent(Param *param, deparse_context *context,
|
449
441
|
deparse_namespace **dpns_p, ListCell **ancestor_cell_p);
|
442
|
+
static SubPlan *find_param_generator(Param *param, deparse_context *context,
|
443
|
+
int *column_p);
|
444
|
+
static SubPlan *find_param_generator_initplan(Param *param, Plan *plan,
|
445
|
+
int *column_p);
|
450
446
|
static void get_parameter(Param *param, deparse_context *context);
|
451
447
|
static const char *get_simple_binary_op_name(OpExpr *expr);
|
452
448
|
static bool isSimpleNode(Node *node, Node *parentNode, int prettyFlags);
|
@@ -484,6 +480,8 @@ static void get_const_expr(Const *constval, deparse_context *context,
|
|
484
480
|
int showtype);
|
485
481
|
static void get_const_collation(Const *constval, deparse_context *context);
|
486
482
|
static void get_json_format(JsonFormat *format, StringInfo buf);
|
483
|
+
static void get_json_returning(JsonReturning *returning, StringInfo buf,
|
484
|
+
bool json_format_by_default);
|
487
485
|
static void get_json_constructor(JsonConstructorExpr *ctor,
|
488
486
|
deparse_context *context, bool showimplicit);
|
489
487
|
static void get_json_constructor_options(JsonConstructorExpr *ctor,
|
@@ -519,13 +517,22 @@ static char *generate_qualified_relation_name(Oid relid);
|
|
519
517
|
static char *generate_function_name(Oid funcid, int nargs,
|
520
518
|
List *argnames, Oid *argtypes,
|
521
519
|
bool has_variadic, bool *use_variadic_p,
|
522
|
-
|
520
|
+
bool inGroupBy);
|
523
521
|
static char *generate_operator_name(Oid operid, Oid arg1, Oid arg2);
|
524
522
|
static void add_cast_to(StringInfo buf, Oid typid);
|
525
523
|
static char *generate_qualified_type_name(Oid typid);
|
526
524
|
static text *string_to_text(char *str);
|
527
525
|
static char *flatten_reloptions(Oid relid);
|
528
526
|
static void get_reloptions(StringInfo buf, Datum reloptions);
|
527
|
+
static void get_json_path_spec(Node *path_spec, deparse_context *context,
|
528
|
+
bool showimplicit);
|
529
|
+
static void get_json_table_columns(TableFunc *tf, JsonTablePathScan *scan,
|
530
|
+
deparse_context *context,
|
531
|
+
bool showimplicit);
|
532
|
+
static void get_json_table_nested_columns(TableFunc *tf, JsonTablePlan *plan,
|
533
|
+
deparse_context *context,
|
534
|
+
bool showimplicit,
|
535
|
+
bool needcomma);
|
529
536
|
|
530
537
|
#define only_marker(rte) ((rte)->inh ? "" : "ONLY ")
|
531
538
|
|
@@ -727,6 +734,11 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
727
734
|
* partial indexes, column default expressions, etc. We also support
|
728
735
|
* Var-free expressions, for which the OID can be InvalidOid.
|
729
736
|
*
|
737
|
+
* If the OID is nonzero but not actually valid, don't throw an error,
|
738
|
+
* just return NULL. This is a bit questionable, but it's what we've
|
739
|
+
* done historically, and it can help avoid unwanted failures when
|
740
|
+
* examining catalog entries for just-deleted relations.
|
741
|
+
*
|
730
742
|
* We expect this function to work, or throw a reasonably clean error,
|
731
743
|
* for any node tree that can appear in a catalog pg_node_tree column.
|
732
744
|
* Query trees, such as those appearing in pg_rewrite.ev_action, are
|
@@ -1169,9 +1181,7 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
1169
1181
|
/* ----------
|
1170
1182
|
* get_target_list - Parse back a SELECT target list
|
1171
1183
|
*
|
1172
|
-
* This is also used for RETURNING lists in INSERT/UPDATE/DELETE.
|
1173
|
-
*
|
1174
|
-
* resultDesc and colNamesVisible are as for get_query_def()
|
1184
|
+
* This is also used for RETURNING lists in INSERT/UPDATE/DELETE/MERGE.
|
1175
1185
|
* ----------
|
1176
1186
|
*/
|
1177
1187
|
|
@@ -1315,6 +1325,20 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
1315
1325
|
*/
|
1316
1326
|
|
1317
1327
|
|
1328
|
+
/*
|
1329
|
+
* Try to find a subplan/initplan that emits the value for a PARAM_EXEC Param.
|
1330
|
+
*
|
1331
|
+
* If successful, return the generating subplan/initplan and set *column_p
|
1332
|
+
* to the subplan's 0-based output column number.
|
1333
|
+
* Otherwise, return NULL.
|
1334
|
+
*/
|
1335
|
+
|
1336
|
+
|
1337
|
+
/*
|
1338
|
+
* Subroutine for find_param_generator: search one Plan node's initplans
|
1339
|
+
*/
|
1340
|
+
|
1341
|
+
|
1318
1342
|
/*
|
1319
1343
|
* Display a Param appropriately.
|
1320
1344
|
*/
|
@@ -1368,6 +1392,15 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
1368
1392
|
|
1369
1393
|
|
1370
1394
|
|
1395
|
+
|
1396
|
+
/*
|
1397
|
+
* get_json_expr_options
|
1398
|
+
*
|
1399
|
+
* Parse back common options for JSON_QUERY, JSON_VALUE, JSON_EXISTS and
|
1400
|
+
* JSON_TABLE columns.
|
1401
|
+
*/
|
1402
|
+
|
1403
|
+
|
1371
1404
|
/* ----------
|
1372
1405
|
* get_rule_expr - Parse back an expression
|
1373
1406
|
*
|
@@ -1505,6 +1538,11 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
1505
1538
|
*/
|
1506
1539
|
|
1507
1540
|
|
1541
|
+
/*
|
1542
|
+
* get_json_path_spec - Parse back a JSON path specification
|
1543
|
+
*/
|
1544
|
+
|
1545
|
+
|
1508
1546
|
/*
|
1509
1547
|
* get_json_format - Parse back a JsonFormat node
|
1510
1548
|
*/
|
@@ -1543,6 +1581,28 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
1543
1581
|
|
1544
1582
|
|
1545
1583
|
|
1584
|
+
/* ----------
|
1585
|
+
* get_xmltable - Parse back a XMLTABLE function
|
1586
|
+
* ----------
|
1587
|
+
*/
|
1588
|
+
|
1589
|
+
|
1590
|
+
/*
|
1591
|
+
* get_json_table_nested_columns - Parse back nested JSON_TABLE columns
|
1592
|
+
*/
|
1593
|
+
|
1594
|
+
|
1595
|
+
/*
|
1596
|
+
* get_json_table_columns - Parse back JSON_TABLE columns
|
1597
|
+
*/
|
1598
|
+
|
1599
|
+
|
1600
|
+
/* ----------
|
1601
|
+
* get_json_table - Parse back a JSON_TABLE function
|
1602
|
+
* ----------
|
1603
|
+
*/
|
1604
|
+
|
1605
|
+
|
1546
1606
|
/* ----------
|
1547
1607
|
* get_tablefunc - Parse back a table function
|
1548
1608
|
* ----------
|
@@ -1718,7 +1778,18 @@ quote_identifier(const char *ident)
|
|
1718
1778
|
* Return a name of the form qualifier.ident, or just ident if qualifier
|
1719
1779
|
* is NULL, quoting each component if necessary. The result is palloc'd.
|
1720
1780
|
*/
|
1781
|
+
char *
|
1782
|
+
quote_qualified_identifier(const char *qualifier,
|
1783
|
+
const char *ident)
|
1784
|
+
{
|
1785
|
+
StringInfoData buf;
|
1721
1786
|
|
1787
|
+
initStringInfo(&buf);
|
1788
|
+
if (qualifier)
|
1789
|
+
appendStringInfo(&buf, "%s.", quote_identifier(qualifier));
|
1790
|
+
appendStringInfoString(&buf, quote_identifier(ident));
|
1791
|
+
return buf.data;
|
1792
|
+
}
|
1722
1793
|
|
1723
1794
|
/*
|
1724
1795
|
* get_relation_name
|
@@ -1762,6 +1833,8 @@ quote_identifier(const char *ident)
|
|
1762
1833
|
* the output. For non-FuncExpr cases, has_variadic should be false and
|
1763
1834
|
* use_variadic_p can be NULL.
|
1764
1835
|
*
|
1836
|
+
* inGroupBy must be true if we're deparsing a GROUP BY clause.
|
1837
|
+
*
|
1765
1838
|
* The result includes all necessary quoting and schema-prefixing.
|
1766
1839
|
*/
|
1767
1840
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
* assert.c
|
10
10
|
* Assert support code.
|
11
11
|
*
|
12
|
-
* Portions Copyright (c) 1996-
|
12
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
14
14
|
*
|
15
15
|
*
|