pg_query 2.2.1 → 4.2.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 +5 -0
- data/Rakefile +2 -2
- data/ext/pg_query/include/access/amapi.h +45 -1
- data/ext/pg_query/include/access/attmap.h +1 -1
- data/ext/pg_query/include/access/attnum.h +2 -2
- data/ext/pg_query/include/access/clog.h +4 -2
- data/ext/pg_query/include/access/commit_ts.h +6 -9
- data/ext/pg_query/include/access/detoast.h +1 -11
- data/ext/pg_query/include/access/genam.h +15 -12
- data/ext/pg_query/include/access/gin.h +2 -2
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +75 -87
- data/ext/pg_query/include/access/itup.h +7 -1
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +17 -2
- data/ext/pg_query/include/access/rmgr.h +30 -3
- data/ext/pg_query/include/access/rmgrlist.h +23 -23
- data/ext/pg_query/include/access/sdir.h +1 -1
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +4 -2
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +2 -1
- data/ext/pg_query/include/access/tableam.h +272 -20
- data/ext/pg_query/include/access/toast_compression.h +73 -0
- data/ext/pg_query/include/access/transam.h +123 -13
- data/ext/pg_query/include/access/tupconvert.h +1 -1
- data/ext/pg_query/include/access/tupdesc.h +1 -1
- data/ext/pg_query/include/access/tupmacs.h +3 -3
- data/ext/pg_query/include/access/twophase.h +3 -1
- data/ext/pg_query/include/access/xact.h +73 -19
- data/ext/pg_query/include/access/xlog.h +60 -155
- data/ext/pg_query/include/access/xlog_internal.h +40 -13
- data/ext/pg_query/include/access/xlogdefs.h +8 -16
- data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/access/xlogreader.h +145 -39
- data/ext/pg_query/include/access/xlogrecord.h +18 -9
- data/ext/pg_query/include/access/xlogrecovery.h +157 -0
- data/ext/pg_query/include/c.h +101 -44
- data/ext/pg_query/include/catalog/catalog.h +3 -1
- data/ext/pg_query/include/catalog/catversion.h +2 -2
- data/ext/pg_query/include/catalog/dependency.h +8 -16
- data/ext/pg_query/include/catalog/genbki.h +83 -5
- data/ext/pg_query/include/catalog/index.h +18 -3
- data/ext/pg_query/include/catalog/indexing.h +12 -324
- data/ext/pg_query/include/catalog/namespace.h +4 -2
- data/ext/pg_query/include/catalog/objectaccess.h +70 -2
- data/ext/pg_query/include/catalog/objectaddress.h +11 -6
- data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_am.h +4 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
- data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
- data/ext/pg_query/include/catalog/pg_authid.h +7 -2
- data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
- data/ext/pg_query/include/catalog/pg_class.h +44 -14
- data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
- data/ext/pg_query/include/catalog/pg_collation.h +33 -8
- data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
- data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/catalog/pg_control.h +3 -5
- data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
- data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_depend.h +11 -7
- data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_index.h +17 -7
- data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
- data/ext/pg_query/include/catalog/pg_language.h +10 -5
- data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
- data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
- data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_operator.h +18 -15
- data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_proc.h +20 -11
- data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
- data/ext/pg_query/include/catalog/pg_publication.h +50 -7
- data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
- data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/catalog/pg_transform.h +8 -5
- data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
- data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_type.h +55 -24
- data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
- data/ext/pg_query/include/catalog/storage.h +5 -3
- data/ext/pg_query/include/commands/async.h +3 -4
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +11 -24
- data/ext/pg_query/include/commands/event_trigger.h +2 -2
- data/ext/pg_query/include/commands/explain.h +1 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +2 -2
- data/ext/pg_query/include/commands/trigger.h +18 -16
- data/ext/pg_query/include/commands/user.h +2 -2
- data/ext/pg_query/include/commands/vacuum.h +88 -41
- data/ext/pg_query/include/commands/variable.h +1 -1
- data/ext/pg_query/include/common/file_perm.h +4 -4
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/ip.h +1 -7
- data/ext/pg_query/include/common/keywords.h +2 -6
- data/ext/pg_query/include/common/kwlookup.h +1 -1
- data/ext/pg_query/include/common/pg_prng.h +60 -0
- data/ext/pg_query/include/common/relpath.h +2 -2
- data/ext/pg_query/include/common/string.h +24 -1
- data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/datatype/timestamp.h +40 -1
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +65 -22
- data/ext/pg_query/include/executor/functions.h +17 -3
- data/ext/pg_query/include/executor/instrument.h +33 -16
- data/ext/pg_query/include/executor/spi.h +41 -3
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +1 -1
- data/ext/pg_query/include/fmgr.h +13 -7
- data/ext/pg_query/include/funcapi.h +16 -4
- data/ext/pg_query/include/getaddrinfo.h +1 -1
- data/ext/pg_query/include/jit/jit.h +11 -11
- data/ext/pg_query/include/kwlist_d.h +517 -494
- data/ext/pg_query/include/lib/dshash.h +112 -0
- data/ext/pg_query/include/lib/ilist.h +20 -1
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +140 -15
- data/ext/pg_query/include/lib/sort_template.h +432 -0
- data/ext/pg_query/include/lib/stringinfo.h +1 -1
- data/ext/pg_query/include/libpq/auth.h +6 -4
- data/ext/pg_query/include/libpq/crypt.h +5 -4
- data/ext/pg_query/include/libpq/hba.h +43 -4
- data/ext/pg_query/include/libpq/libpq-be.h +23 -6
- data/ext/pg_query/include/libpq/libpq.h +30 -20
- data/ext/pg_query/include/libpq/pqcomm.h +17 -31
- data/ext/pg_query/include/libpq/pqformat.h +1 -1
- data/ext/pg_query/include/libpq/pqsignal.h +4 -4
- data/ext/pg_query/include/mb/pg_wchar.h +105 -23
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +47 -41
- data/ext/pg_query/include/nodes/bitmapset.h +1 -1
- data/ext/pg_query/include/nodes/execnodes.h +270 -78
- data/ext/pg_query/include/nodes/extensible.h +4 -2
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +7 -6
- data/ext/pg_query/include/nodes/memnodes.h +5 -3
- data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/nodes/nodes.h +30 -11
- data/ext/pg_query/include/nodes/params.h +1 -1
- data/ext/pg_query/include/nodes/parsenodes.h +322 -90
- data/ext/pg_query/include/nodes/pathnodes.h +243 -66
- data/ext/pg_query/include/nodes/pg_list.h +75 -69
- data/ext/pg_query/include/nodes/plannodes.h +111 -28
- data/ext/pg_query/include/nodes/primnodes.h +99 -47
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +58 -39
- data/ext/pg_query/include/optimizer/cost.h +9 -2
- data/ext/pg_query/include/optimizer/geqo.h +9 -7
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +25 -17
- data/ext/pg_query/include/optimizer/paths.h +6 -6
- data/ext/pg_query/include/optimizer/planmain.h +15 -14
- data/ext/pg_query/include/parser/analyze.h +19 -5
- data/ext/pg_query/include/parser/gram.h +947 -913
- data/ext/pg_query/include/parser/gramparse.h +1 -1
- data/ext/pg_query/include/parser/kwlist.h +463 -453
- data/ext/pg_query/include/parser/parse_agg.h +2 -7
- data/ext/pg_query/include/parser/parse_coerce.h +3 -1
- data/ext/pg_query/include/parser/parse_expr.h +2 -3
- data/ext/pg_query/include/parser/parse_func.h +2 -1
- data/ext/pg_query/include/parser/parse_node.h +21 -9
- data/ext/pg_query/include/parser/parse_oper.h +1 -3
- data/ext/pg_query/include/parser/parse_relation.h +5 -4
- data/ext/pg_query/include/parser/parse_type.h +1 -1
- data/ext/pg_query/include/parser/parser.h +31 -4
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +1 -1
- data/ext/pg_query/include/parser/scansup.h +2 -5
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +83 -41
- data/ext/pg_query/include/pg_config_manual.h +74 -21
- data/ext/pg_query/include/pg_getopt.h +6 -6
- data/ext/pg_query/include/pg_query.h +5 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +939 -113
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +449 -1238
- data/ext/pg_query/include/pgtime.h +14 -4
- data/ext/pg_query/include/pl_gram.h +126 -128
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/include/plerrcodes.h +9 -1
- data/ext/pg_query/include/plpgsql.h +52 -54
- data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
- data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
- data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
- data/ext/pg_query/include/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +1 -1
- data/ext/pg_query/include/port/pg_bitutils.h +40 -10
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port.h +71 -46
- data/ext/pg_query/include/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres.h +60 -16
- data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
- data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
- data/ext/pg_query/include/postmaster/bgworker.h +2 -1
- data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
- data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +42 -8
- data/ext/pg_query/include/postmaster/postmaster.h +18 -17
- data/ext/pg_query/include/postmaster/startup.h +39 -0
- data/ext/pg_query/include/postmaster/syslogger.h +15 -10
- data/ext/pg_query/include/postmaster/walwriter.h +3 -3
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1419 -914
- data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
- data/ext/pg_query/include/regex/regex.h +18 -16
- data/ext/pg_query/include/replication/logicallauncher.h +3 -5
- data/ext/pg_query/include/replication/logicalproto.h +161 -17
- data/ext/pg_query/include/replication/logicalworker.h +1 -1
- data/ext/pg_query/include/replication/origin.h +7 -7
- data/ext/pg_query/include/replication/reorderbuffer.h +259 -42
- data/ext/pg_query/include/replication/slot.h +22 -11
- data/ext/pg_query/include/replication/syncrep.h +5 -5
- data/ext/pg_query/include/replication/walreceiver.h +145 -13
- data/ext/pg_query/include/replication/walsender.h +8 -8
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
- data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/storage/backendid.h +3 -3
- data/ext/pg_query/include/storage/block.h +4 -10
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +19 -14
- data/ext/pg_query/include/storage/bufpage.h +6 -8
- data/ext/pg_query/include/storage/condition_variable.h +13 -2
- data/ext/pg_query/include/storage/dsm.h +4 -1
- data/ext/pg_query/include/storage/dsm_impl.h +3 -2
- data/ext/pg_query/include/storage/fd.h +33 -3
- data/ext/pg_query/include/storage/fileset.h +40 -0
- data/ext/pg_query/include/storage/ipc.h +4 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +3 -1
- data/ext/pg_query/include/storage/large_object.h +2 -2
- data/ext/pg_query/include/storage/latch.h +9 -13
- data/ext/pg_query/include/storage/lmgr.h +2 -1
- data/ext/pg_query/include/storage/lock.h +11 -8
- data/ext/pg_query/include/storage/lockdefs.h +2 -2
- data/ext/pg_query/include/storage/lwlock.h +5 -32
- data/ext/pg_query/include/storage/lwlocknames.h +0 -1
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +9 -7
- data/ext/pg_query/include/storage/pmsignal.h +15 -4
- data/ext/pg_query/include/storage/predicate.h +4 -4
- data/ext/pg_query/include/storage/proc.h +173 -59
- data/ext/pg_query/include/storage/procarray.h +98 -0
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -7
- data/ext/pg_query/include/storage/relfilenode.h +1 -1
- data/ext/pg_query/include/storage/s_lock.h +60 -21
- data/ext/pg_query/include/storage/sharedfileset.h +3 -11
- data/ext/pg_query/include/storage/shm_mq.h +5 -4
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -1
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +1 -1
- data/ext/pg_query/include/storage/smgr.h +10 -8
- data/ext/pg_query/include/storage/spin.h +2 -2
- data/ext/pg_query/include/storage/standby.h +13 -6
- data/ext/pg_query/include/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/storage/sync.h +7 -3
- data/ext/pg_query/include/tcop/cmdtag.h +1 -1
- data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -1
- data/ext/pg_query/include/tcop/fastpath.h +1 -2
- data/ext/pg_query/include/tcop/pquery.h +1 -1
- data/ext/pg_query/include/tcop/tcopprot.h +19 -11
- data/ext/pg_query/include/tcop/utility.h +7 -3
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
- data/ext/pg_query/include/utils/acl.h +24 -3
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +7 -2
- data/ext/pg_query/include/utils/backend_progress.h +44 -0
- data/ext/pg_query/include/utils/backend_status.h +321 -0
- data/ext/pg_query/include/utils/builtins.h +10 -11
- data/ext/pg_query/include/utils/bytea.h +3 -2
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +1 -1
- data/ext/pg_query/include/utils/datetime.h +8 -7
- data/ext/pg_query/include/utils/datum.h +9 -1
- data/ext/pg_query/include/utils/dsa.h +1 -1
- data/ext/pg_query/include/utils/dynahash.h +4 -3
- data/ext/pg_query/include/utils/elog.h +52 -21
- data/ext/pg_query/include/utils/errcodes.h +2 -0
- data/ext/pg_query/include/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/utils/float.h +7 -7
- data/ext/pg_query/include/utils/fmgroids.h +1300 -696
- data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
- data/ext/pg_query/include/utils/fmgrtab.h +6 -5
- data/ext/pg_query/include/utils/guc.h +69 -43
- data/ext/pg_query/include/utils/guc_tables.h +23 -19
- data/ext/pg_query/include/utils/hsearch.h +15 -11
- data/ext/pg_query/include/utils/inval.h +4 -1
- data/ext/pg_query/include/utils/lsyscache.h +11 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +8 -3
- data/ext/pg_query/include/utils/numeric.h +19 -5
- data/ext/pg_query/include/utils/palloc.h +25 -3
- data/ext/pg_query/include/utils/partcache.h +1 -1
- data/ext/pg_query/include/utils/pg_locale.h +17 -9
- data/ext/pg_query/include/utils/pg_lsn.h +1 -1
- data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +6 -5
- data/ext/pg_query/include/utils/portal.h +10 -12
- data/ext/pg_query/include/utils/ps_status.h +1 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/queryjumble.h +88 -0
- data/ext/pg_query/include/utils/regproc.h +14 -3
- data/ext/pg_query/include/utils/rel.h +71 -19
- data/ext/pg_query/include/utils/relcache.h +8 -5
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/rls.h +2 -2
- data/ext/pg_query/include/utils/ruleutils.h +4 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +34 -14
- data/ext/pg_query/include/utils/snapshot.h +14 -1
- data/ext/pg_query/include/utils/sortsupport.h +117 -2
- data/ext/pg_query/include/utils/syscache.h +6 -1
- data/ext/pg_query/include/utils/timeout.h +11 -4
- data/ext/pg_query/include/utils/timestamp.h +6 -5
- data/ext/pg_query/include/utils/tuplesort.h +25 -11
- data/ext/pg_query/include/utils/tuplestore.h +2 -2
- data/ext/pg_query/include/utils/typcache.h +24 -17
- data/ext/pg_query/include/utils/tzparser.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +5 -3
- data/ext/pg_query/include/utils/wait_event.h +289 -0
- data/ext/pg_query/include/utils/xml.h +4 -4
- data/ext/pg_query/pg_query.pb-c.c +4302 -2304
- data/ext/pg_query/pg_query_deparse.c +986 -301
- data/ext/pg_query/pg_query_fingerprint.c +30 -10
- data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +54 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
- data/ext/pg_query/pg_query_parse.c +1 -1
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
- data/ext/pg_query/pg_query_scan.c +2 -1
- data/ext/pg_query/pg_query_split.c +3 -2
- data/ext/pg_query/src_backend_catalog_namespace.c +20 -9
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +401 -76
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +74 -11
- data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +33874 -31261
- data/ext/pg_query/src_backend_parser_parser.c +26 -7
- data/ext/pg_query/src_backend_parser_scan.c +172 -209
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +62 -23
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +71 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
- data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
- data/ext/pg_query/src_backend_utils_misc_guc.c +206 -45
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
- data/ext/pg_query/src_common_encnames.c +1 -1
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +517 -494
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_pg_prng.c +152 -0
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_string.c +7 -1
- data/ext/pg_query/src_common_stringinfo.c +1 -1
- data/ext/pg_query/src_common_wchar.c +701 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
- 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 +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/src_port_pg_bitutils.c +41 -31
- data/ext/pg_query/src_port_pgsleep.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +37 -13
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +5 -1
- data/lib/pg_query/node.rb +2 -2
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +8 -7
- data/lib/pg_query/pg_query_pb.rb +1108 -942
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +23 -13
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_random.c +0 -31
data/ext/pg_query/include/c.h
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
* polluting the namespace with lots of stuff...
|
10
10
|
*
|
11
11
|
*
|
12
|
-
* Portions Copyright (c) 1996-
|
12
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
14
14
|
*
|
15
15
|
* src/include/c.h
|
@@ -98,11 +98,21 @@
|
|
98
98
|
*
|
99
99
|
* GCC: https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
|
100
100
|
* GCC: https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html
|
101
|
+
* Clang: https://clang.llvm.org/docs/AttributeReference.html
|
101
102
|
* Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html
|
102
103
|
* XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/function_attributes.html
|
103
104
|
* XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html
|
104
105
|
*/
|
105
106
|
|
107
|
+
/*
|
108
|
+
* For compilers which don't support __has_attribute, we just define
|
109
|
+
* __has_attribute(x) to 0 so that we can define macros for various
|
110
|
+
* __attribute__s more easily below.
|
111
|
+
*/
|
112
|
+
#ifndef __has_attribute
|
113
|
+
#define __has_attribute(attribute) 0
|
114
|
+
#endif
|
115
|
+
|
106
116
|
/* only GCC supports the unused attribute */
|
107
117
|
#ifdef __GNUC__
|
108
118
|
#define pg_attribute_unused() __attribute__((unused))
|
@@ -110,6 +120,18 @@
|
|
110
120
|
#define pg_attribute_unused()
|
111
121
|
#endif
|
112
122
|
|
123
|
+
/*
|
124
|
+
* pg_nodiscard means the compiler should warn if the result of a function
|
125
|
+
* call is ignored. The name "nodiscard" is chosen in alignment with
|
126
|
+
* (possibly future) C and C++ standards. For maximum compatibility, use it
|
127
|
+
* as a function declaration specifier, so it goes before the return type.
|
128
|
+
*/
|
129
|
+
#ifdef __GNUC__
|
130
|
+
#define pg_nodiscard __attribute__((warn_unused_result))
|
131
|
+
#else
|
132
|
+
#define pg_nodiscard
|
133
|
+
#endif
|
134
|
+
|
113
135
|
/*
|
114
136
|
* Place this macro before functions that should be allowed to make misaligned
|
115
137
|
* accesses. Think twice before using it on non-x86-specific code!
|
@@ -190,6 +212,39 @@
|
|
190
212
|
#define pg_noinline
|
191
213
|
#endif
|
192
214
|
|
215
|
+
/*
|
216
|
+
* For now, just define pg_attribute_cold and pg_attribute_hot to be empty
|
217
|
+
* macros on minGW 8.1. There appears to be a compiler bug that results in
|
218
|
+
* compilation failure. At this time, we still have at least one buildfarm
|
219
|
+
* animal running that compiler, so this should make that green again. It's
|
220
|
+
* likely this compiler is not popular enough to warrant keeping this code
|
221
|
+
* around forever, so let's just remove it once the last buildfarm animal
|
222
|
+
* upgrades.
|
223
|
+
*/
|
224
|
+
#if defined(__MINGW64__) && __GNUC__ == 8 && __GNUC_MINOR__ == 1
|
225
|
+
|
226
|
+
#define pg_attribute_cold
|
227
|
+
#define pg_attribute_hot
|
228
|
+
|
229
|
+
#else
|
230
|
+
/*
|
231
|
+
* Marking certain functions as "hot" or "cold" can be useful to assist the
|
232
|
+
* compiler in arranging the assembly code in a more efficient way.
|
233
|
+
*/
|
234
|
+
#if __has_attribute (cold)
|
235
|
+
#define pg_attribute_cold __attribute__((cold))
|
236
|
+
#else
|
237
|
+
#define pg_attribute_cold
|
238
|
+
#endif
|
239
|
+
|
240
|
+
#if __has_attribute (hot)
|
241
|
+
#define pg_attribute_hot __attribute__((hot))
|
242
|
+
#else
|
243
|
+
#define pg_attribute_hot
|
244
|
+
#endif
|
245
|
+
|
246
|
+
#endif /* defined(__MINGW64__) && __GNUC__ == 8 &&
|
247
|
+
* __GNUC_MINOR__ == 1 */
|
193
248
|
/*
|
194
249
|
* Mark a point as unreachable in a portable fashion. This should preferably
|
195
250
|
* be something that the compiler understands, to aid code generation.
|
@@ -277,6 +332,13 @@
|
|
277
332
|
#define dummyret char
|
278
333
|
#endif
|
279
334
|
|
335
|
+
/*
|
336
|
+
* Generic function pointer. This can be used in the rare cases where it's
|
337
|
+
* necessary to cast a function pointer to a seemingly incompatible function
|
338
|
+
* pointer type while avoiding gcc's -Wcast-function-type warnings.
|
339
|
+
*/
|
340
|
+
typedef void (*pg_funcptr_t) (void);
|
341
|
+
|
280
342
|
/*
|
281
343
|
* We require C99, hence the compiler should understand flexible array
|
282
344
|
* members. However, for documentation purposes we still consider it to be
|
@@ -541,14 +603,6 @@ typedef uint32 CommandId;
|
|
541
603
|
#define FirstCommandId ((CommandId) 0)
|
542
604
|
#define InvalidCommandId (~(CommandId)0)
|
543
605
|
|
544
|
-
/*
|
545
|
-
* Array indexing support
|
546
|
-
*/
|
547
|
-
#define MAXDIM 6
|
548
|
-
typedef struct
|
549
|
-
{
|
550
|
-
int indx[MAXDIM];
|
551
|
-
} IntArray;
|
552
606
|
|
553
607
|
/* ----------------
|
554
608
|
* Variable-length datatypes all share the 'struct varlena' header.
|
@@ -937,35 +991,6 @@ extern void ExceptionalCondition(const char *conditionName,
|
|
937
991
|
*/
|
938
992
|
#define Abs(x) ((x) >= 0 ? (x) : -(x))
|
939
993
|
|
940
|
-
/*
|
941
|
-
* StrNCpy
|
942
|
-
* Like standard library function strncpy(), except that result string
|
943
|
-
* is guaranteed to be null-terminated --- that is, at most N-1 bytes
|
944
|
-
* of the source string will be kept.
|
945
|
-
* Also, the macro returns no result (too hard to do that without
|
946
|
-
* evaluating the arguments multiple times, which seems worse).
|
947
|
-
*
|
948
|
-
* BTW: when you need to copy a non-null-terminated string (like a text
|
949
|
-
* datum) and add a null, do not do it with StrNCpy(..., len+1). That
|
950
|
-
* might seem to work, but it fetches one byte more than there is in the
|
951
|
-
* text object. One fine day you'll have a SIGSEGV because there isn't
|
952
|
-
* another byte before the end of memory. Don't laugh, we've had real
|
953
|
-
* live bug reports from real live users over exactly this mistake.
|
954
|
-
* Do it honestly with "memcpy(dst,src,len); dst[len] = '\0';", instead.
|
955
|
-
*/
|
956
|
-
#define StrNCpy(dst,src,len) \
|
957
|
-
do \
|
958
|
-
{ \
|
959
|
-
char * _dst = (dst); \
|
960
|
-
Size _len = (len); \
|
961
|
-
\
|
962
|
-
if (_len > 0) \
|
963
|
-
{ \
|
964
|
-
strncpy(_dst, (src), _len); \
|
965
|
-
_dst[_len-1] = '\0'; \
|
966
|
-
} \
|
967
|
-
} while (0)
|
968
|
-
|
969
994
|
|
970
995
|
/* Get a bit mask of the bits set in non-long aligned addresses */
|
971
996
|
#define LONG_ALIGN_MASK (sizeof(long) - 1)
|
@@ -1145,7 +1170,6 @@ typedef union PGAlignedXLogBlock
|
|
1145
1170
|
#define STATUS_OK (0)
|
1146
1171
|
#define STATUS_ERROR (-1)
|
1147
1172
|
#define STATUS_EOF (-2)
|
1148
|
-
#define STATUS_WAITING (2)
|
1149
1173
|
|
1150
1174
|
/*
|
1151
1175
|
* gettext support
|
@@ -1167,7 +1191,8 @@ typedef union PGAlignedXLogBlock
|
|
1167
1191
|
* access to the original string and translated string, and for cases where
|
1168
1192
|
* immediate translation is not possible, like when initializing global
|
1169
1193
|
* variables.
|
1170
|
-
*
|
1194
|
+
*
|
1195
|
+
* https://www.gnu.org/software/gettext/manual/html_node/Special-cases.html
|
1171
1196
|
*/
|
1172
1197
|
#define gettext_noop(x) (x)
|
1173
1198
|
|
@@ -1287,10 +1312,35 @@ extern long long strtoll(const char *str, char **endptr, int base);
|
|
1287
1312
|
extern unsigned long long strtoull(const char *str, char **endptr, int base);
|
1288
1313
|
#endif
|
1289
1314
|
|
1290
|
-
/*
|
1315
|
+
/*
|
1316
|
+
* Thin wrappers that convert strings to exactly 64-bit integers, matching our
|
1317
|
+
* definition of int64. (For the naming, compare that POSIX has
|
1318
|
+
* strtoimax()/strtoumax() which return intmax_t/uintmax_t.)
|
1319
|
+
*/
|
1320
|
+
#ifdef HAVE_LONG_INT_64
|
1321
|
+
#define strtoi64(str, endptr, base) ((int64) strtol(str, endptr, base))
|
1322
|
+
#define strtou64(str, endptr, base) ((uint64) strtoul(str, endptr, base))
|
1323
|
+
#else
|
1324
|
+
#define strtoi64(str, endptr, base) ((int64) strtoll(str, endptr, base))
|
1325
|
+
#define strtou64(str, endptr, base) ((uint64) strtoull(str, endptr, base))
|
1326
|
+
#endif
|
1327
|
+
|
1328
|
+
/*
|
1329
|
+
* Use "extern PGDLLIMPORT ..." to declare variables that are defined
|
1330
|
+
* in the core backend and need to be accessible by loadable modules.
|
1331
|
+
* No special marking is required on most ports.
|
1332
|
+
*/
|
1291
1333
|
#ifndef PGDLLIMPORT
|
1292
1334
|
#define PGDLLIMPORT
|
1293
1335
|
#endif
|
1336
|
+
|
1337
|
+
/*
|
1338
|
+
* Use "extern PGDLLEXPORT ..." to declare functions that are defined in
|
1339
|
+
* loadable modules and need to be callable by the core backend. (Usually,
|
1340
|
+
* this is not necessary because our build process automatically exports
|
1341
|
+
* such symbols, but sometimes manual marking is required.)
|
1342
|
+
* No special marking is required on most ports.
|
1343
|
+
*/
|
1294
1344
|
#ifndef PGDLLEXPORT
|
1295
1345
|
#define PGDLLEXPORT
|
1296
1346
|
#endif
|
@@ -1310,14 +1360,21 @@ extern unsigned long long strtoull(const char *str, char **endptr, int base);
|
|
1310
1360
|
|
1311
1361
|
/*
|
1312
1362
|
* When there is no sigsetjmp, its functionality is provided by plain
|
1313
|
-
* setjmp.
|
1314
|
-
* that
|
1363
|
+
* setjmp. We now support the case only on Windows. However, it seems
|
1364
|
+
* that MinGW-64 has some longstanding issues in its setjmp support,
|
1365
|
+
* so on that toolchain we cheat and use gcc's builtins.
|
1315
1366
|
*/
|
1316
1367
|
#ifdef WIN32
|
1368
|
+
#ifdef __MINGW64__
|
1369
|
+
typedef intptr_t sigjmp_buf[5];
|
1370
|
+
#define sigsetjmp(x,y) __builtin_setjmp(x)
|
1371
|
+
#define siglongjmp __builtin_longjmp
|
1372
|
+
#else /* !__MINGW64__ */
|
1317
1373
|
#define sigjmp_buf jmp_buf
|
1318
1374
|
#define sigsetjmp(x,y) setjmp(x)
|
1319
1375
|
#define siglongjmp longjmp
|
1320
|
-
#endif
|
1376
|
+
#endif /* __MINGW64__ */
|
1377
|
+
#endif /* WIN32 */
|
1321
1378
|
|
1322
1379
|
/* EXEC_BACKEND defines */
|
1323
1380
|
#ifdef EXEC_BACKEND
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* prototypes for functions in backend/catalog/catalog.c
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/catalog/catalog.h
|
@@ -34,6 +34,8 @@ extern bool IsReservedName(const char *name);
|
|
34
34
|
|
35
35
|
extern bool IsSharedRelation(Oid relationId);
|
36
36
|
|
37
|
+
extern bool IsPinnedObject(Oid classId, Oid objectId);
|
38
|
+
|
37
39
|
extern Oid GetNewOidWithIndex(Relation relation, Oid indexId,
|
38
40
|
AttrNumber oidcolumn);
|
39
41
|
extern Oid GetNewRelFileNode(Oid reltablespace, Relation pg_class,
|
@@ -34,7 +34,7 @@
|
|
34
34
|
* database contents or layout, such as altering tuple headers.
|
35
35
|
*
|
36
36
|
*
|
37
|
-
* Portions Copyright (c) 1996-
|
37
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
38
38
|
* Portions Copyright (c) 1994, Regents of the University of California
|
39
39
|
*
|
40
40
|
* src/include/catalog/catversion.h
|
@@ -53,6 +53,6 @@
|
|
53
53
|
*/
|
54
54
|
|
55
55
|
/* yyyymmddN */
|
56
|
-
#define CATALOG_VERSION_NO
|
56
|
+
#define CATALOG_VERSION_NO 202209061
|
57
57
|
|
58
58
|
#endif
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Routines to support inter-object dependencies.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/catalog/dependency.h
|
@@ -36,8 +36,7 @@ typedef enum DependencyType
|
|
36
36
|
DEPENDENCY_PARTITION_PRI = 'P',
|
37
37
|
DEPENDENCY_PARTITION_SEC = 'S',
|
38
38
|
DEPENDENCY_EXTENSION = 'e',
|
39
|
-
DEPENDENCY_AUTO_EXTENSION = 'x'
|
40
|
-
DEPENDENCY_PIN = 'p'
|
39
|
+
DEPENDENCY_AUTO_EXTENSION = 'x'
|
41
40
|
} DependencyType;
|
42
41
|
|
43
42
|
/*
|
@@ -47,27 +46,21 @@ typedef enum DependencyType
|
|
47
46
|
* unless the dependent object is dropped at the same time. There are some
|
48
47
|
* additional rules however:
|
49
48
|
*
|
50
|
-
* (a)
|
51
|
-
* rather, the referenced object is an essential part of the system. This
|
52
|
-
* applies to the initdb-created superuser. Entries of this type are only
|
53
|
-
* created by initdb; objects in this category don't need further pg_shdepend
|
54
|
-
* entries if more objects come to depend on them.
|
55
|
-
*
|
56
|
-
* (b) a SHARED_DEPENDENCY_OWNER entry means that the referenced object is
|
49
|
+
* (a) a SHARED_DEPENDENCY_OWNER entry means that the referenced object is
|
57
50
|
* the role owning the dependent object. The referenced object must be
|
58
51
|
* a pg_authid entry.
|
59
52
|
*
|
60
|
-
* (
|
53
|
+
* (b) a SHARED_DEPENDENCY_ACL entry means that the referenced object is
|
61
54
|
* a role mentioned in the ACL field of the dependent object. The referenced
|
62
55
|
* object must be a pg_authid entry. (SHARED_DEPENDENCY_ACL entries are not
|
63
56
|
* created for the owner of an object; hence two objects may be linked by
|
64
57
|
* one or the other, but not both, of these dependency types.)
|
65
58
|
*
|
66
|
-
* (
|
59
|
+
* (c) a SHARED_DEPENDENCY_POLICY entry means that the referenced object is
|
67
60
|
* a role mentioned in a policy object. The referenced object must be a
|
68
61
|
* pg_authid entry.
|
69
62
|
*
|
70
|
-
* (
|
63
|
+
* (d) a SHARED_DEPENDENCY_TABLESPACE entry means that the referenced
|
71
64
|
* object is a tablespace mentioned in a relation without storage. The
|
72
65
|
* referenced object must be a pg_tablespace entry. (Relations that have
|
73
66
|
* storage don't need this: they are protected by the existence of a physical
|
@@ -78,7 +71,6 @@ typedef enum DependencyType
|
|
78
71
|
*/
|
79
72
|
typedef enum SharedDependencyType
|
80
73
|
{
|
81
|
-
SHARED_DEPENDENCY_PIN = 'p',
|
82
74
|
SHARED_DEPENDENCY_OWNER = 'o',
|
83
75
|
SHARED_DEPENDENCY_ACL = 'a',
|
84
76
|
SHARED_DEPENDENCY_POLICY = 'r',
|
@@ -128,8 +120,10 @@ typedef enum ObjectClass
|
|
128
120
|
OCLASS_DEFACL, /* pg_default_acl */
|
129
121
|
OCLASS_EXTENSION, /* pg_extension */
|
130
122
|
OCLASS_EVENT_TRIGGER, /* pg_event_trigger */
|
123
|
+
OCLASS_PARAMETER_ACL, /* pg_parameter_acl */
|
131
124
|
OCLASS_POLICY, /* pg_policy */
|
132
125
|
OCLASS_PUBLICATION, /* pg_publication */
|
126
|
+
OCLASS_PUBLICATION_NAMESPACE, /* pg_publication_namespace */
|
133
127
|
OCLASS_PUBLICATION_REL, /* pg_publication_rel */
|
134
128
|
OCLASS_SUBSCRIPTION, /* pg_subscription */
|
135
129
|
OCLASS_TRANSFORM /* pg_transform */
|
@@ -230,8 +224,6 @@ extern bool sequenceIsOwned(Oid seqId, char deptype, Oid *tableId, int32 *colId)
|
|
230
224
|
extern List *getOwnedSequences(Oid relid);
|
231
225
|
extern Oid getIdentitySequence(Oid relid, AttrNumber attnum, bool missing_ok);
|
232
226
|
|
233
|
-
extern Oid get_constraint_index(Oid constraintId);
|
234
|
-
|
235
227
|
extern Oid get_index_constraint(Oid indexId);
|
236
228
|
|
237
229
|
extern List *get_index_ref_constraints(Oid indexId);
|
@@ -9,7 +9,7 @@
|
|
9
9
|
* bootstrap file from these header files.)
|
10
10
|
*
|
11
11
|
*
|
12
|
-
* Portions Copyright (c) 1996-
|
12
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
14
14
|
*
|
15
15
|
* src/include/catalog/genbki.h
|
@@ -36,18 +36,96 @@
|
|
36
36
|
/* Specifies a default value for auto-generated array types */
|
37
37
|
#define BKI_ARRAY_DEFAULT(value)
|
38
38
|
/*
|
39
|
-
* Indicates
|
40
|
-
*
|
39
|
+
* Indicates that the attribute contains OIDs referencing the named catalog;
|
40
|
+
* can be applied to columns of oid, regproc, oid[], or oidvector type.
|
41
|
+
* genbki.pl uses this to know how to perform name lookups in the initial
|
42
|
+
* data (if any), and it also feeds into regression-test validity checks.
|
43
|
+
* The _OPT suffix indicates that values can be zero instead of
|
44
|
+
* a valid OID reference.
|
41
45
|
*/
|
42
46
|
#define BKI_LOOKUP(catalog)
|
47
|
+
#define BKI_LOOKUP_OPT(catalog)
|
48
|
+
|
49
|
+
/*
|
50
|
+
* These lines are processed by genbki.pl to create the statements
|
51
|
+
* the bootstrap parser will turn into BootstrapToastTable commands.
|
52
|
+
* Each line specifies the system catalog that needs a toast table,
|
53
|
+
* the OID to assign to the toast table, and the OID to assign to the
|
54
|
+
* toast table's index. The reason we hard-wire these OIDs is that we
|
55
|
+
* need stable OIDs for shared relations, and that includes toast tables
|
56
|
+
* of shared relations.
|
57
|
+
*
|
58
|
+
* The DECLARE_TOAST_WITH_MACRO variant is used when C macros are needed
|
59
|
+
* for the toast table/index OIDs (usually only for shared catalogs).
|
60
|
+
*
|
61
|
+
* The macro definitions are just to keep the C compiler from spitting up.
|
62
|
+
*/
|
63
|
+
#define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
|
64
|
+
#define DECLARE_TOAST_WITH_MACRO(name,toastoid,indexoid,toastoidmacro,indexoidmacro) extern int no_such_variable
|
65
|
+
|
66
|
+
/*
|
67
|
+
* These lines are processed by genbki.pl to create the statements
|
68
|
+
* the bootstrap parser will turn into DefineIndex calls.
|
69
|
+
*
|
70
|
+
* The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX or
|
71
|
+
* DECLARE_UNIQUE_INDEX_PKEY. ("PKEY" marks the index as being the catalog's
|
72
|
+
* primary key; currently this is only cosmetically different from a regular
|
73
|
+
* unique index. By convention, we usually make a catalog's OID column its
|
74
|
+
* pkey, if it has one.) The first two arguments are the index's name and
|
75
|
+
* OID, the rest is much like a standard 'create index' SQL command.
|
76
|
+
*
|
77
|
+
* For each index, we also provide a #define for its OID. References to
|
78
|
+
* the index in the C code should always use these #defines, not the actual
|
79
|
+
* index name (much less the numeric OID).
|
80
|
+
*
|
81
|
+
* The macro definitions are just to keep the C compiler from spitting up.
|
82
|
+
*/
|
83
|
+
#define DECLARE_INDEX(name,oid,oidmacro,decl) extern int no_such_variable
|
84
|
+
#define DECLARE_UNIQUE_INDEX(name,oid,oidmacro,decl) extern int no_such_variable
|
85
|
+
#define DECLARE_UNIQUE_INDEX_PKEY(name,oid,oidmacro,decl) extern int no_such_variable
|
86
|
+
|
87
|
+
/*
|
88
|
+
* These lines inform genbki.pl about manually-assigned OIDs that do not
|
89
|
+
* correspond to any entry in the catalog *.dat files, but should be subject
|
90
|
+
* to uniqueness verification and renumber_oids.pl renumbering. A C macro
|
91
|
+
* to #define the given name is emitted into the corresponding *_d.h file.
|
92
|
+
*/
|
93
|
+
#define DECLARE_OID_DEFINING_MACRO(name,oid) extern int no_such_variable
|
94
|
+
|
95
|
+
/*
|
96
|
+
* These lines are processed by genbki.pl to create a table for use
|
97
|
+
* by the pg_get_catalog_foreign_keys() function. We do not have any
|
98
|
+
* mechanism that actually enforces foreign-key relationships in the
|
99
|
+
* system catalogs, but it is still useful to record the intended
|
100
|
+
* relationships in a machine-readable form.
|
101
|
+
*
|
102
|
+
* The keyword is DECLARE_FOREIGN_KEY[_OPT] or DECLARE_ARRAY_FOREIGN_KEY[_OPT].
|
103
|
+
* The first argument is a parenthesized list of the referencing columns;
|
104
|
+
* the second, the name of the referenced table; the third, a parenthesized
|
105
|
+
* list of the referenced columns. Use of the ARRAY macros means that the
|
106
|
+
* last referencing column is an array, each of whose elements is supposed
|
107
|
+
* to match some entry in the last referenced column. Use of the OPT suffix
|
108
|
+
* indicates that the referencing column(s) can be zero instead of a valid
|
109
|
+
* reference.
|
110
|
+
*
|
111
|
+
* Columns that are marked with a BKI_LOOKUP rule do not need an explicit
|
112
|
+
* DECLARE_FOREIGN_KEY macro, as genbki.pl can infer the FK relationship
|
113
|
+
* from that. Thus, these macros are only needed in special cases.
|
114
|
+
*
|
115
|
+
* The macro definitions are just to keep the C compiler from spitting up.
|
116
|
+
*/
|
117
|
+
#define DECLARE_FOREIGN_KEY(cols,reftbl,refcols) extern int no_such_variable
|
118
|
+
#define DECLARE_FOREIGN_KEY_OPT(cols,reftbl,refcols) extern int no_such_variable
|
119
|
+
#define DECLARE_ARRAY_FOREIGN_KEY(cols,reftbl,refcols) extern int no_such_variable
|
120
|
+
#define DECLARE_ARRAY_FOREIGN_KEY_OPT(cols,reftbl,refcols) extern int no_such_variable
|
43
121
|
|
44
122
|
/* The following are never defined; they are here only for documentation. */
|
45
123
|
|
46
124
|
/*
|
47
125
|
* Variable-length catalog fields (except possibly the first not nullable one)
|
48
126
|
* should not be visible in C structures, so they are made invisible by #ifdefs
|
49
|
-
* of an undefined symbol. See also
|
50
|
-
* handled.
|
127
|
+
* of an undefined symbol. See also the BOOTCOL_NULL_AUTO code in bootstrap.c
|
128
|
+
* for how this is handled.
|
51
129
|
*/
|
52
130
|
#undef CATALOG_VARLEN
|
53
131
|
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* prototypes for catalog/index.c.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/catalog/index.h
|
@@ -29,6 +29,20 @@ typedef enum
|
|
29
29
|
INDEX_DROP_SET_DEAD
|
30
30
|
} IndexStateFlagsAction;
|
31
31
|
|
32
|
+
/* options for REINDEX */
|
33
|
+
typedef struct ReindexParams
|
34
|
+
{
|
35
|
+
bits32 options; /* bitmask of REINDEXOPT_* */
|
36
|
+
Oid tablespaceOid; /* New tablespace to move indexes to.
|
37
|
+
* InvalidOid to do nothing. */
|
38
|
+
} ReindexParams;
|
39
|
+
|
40
|
+
/* flag bits for ReindexParams->flags */
|
41
|
+
#define REINDEXOPT_VERBOSE 0x01 /* print progress info */
|
42
|
+
#define REINDEXOPT_REPORT_PROGRESS 0x02 /* report pgstat progress */
|
43
|
+
#define REINDEXOPT_MISSING_OK 0x04 /* skip missing relations */
|
44
|
+
#define REINDEXOPT_CONCURRENTLY 0x08 /* concurrent mode */
|
45
|
+
|
32
46
|
/* state info for validate_index bulkdelete callback */
|
33
47
|
typedef struct ValidateIndexState
|
34
48
|
{
|
@@ -80,6 +94,7 @@ extern Oid index_create(Relation heapRelation,
|
|
80
94
|
|
81
95
|
extern Oid index_concurrently_create_copy(Relation heapRelation,
|
82
96
|
Oid oldIndexId,
|
97
|
+
Oid tablespaceOid,
|
83
98
|
const char *newName);
|
84
99
|
|
85
100
|
extern void index_concurrently_build(Oid heapRelationId,
|
@@ -134,7 +149,7 @@ extern void index_set_state_flags(Oid indexId, IndexStateFlagsAction action);
|
|
134
149
|
extern Oid IndexGetRelation(Oid indexId, bool missing_ok);
|
135
150
|
|
136
151
|
extern void reindex_index(Oid indexId, bool skip_constraint_checks,
|
137
|
-
char relpersistence,
|
152
|
+
char relpersistence, ReindexParams *params);
|
138
153
|
|
139
154
|
/* Flag bits for reindex_relation(): */
|
140
155
|
#define REINDEX_REL_PROCESS_TOAST 0x01
|
@@ -143,7 +158,7 @@ extern void reindex_index(Oid indexId, bool skip_constraint_checks,
|
|
143
158
|
#define REINDEX_REL_FORCE_INDEXES_UNLOGGED 0x08
|
144
159
|
#define REINDEX_REL_FORCE_INDEXES_PERMANENT 0x10
|
145
160
|
|
146
|
-
extern bool reindex_relation(Oid relid, int flags,
|
161
|
+
extern bool reindex_relation(Oid relid, int flags, ReindexParams *params);
|
147
162
|
|
148
163
|
extern bool ReindexIsProcessingHeap(Oid heapOid);
|
149
164
|
extern bool ReindexIsProcessingIndex(Oid indexOid);
|