pg_query 2.2.1 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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);
|