pg_query 2.2.0 → 4.2.1
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 +25 -0
- data/README.md +59 -31
- 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 +1106 -373
- 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 +20 -8
- data/lib/pg_query/pg_query_pb.rb +1108 -942
- data/lib/pg_query/treewalker.rb +6 -0
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +27 -17
- 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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* pg_am_d.h
|
|
4
4
|
* Macro definitions for pg_am
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
#define PG_AM_D_H
|
|
20
20
|
|
|
21
21
|
#define AccessMethodRelationId 2601
|
|
22
|
+
#define AmNameIndexId 2651
|
|
23
|
+
#define AmOidIndexId 2652
|
|
22
24
|
|
|
23
25
|
#define Anum_pg_am_oid 1
|
|
24
26
|
#define Anum_pg_am_amname 2
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* relations need be included.
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
|
-
* Portions Copyright (c) 1996-
|
|
11
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
13
13
|
*
|
|
14
14
|
* src/include/catalog/pg_attribute.h
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
*/
|
|
37
37
|
CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
|
|
38
38
|
{
|
|
39
|
-
Oid attrelid;
|
|
39
|
+
Oid attrelid BKI_LOOKUP(pg_class); /* OID of relation containing
|
|
40
|
+
* this attribute */
|
|
40
41
|
NameData attname; /* name of attribute */
|
|
41
42
|
|
|
42
43
|
/*
|
|
@@ -44,9 +45,12 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
|
|
|
44
45
|
* defines the data type of this attribute (e.g. int4). Information in
|
|
45
46
|
* that instance is redundant with the attlen, attbyval, and attalign
|
|
46
47
|
* attributes of this instance, so they had better match or Postgres will
|
|
47
|
-
* fail.
|
|
48
|
+
* fail. In an entry for a dropped column, this field is set to zero
|
|
49
|
+
* since the pg_type entry may no longer exist; but we rely on attlen,
|
|
50
|
+
* attbyval, and attalign to still tell us how large the values in the
|
|
51
|
+
* table are.
|
|
48
52
|
*/
|
|
49
|
-
Oid atttypid;
|
|
53
|
+
Oid atttypid BKI_LOOKUP_OPT(pg_type);
|
|
50
54
|
|
|
51
55
|
/*
|
|
52
56
|
* attstattarget is the target number of statistics datapoints to collect
|
|
@@ -107,6 +111,12 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
|
|
|
107
111
|
*/
|
|
108
112
|
bool attbyval;
|
|
109
113
|
|
|
114
|
+
/*
|
|
115
|
+
* attalign is a copy of the typalign field from pg_type for this
|
|
116
|
+
* attribute. See atttypid comments above.
|
|
117
|
+
*/
|
|
118
|
+
char attalign;
|
|
119
|
+
|
|
110
120
|
/*----------
|
|
111
121
|
* attstorage tells for VARLENA attributes, what the heap access
|
|
112
122
|
* methods can do to it if a given tuple doesn't fit into a page.
|
|
@@ -116,10 +126,14 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
|
|
|
116
126
|
char attstorage;
|
|
117
127
|
|
|
118
128
|
/*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
129
|
+
* attcompression sets the current compression method of the attribute.
|
|
130
|
+
* Typically this is InvalidCompressionMethod ('\0') to specify use of the
|
|
131
|
+
* current default setting (see default_toast_compression). Otherwise,
|
|
132
|
+
* 'p' selects pglz compression, while 'l' selects LZ4 compression.
|
|
133
|
+
* However, this field is ignored whenever attstorage does not allow
|
|
134
|
+
* compression.
|
|
121
135
|
*/
|
|
122
|
-
char
|
|
136
|
+
char attcompression BKI_DEFAULT('\0');
|
|
123
137
|
|
|
124
138
|
/* This flag represents the "NOT NULL" constraint */
|
|
125
139
|
bool attnotnull;
|
|
@@ -153,8 +167,8 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
|
|
|
153
167
|
/* Number of times inherited from direct parent relation(s) */
|
|
154
168
|
int32 attinhcount BKI_DEFAULT(0);
|
|
155
169
|
|
|
156
|
-
/* attribute's collation */
|
|
157
|
-
Oid attcollation;
|
|
170
|
+
/* attribute's collation, if any */
|
|
171
|
+
Oid attcollation BKI_LOOKUP_OPT(pg_collation);
|
|
158
172
|
|
|
159
173
|
#ifdef CATALOG_VARLEN /* variable-length fields start here */
|
|
160
174
|
/* NOTE: The following fields are not present in tuple descriptors. */
|
|
@@ -180,7 +194,7 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
|
|
|
180
194
|
* ATTRIBUTE_FIXED_PART_SIZE is the size of the fixed-layout,
|
|
181
195
|
* guaranteed-not-null part of a pg_attribute row. This is in fact as much
|
|
182
196
|
* of the row as gets copied into tuple descriptors, so don't expect you
|
|
183
|
-
* can access
|
|
197
|
+
* can access the variable-length fields except in a real tuple!
|
|
184
198
|
*/
|
|
185
199
|
#define ATTRIBUTE_FIXED_PART_SIZE \
|
|
186
200
|
(offsetof(FormData_pg_attribute,attcollation) + sizeof(Oid))
|
|
@@ -192,6 +206,9 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
|
|
|
192
206
|
*/
|
|
193
207
|
typedef FormData_pg_attribute *Form_pg_attribute;
|
|
194
208
|
|
|
209
|
+
DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, AttributeRelidNameIndexId, on pg_attribute using btree(attrelid oid_ops, attname name_ops));
|
|
210
|
+
DECLARE_UNIQUE_INDEX_PKEY(pg_attribute_relid_attnum_index, 2659, AttributeRelidNumIndexId, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops));
|
|
211
|
+
|
|
195
212
|
#ifdef EXPOSE_TO_CLIENT_CODE
|
|
196
213
|
|
|
197
214
|
#define ATTRIBUTE_IDENTITY_ALWAYS 'a'
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* pg_attribute_d.h
|
|
4
4
|
* Macro definitions for pg_attribute
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
|
|
21
21
|
#define AttributeRelationId 1249
|
|
22
22
|
#define AttributeRelation_Rowtype_Id 75
|
|
23
|
+
#define AttributeRelidNameIndexId 2658
|
|
24
|
+
#define AttributeRelidNumIndexId 2659
|
|
23
25
|
|
|
24
26
|
#define Anum_pg_attribute_attrelid 1
|
|
25
27
|
#define Anum_pg_attribute_attname 2
|
|
@@ -31,23 +33,24 @@
|
|
|
31
33
|
#define Anum_pg_attribute_attcacheoff 8
|
|
32
34
|
#define Anum_pg_attribute_atttypmod 9
|
|
33
35
|
#define Anum_pg_attribute_attbyval 10
|
|
34
|
-
#define
|
|
35
|
-
#define
|
|
36
|
-
#define
|
|
37
|
-
#define
|
|
38
|
-
#define
|
|
39
|
-
#define
|
|
40
|
-
#define
|
|
41
|
-
#define
|
|
42
|
-
#define
|
|
43
|
-
#define
|
|
44
|
-
#define
|
|
45
|
-
#define
|
|
46
|
-
#define
|
|
47
|
-
#define
|
|
48
|
-
#define
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
#define Anum_pg_attribute_attalign 11
|
|
37
|
+
#define Anum_pg_attribute_attstorage 12
|
|
38
|
+
#define Anum_pg_attribute_attcompression 13
|
|
39
|
+
#define Anum_pg_attribute_attnotnull 14
|
|
40
|
+
#define Anum_pg_attribute_atthasdef 15
|
|
41
|
+
#define Anum_pg_attribute_atthasmissing 16
|
|
42
|
+
#define Anum_pg_attribute_attidentity 17
|
|
43
|
+
#define Anum_pg_attribute_attgenerated 18
|
|
44
|
+
#define Anum_pg_attribute_attisdropped 19
|
|
45
|
+
#define Anum_pg_attribute_attislocal 20
|
|
46
|
+
#define Anum_pg_attribute_attinhcount 21
|
|
47
|
+
#define Anum_pg_attribute_attcollation 22
|
|
48
|
+
#define Anum_pg_attribute_attacl 23
|
|
49
|
+
#define Anum_pg_attribute_attoptions 24
|
|
50
|
+
#define Anum_pg_attribute_attfdwoptions 25
|
|
51
|
+
#define Anum_pg_attribute_attmissingval 26
|
|
52
|
+
|
|
53
|
+
#define Natts_pg_attribute 26
|
|
51
54
|
|
|
52
55
|
|
|
53
56
|
#define ATTRIBUTE_IDENTITY_ALWAYS 'a'
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* pg_shadow and pg_group are now publicly accessible views on pg_authid.
|
|
7
7
|
*
|
|
8
8
|
*
|
|
9
|
-
* Portions Copyright (c) 1996-
|
|
9
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
10
10
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
11
11
|
*
|
|
12
12
|
* src/include/catalog/pg_authid.h
|
|
@@ -38,7 +38,7 @@ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(284
|
|
|
38
38
|
bool rolcreatedb; /* allowed to create databases? */
|
|
39
39
|
bool rolcanlogin; /* allowed to log in as session user? */
|
|
40
40
|
bool rolreplication; /* role used for streaming replication */
|
|
41
|
-
bool rolbypassrls; /* bypasses row
|
|
41
|
+
bool rolbypassrls; /* bypasses row-level security? */
|
|
42
42
|
int32 rolconnlimit; /* max connections allowed (-1=no limit) */
|
|
43
43
|
|
|
44
44
|
/* remaining fields may be null; use heap_getattr to read them! */
|
|
@@ -55,4 +55,9 @@ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(284
|
|
|
55
55
|
*/
|
|
56
56
|
typedef FormData_pg_authid *Form_pg_authid;
|
|
57
57
|
|
|
58
|
+
DECLARE_TOAST_WITH_MACRO(pg_authid, 4175, 4176, PgAuthidToastTable, PgAuthidToastIndex);
|
|
59
|
+
|
|
60
|
+
DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, AuthIdRolnameIndexId, on pg_authid using btree(rolname name_ops));
|
|
61
|
+
DECLARE_UNIQUE_INDEX_PKEY(pg_authid_oid_index, 2677, AuthIdOidIndexId, on pg_authid using btree(oid oid_ops));
|
|
62
|
+
|
|
58
63
|
#endif /* PG_AUTHID_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* pg_authid_d.h
|
|
4
4
|
* Macro definitions for pg_authid
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES
|
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
|
|
21
21
|
#define AuthIdRelationId 1260
|
|
22
22
|
#define AuthIdRelation_Rowtype_Id 2842
|
|
23
|
+
#define PgAuthidToastTable 4175
|
|
24
|
+
#define PgAuthidToastIndex 4176
|
|
25
|
+
#define AuthIdRolnameIndexId 2676
|
|
26
|
+
#define AuthIdOidIndexId 2677
|
|
23
27
|
|
|
24
28
|
#define Anum_pg_authid_oid 1
|
|
25
29
|
#define Anum_pg_authid_rolname 2
|
|
@@ -37,13 +41,17 @@
|
|
|
37
41
|
#define Natts_pg_authid 12
|
|
38
42
|
|
|
39
43
|
#define BOOTSTRAP_SUPERUSERID 10
|
|
40
|
-
#define
|
|
41
|
-
#define
|
|
42
|
-
#define
|
|
43
|
-
#define
|
|
44
|
-
#define
|
|
45
|
-
#define
|
|
46
|
-
#define
|
|
47
|
-
#define
|
|
44
|
+
#define ROLE_PG_DATABASE_OWNER 6171
|
|
45
|
+
#define ROLE_PG_READ_ALL_DATA 6181
|
|
46
|
+
#define ROLE_PG_WRITE_ALL_DATA 6182
|
|
47
|
+
#define ROLE_PG_MONITOR 3373
|
|
48
|
+
#define ROLE_PG_READ_ALL_SETTINGS 3374
|
|
49
|
+
#define ROLE_PG_READ_ALL_STATS 3375
|
|
50
|
+
#define ROLE_PG_STAT_SCAN_TABLES 3377
|
|
51
|
+
#define ROLE_PG_READ_SERVER_FILES 4569
|
|
52
|
+
#define ROLE_PG_WRITE_SERVER_FILES 4570
|
|
53
|
+
#define ROLE_PG_EXECUTE_SERVER_PROGRAM 4571
|
|
54
|
+
#define ROLE_PG_SIGNAL_BACKEND 4200
|
|
55
|
+
#define ROLE_PG_CHECKPOINT 4544
|
|
48
56
|
|
|
49
57
|
#endif /* PG_AUTHID_D_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* definition of the "relation" system catalog (pg_class)
|
|
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/pg_class.h
|
|
@@ -38,38 +38,38 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
|
|
|
38
38
|
NameData relname;
|
|
39
39
|
|
|
40
40
|
/* OID of namespace containing this class */
|
|
41
|
-
Oid relnamespace BKI_DEFAULT(
|
|
41
|
+
Oid relnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
|
|
42
42
|
|
|
43
|
-
/* OID of entry in pg_type for
|
|
44
|
-
Oid reltype
|
|
43
|
+
/* OID of entry in pg_type for relation's implicit row type, if any */
|
|
44
|
+
Oid reltype BKI_LOOKUP_OPT(pg_type);
|
|
45
45
|
|
|
46
|
-
/* OID of entry in pg_type for underlying composite type */
|
|
47
|
-
Oid reloftype BKI_DEFAULT(0)
|
|
46
|
+
/* OID of entry in pg_type for underlying composite type, if any */
|
|
47
|
+
Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);
|
|
48
48
|
|
|
49
49
|
/* class owner */
|
|
50
|
-
Oid relowner BKI_DEFAULT(
|
|
50
|
+
Oid relowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
|
|
51
51
|
|
|
52
52
|
/* access method; 0 if not a table / index */
|
|
53
|
-
Oid relam BKI_DEFAULT(heap)
|
|
53
|
+
Oid relam BKI_DEFAULT(heap) BKI_LOOKUP_OPT(pg_am);
|
|
54
54
|
|
|
55
55
|
/* identifier of physical storage file */
|
|
56
56
|
/* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
|
|
57
57
|
Oid relfilenode BKI_DEFAULT(0);
|
|
58
58
|
|
|
59
59
|
/* identifier of table space for relation (0 means default for database) */
|
|
60
|
-
Oid reltablespace BKI_DEFAULT(0)
|
|
60
|
+
Oid reltablespace BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_tablespace);
|
|
61
61
|
|
|
62
62
|
/* # of blocks (not always up-to-date) */
|
|
63
63
|
int32 relpages BKI_DEFAULT(0);
|
|
64
64
|
|
|
65
|
-
/* # of tuples (not always up-to-date) */
|
|
66
|
-
float4 reltuples BKI_DEFAULT(
|
|
65
|
+
/* # of tuples (not always up-to-date; -1 means "unknown") */
|
|
66
|
+
float4 reltuples BKI_DEFAULT(-1);
|
|
67
67
|
|
|
68
68
|
/* # of all-visible blocks (not always up-to-date) */
|
|
69
69
|
int32 relallvisible BKI_DEFAULT(0);
|
|
70
70
|
|
|
71
71
|
/* OID of toast table; 0 if none */
|
|
72
|
-
Oid reltoastrelid BKI_DEFAULT(0);
|
|
72
|
+
Oid reltoastrelid BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_class);
|
|
73
73
|
|
|
74
74
|
/* T if has (or has had) any indexes */
|
|
75
75
|
bool relhasindex BKI_DEFAULT(f);
|
|
@@ -119,8 +119,8 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
|
|
|
119
119
|
/* is relation a partition? */
|
|
120
120
|
bool relispartition BKI_DEFAULT(f);
|
|
121
121
|
|
|
122
|
-
/*
|
|
123
|
-
Oid relrewrite BKI_DEFAULT(0);
|
|
122
|
+
/* link to original rel during table rewrite; otherwise 0 */
|
|
123
|
+
Oid relrewrite BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_class);
|
|
124
124
|
|
|
125
125
|
/* all Xids < this are frozen in this rel */
|
|
126
126
|
TransactionId relfrozenxid BKI_DEFAULT(3); /* FirstNormalTransactionId */
|
|
@@ -152,6 +152,10 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
|
|
|
152
152
|
*/
|
|
153
153
|
typedef FormData_pg_class *Form_pg_class;
|
|
154
154
|
|
|
155
|
+
DECLARE_UNIQUE_INDEX_PKEY(pg_class_oid_index, 2662, ClassOidIndexId, on pg_class using btree(oid oid_ops));
|
|
156
|
+
DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, ClassNameNspIndexId, on pg_class using btree(relname name_ops, relnamespace oid_ops));
|
|
157
|
+
DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, ClassTblspcRelfilenodeIndexId, on pg_class using btree(reltablespace oid_ops, relfilenode oid_ops));
|
|
158
|
+
|
|
155
159
|
#ifdef EXPOSE_TO_CLIENT_CODE
|
|
156
160
|
|
|
157
161
|
#define RELKIND_RELATION 'r' /* ordinary table */
|
|
@@ -194,6 +198,32 @@ typedef FormData_pg_class *Form_pg_class;
|
|
|
194
198
|
(relkind) == RELKIND_TOASTVALUE || \
|
|
195
199
|
(relkind) == RELKIND_MATVIEW)
|
|
196
200
|
|
|
201
|
+
#define RELKIND_HAS_PARTITIONS(relkind) \
|
|
202
|
+
((relkind) == RELKIND_PARTITIONED_TABLE || \
|
|
203
|
+
(relkind) == RELKIND_PARTITIONED_INDEX)
|
|
204
|
+
|
|
205
|
+
/*
|
|
206
|
+
* Relation kinds that support tablespaces: All relation kinds with storage
|
|
207
|
+
* support tablespaces, except that we don't support moving sequences around
|
|
208
|
+
* into different tablespaces. Partitioned tables and indexes don't have
|
|
209
|
+
* physical storage, but they have a tablespace settings so that their
|
|
210
|
+
* children can inherit it.
|
|
211
|
+
*/
|
|
212
|
+
#define RELKIND_HAS_TABLESPACE(relkind) \
|
|
213
|
+
((RELKIND_HAS_STORAGE(relkind) || RELKIND_HAS_PARTITIONS(relkind)) \
|
|
214
|
+
&& (relkind) != RELKIND_SEQUENCE)
|
|
215
|
+
|
|
216
|
+
/*
|
|
217
|
+
* Relation kinds with a table access method (rd_tableam). Although sequences
|
|
218
|
+
* use the heap table AM, they are enough of a special case in most uses that
|
|
219
|
+
* they are not included here.
|
|
220
|
+
*/
|
|
221
|
+
#define RELKIND_HAS_TABLE_AM(relkind) \
|
|
222
|
+
((relkind) == RELKIND_RELATION || \
|
|
223
|
+
(relkind) == RELKIND_TOASTVALUE || \
|
|
224
|
+
(relkind) == RELKIND_MATVIEW)
|
|
225
|
+
|
|
226
|
+
extern int errdetail_relkind_not_supported(char relkind);
|
|
197
227
|
|
|
198
228
|
#endif /* EXPOSE_TO_CLIENT_CODE */
|
|
199
229
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* pg_class_d.h
|
|
4
4
|
* Macro definitions for pg_class
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES
|
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
|
|
21
21
|
#define RelationRelationId 1259
|
|
22
22
|
#define RelationRelation_Rowtype_Id 83
|
|
23
|
+
#define ClassOidIndexId 2662
|
|
24
|
+
#define ClassNameNspIndexId 2663
|
|
25
|
+
#define ClassTblspcRelfilenodeIndexId 3455
|
|
23
26
|
|
|
24
27
|
#define Anum_pg_class_oid 1
|
|
25
28
|
#define Anum_pg_class_relname 2
|
|
@@ -98,6 +101,32 @@
|
|
|
98
101
|
(relkind) == RELKIND_TOASTVALUE || \
|
|
99
102
|
(relkind) == RELKIND_MATVIEW)
|
|
100
103
|
|
|
104
|
+
#define RELKIND_HAS_PARTITIONS(relkind) \
|
|
105
|
+
((relkind) == RELKIND_PARTITIONED_TABLE || \
|
|
106
|
+
(relkind) == RELKIND_PARTITIONED_INDEX)
|
|
107
|
+
|
|
108
|
+
/*
|
|
109
|
+
* Relation kinds that support tablespaces: All relation kinds with storage
|
|
110
|
+
* support tablespaces, except that we don't support moving sequences around
|
|
111
|
+
* into different tablespaces. Partitioned tables and indexes don't have
|
|
112
|
+
* physical storage, but they have a tablespace settings so that their
|
|
113
|
+
* children can inherit it.
|
|
114
|
+
*/
|
|
115
|
+
#define RELKIND_HAS_TABLESPACE(relkind) \
|
|
116
|
+
((RELKIND_HAS_STORAGE(relkind) || RELKIND_HAS_PARTITIONS(relkind)) \
|
|
117
|
+
&& (relkind) != RELKIND_SEQUENCE)
|
|
118
|
+
|
|
119
|
+
/*
|
|
120
|
+
* Relation kinds with a table access method (rd_tableam). Although sequences
|
|
121
|
+
* use the heap table AM, they are enough of a special case in most uses that
|
|
122
|
+
* they are not included here.
|
|
123
|
+
*/
|
|
124
|
+
#define RELKIND_HAS_TABLE_AM(relkind) \
|
|
125
|
+
((relkind) == RELKIND_RELATION || \
|
|
126
|
+
(relkind) == RELKIND_TOASTVALUE || \
|
|
127
|
+
(relkind) == RELKIND_MATVIEW)
|
|
128
|
+
|
|
129
|
+
extern int errdetail_relkind_not_supported(char relkind);
|
|
101
130
|
|
|
102
131
|
|
|
103
132
|
#endif /* PG_CLASS_D_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* definition of the "collation" system catalog (pg_collation)
|
|
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/pg_collation.h
|
|
@@ -30,16 +30,22 @@ CATALOG(pg_collation,3456,CollationRelationId)
|
|
|
30
30
|
{
|
|
31
31
|
Oid oid; /* oid */
|
|
32
32
|
NameData collname; /* collation name */
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
|
|
34
|
+
/* OID of namespace containing this collation */
|
|
35
|
+
Oid collnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
|
|
36
|
+
|
|
37
|
+
/* owner of collation */
|
|
38
|
+
Oid collowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
|
|
35
39
|
char collprovider; /* see constants below */
|
|
36
40
|
bool collisdeterministic BKI_DEFAULT(t);
|
|
37
41
|
int32 collencoding; /* encoding for this collation; -1 = "all" */
|
|
38
|
-
NameData collcollate; /* LC_COLLATE setting */
|
|
39
|
-
NameData collctype; /* LC_CTYPE setting */
|
|
40
42
|
#ifdef CATALOG_VARLEN /* variable-length fields start here */
|
|
41
|
-
text
|
|
42
|
-
|
|
43
|
+
text collcollate BKI_DEFAULT(_null_); /* LC_COLLATE setting */
|
|
44
|
+
text collctype BKI_DEFAULT(_null_); /* LC_CTYPE setting */
|
|
45
|
+
text colliculocale BKI_DEFAULT(_null_); /* ICU locale ID */
|
|
46
|
+
text collversion BKI_DEFAULT(_null_); /* provider-dependent
|
|
47
|
+
* version of collation
|
|
48
|
+
* data */
|
|
43
49
|
#endif
|
|
44
50
|
} FormData_pg_collation;
|
|
45
51
|
|
|
@@ -50,12 +56,31 @@ CATALOG(pg_collation,3456,CollationRelationId)
|
|
|
50
56
|
*/
|
|
51
57
|
typedef FormData_pg_collation *Form_pg_collation;
|
|
52
58
|
|
|
59
|
+
DECLARE_TOAST(pg_collation, 6175, 6176);
|
|
60
|
+
|
|
61
|
+
DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, CollationNameEncNspIndexId, on pg_collation using btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops));
|
|
62
|
+
DECLARE_UNIQUE_INDEX_PKEY(pg_collation_oid_index, 3085, CollationOidIndexId, on pg_collation using btree(oid oid_ops));
|
|
63
|
+
|
|
53
64
|
#ifdef EXPOSE_TO_CLIENT_CODE
|
|
54
65
|
|
|
55
66
|
#define COLLPROVIDER_DEFAULT 'd'
|
|
56
67
|
#define COLLPROVIDER_ICU 'i'
|
|
57
68
|
#define COLLPROVIDER_LIBC 'c'
|
|
58
69
|
|
|
70
|
+
static inline const char *
|
|
71
|
+
collprovider_name(char c)
|
|
72
|
+
{
|
|
73
|
+
switch (c)
|
|
74
|
+
{
|
|
75
|
+
case COLLPROVIDER_ICU:
|
|
76
|
+
return "icu";
|
|
77
|
+
case COLLPROVIDER_LIBC:
|
|
78
|
+
return "libc";
|
|
79
|
+
default:
|
|
80
|
+
return "???";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
59
84
|
#endif /* EXPOSE_TO_CLIENT_CODE */
|
|
60
85
|
|
|
61
86
|
|
|
@@ -65,9 +90,9 @@ extern Oid CollationCreate(const char *collname, Oid collnamespace,
|
|
|
65
90
|
bool collisdeterministic,
|
|
66
91
|
int32 collencoding,
|
|
67
92
|
const char *collcollate, const char *collctype,
|
|
93
|
+
const char *colliculocale,
|
|
68
94
|
const char *collversion,
|
|
69
95
|
bool if_not_exists,
|
|
70
96
|
bool quiet);
|
|
71
|
-
extern void RemoveCollationById(Oid collationOid);
|
|
72
97
|
|
|
73
98
|
#endif /* PG_COLLATION_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* pg_collation_d.h
|
|
4
4
|
* Macro definitions for pg_collation
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
#define PG_COLLATION_D_H
|
|
20
20
|
|
|
21
21
|
#define CollationRelationId 3456
|
|
22
|
+
#define CollationNameEncNspIndexId 3164
|
|
23
|
+
#define CollationOidIndexId 3085
|
|
22
24
|
|
|
23
25
|
#define Anum_pg_collation_oid 1
|
|
24
26
|
#define Anum_pg_collation_collname 2
|
|
@@ -29,15 +31,30 @@
|
|
|
29
31
|
#define Anum_pg_collation_collencoding 7
|
|
30
32
|
#define Anum_pg_collation_collcollate 8
|
|
31
33
|
#define Anum_pg_collation_collctype 9
|
|
32
|
-
#define
|
|
34
|
+
#define Anum_pg_collation_colliculocale 10
|
|
35
|
+
#define Anum_pg_collation_collversion 11
|
|
33
36
|
|
|
34
|
-
#define Natts_pg_collation
|
|
37
|
+
#define Natts_pg_collation 11
|
|
35
38
|
|
|
36
39
|
|
|
37
40
|
#define COLLPROVIDER_DEFAULT 'd'
|
|
38
41
|
#define COLLPROVIDER_ICU 'i'
|
|
39
42
|
#define COLLPROVIDER_LIBC 'c'
|
|
40
43
|
|
|
44
|
+
static inline const char *
|
|
45
|
+
collprovider_name(char c)
|
|
46
|
+
{
|
|
47
|
+
switch (c)
|
|
48
|
+
{
|
|
49
|
+
case COLLPROVIDER_ICU:
|
|
50
|
+
return "icu";
|
|
51
|
+
case COLLPROVIDER_LIBC:
|
|
52
|
+
return "libc";
|
|
53
|
+
default:
|
|
54
|
+
return "???";
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
41
58
|
#define DEFAULT_COLLATION_OID 100
|
|
42
59
|
#define C_COLLATION_OID 950
|
|
43
60
|
#define POSIX_COLLATION_OID 951
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* definition of the "constraint" system catalog (pg_constraint)
|
|
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/pg_constraint.h
|
|
@@ -46,7 +46,8 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
|
|
|
46
46
|
* conrelid + contypid + conname.
|
|
47
47
|
*/
|
|
48
48
|
NameData conname; /* name of this constraint */
|
|
49
|
-
Oid connamespace; /* OID of namespace
|
|
49
|
+
Oid connamespace BKI_LOOKUP(pg_namespace); /* OID of namespace
|
|
50
|
+
* containing constraint */
|
|
50
51
|
char contype; /* constraint type; see codes below */
|
|
51
52
|
bool condeferrable; /* deferrable constraint? */
|
|
52
53
|
bool condeferred; /* deferred by default? */
|
|
@@ -57,7 +58,8 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
|
|
|
57
58
|
* specific relation (this excludes domain constraints and assertions).
|
|
58
59
|
* Otherwise conrelid is 0 and conkey is NULL.
|
|
59
60
|
*/
|
|
60
|
-
Oid conrelid;
|
|
61
|
+
Oid conrelid BKI_LOOKUP_OPT(pg_class); /* relation this
|
|
62
|
+
* constraint constrains */
|
|
61
63
|
|
|
62
64
|
/*
|
|
63
65
|
* contypid links to the pg_type row for a domain if this is a domain
|
|
@@ -66,7 +68,8 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
|
|
|
66
68
|
* For SQL-style global ASSERTIONs, both conrelid and contypid would be
|
|
67
69
|
* zero. This is not presently supported, however.
|
|
68
70
|
*/
|
|
69
|
-
Oid contypid;
|
|
71
|
+
Oid contypid BKI_LOOKUP_OPT(pg_type); /* domain this constraint
|
|
72
|
+
* constrains */
|
|
70
73
|
|
|
71
74
|
/*
|
|
72
75
|
* conindid links to the index supporting the constraint, if any;
|
|
@@ -76,19 +79,21 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
|
|
|
76
79
|
* columns). Notice that the index is on conrelid in the first case but
|
|
77
80
|
* confrelid in the second.
|
|
78
81
|
*/
|
|
79
|
-
Oid conindid;
|
|
82
|
+
Oid conindid BKI_LOOKUP_OPT(pg_class); /* index supporting this
|
|
83
|
+
* constraint */
|
|
80
84
|
|
|
81
85
|
/*
|
|
82
86
|
* If this constraint is on a partition inherited from a partitioned
|
|
83
87
|
* table, this is the OID of the corresponding constraint in the parent.
|
|
84
88
|
*/
|
|
85
|
-
Oid conparentid;
|
|
89
|
+
Oid conparentid BKI_LOOKUP_OPT(pg_constraint);
|
|
86
90
|
|
|
87
91
|
/*
|
|
88
92
|
* These fields, plus confkey, are only meaningful for a foreign-key
|
|
89
93
|
* constraint. Otherwise confrelid is 0 and the char fields are spaces.
|
|
90
94
|
*/
|
|
91
|
-
Oid confrelid;
|
|
95
|
+
Oid confrelid BKI_LOOKUP_OPT(pg_class); /* relation referenced by
|
|
96
|
+
* foreign key */
|
|
92
97
|
char confupdtype; /* foreign key's ON UPDATE action */
|
|
93
98
|
char confdeltype; /* foreign key's ON DELETE action */
|
|
94
99
|
char confmatchtype; /* foreign key's match type */
|
|
@@ -119,25 +124,31 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
|
|
|
119
124
|
* If a foreign key, the OIDs of the PK = FK equality operators for each
|
|
120
125
|
* column of the constraint
|
|
121
126
|
*/
|
|
122
|
-
Oid conpfeqop[1];
|
|
127
|
+
Oid conpfeqop[1] BKI_LOOKUP(pg_operator);
|
|
123
128
|
|
|
124
129
|
/*
|
|
125
130
|
* If a foreign key, the OIDs of the PK = PK equality operators for each
|
|
126
131
|
* column of the constraint (i.e., equality for the referenced columns)
|
|
127
132
|
*/
|
|
128
|
-
Oid conppeqop[1];
|
|
133
|
+
Oid conppeqop[1] BKI_LOOKUP(pg_operator);
|
|
129
134
|
|
|
130
135
|
/*
|
|
131
136
|
* If a foreign key, the OIDs of the FK = FK equality operators for each
|
|
132
137
|
* column of the constraint (i.e., equality for the referencing columns)
|
|
133
138
|
*/
|
|
134
|
-
Oid conffeqop[1];
|
|
139
|
+
Oid conffeqop[1] BKI_LOOKUP(pg_operator);
|
|
140
|
+
|
|
141
|
+
/*
|
|
142
|
+
* If a foreign key with an ON DELETE SET NULL/DEFAULT action, the subset
|
|
143
|
+
* of conkey to updated. If null, all columns are updated.
|
|
144
|
+
*/
|
|
145
|
+
int16 confdelsetcols[1];
|
|
135
146
|
|
|
136
147
|
/*
|
|
137
148
|
* If an exclusion constraint, the OIDs of the exclusion operators for
|
|
138
149
|
* each column of the constraint
|
|
139
150
|
*/
|
|
140
|
-
Oid conexclop[1];
|
|
151
|
+
Oid conexclop[1] BKI_LOOKUP(pg_operator);
|
|
141
152
|
|
|
142
153
|
/*
|
|
143
154
|
* If a check constraint, nodeToString representation of expression
|
|
@@ -153,6 +164,18 @@ CATALOG(pg_constraint,2606,ConstraintRelationId)
|
|
|
153
164
|
*/
|
|
154
165
|
typedef FormData_pg_constraint *Form_pg_constraint;
|
|
155
166
|
|
|
167
|
+
DECLARE_TOAST(pg_constraint, 2832, 2833);
|
|
168
|
+
|
|
169
|
+
DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, ConstraintNameNspIndexId, on pg_constraint using btree(conname name_ops, connamespace oid_ops));
|
|
170
|
+
DECLARE_UNIQUE_INDEX(pg_constraint_conrelid_contypid_conname_index, 2665, ConstraintRelidTypidNameIndexId, on pg_constraint using btree(conrelid oid_ops, contypid oid_ops, conname name_ops));
|
|
171
|
+
DECLARE_INDEX(pg_constraint_contypid_index, 2666, ConstraintTypidIndexId, on pg_constraint using btree(contypid oid_ops));
|
|
172
|
+
DECLARE_UNIQUE_INDEX_PKEY(pg_constraint_oid_index, 2667, ConstraintOidIndexId, on pg_constraint using btree(oid oid_ops));
|
|
173
|
+
DECLARE_INDEX(pg_constraint_conparentid_index, 2579, ConstraintParentIndexId, on pg_constraint using btree(conparentid oid_ops));
|
|
174
|
+
|
|
175
|
+
/* conkey can contain zero (InvalidAttrNumber) if a whole-row Var is used */
|
|
176
|
+
DECLARE_ARRAY_FOREIGN_KEY_OPT((conrelid, conkey), pg_attribute, (attrelid, attnum));
|
|
177
|
+
DECLARE_ARRAY_FOREIGN_KEY((confrelid, confkey), pg_attribute, (attrelid, attnum));
|
|
178
|
+
|
|
156
179
|
#ifdef EXPOSE_TO_CLIENT_CODE
|
|
157
180
|
|
|
158
181
|
/* Valid values for contype */
|
|
@@ -203,6 +226,8 @@ extern Oid CreateConstraintEntry(const char *constraintName,
|
|
|
203
226
|
int foreignNKeys,
|
|
204
227
|
char foreignUpdateType,
|
|
205
228
|
char foreignDeleteType,
|
|
229
|
+
const int16 *fkDeleteSetCols,
|
|
230
|
+
int numFkDeleteSetCols,
|
|
206
231
|
char foreignMatchType,
|
|
207
232
|
const Oid *exclOp,
|
|
208
233
|
Node *conExpr,
|
|
@@ -237,7 +262,8 @@ extern Bitmapset *get_primary_key_attnos(Oid relid, bool deferrableOk,
|
|
|
237
262
|
Oid *constraintOid);
|
|
238
263
|
extern void DeconstructFkConstraintRow(HeapTuple tuple, int *numfks,
|
|
239
264
|
AttrNumber *conkey, AttrNumber *confkey,
|
|
240
|
-
Oid *pf_eq_oprs, Oid *pp_eq_oprs, Oid *ff_eq_oprs
|
|
265
|
+
Oid *pf_eq_oprs, Oid *pp_eq_oprs, Oid *ff_eq_oprs,
|
|
266
|
+
int *num_fk_del_set_cols, AttrNumber *fk_del_set_cols);
|
|
241
267
|
|
|
242
268
|
extern bool check_functional_grouping(Oid relid,
|
|
243
269
|
Index varno, Index varlevelsup,
|