pg_query 2.0.3 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +165 -0
- data/README.md +67 -29
- data/Rakefile +8 -23
- data/ext/pg_query/extconf.rb +21 -3
- data/ext/pg_query/include/pg_query.h +29 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
- data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
- data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
- data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
- data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
- data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
- data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +778 -0
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
- data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
- data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
- data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
- data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
- data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
- data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
- data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +21026 -17002
- data/ext/pg_query/pg_query_deparse.c +1 -9896
- data/ext/pg_query/pg_query_fingerprint.c +162 -50
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
- data/ext/pg_query/pg_query_normalize.c +259 -64
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
- data/ext/pg_query/pg_query_ruby.c +6 -1
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +3 -2
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
- 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 +13 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +99 -12
- data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
- 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_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
- data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +420 -0
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +545 -498
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +717 -113
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
- 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 +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +103 -40
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +51 -29
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +7 -5
- data/lib/pg_query/fingerprint.rb +21 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +141 -50
- data/lib/pg_query/pg_query_pb.rb +175 -3031
- data/lib/pg_query/treewalker.rb +26 -2
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +443 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/rmgr.h +0 -35
- 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/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- 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/include/parser/parser.h +0 -41
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pgstat.h +0 -1487
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/regproc.h +0 -28
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- data/ext/pg_query/src_port_strnlen.c +0 -39
- data/lib/pg_query/json_field_names.rb +0 -1402
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES relation descriptor (a/k/a relcache entry) definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/rel.h
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
#include "access/tupdesc.h"
|
|
18
18
|
#include "access/xlog.h"
|
|
19
|
+
#include "catalog/catalog.h"
|
|
19
20
|
#include "catalog/pg_class.h"
|
|
20
21
|
#include "catalog/pg_index.h"
|
|
21
22
|
#include "catalog/pg_publication.h"
|
|
@@ -23,7 +24,8 @@
|
|
|
23
24
|
#include "partitioning/partdefs.h"
|
|
24
25
|
#include "rewrite/prs2lock.h"
|
|
25
26
|
#include "storage/block.h"
|
|
26
|
-
#include "storage/
|
|
27
|
+
#include "storage/relfilelocator.h"
|
|
28
|
+
#include "storage/smgr.h"
|
|
27
29
|
#include "utils/relcache.h"
|
|
28
30
|
#include "utils/reltrigger.h"
|
|
29
31
|
|
|
@@ -52,9 +54,8 @@ typedef LockInfoData *LockInfo;
|
|
|
52
54
|
|
|
53
55
|
typedef struct RelationData
|
|
54
56
|
{
|
|
55
|
-
|
|
56
|
-
/*
|
|
57
|
-
struct SMgrRelationData *rd_smgr; /* cached file handle, or NULL */
|
|
57
|
+
RelFileLocator rd_locator; /* relation physical identifier */
|
|
58
|
+
SMgrRelation rd_smgr; /* cached file handle, or NULL */
|
|
58
59
|
int rd_refcnt; /* reference count */
|
|
59
60
|
BackendId rd_backend; /* owning backend id, if temporary relation */
|
|
60
61
|
bool rd_islocaltemp; /* rel is a temp rel of this session */
|
|
@@ -66,44 +67,45 @@ typedef struct RelationData
|
|
|
66
67
|
|
|
67
68
|
/*----------
|
|
68
69
|
* rd_createSubid is the ID of the highest subtransaction the rel has
|
|
69
|
-
* survived into or zero if the rel or its
|
|
70
|
-
* current top transaction. (IndexStmt.
|
|
71
|
-
* rel with an old
|
|
72
|
-
* highest subtransaction an
|
|
73
|
-
*
|
|
70
|
+
* survived into or zero if the rel or its storage was created before the
|
|
71
|
+
* current top transaction. (IndexStmt.oldNumber leads to the case of a new
|
|
72
|
+
* rel with an old rd_locator.) rd_firstRelfilelocatorSubid is the ID of the
|
|
73
|
+
* highest subtransaction an rd_locator change has survived into or zero if
|
|
74
|
+
* rd_locator matches the value it had at the start of the current top
|
|
74
75
|
* transaction. (Rolling back the subtransaction that
|
|
75
|
-
*
|
|
76
|
+
* rd_firstRelfilelocatorSubid denotes would restore rd_locator to the value it
|
|
76
77
|
* had at the start of the current top transaction. Rolling back any
|
|
77
78
|
* lower subtransaction would not.) Their accuracy is critical to
|
|
78
79
|
* RelationNeedsWAL().
|
|
79
80
|
*
|
|
80
|
-
*
|
|
81
|
-
* most-recent
|
|
81
|
+
* rd_newRelfilelocatorSubid is the ID of the highest subtransaction the
|
|
82
|
+
* most-recent relfilenumber change has survived into or zero if not changed
|
|
82
83
|
* in the current transaction (or we have forgotten changing it). This
|
|
83
84
|
* field is accurate when non-zero, but it can be zero when a relation has
|
|
84
|
-
* multiple new
|
|
85
|
+
* multiple new relfilenumbers within a single transaction, with one of them
|
|
85
86
|
* occurring in a subsequently aborted subtransaction, e.g.
|
|
86
87
|
* BEGIN;
|
|
87
88
|
* TRUNCATE t;
|
|
88
89
|
* SAVEPOINT save;
|
|
89
90
|
* TRUNCATE t;
|
|
90
91
|
* ROLLBACK TO save;
|
|
91
|
-
* --
|
|
92
|
+
* -- rd_newRelfilelocatorSubid is now forgotten
|
|
92
93
|
*
|
|
93
94
|
* If every rd_*Subid field is zero, they are read-only outside
|
|
94
|
-
* relcache.c. Files that trigger
|
|
95
|
+
* relcache.c. Files that trigger rd_locator changes by updating
|
|
95
96
|
* pg_class.reltablespace and/or pg_class.relfilenode call
|
|
96
|
-
*
|
|
97
|
+
* RelationAssumeNewRelfilelocator() to update rd_*Subid.
|
|
97
98
|
*
|
|
98
99
|
* rd_droppedSubid is the ID of the highest subtransaction that a drop of
|
|
99
100
|
* the rel has survived into. In entries visible outside relcache.c, this
|
|
100
101
|
* is always zero.
|
|
101
102
|
*/
|
|
102
103
|
SubTransactionId rd_createSubid; /* rel was created in current xact */
|
|
103
|
-
SubTransactionId
|
|
104
|
-
*
|
|
105
|
-
SubTransactionId
|
|
106
|
-
|
|
104
|
+
SubTransactionId rd_newRelfilelocatorSubid; /* highest subxact changing
|
|
105
|
+
* rd_locator to current value */
|
|
106
|
+
SubTransactionId rd_firstRelfilelocatorSubid; /* highest subxact
|
|
107
|
+
* changing rd_locator to
|
|
108
|
+
* any value */
|
|
107
109
|
SubTransactionId rd_droppedSubid; /* dropped with another Subid set */
|
|
108
110
|
|
|
109
111
|
Form_pg_class rd_rel; /* RELATION tuple */
|
|
@@ -128,6 +130,19 @@ typedef struct RelationData
|
|
|
128
130
|
PartitionDesc rd_partdesc; /* partition descriptor, or NULL */
|
|
129
131
|
MemoryContext rd_pdcxt; /* private context for rd_partdesc, if any */
|
|
130
132
|
|
|
133
|
+
/* Same as above, for partdescs that omit detached partitions */
|
|
134
|
+
PartitionDesc rd_partdesc_nodetached; /* partdesc w/o detached parts */
|
|
135
|
+
MemoryContext rd_pddcxt; /* for rd_partdesc_nodetached, if any */
|
|
136
|
+
|
|
137
|
+
/*
|
|
138
|
+
* pg_inherits.xmin of the partition that was excluded in
|
|
139
|
+
* rd_partdesc_nodetached. This informs a future user of that partdesc:
|
|
140
|
+
* if this value is not in progress for the active snapshot, then the
|
|
141
|
+
* partdesc can be used, otherwise they have to build a new one. (This
|
|
142
|
+
* matches what find_inheritance_children_extended would do).
|
|
143
|
+
*/
|
|
144
|
+
TransactionId rd_partdesc_nodetached_xmin;
|
|
145
|
+
|
|
131
146
|
/* data managed by RelationGetPartitionQual: */
|
|
132
147
|
List *rd_partcheck; /* partition CHECK quals */
|
|
133
148
|
bool rd_partcheckvalid; /* true if list has been computed */
|
|
@@ -142,12 +157,14 @@ typedef struct RelationData
|
|
|
142
157
|
List *rd_statlist; /* list of OIDs of extended stats */
|
|
143
158
|
|
|
144
159
|
/* data managed by RelationGetIndexAttrBitmap: */
|
|
145
|
-
|
|
160
|
+
bool rd_attrsvalid; /* are bitmaps of attrs valid? */
|
|
146
161
|
Bitmapset *rd_keyattr; /* cols that can be ref'd by foreign keys */
|
|
147
162
|
Bitmapset *rd_pkattr; /* cols included in primary key */
|
|
148
163
|
Bitmapset *rd_idattr; /* included in replica identity index */
|
|
164
|
+
Bitmapset *rd_hotblockingattr; /* cols blocking HOT update */
|
|
165
|
+
Bitmapset *rd_summarizedattr; /* cols indexed by summarizing indexes */
|
|
149
166
|
|
|
150
|
-
|
|
167
|
+
PublicationDesc *rd_pubdesc; /* publication descriptor, or NULL */
|
|
151
168
|
|
|
152
169
|
/*
|
|
153
170
|
* rd_options is set whenever rd_rel is loaded into the relcache entry.
|
|
@@ -232,6 +249,7 @@ typedef struct RelationData
|
|
|
232
249
|
*/
|
|
233
250
|
Oid rd_toastoid; /* Real TOAST table's OID, or InvalidOid */
|
|
234
251
|
|
|
252
|
+
bool pgstat_enabled; /* should relation stats be counted */
|
|
235
253
|
/* use "struct" here to avoid needing to include pgstat.h: */
|
|
236
254
|
struct PgStat_TableStatus *pgstat_info; /* statistics collection area */
|
|
237
255
|
} RelationData;
|
|
@@ -253,15 +271,27 @@ typedef struct RelationData
|
|
|
253
271
|
*/
|
|
254
272
|
typedef struct ForeignKeyCacheInfo
|
|
255
273
|
{
|
|
274
|
+
pg_node_attr(no_equal, no_read, no_query_jumble)
|
|
275
|
+
|
|
256
276
|
NodeTag type;
|
|
257
|
-
|
|
258
|
-
Oid
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
/*
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
277
|
+
/* oid of the constraint itself */
|
|
278
|
+
Oid conoid;
|
|
279
|
+
/* relation constrained by the foreign key */
|
|
280
|
+
Oid conrelid;
|
|
281
|
+
/* relation referenced by the foreign key */
|
|
282
|
+
Oid confrelid;
|
|
283
|
+
/* number of columns in the foreign key */
|
|
284
|
+
int nkeys;
|
|
285
|
+
|
|
286
|
+
/*
|
|
287
|
+
* these arrays each have nkeys valid entries:
|
|
288
|
+
*/
|
|
289
|
+
/* cols in referencing table */
|
|
290
|
+
AttrNumber conkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys));
|
|
291
|
+
/* cols in referenced table */
|
|
292
|
+
AttrNumber confkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys));
|
|
293
|
+
/* PK = FK operator OIDs */
|
|
294
|
+
Oid conpfeqop[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys));
|
|
265
295
|
} ForeignKeyCacheInfo;
|
|
266
296
|
|
|
267
297
|
|
|
@@ -294,16 +324,23 @@ typedef struct AutoVacOpts
|
|
|
294
324
|
float8 analyze_scale_factor;
|
|
295
325
|
} AutoVacOpts;
|
|
296
326
|
|
|
327
|
+
/* StdRdOptions->vacuum_index_cleanup values */
|
|
328
|
+
typedef enum StdRdOptIndexCleanup
|
|
329
|
+
{
|
|
330
|
+
STDRD_OPTION_VACUUM_INDEX_CLEANUP_AUTO = 0,
|
|
331
|
+
STDRD_OPTION_VACUUM_INDEX_CLEANUP_OFF,
|
|
332
|
+
STDRD_OPTION_VACUUM_INDEX_CLEANUP_ON
|
|
333
|
+
} StdRdOptIndexCleanup;
|
|
334
|
+
|
|
297
335
|
typedef struct StdRdOptions
|
|
298
336
|
{
|
|
299
337
|
int32 vl_len_; /* varlena header (do not touch directly!) */
|
|
300
338
|
int fillfactor; /* page fill factor in percent (0..100) */
|
|
301
|
-
/* fraction of newly inserted tuples prior to trigger index cleanup */
|
|
302
339
|
int toast_tuple_target; /* target for tuple toasting */
|
|
303
340
|
AutoVacOpts autovacuum; /* autovacuum-related options */
|
|
304
341
|
bool user_catalog_table; /* use as an additional catalog relation */
|
|
305
342
|
int parallel_workers; /* max number of parallel workers */
|
|
306
|
-
|
|
343
|
+
StdRdOptIndexCleanup vacuum_index_cleanup; /* controls index vacuuming */
|
|
307
344
|
bool vacuum_truncate; /* enables vacuum to truncate a relation */
|
|
308
345
|
} StdRdOptions;
|
|
309
346
|
|
|
@@ -376,6 +413,7 @@ typedef struct ViewOptions
|
|
|
376
413
|
{
|
|
377
414
|
int32 vl_len_; /* varlena header (do not touch directly!) */
|
|
378
415
|
bool security_barrier;
|
|
416
|
+
bool security_invoker;
|
|
379
417
|
ViewOptCheckOption check_option;
|
|
380
418
|
} ViewOptions;
|
|
381
419
|
|
|
@@ -389,6 +427,16 @@ typedef struct ViewOptions
|
|
|
389
427
|
(relation)->rd_options ? \
|
|
390
428
|
((ViewOptions *) (relation)->rd_options)->security_barrier : false)
|
|
391
429
|
|
|
430
|
+
/*
|
|
431
|
+
* RelationHasSecurityInvoker
|
|
432
|
+
* Returns true if the relation has the security_invoker property set.
|
|
433
|
+
* Note multiple eval of argument!
|
|
434
|
+
*/
|
|
435
|
+
#define RelationHasSecurityInvoker(relation) \
|
|
436
|
+
(AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \
|
|
437
|
+
(relation)->rd_options ? \
|
|
438
|
+
((ViewOptions *) (relation)->rd_options)->security_invoker : false)
|
|
439
|
+
|
|
392
440
|
/*
|
|
393
441
|
* RelationHasCheckOption
|
|
394
442
|
* Returns true if the relation is a view defined with either the local
|
|
@@ -499,44 +547,57 @@ typedef struct ViewOptions
|
|
|
499
547
|
|
|
500
548
|
/*
|
|
501
549
|
* RelationIsMapped
|
|
502
|
-
* True if the relation uses the
|
|
550
|
+
* True if the relation uses the relfilenumber map. Note multiple eval
|
|
503
551
|
* of argument!
|
|
504
552
|
*/
|
|
505
553
|
#define RelationIsMapped(relation) \
|
|
506
554
|
(RELKIND_HAS_STORAGE((relation)->rd_rel->relkind) && \
|
|
507
|
-
((relation)->rd_rel->relfilenode ==
|
|
555
|
+
((relation)->rd_rel->relfilenode == InvalidRelFileNumber))
|
|
508
556
|
|
|
557
|
+
#ifndef FRONTEND
|
|
509
558
|
/*
|
|
510
|
-
*
|
|
511
|
-
*
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
559
|
+
* RelationGetSmgr
|
|
560
|
+
* Returns smgr file handle for a relation, opening it if needed.
|
|
561
|
+
*
|
|
562
|
+
* Very little code is authorized to touch rel->rd_smgr directly. Instead
|
|
563
|
+
* use this function to fetch its value.
|
|
564
|
+
*
|
|
565
|
+
* Note: since a relcache flush can cause the file handle to be closed again,
|
|
566
|
+
* it's unwise to hold onto the pointer returned by this function for any
|
|
567
|
+
* long period. Recommended practice is to just re-execute RelationGetSmgr
|
|
568
|
+
* each time you need to access the SMgrRelation. It's quite cheap in
|
|
569
|
+
* comparison to whatever an smgr function is going to do.
|
|
570
|
+
*/
|
|
571
|
+
static inline SMgrRelation
|
|
572
|
+
RelationGetSmgr(Relation rel)
|
|
573
|
+
{
|
|
574
|
+
if (unlikely(rel->rd_smgr == NULL))
|
|
575
|
+
smgrsetowner(&(rel->rd_smgr), smgropen(rel->rd_locator, rel->rd_backend));
|
|
576
|
+
return rel->rd_smgr;
|
|
577
|
+
}
|
|
518
578
|
|
|
519
579
|
/*
|
|
520
580
|
* RelationCloseSmgr
|
|
521
581
|
* Close the relation at the smgr level, if not already done.
|
|
522
|
-
*
|
|
523
|
-
* Note: smgrclose should unhook from owner pointer, hence the Assert.
|
|
524
582
|
*/
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
583
|
+
static inline void
|
|
584
|
+
RelationCloseSmgr(Relation relation)
|
|
585
|
+
{
|
|
586
|
+
if (relation->rd_smgr != NULL)
|
|
587
|
+
smgrclose(relation->rd_smgr);
|
|
588
|
+
|
|
589
|
+
/* smgrclose should unhook from owner pointer */
|
|
590
|
+
Assert(relation->rd_smgr == NULL);
|
|
591
|
+
}
|
|
592
|
+
#endif /* !FRONTEND */
|
|
533
593
|
|
|
534
594
|
/*
|
|
535
595
|
* RelationGetTargetBlock
|
|
536
596
|
* Fetch relation's current insertion target block.
|
|
537
597
|
*
|
|
538
598
|
* Returns InvalidBlockNumber if there is no current target block. Note
|
|
539
|
-
* that the target block status is discarded on any smgr-level invalidation
|
|
599
|
+
* that the target block status is discarded on any smgr-level invalidation,
|
|
600
|
+
* so there's no need to re-open the smgr handle if it's not currently open.
|
|
540
601
|
*/
|
|
541
602
|
#define RelationGetTargetBlock(relation) \
|
|
542
603
|
( (relation)->rd_smgr != NULL ? (relation)->rd_smgr->smgr_targblock : InvalidBlockNumber )
|
|
@@ -547,23 +608,28 @@ typedef struct ViewOptions
|
|
|
547
608
|
*/
|
|
548
609
|
#define RelationSetTargetBlock(relation, targblock) \
|
|
549
610
|
do { \
|
|
550
|
-
|
|
551
|
-
(relation)->rd_smgr->smgr_targblock = (targblock); \
|
|
611
|
+
RelationGetSmgr(relation)->smgr_targblock = (targblock); \
|
|
552
612
|
} while (0)
|
|
553
613
|
|
|
614
|
+
/*
|
|
615
|
+
* RelationIsPermanent
|
|
616
|
+
* True if relation is permanent.
|
|
617
|
+
*/
|
|
618
|
+
#define RelationIsPermanent(relation) \
|
|
619
|
+
((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT)
|
|
620
|
+
|
|
554
621
|
/*
|
|
555
622
|
* RelationNeedsWAL
|
|
556
623
|
* True if relation needs WAL.
|
|
557
624
|
*
|
|
558
625
|
* Returns false if wal_level = minimal and this relation is created or
|
|
559
626
|
* truncated in the current transaction. See "Skipping WAL for New
|
|
560
|
-
*
|
|
627
|
+
* RelFileLocator" in src/backend/access/transam/README.
|
|
561
628
|
*/
|
|
562
629
|
#define RelationNeedsWAL(relation) \
|
|
563
|
-
((relation)
|
|
564
|
-
(XLogIsNeeded() || \
|
|
630
|
+
(RelationIsPermanent(relation) && (XLogIsNeeded() || \
|
|
565
631
|
(relation->rd_createSubid == InvalidSubTransactionId && \
|
|
566
|
-
relation->
|
|
632
|
+
relation->rd_firstRelfilelocatorSubid == InvalidSubTransactionId)))
|
|
567
633
|
|
|
568
634
|
/*
|
|
569
635
|
* RelationUsesLocalBuffers
|
|
@@ -627,7 +693,8 @@ typedef struct ViewOptions
|
|
|
627
693
|
* WAL stream.
|
|
628
694
|
*
|
|
629
695
|
* We don't log information for unlogged tables (since they don't WAL log
|
|
630
|
-
* anyway)
|
|
696
|
+
* anyway), for foreign tables (since they don't WAL log, either),
|
|
697
|
+
* and for system tables (their content is hard to make sense of, and
|
|
631
698
|
* it would complicate decoding slightly for little gain). Note that we *do*
|
|
632
699
|
* log information for user defined catalog tables since they presumably are
|
|
633
700
|
* interesting to the user...
|
|
@@ -635,6 +702,7 @@ typedef struct ViewOptions
|
|
|
635
702
|
#define RelationIsLogicallyLogged(relation) \
|
|
636
703
|
(XLogLogicalInfoActive() && \
|
|
637
704
|
RelationNeedsWAL(relation) && \
|
|
705
|
+
(relation)->rd_rel->relkind != RELKIND_FOREIGN_TABLE && \
|
|
638
706
|
!IsCatalogRelation(relation))
|
|
639
707
|
|
|
640
708
|
/* routines in utils/cache/relcache.c */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Relation descriptor cache definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/relcache.h
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
#ifndef RELCACHE_H
|
|
15
15
|
#define RELCACHE_H
|
|
16
16
|
|
|
17
|
-
#include "postgres.h"
|
|
18
17
|
#include "access/tupdesc.h"
|
|
18
|
+
#include "common/relpath.h"
|
|
19
19
|
#include "nodes/bitmapset.h"
|
|
20
20
|
|
|
21
21
|
|
|
@@ -51,20 +51,26 @@ extern Oid RelationGetReplicaIndex(Relation relation);
|
|
|
51
51
|
extern List *RelationGetIndexExpressions(Relation relation);
|
|
52
52
|
extern List *RelationGetDummyIndexExpressions(Relation relation);
|
|
53
53
|
extern List *RelationGetIndexPredicate(Relation relation);
|
|
54
|
-
extern Datum *RelationGetIndexRawAttOptions(Relation
|
|
54
|
+
extern Datum *RelationGetIndexRawAttOptions(Relation indexrel);
|
|
55
55
|
extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy);
|
|
56
56
|
|
|
57
|
+
/*
|
|
58
|
+
* Which set of columns to return by RelationGetIndexAttrBitmap.
|
|
59
|
+
*/
|
|
57
60
|
typedef enum IndexAttrBitmapKind
|
|
58
61
|
{
|
|
59
|
-
INDEX_ATTR_BITMAP_ALL,
|
|
60
62
|
INDEX_ATTR_BITMAP_KEY,
|
|
61
63
|
INDEX_ATTR_BITMAP_PRIMARY_KEY,
|
|
62
|
-
INDEX_ATTR_BITMAP_IDENTITY_KEY
|
|
64
|
+
INDEX_ATTR_BITMAP_IDENTITY_KEY,
|
|
65
|
+
INDEX_ATTR_BITMAP_HOT_BLOCKING,
|
|
66
|
+
INDEX_ATTR_BITMAP_SUMMARIZED
|
|
63
67
|
} IndexAttrBitmapKind;
|
|
64
68
|
|
|
65
69
|
extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation,
|
|
66
70
|
IndexAttrBitmapKind attrKind);
|
|
67
71
|
|
|
72
|
+
extern Bitmapset *RelationGetIdentityKeyBitmap(Relation relation);
|
|
73
|
+
|
|
68
74
|
extern void RelationGetExclusionInfo(Relation indexRelation,
|
|
69
75
|
Oid **operators,
|
|
70
76
|
Oid **procs,
|
|
@@ -73,8 +79,9 @@ extern void RelationGetExclusionInfo(Relation indexRelation,
|
|
|
73
79
|
extern void RelationInitIndexAccessInfo(Relation relation);
|
|
74
80
|
|
|
75
81
|
/* caller must include pg_publication.h */
|
|
76
|
-
struct
|
|
77
|
-
extern
|
|
82
|
+
struct PublicationDesc;
|
|
83
|
+
extern void RelationBuildPublicationDesc(Relation relation,
|
|
84
|
+
struct PublicationDesc *pubdesc);
|
|
78
85
|
|
|
79
86
|
extern void RelationInitTableAccessMethod(Relation relation);
|
|
80
87
|
|
|
@@ -101,7 +108,7 @@ extern Relation RelationBuildLocalRelation(const char *relname,
|
|
|
101
108
|
TupleDesc tupDesc,
|
|
102
109
|
Oid relid,
|
|
103
110
|
Oid accessmtd,
|
|
104
|
-
|
|
111
|
+
RelFileNumber relfilenumber,
|
|
105
112
|
Oid reltablespace,
|
|
106
113
|
bool shared_relation,
|
|
107
114
|
bool mapped_relation,
|
|
@@ -109,10 +116,10 @@ extern Relation RelationBuildLocalRelation(const char *relname,
|
|
|
109
116
|
char relkind);
|
|
110
117
|
|
|
111
118
|
/*
|
|
112
|
-
* Routines to manage assignment of new
|
|
119
|
+
* Routines to manage assignment of new relfilenumber to a relation
|
|
113
120
|
*/
|
|
114
|
-
extern void
|
|
115
|
-
extern void
|
|
121
|
+
extern void RelationSetNewRelfilenumber(Relation relation, char persistence);
|
|
122
|
+
extern void RelationAssumeNewRelfilelocator(Relation relation);
|
|
116
123
|
|
|
117
124
|
/*
|
|
118
125
|
* Routines for flushing/rebuilding relcache entries in various scenarios
|
|
@@ -121,7 +128,7 @@ extern void RelationForgetRelation(Oid rid);
|
|
|
121
128
|
|
|
122
129
|
extern void RelationCacheInvalidateEntry(Oid relationId);
|
|
123
130
|
|
|
124
|
-
extern void RelationCacheInvalidate(
|
|
131
|
+
extern void RelationCacheInvalidate(bool debug_discard);
|
|
125
132
|
|
|
126
133
|
extern void RelationCloseSmgrByOid(Oid relationId);
|
|
127
134
|
|
|
@@ -143,9 +150,9 @@ extern void RelationCacheInitFilePostInvalidate(void);
|
|
|
143
150
|
extern void RelationCacheInitFileRemove(void);
|
|
144
151
|
|
|
145
152
|
/* should be used only by relcache.c and catcache.c */
|
|
146
|
-
extern bool criticalRelcachesBuilt;
|
|
153
|
+
extern PGDLLIMPORT bool criticalRelcachesBuilt;
|
|
147
154
|
|
|
148
155
|
/* should be used only by relcache.c and postinit.c */
|
|
149
|
-
extern bool criticalSharedRelcachesBuilt;
|
|
156
|
+
extern PGDLLIMPORT bool criticalSharedRelcachesBuilt;
|
|
150
157
|
|
|
151
158
|
#endif /* RELCACHE_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES relation trigger definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/reltrigger.h
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* See utils/resowner/README for more info.
|
|
10
10
|
*
|
|
11
11
|
*
|
|
12
|
-
* Portions Copyright (c) 1996-
|
|
12
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
14
14
|
*
|
|
15
15
|
* src/include/utils/resowner.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* ruleutils.h
|
|
4
4
|
* Declarations for ruleutils.c
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/utils/ruleutils.h
|
|
@@ -20,9 +20,15 @@
|
|
|
20
20
|
struct Plan; /* avoid including plannodes.h here */
|
|
21
21
|
struct PlannedStmt;
|
|
22
22
|
|
|
23
|
+
/* Flags for pg_get_indexdef_columns_extended() */
|
|
24
|
+
#define RULE_INDEXDEF_PRETTY 0x01
|
|
25
|
+
#define RULE_INDEXDEF_KEYS_ONLY 0x02 /* ignore included attributes */
|
|
23
26
|
|
|
24
27
|
extern char *pg_get_indexdef_string(Oid indexrelid);
|
|
25
28
|
extern char *pg_get_indexdef_columns(Oid indexrelid, bool pretty);
|
|
29
|
+
extern char *pg_get_indexdef_columns_extended(Oid indexrelid,
|
|
30
|
+
bits16 flags);
|
|
31
|
+
extern char *pg_get_querydef(Query *query, bool pretty);
|
|
26
32
|
|
|
27
33
|
extern char *pg_get_partkeydef_columns(Oid relid, bool pretty);
|
|
28
34
|
extern char *pg_get_partconstrdef_string(Oid partitionId, char *aliasname);
|
|
@@ -41,4 +47,6 @@ extern char *generate_collation_name(Oid collid);
|
|
|
41
47
|
extern char *generate_opclass_name(Oid opclass);
|
|
42
48
|
extern char *get_range_partbound_string(List *bound_datums);
|
|
43
49
|
|
|
50
|
+
extern char *pg_get_statisticsobjdef_string(Oid statextid);
|
|
51
|
+
|
|
44
52
|
#endif /* RULEUTILS_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* sharedtuplestore.h
|
|
4
4
|
* Simple mechanism for sharing tuples between backends.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/utils/sharedtuplestore.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* snapmgr.h
|
|
4
4
|
* POSTGRES snapshot manager
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/utils/snapmgr.h
|
|
@@ -37,8 +37,7 @@
|
|
|
37
37
|
*/
|
|
38
38
|
#define RelationAllowsEarlyPruning(rel) \
|
|
39
39
|
( \
|
|
40
|
-
(rel)
|
|
41
|
-
&& !IsCatalogRelation(rel) \
|
|
40
|
+
RelationIsPermanent(rel) && !IsCatalogRelation(rel) \
|
|
42
41
|
&& !RelationIsAccessibleInLogicalDecoding(rel) \
|
|
43
42
|
)
|
|
44
43
|
|
|
@@ -52,13 +51,12 @@ extern Size SnapMgrShmemSize(void);
|
|
|
52
51
|
extern void SnapMgrInit(void);
|
|
53
52
|
extern TimestampTz GetSnapshotCurrentTimestamp(void);
|
|
54
53
|
extern TimestampTz GetOldSnapshotThresholdTimestamp(void);
|
|
54
|
+
extern void SnapshotTooOldMagicForTest(void);
|
|
55
55
|
|
|
56
|
-
extern bool FirstSnapshotSet;
|
|
56
|
+
extern PGDLLIMPORT bool FirstSnapshotSet;
|
|
57
57
|
|
|
58
58
|
extern PGDLLIMPORT TransactionId TransactionXmin;
|
|
59
59
|
extern PGDLLIMPORT TransactionId RecentXmin;
|
|
60
|
-
extern PGDLLIMPORT TransactionId RecentGlobalXmin;
|
|
61
|
-
extern PGDLLIMPORT TransactionId RecentGlobalDataXmin;
|
|
62
60
|
|
|
63
61
|
/* Variables representing various special snapshot semantics */
|
|
64
62
|
extern PGDLLIMPORT SnapshotData SnapshotSelfData;
|
|
@@ -78,11 +76,12 @@ extern PGDLLIMPORT SnapshotData CatalogSnapshotData;
|
|
|
78
76
|
|
|
79
77
|
/*
|
|
80
78
|
* Similarly, some initialization is required for a NonVacuumable snapshot.
|
|
81
|
-
* The caller must supply the
|
|
79
|
+
* The caller must supply the visibility cutoff state to use (c.f.
|
|
80
|
+
* GlobalVisTestFor()).
|
|
82
81
|
*/
|
|
83
|
-
#define InitNonVacuumableSnapshot(snapshotdata,
|
|
82
|
+
#define InitNonVacuumableSnapshot(snapshotdata, vistestp) \
|
|
84
83
|
((snapshotdata).snapshot_type = SNAPSHOT_NON_VACUUMABLE, \
|
|
85
|
-
(snapshotdata).
|
|
84
|
+
(snapshotdata).vistest = (vistestp))
|
|
86
85
|
|
|
87
86
|
/*
|
|
88
87
|
* Similarly, some initialization is required for SnapshotToast. We need
|
|
@@ -98,6 +97,13 @@ extern PGDLLIMPORT SnapshotData CatalogSnapshotData;
|
|
|
98
97
|
((snapshot)->snapshot_type == SNAPSHOT_MVCC || \
|
|
99
98
|
(snapshot)->snapshot_type == SNAPSHOT_HISTORIC_MVCC)
|
|
100
99
|
|
|
100
|
+
#ifndef FRONTEND
|
|
101
|
+
static inline bool
|
|
102
|
+
OldSnapshotThresholdActive(void)
|
|
103
|
+
{
|
|
104
|
+
return old_snapshot_threshold >= 0;
|
|
105
|
+
}
|
|
106
|
+
#endif
|
|
101
107
|
|
|
102
108
|
extern Snapshot GetTransactionSnapshot(void);
|
|
103
109
|
extern Snapshot GetLatestSnapshot(void);
|
|
@@ -110,6 +116,7 @@ extern void InvalidateCatalogSnapshot(void);
|
|
|
110
116
|
extern void InvalidateCatalogSnapshotConditionally(void);
|
|
111
117
|
|
|
112
118
|
extern void PushActiveSnapshot(Snapshot snapshot);
|
|
119
|
+
extern void PushActiveSnapshotWithLevel(Snapshot snapshot, int snap_level);
|
|
113
120
|
extern void PushCopiedSnapshot(Snapshot snapshot);
|
|
114
121
|
extern void UpdateActiveSnapshotCommandId(void);
|
|
115
122
|
extern void PopActiveSnapshot(void);
|
|
@@ -121,8 +128,6 @@ extern void UnregisterSnapshot(Snapshot snapshot);
|
|
|
121
128
|
extern Snapshot RegisterSnapshotOnOwner(Snapshot snapshot, ResourceOwner owner);
|
|
122
129
|
extern void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner);
|
|
123
130
|
|
|
124
|
-
extern FullTransactionId GetFullRecentGlobalXmin(void);
|
|
125
|
-
|
|
126
131
|
extern void AtSubCommit_Snapshot(int level);
|
|
127
132
|
extern void AtSubAbort_Snapshot(int level);
|
|
128
133
|
extern void AtEOXact_Snapshot(bool isCommit, bool resetXmin);
|
|
@@ -130,14 +135,32 @@ extern void AtEOXact_Snapshot(bool isCommit, bool resetXmin);
|
|
|
130
135
|
extern void ImportSnapshot(const char *idstr);
|
|
131
136
|
extern bool XactHasExportedSnapshots(void);
|
|
132
137
|
extern void DeleteAllExportedSnapshotFiles(void);
|
|
138
|
+
extern void WaitForOlderSnapshots(TransactionId limitXmin, bool progress);
|
|
133
139
|
extern bool ThereAreNoPriorRegisteredSnapshots(void);
|
|
134
|
-
extern
|
|
135
|
-
|
|
140
|
+
extern bool HaveRegisteredOrActiveSnapshot(void);
|
|
141
|
+
extern bool TransactionIdLimitedForOldSnapshots(TransactionId recentXmin,
|
|
142
|
+
Relation relation,
|
|
143
|
+
TransactionId *limit_xid,
|
|
144
|
+
TimestampTz *limit_ts);
|
|
145
|
+
extern void SetOldSnapshotThresholdTimestamp(TimestampTz ts, TransactionId xlimit);
|
|
136
146
|
extern void MaintainOldSnapshotTimeMapping(TimestampTz whenTaken,
|
|
137
147
|
TransactionId xmin);
|
|
138
148
|
|
|
139
149
|
extern char *ExportSnapshot(Snapshot snapshot);
|
|
140
150
|
|
|
151
|
+
/*
|
|
152
|
+
* These live in procarray.c because they're intimately linked to the
|
|
153
|
+
* procarray contents, but thematically they better fit into snapmgr.h.
|
|
154
|
+
*/
|
|
155
|
+
typedef struct GlobalVisState GlobalVisState;
|
|
156
|
+
extern GlobalVisState *GlobalVisTestFor(Relation rel);
|
|
157
|
+
extern bool GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid);
|
|
158
|
+
extern bool GlobalVisTestIsRemovableFullXid(GlobalVisState *state, FullTransactionId fxid);
|
|
159
|
+
extern FullTransactionId GlobalVisTestNonRemovableFullHorizon(GlobalVisState *state);
|
|
160
|
+
extern TransactionId GlobalVisTestNonRemovableHorizon(GlobalVisState *state);
|
|
161
|
+
extern bool GlobalVisCheckRemovableXid(Relation rel, TransactionId xid);
|
|
162
|
+
extern bool GlobalVisCheckRemovableFullXid(Relation rel, FullTransactionId fxid);
|
|
163
|
+
|
|
141
164
|
/*
|
|
142
165
|
* Utility functions for implementing visibility routines in table AMs.
|
|
143
166
|
*/
|
|
@@ -146,13 +169,13 @@ extern bool XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot);
|
|
|
146
169
|
/* Support for catalog timetravel for logical decoding */
|
|
147
170
|
struct HTAB;
|
|
148
171
|
extern struct HTAB *HistoricSnapshotGetTupleCids(void);
|
|
149
|
-
extern void SetupHistoricSnapshot(Snapshot
|
|
172
|
+
extern void SetupHistoricSnapshot(Snapshot historic_snapshot, struct HTAB *tuplecids);
|
|
150
173
|
extern void TeardownHistoricSnapshot(bool is_error);
|
|
151
174
|
extern bool HistoricSnapshotActive(void);
|
|
152
175
|
|
|
153
176
|
extern Size EstimateSnapshotSpace(Snapshot snapshot);
|
|
154
177
|
extern void SerializeSnapshot(Snapshot snapshot, char *start_address);
|
|
155
178
|
extern Snapshot RestoreSnapshot(char *start_address);
|
|
156
|
-
extern void RestoreTransactionSnapshot(Snapshot snapshot, void *
|
|
179
|
+
extern void RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc);
|
|
157
180
|
|
|
158
181
|
#endif /* SNAPMGR_H */
|