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
@@ -16,7 +16,7 @@
|
|
16
16
|
* and implementing search-path-controlled searches.
|
17
17
|
*
|
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
|
* IDENTIFICATION
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#include "access/xact.h"
|
32
32
|
#include "access/xlog.h"
|
33
33
|
#include "catalog/dependency.h"
|
34
|
+
#include "catalog/namespace.h"
|
34
35
|
#include "catalog/objectaccess.h"
|
35
36
|
#include "catalog/pg_authid.h"
|
36
37
|
#include "catalog/pg_collation.h"
|
@@ -48,14 +49,14 @@
|
|
48
49
|
#include "catalog/pg_ts_template.h"
|
49
50
|
#include "catalog/pg_type.h"
|
50
51
|
#include "commands/dbcommands.h"
|
52
|
+
#include "common/hashfn_unstable.h"
|
51
53
|
#include "funcapi.h"
|
52
54
|
#include "mb/pg_wchar.h"
|
53
55
|
#include "miscadmin.h"
|
54
56
|
#include "nodes/makefuncs.h"
|
55
|
-
#include "parser/parse_func.h"
|
56
57
|
#include "storage/ipc.h"
|
57
58
|
#include "storage/lmgr.h"
|
58
|
-
#include "storage/
|
59
|
+
#include "storage/procarray.h"
|
59
60
|
#include "utils/acl.h"
|
60
61
|
#include "utils/builtins.h"
|
61
62
|
#include "utils/catcache.h"
|
@@ -74,9 +75,7 @@
|
|
74
75
|
* may be included:
|
75
76
|
*
|
76
77
|
* 1. If a TEMP table namespace has been initialized in this session, it
|
77
|
-
* is implicitly searched first.
|
78
|
-
* when we are obeying an override search path spec that says not to use the
|
79
|
-
* temp namespace, or the temp namespace is included in the explicit list.)
|
78
|
+
* is implicitly searched first.
|
80
79
|
*
|
81
80
|
* 2. The system catalog namespace is always searched. If the system
|
82
81
|
* namespace is present in the explicit path then it will be searched in
|
@@ -115,19 +114,16 @@
|
|
115
114
|
* namespace (if it exists), preceded by the user's personal namespace
|
116
115
|
* (if one exists).
|
117
116
|
*
|
118
|
-
*
|
119
|
-
*
|
120
|
-
* whenever the override stack is nonempty. activeSearchPath is always
|
121
|
-
* the actually active path; it points either to the search list of the
|
122
|
-
* topmost stack entry, or to baseSearchPath which is the list derived
|
123
|
-
* from namespace_search_path.
|
117
|
+
* activeSearchPath is always the actually active path; it points to
|
118
|
+
* baseSearchPath which is the list derived from namespace_search_path.
|
124
119
|
*
|
125
|
-
* If baseSearchPathValid is false, then baseSearchPath (and other
|
126
|
-
*
|
127
|
-
*
|
128
|
-
*
|
129
|
-
*
|
130
|
-
*
|
120
|
+
* If baseSearchPathValid is false, then baseSearchPath (and other derived
|
121
|
+
* variables) need to be recomputed from namespace_search_path, or retrieved
|
122
|
+
* from the search path cache if there haven't been any syscache
|
123
|
+
* invalidations. We mark it invalid upon an assignment to
|
124
|
+
* namespace_search_path or receipt of a syscache invalidation event for
|
125
|
+
* pg_namespace or pg_authid. The recomputation is done during the next
|
126
|
+
* lookup attempt.
|
131
127
|
*
|
132
128
|
* Any namespaces mentioned in namespace_search_path that are not readable
|
133
129
|
* by the current user ID are simply left out of baseSearchPath; so
|
@@ -168,16 +164,31 @@
|
|
168
164
|
/* The above four values are valid only if baseSearchPathValid */
|
169
165
|
|
170
166
|
|
171
|
-
/*
|
167
|
+
/*
|
168
|
+
* Storage for search path cache. Clear searchPathCacheValid as a simple
|
169
|
+
* way to invalidate *all* the cache entries, not just the active one.
|
170
|
+
*/
|
171
|
+
|
172
|
+
|
172
173
|
|
173
|
-
typedef struct
|
174
|
+
typedef struct SearchPathCacheKey
|
174
175
|
{
|
175
|
-
|
176
|
-
Oid
|
177
|
-
|
178
|
-
} OverrideStackEntry;
|
176
|
+
const char *searchPath;
|
177
|
+
Oid roleid;
|
178
|
+
} SearchPathCacheKey;
|
179
179
|
|
180
|
+
typedef struct SearchPathCacheEntry
|
181
|
+
{
|
182
|
+
SearchPathCacheKey key;
|
183
|
+
List *oidlist; /* namespace OIDs that pass ACL checks */
|
184
|
+
List *finalPath; /* cached final computed search path */
|
185
|
+
Oid firstNS; /* first explicitly-listed namespace */
|
186
|
+
bool temp_missing;
|
187
|
+
bool forceRecompute; /* force recompute of finalPath */
|
180
188
|
|
189
|
+
/* needed for simplehash */
|
190
|
+
char status;
|
191
|
+
} SearchPathCacheEntry;
|
181
192
|
|
182
193
|
/*
|
183
194
|
* myTempNamespace is InvalidOid until and unless a TEMP namespace is set up
|
@@ -208,16 +219,88 @@ typedef struct
|
|
208
219
|
|
209
220
|
|
210
221
|
/* Local functions */
|
222
|
+
static bool RelationIsVisibleExt(Oid relid, bool *is_missing);
|
223
|
+
static bool TypeIsVisibleExt(Oid typid, bool *is_missing);
|
224
|
+
static bool FunctionIsVisibleExt(Oid funcid, bool *is_missing);
|
225
|
+
static bool OperatorIsVisibleExt(Oid oprid, bool *is_missing);
|
226
|
+
static bool OpclassIsVisibleExt(Oid opcid, bool *is_missing);
|
227
|
+
static bool OpfamilyIsVisibleExt(Oid opfid, bool *is_missing);
|
228
|
+
static bool CollationIsVisibleExt(Oid collid, bool *is_missing);
|
229
|
+
static bool ConversionIsVisibleExt(Oid conid, bool *is_missing);
|
230
|
+
static bool StatisticsObjIsVisibleExt(Oid stxid, bool *is_missing);
|
231
|
+
static bool TSParserIsVisibleExt(Oid prsId, bool *is_missing);
|
232
|
+
static bool TSDictionaryIsVisibleExt(Oid dictId, bool *is_missing);
|
233
|
+
static bool TSTemplateIsVisibleExt(Oid tmplId, bool *is_missing);
|
234
|
+
static bool TSConfigIsVisibleExt(Oid cfgid, bool *is_missing);
|
211
235
|
static void recomputeNamespacePath(void);
|
212
236
|
static void AccessTempTableNamespace(bool force);
|
213
237
|
static void InitTempTableNamespace(void);
|
214
238
|
static void RemoveTempRelations(Oid tempNamespaceId);
|
215
239
|
static void RemoveTempRelationsCallback(int code, Datum arg);
|
216
|
-
static void
|
240
|
+
static void InvalidationCallback(Datum arg, int cacheid, uint32 hashvalue);
|
217
241
|
static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
218
242
|
bool include_out_arguments, int pronargs,
|
219
243
|
int **argnumbers);
|
220
244
|
|
245
|
+
/*
|
246
|
+
* Recomputing the namespace path can be costly when done frequently, such as
|
247
|
+
* when a function has search_path set in proconfig. Add a search path cache
|
248
|
+
* that can be used by recomputeNamespacePath().
|
249
|
+
*
|
250
|
+
* The cache is also used to remember already-validated strings in
|
251
|
+
* check_search_path() to avoid the need to call SplitIdentifierString()
|
252
|
+
* repeatedly.
|
253
|
+
*
|
254
|
+
* The search path cache is based on a wrapper around a simplehash hash table
|
255
|
+
* (nsphash, defined below). The spcache wrapper deals with OOM while trying
|
256
|
+
* to initialize a key, optimizes repeated lookups of the same key, and also
|
257
|
+
* offers a more convenient API.
|
258
|
+
*/
|
259
|
+
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
#define SH_PREFIX nsphash
|
265
|
+
#define SH_ELEMENT_TYPE SearchPathCacheEntry
|
266
|
+
#define SH_KEY_TYPE SearchPathCacheKey
|
267
|
+
#define SH_KEY key
|
268
|
+
#define SH_HASH_KEY(tb, key) spcachekey_hash(key)
|
269
|
+
#define SH_EQUAL(tb, a, b) spcachekey_equal(a, b)
|
270
|
+
#define SH_SCOPE static inline
|
271
|
+
#define SH_DECLARE
|
272
|
+
// #define SH_DEFINE
|
273
|
+
#include "lib/simplehash.h"
|
274
|
+
|
275
|
+
/*
|
276
|
+
* We only expect a small number of unique search_path strings to be used. If
|
277
|
+
* this cache grows to an unreasonable size, reset it to avoid steady-state
|
278
|
+
* memory growth. Most likely, only a few of those entries will benefit from
|
279
|
+
* the cache, and the cache will be quickly repopulated with such entries.
|
280
|
+
*/
|
281
|
+
#define SPCACHE_RESET_THRESHOLD 256
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
/*
|
287
|
+
* Create or reset search_path cache as necessary.
|
288
|
+
*/
|
289
|
+
|
290
|
+
|
291
|
+
/*
|
292
|
+
* Look up entry in search path cache without inserting. Returns NULL if not
|
293
|
+
* present.
|
294
|
+
*/
|
295
|
+
|
296
|
+
|
297
|
+
/*
|
298
|
+
* Look up or insert entry in search path cache.
|
299
|
+
*
|
300
|
+
* Initialize key safely, so that OOM does not leave an entry without a valid
|
301
|
+
* key. Caller must ensure that non-key contents are properly initialized.
|
302
|
+
*/
|
303
|
+
|
221
304
|
|
222
305
|
/*
|
223
306
|
* RangeVarGetRelidExtended
|
@@ -305,6 +388,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
305
388
|
*/
|
306
389
|
|
307
390
|
|
391
|
+
/*
|
392
|
+
* RelationIsVisibleExt
|
393
|
+
* As above, but if the relation isn't found and is_missing is not NULL,
|
394
|
+
* then set *is_missing = true and return false instead of throwing
|
395
|
+
* an error. (Caller must initialize *is_missing = false.)
|
396
|
+
*/
|
397
|
+
|
398
|
+
|
308
399
|
|
309
400
|
/*
|
310
401
|
* TypenameGetTypid
|
@@ -329,6 +420,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
329
420
|
*/
|
330
421
|
|
331
422
|
|
423
|
+
/*
|
424
|
+
* TypeIsVisibleExt
|
425
|
+
* As above, but if the type isn't found and is_missing is not NULL,
|
426
|
+
* then set *is_missing = true and return false instead of throwing
|
427
|
+
* an error. (Caller must initialize *is_missing = false.)
|
428
|
+
*/
|
429
|
+
|
430
|
+
|
332
431
|
|
333
432
|
/*
|
334
433
|
* FuncnameGetCandidates
|
@@ -435,6 +534,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
435
534
|
*/
|
436
535
|
|
437
536
|
|
537
|
+
/*
|
538
|
+
* FunctionIsVisibleExt
|
539
|
+
* As above, but if the function isn't found and is_missing is not NULL,
|
540
|
+
* then set *is_missing = true and return false instead of throwing
|
541
|
+
* an error. (Caller must initialize *is_missing = false.)
|
542
|
+
*/
|
543
|
+
|
544
|
+
|
438
545
|
|
439
546
|
/*
|
440
547
|
* OpernameGetOprid
|
@@ -477,6 +584,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
477
584
|
*/
|
478
585
|
|
479
586
|
|
587
|
+
/*
|
588
|
+
* OperatorIsVisibleExt
|
589
|
+
* As above, but if the operator isn't found and is_missing is not NULL,
|
590
|
+
* then set *is_missing = true and return false instead of throwing
|
591
|
+
* an error. (Caller must initialize *is_missing = false.)
|
592
|
+
*/
|
593
|
+
|
594
|
+
|
480
595
|
|
481
596
|
/*
|
482
597
|
* OpclassnameGetOpcid
|
@@ -496,6 +611,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
496
611
|
*/
|
497
612
|
|
498
613
|
|
614
|
+
/*
|
615
|
+
* OpclassIsVisibleExt
|
616
|
+
* As above, but if the opclass isn't found and is_missing is not NULL,
|
617
|
+
* then set *is_missing = true and return false instead of throwing
|
618
|
+
* an error. (Caller must initialize *is_missing = false.)
|
619
|
+
*/
|
620
|
+
|
621
|
+
|
499
622
|
/*
|
500
623
|
* OpfamilynameGetOpfid
|
501
624
|
* Try to resolve an unqualified index opfamily name.
|
@@ -514,6 +637,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
514
637
|
*/
|
515
638
|
|
516
639
|
|
640
|
+
/*
|
641
|
+
* OpfamilyIsVisibleExt
|
642
|
+
* As above, but if the opfamily isn't found and is_missing is not NULL,
|
643
|
+
* then set *is_missing = true and return false instead of throwing
|
644
|
+
* an error. (Caller must initialize *is_missing = false.)
|
645
|
+
*/
|
646
|
+
|
647
|
+
|
517
648
|
/*
|
518
649
|
* lookup_collation
|
519
650
|
* If there's a collation of the given name/namespace, and it works
|
@@ -542,6 +673,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
542
673
|
*/
|
543
674
|
|
544
675
|
|
676
|
+
/*
|
677
|
+
* CollationIsVisibleExt
|
678
|
+
* As above, but if the collation isn't found and is_missing is not NULL,
|
679
|
+
* then set *is_missing = true and return false instead of throwing
|
680
|
+
* an error. (Caller must initialize *is_missing = false.)
|
681
|
+
*/
|
682
|
+
|
683
|
+
|
545
684
|
|
546
685
|
/*
|
547
686
|
* ConversionGetConid
|
@@ -560,6 +699,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
560
699
|
*/
|
561
700
|
|
562
701
|
|
702
|
+
/*
|
703
|
+
* ConversionIsVisibleExt
|
704
|
+
* As above, but if the conversion isn't found and is_missing is not NULL,
|
705
|
+
* then set *is_missing = true and return false instead of throwing
|
706
|
+
* an error. (Caller must initialize *is_missing = false.)
|
707
|
+
*/
|
708
|
+
|
709
|
+
|
563
710
|
/*
|
564
711
|
* get_statistics_object_oid - find a statistics object by possibly qualified name
|
565
712
|
*
|
@@ -575,6 +722,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
575
722
|
*/
|
576
723
|
|
577
724
|
|
725
|
+
/*
|
726
|
+
* StatisticsObjIsVisibleExt
|
727
|
+
* As above, but if the statistics object isn't found and is_missing is
|
728
|
+
* not NULL, then set *is_missing = true and return false instead of
|
729
|
+
* throwing an error. (Caller must initialize *is_missing = false.)
|
730
|
+
*/
|
731
|
+
|
732
|
+
|
578
733
|
/*
|
579
734
|
* get_ts_parser_oid - find a TS parser by possibly qualified name
|
580
735
|
*
|
@@ -590,6 +745,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
590
745
|
*/
|
591
746
|
|
592
747
|
|
748
|
+
/*
|
749
|
+
* TSParserIsVisibleExt
|
750
|
+
* As above, but if the parser isn't found and is_missing is not NULL,
|
751
|
+
* then set *is_missing = true and return false instead of throwing
|
752
|
+
* an error. (Caller must initialize *is_missing = false.)
|
753
|
+
*/
|
754
|
+
|
755
|
+
|
593
756
|
/*
|
594
757
|
* get_ts_dict_oid - find a TS dictionary by possibly qualified name
|
595
758
|
*
|
@@ -605,6 +768,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
605
768
|
*/
|
606
769
|
|
607
770
|
|
771
|
+
/*
|
772
|
+
* TSDictionaryIsVisibleExt
|
773
|
+
* As above, but if the dictionary isn't found and is_missing is not NULL,
|
774
|
+
* then set *is_missing = true and return false instead of throwing
|
775
|
+
* an error. (Caller must initialize *is_missing = false.)
|
776
|
+
*/
|
777
|
+
|
778
|
+
|
608
779
|
/*
|
609
780
|
* get_ts_template_oid - find a TS template by possibly qualified name
|
610
781
|
*
|
@@ -620,6 +791,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
620
791
|
*/
|
621
792
|
|
622
793
|
|
794
|
+
/*
|
795
|
+
* TSTemplateIsVisibleExt
|
796
|
+
* As above, but if the template isn't found and is_missing is not NULL,
|
797
|
+
* then set *is_missing = true and return false instead of throwing
|
798
|
+
* an error. (Caller must initialize *is_missing = false.)
|
799
|
+
*/
|
800
|
+
|
801
|
+
|
623
802
|
/*
|
624
803
|
* get_ts_config_oid - find a TS config by possibly qualified name
|
625
804
|
*
|
@@ -635,6 +814,14 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
635
814
|
*/
|
636
815
|
|
637
816
|
|
817
|
+
/*
|
818
|
+
* TSConfigIsVisibleExt
|
819
|
+
* As above, but if the configuration isn't found and is_missing is not
|
820
|
+
* NULL, then set *is_missing = true and return false instead of throwing
|
821
|
+
* an error. (Caller must initialize *is_missing = false.)
|
822
|
+
*/
|
823
|
+
|
824
|
+
|
638
825
|
|
639
826
|
/*
|
640
827
|
* DeconstructQualifiedName
|
@@ -726,7 +913,7 @@ static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames,
|
|
726
913
|
* but we also allow A_Star for the convenience of ColumnRef processing.
|
727
914
|
*/
|
728
915
|
char *
|
729
|
-
NameListToString(List *names)
|
916
|
+
NameListToString(const List *names)
|
730
917
|
{
|
731
918
|
StringInfoData string;
|
732
919
|
ListCell *l;
|
@@ -806,10 +993,10 @@ NameListToString(List *names)
|
|
806
993
|
|
807
994
|
|
808
995
|
/*
|
809
|
-
*
|
810
|
-
* namespace (either my own, or another backend's), return the
|
996
|
+
* GetTempNamespaceProcNumber - if the given namespace is a temporary-table
|
997
|
+
* namespace (either my own, or another backend's), return the proc number
|
811
998
|
* that owns it. Temporary-toast-table namespaces are included, too.
|
812
|
-
* If it isn't a temp namespace, return
|
999
|
+
* If it isn't a temp namespace, return INVALID_PROC_NUMBER.
|
813
1000
|
*/
|
814
1001
|
|
815
1002
|
|
@@ -841,8 +1028,7 @@ NameListToString(List *names)
|
|
841
1028
|
|
842
1029
|
|
843
1030
|
/*
|
844
|
-
*
|
845
|
-
* used by PushOverrideSearchPath.
|
1031
|
+
* GetSearchPathMatcher - fetch current search path definition.
|
846
1032
|
*
|
847
1033
|
* The result structure is allocated in the specified memory context
|
848
1034
|
* (which might or might not be equal to CurrentMemoryContext); but any
|
@@ -851,14 +1037,14 @@ NameListToString(List *names)
|
|
851
1037
|
|
852
1038
|
|
853
1039
|
/*
|
854
|
-
*
|
1040
|
+
* CopySearchPathMatcher - copy the specified SearchPathMatcher.
|
855
1041
|
*
|
856
1042
|
* The result structure is allocated in CurrentMemoryContext.
|
857
1043
|
*/
|
858
1044
|
|
859
1045
|
|
860
1046
|
/*
|
861
|
-
*
|
1047
|
+
* SearchPathMatchesCurrentEnvironment - does path match current environment?
|
862
1048
|
*
|
863
1049
|
* This is tested over and over in some common code paths, and in the typical
|
864
1050
|
* scenario where the active search path seldom changes, it'll always succeed.
|
@@ -868,53 +1054,44 @@ NameListToString(List *names)
|
|
868
1054
|
|
869
1055
|
|
870
1056
|
/*
|
871
|
-
*
|
872
|
-
*
|
873
|
-
* Do not use this function; almost any usage introduces a security
|
874
|
-
* vulnerability. It exists for the benefit of legacy code running in
|
875
|
-
* non-security-sensitive environments.
|
876
|
-
*
|
877
|
-
* We allow nested overrides, hence the push/pop terminology. The GUC
|
878
|
-
* search_path variable is ignored while an override is active.
|
879
|
-
*
|
880
|
-
* It's possible that newpath->useTemp is set but there is no longer any
|
881
|
-
* active temp namespace, if the path was saved during a transaction that
|
882
|
-
* created a temp namespace and was later rolled back. In that case we just
|
883
|
-
* ignore useTemp. A plausible alternative would be to create a new temp
|
884
|
-
* namespace, but for existing callers that's not necessary because an empty
|
885
|
-
* temp namespace wouldn't affect their results anyway.
|
1057
|
+
* get_collation_oid - find a collation by possibly qualified name
|
886
1058
|
*
|
887
|
-
*
|
888
|
-
*
|
889
|
-
* no existing namespace will simply not produce any hits during searches.
|
1059
|
+
* Note that this will only find collations that work with the current
|
1060
|
+
* database's encoding.
|
890
1061
|
*/
|
1062
|
+
Oid get_collation_oid(List *name, bool missing_ok) { return DEFAULT_COLLATION_OID; }
|
891
1063
|
|
892
1064
|
|
893
1065
|
/*
|
894
|
-
*
|
895
|
-
*
|
896
|
-
* Any push during a (sub)transaction will be popped automatically at abort.
|
897
|
-
* But it's caller error if a push isn't popped in normal control flow.
|
1066
|
+
* get_conversion_oid - find a conversion by possibly qualified name
|
898
1067
|
*/
|
899
1068
|
|
900
1069
|
|
1070
|
+
/*
|
1071
|
+
* FindDefaultConversionProc - find default encoding conversion proc
|
1072
|
+
*/
|
1073
|
+
|
901
1074
|
|
902
1075
|
/*
|
903
|
-
*
|
904
|
-
*
|
905
|
-
* Note that this will only find collations that work with the current
|
906
|
-
* database's encoding.
|
1076
|
+
* Look up namespace IDs and perform ACL checks. Return newly-allocated list.
|
907
1077
|
*/
|
908
|
-
Oid get_collation_oid(List *name, bool missing_ok) { return -1; }
|
909
1078
|
|
910
1079
|
|
911
1080
|
/*
|
912
|
-
*
|
1081
|
+
* Remove duplicates, run namespace search hooks, and prepend
|
1082
|
+
* implicitly-searched namespaces. Return newly-allocated list.
|
1083
|
+
*
|
1084
|
+
* If an object_access_hook is present, this must always be recalculated. It
|
1085
|
+
* may seem that duplicate elimination is not dependent on the result of the
|
1086
|
+
* hook, but if a hook returns different results on different calls for the
|
1087
|
+
* same namespace ID, then it could affect the order in which that namespace
|
1088
|
+
* appears in the final list.
|
913
1089
|
*/
|
914
1090
|
|
915
1091
|
|
916
1092
|
/*
|
917
|
-
*
|
1093
|
+
* Retrieve search path information from the cache; or if not there, fill
|
1094
|
+
* it. The returned entry is valid only until the next call to this function.
|
918
1095
|
*/
|
919
1096
|
|
920
1097
|
|
@@ -993,7 +1170,7 @@ Oid get_collation_oid(List *name, bool missing_ok) { return -1; }
|
|
993
1170
|
|
994
1171
|
|
995
1172
|
/*
|
996
|
-
*
|
1173
|
+
* InvalidationCallback
|
997
1174
|
* Syscache inval callback function
|
998
1175
|
*/
|
999
1176
|
|
@@ -1032,9 +1209,7 @@ Oid get_collation_oid(List *name, bool missing_ok) { return -1; }
|
|
1032
1209
|
* condition errors when a query that's scanning a catalog using an MVCC
|
1033
1210
|
* snapshot uses one of these functions. The underlying IsVisible functions
|
1034
1211
|
* always use an up-to-date snapshot and so might see the object as already
|
1035
|
-
* gone when it's still visible to the transaction snapshot.
|
1036
|
-
* condition in the current coding because we don't accept sinval messages
|
1037
|
-
* between the SearchSysCacheExists test and the subsequent lookup.)
|
1212
|
+
* gone when it's still visible to the transaction snapshot.
|
1038
1213
|
*/
|
1039
1214
|
|
1040
1215
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
* pg_proc.c
|
10
10
|
* routines to support manipulation of the pg_proc relation
|
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
|
*
|
@@ -38,9 +38,7 @@
|
|
38
38
|
#include "mb/pg_wchar.h"
|
39
39
|
#include "miscadmin.h"
|
40
40
|
#include "nodes/nodeFuncs.h"
|
41
|
-
#include "parser/analyze.h"
|
42
41
|
#include "parser/parse_coerce.h"
|
43
|
-
#include "parser/parse_type.h"
|
44
42
|
#include "pgstat.h"
|
45
43
|
#include "rewrite/rewriteHandler.h"
|
46
44
|
#include "tcop/pquery.h"
|
@@ -10,7 +10,7 @@
|
|
10
10
|
* Support routines for various kinds of object creation.
|
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
|
*
|
@@ -45,8 +45,7 @@
|
|
45
45
|
#include "commands/defrem.h"
|
46
46
|
#include "nodes/makefuncs.h"
|
47
47
|
#include "parser/parse_type.h"
|
48
|
-
#include "
|
49
|
-
#include "utils/builtins.h"
|
48
|
+
#include "utils/fmgrprotos.h"
|
50
49
|
|
51
50
|
/*
|
52
51
|
* Extract a string value (otherwise uninterpreted) from a DefElem.
|