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
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* exit-time cleanup for either a postmaster or a backend.
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
|
-
* Portions Copyright (c) 1996-
|
|
11
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
13
13
|
*
|
|
14
14
|
* src/include/storage/ipc.h
|
|
@@ -62,7 +62,7 @@ typedef void (*shmem_startup_hook_type) (void);
|
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
/* ipc.c */
|
|
65
|
-
extern PGDLLIMPORT __thread
|
|
65
|
+
extern PGDLLIMPORT __thread bool proc_exit_inprogress;
|
|
66
66
|
extern PGDLLIMPORT bool shmem_exit_inprogress;
|
|
67
67
|
|
|
68
68
|
extern void proc_exit(int code) pg_attribute_noreturn();
|
|
@@ -72,10 +72,13 @@ extern void on_shmem_exit(pg_on_exit_callback function, Datum arg);
|
|
|
72
72
|
extern void before_shmem_exit(pg_on_exit_callback function, Datum arg);
|
|
73
73
|
extern void cancel_before_shmem_exit(pg_on_exit_callback function, Datum arg);
|
|
74
74
|
extern void on_exit_reset(void);
|
|
75
|
+
extern void check_on_shmem_exit_lists_are_empty(void);
|
|
75
76
|
|
|
76
77
|
/* ipci.c */
|
|
77
78
|
extern PGDLLIMPORT shmem_startup_hook_type shmem_startup_hook;
|
|
78
79
|
|
|
80
|
+
extern Size CalculateShmemSize(int *num_semaphores);
|
|
79
81
|
extern void CreateSharedMemoryAndSemaphores(void);
|
|
82
|
+
extern void InitializeShmemGUCs(void);
|
|
80
83
|
|
|
81
84
|
#endif /* IPC_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES disk item 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/storage/item.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Standard POSTGRES buffer page item identifier/line pointer 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/storage/itemid.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES disk item pointer 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/storage/itemptr.h
|
|
@@ -71,7 +71,7 @@ typedef ItemPointerData *ItemPointer;
|
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
/* ----------------
|
|
74
|
-
* support
|
|
74
|
+
* support functions
|
|
75
75
|
* ----------------
|
|
76
76
|
*/
|
|
77
77
|
|
|
@@ -79,77 +79,87 @@ typedef ItemPointerData *ItemPointer;
|
|
|
79
79
|
* ItemPointerIsValid
|
|
80
80
|
* True iff the disk item pointer is not NULL.
|
|
81
81
|
*/
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
static inline bool
|
|
83
|
+
ItemPointerIsValid(const ItemPointerData *pointer)
|
|
84
|
+
{
|
|
85
|
+
return PointerIsValid(pointer) && pointer->ip_posid != 0;
|
|
86
|
+
}
|
|
84
87
|
|
|
85
88
|
/*
|
|
86
89
|
* ItemPointerGetBlockNumberNoCheck
|
|
87
90
|
* Returns the block number of a disk item pointer.
|
|
88
91
|
*/
|
|
89
|
-
|
|
90
|
-
(
|
|
91
|
-
|
|
92
|
-
)
|
|
92
|
+
static inline BlockNumber
|
|
93
|
+
ItemPointerGetBlockNumberNoCheck(const ItemPointerData *pointer)
|
|
94
|
+
{
|
|
95
|
+
return BlockIdGetBlockNumber(&pointer->ip_blkid);
|
|
96
|
+
}
|
|
93
97
|
|
|
94
98
|
/*
|
|
95
99
|
* ItemPointerGetBlockNumber
|
|
96
100
|
* As above, but verifies that the item pointer looks valid.
|
|
97
101
|
*/
|
|
98
|
-
|
|
99
|
-
(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
)
|
|
102
|
+
static inline BlockNumber
|
|
103
|
+
ItemPointerGetBlockNumber(const ItemPointerData *pointer)
|
|
104
|
+
{
|
|
105
|
+
Assert(ItemPointerIsValid(pointer));
|
|
106
|
+
return ItemPointerGetBlockNumberNoCheck(pointer);
|
|
107
|
+
}
|
|
103
108
|
|
|
104
109
|
/*
|
|
105
110
|
* ItemPointerGetOffsetNumberNoCheck
|
|
106
111
|
* Returns the offset number of a disk item pointer.
|
|
107
112
|
*/
|
|
108
|
-
|
|
109
|
-
(
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
static inline OffsetNumber
|
|
114
|
+
ItemPointerGetOffsetNumberNoCheck(const ItemPointerData *pointer)
|
|
115
|
+
{
|
|
116
|
+
return pointer->ip_posid;
|
|
117
|
+
}
|
|
112
118
|
|
|
113
119
|
/*
|
|
114
120
|
* ItemPointerGetOffsetNumber
|
|
115
121
|
* As above, but verifies that the item pointer looks valid.
|
|
116
122
|
*/
|
|
117
|
-
|
|
118
|
-
(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
)
|
|
123
|
+
static inline OffsetNumber
|
|
124
|
+
ItemPointerGetOffsetNumber(const ItemPointerData *pointer)
|
|
125
|
+
{
|
|
126
|
+
Assert(ItemPointerIsValid(pointer));
|
|
127
|
+
return ItemPointerGetOffsetNumberNoCheck(pointer);
|
|
128
|
+
}
|
|
122
129
|
|
|
123
130
|
/*
|
|
124
131
|
* ItemPointerSet
|
|
125
132
|
* Sets a disk item pointer to the specified block and offset.
|
|
126
133
|
*/
|
|
127
|
-
|
|
128
|
-
(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
(pointer
|
|
132
|
-
|
|
134
|
+
static inline void
|
|
135
|
+
ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum)
|
|
136
|
+
{
|
|
137
|
+
Assert(PointerIsValid(pointer));
|
|
138
|
+
BlockIdSet(&pointer->ip_blkid, blockNumber);
|
|
139
|
+
pointer->ip_posid = offNum;
|
|
140
|
+
}
|
|
133
141
|
|
|
134
142
|
/*
|
|
135
143
|
* ItemPointerSetBlockNumber
|
|
136
144
|
* Sets a disk item pointer to the specified block.
|
|
137
145
|
*/
|
|
138
|
-
|
|
139
|
-
(
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
)
|
|
146
|
+
static inline void
|
|
147
|
+
ItemPointerSetBlockNumber(ItemPointerData *pointer, BlockNumber blockNumber)
|
|
148
|
+
{
|
|
149
|
+
Assert(PointerIsValid(pointer));
|
|
150
|
+
BlockIdSet(&pointer->ip_blkid, blockNumber);
|
|
151
|
+
}
|
|
143
152
|
|
|
144
153
|
/*
|
|
145
154
|
* ItemPointerSetOffsetNumber
|
|
146
155
|
* Sets a disk item pointer to the specified offset.
|
|
147
156
|
*/
|
|
148
|
-
|
|
149
|
-
(
|
|
150
|
-
|
|
151
|
-
(pointer)
|
|
152
|
-
|
|
157
|
+
static inline void
|
|
158
|
+
ItemPointerSetOffsetNumber(ItemPointerData *pointer, OffsetNumber offsetNumber)
|
|
159
|
+
{
|
|
160
|
+
Assert(PointerIsValid(pointer));
|
|
161
|
+
pointer->ip_posid = offsetNumber;
|
|
162
|
+
}
|
|
153
163
|
|
|
154
164
|
/*
|
|
155
165
|
* ItemPointerCopy
|
|
@@ -158,42 +168,49 @@ typedef ItemPointerData *ItemPointer;
|
|
|
158
168
|
* Should there ever be padding in an ItemPointer this would need to be handled
|
|
159
169
|
* differently as it's used as hash key.
|
|
160
170
|
*/
|
|
161
|
-
|
|
162
|
-
(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
171
|
+
static inline void
|
|
172
|
+
ItemPointerCopy(const ItemPointerData *fromPointer, ItemPointerData *toPointer)
|
|
173
|
+
{
|
|
174
|
+
Assert(PointerIsValid(toPointer));
|
|
175
|
+
Assert(PointerIsValid(fromPointer));
|
|
176
|
+
*toPointer = *fromPointer;
|
|
177
|
+
}
|
|
167
178
|
|
|
168
179
|
/*
|
|
169
180
|
* ItemPointerSetInvalid
|
|
170
181
|
* Sets a disk item pointer to be invalid.
|
|
171
182
|
*/
|
|
172
|
-
|
|
173
|
-
(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
(pointer
|
|
177
|
-
|
|
183
|
+
static inline void
|
|
184
|
+
ItemPointerSetInvalid(ItemPointerData *pointer)
|
|
185
|
+
{
|
|
186
|
+
Assert(PointerIsValid(pointer));
|
|
187
|
+
BlockIdSet(&pointer->ip_blkid, InvalidBlockNumber);
|
|
188
|
+
pointer->ip_posid = InvalidOffsetNumber;
|
|
189
|
+
}
|
|
178
190
|
|
|
179
191
|
/*
|
|
180
192
|
* ItemPointerIndicatesMovedPartitions
|
|
181
193
|
* True iff the block number indicates the tuple has moved to another
|
|
182
194
|
* partition.
|
|
183
195
|
*/
|
|
184
|
-
|
|
185
|
-
(
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
)
|
|
196
|
+
static inline bool
|
|
197
|
+
ItemPointerIndicatesMovedPartitions(const ItemPointerData *pointer)
|
|
198
|
+
{
|
|
199
|
+
return
|
|
200
|
+
ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber &&
|
|
201
|
+
ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber;
|
|
202
|
+
}
|
|
189
203
|
|
|
190
204
|
/*
|
|
191
205
|
* ItemPointerSetMovedPartitions
|
|
192
206
|
* Indicate that the item referenced by the itempointer has moved into a
|
|
193
207
|
* different partition.
|
|
194
208
|
*/
|
|
195
|
-
|
|
196
|
-
|
|
209
|
+
static inline void
|
|
210
|
+
ItemPointerSetMovedPartitions(ItemPointerData *pointer)
|
|
211
|
+
{
|
|
212
|
+
ItemPointerSet(pointer, MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber);
|
|
213
|
+
}
|
|
197
214
|
|
|
198
215
|
/* ----------------
|
|
199
216
|
* externs
|
|
@@ -202,5 +219,27 @@ typedef ItemPointerData *ItemPointer;
|
|
|
202
219
|
|
|
203
220
|
extern bool ItemPointerEquals(ItemPointer pointer1, ItemPointer pointer2);
|
|
204
221
|
extern int32 ItemPointerCompare(ItemPointer arg1, ItemPointer arg2);
|
|
222
|
+
extern void ItemPointerInc(ItemPointer pointer);
|
|
223
|
+
extern void ItemPointerDec(ItemPointer pointer);
|
|
224
|
+
|
|
225
|
+
/* ----------------
|
|
226
|
+
* Datum conversion functions
|
|
227
|
+
* ----------------
|
|
228
|
+
*/
|
|
229
|
+
|
|
230
|
+
static inline ItemPointer
|
|
231
|
+
DatumGetItemPointer(Datum X)
|
|
232
|
+
{
|
|
233
|
+
return (ItemPointer) DatumGetPointer(X);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
static inline Datum
|
|
237
|
+
ItemPointerGetDatum(const ItemPointerData *X)
|
|
238
|
+
{
|
|
239
|
+
return PointerGetDatum(X);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
#define PG_GETARG_ITEMPOINTER(n) DatumGetItemPointer(PG_GETARG_DATUM(n))
|
|
243
|
+
#define PG_RETURN_ITEMPOINTER(x) return ItemPointerGetDatum(x)
|
|
205
244
|
|
|
206
245
|
#endif /* ITEMPTR_H */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* zillions of large objects (internal, external, jaquith, inversion).
|
|
6
6
|
* Now we only support inversion.
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 1996-
|
|
8
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
10
|
*
|
|
11
11
|
* src/include/storage/large_object.h
|
|
@@ -79,7 +79,7 @@ typedef struct LargeObjectDesc
|
|
|
79
79
|
/*
|
|
80
80
|
* GUC: backwards-compatibility flag to suppress LO permission checks
|
|
81
81
|
*/
|
|
82
|
-
extern bool lo_compat_privileges;
|
|
82
|
+
extern PGDLLIMPORT bool lo_compat_privileges;
|
|
83
83
|
|
|
84
84
|
/*
|
|
85
85
|
* Function definitions...
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
* efficient than using WaitLatch or WaitLatchOrSocket.
|
|
91
91
|
*
|
|
92
92
|
*
|
|
93
|
-
* Portions Copyright (c) 1996-
|
|
93
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
94
94
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
95
95
|
*
|
|
96
96
|
* src/include/storage/latch.h
|
|
@@ -110,6 +110,7 @@
|
|
|
110
110
|
typedef struct Latch
|
|
111
111
|
{
|
|
112
112
|
sig_atomic_t is_set;
|
|
113
|
+
sig_atomic_t maybe_sleeping;
|
|
113
114
|
bool is_shared;
|
|
114
115
|
int owner_pid;
|
|
115
116
|
#ifdef WIN32
|
|
@@ -133,10 +134,18 @@ typedef struct Latch
|
|
|
133
134
|
/* avoid having to deal with case on platforms not requiring it */
|
|
134
135
|
#define WL_SOCKET_CONNECTED WL_SOCKET_WRITEABLE
|
|
135
136
|
#endif
|
|
136
|
-
|
|
137
|
+
#define WL_SOCKET_CLOSED (1 << 7)
|
|
138
|
+
#ifdef WIN32
|
|
139
|
+
#define WL_SOCKET_ACCEPT (1 << 8)
|
|
140
|
+
#else
|
|
141
|
+
/* avoid having to deal with case on platforms not requiring it */
|
|
142
|
+
#define WL_SOCKET_ACCEPT WL_SOCKET_READABLE
|
|
143
|
+
#endif
|
|
137
144
|
#define WL_SOCKET_MASK (WL_SOCKET_READABLE | \
|
|
138
145
|
WL_SOCKET_WRITEABLE | \
|
|
139
|
-
WL_SOCKET_CONNECTED
|
|
146
|
+
WL_SOCKET_CONNECTED | \
|
|
147
|
+
WL_SOCKET_ACCEPT | \
|
|
148
|
+
WL_SOCKET_CLOSED)
|
|
140
149
|
|
|
141
150
|
typedef struct WaitEvent
|
|
142
151
|
{
|
|
@@ -162,9 +171,11 @@ extern void OwnLatch(Latch *latch);
|
|
|
162
171
|
extern void DisownLatch(Latch *latch);
|
|
163
172
|
extern void SetLatch(Latch *latch);
|
|
164
173
|
extern void ResetLatch(Latch *latch);
|
|
174
|
+
extern void ShutdownLatchSupport(void);
|
|
165
175
|
|
|
166
176
|
extern WaitEventSet *CreateWaitEventSet(MemoryContext context, int nevents);
|
|
167
177
|
extern void FreeWaitEventSet(WaitEventSet *set);
|
|
178
|
+
extern void FreeWaitEventSetAfterFork(WaitEventSet *set);
|
|
168
179
|
extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd,
|
|
169
180
|
Latch *latch, void *user_data);
|
|
170
181
|
extern void ModifyWaitEvent(WaitEventSet *set, int pos, uint32 events, Latch *latch);
|
|
@@ -176,15 +187,8 @@ extern int WaitLatch(Latch *latch, int wakeEvents, long timeout,
|
|
|
176
187
|
uint32 wait_event_info);
|
|
177
188
|
extern int WaitLatchOrSocket(Latch *latch, int wakeEvents,
|
|
178
189
|
pgsocket sock, long timeout, uint32 wait_event_info);
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
* Win32 doesn't need this.
|
|
183
|
-
*/
|
|
184
|
-
#ifndef WIN32
|
|
185
|
-
extern void latch_sigusr1_handler(void);
|
|
186
|
-
#else
|
|
187
|
-
#define latch_sigusr1_handler() ((void) 0)
|
|
188
|
-
#endif
|
|
190
|
+
extern void InitializeLatchWaitSet(void);
|
|
191
|
+
extern int GetNumRegisteredWaitEvents(WaitEventSet *set);
|
|
192
|
+
extern bool WaitEventSetCanReportClosed(void);
|
|
189
193
|
|
|
190
194
|
#endif /* LATCH_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES lock manager 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/storage/lmgr.h
|
|
@@ -38,6 +38,7 @@ extern void RelationInitLockInfo(Relation relation);
|
|
|
38
38
|
|
|
39
39
|
/* Lock a relation */
|
|
40
40
|
extern void LockRelationOid(Oid relid, LOCKMODE lockmode);
|
|
41
|
+
extern void LockRelationId(LockRelId *relid, LOCKMODE lockmode);
|
|
41
42
|
extern bool ConditionalLockRelationOid(Oid relid, LOCKMODE lockmode);
|
|
42
43
|
extern void UnlockRelationId(LockRelId *relid, LOCKMODE lockmode);
|
|
43
44
|
extern void UnlockRelationOid(Oid relid, LOCKMODE lockmode);
|
|
@@ -106,6 +107,11 @@ extern void LockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid,
|
|
|
106
107
|
extern void UnlockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid,
|
|
107
108
|
LOCKMODE lockmode);
|
|
108
109
|
|
|
110
|
+
extern void LockApplyTransactionForSession(Oid suboid, TransactionId xid, uint16 objid,
|
|
111
|
+
LOCKMODE lockmode);
|
|
112
|
+
extern void UnlockApplyTransactionForSession(Oid suboid, TransactionId xid, uint16 objid,
|
|
113
|
+
LOCKMODE lockmode);
|
|
114
|
+
|
|
109
115
|
/* Describe a locktag for error messages */
|
|
110
116
|
extern void DescribeLockTag(StringInfo buf, const LOCKTAG *tag);
|
|
111
117
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES low-level lock mechanism
|
|
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/storage/lock.h
|
|
@@ -18,38 +18,35 @@
|
|
|
18
18
|
#error "lock.h may not be included from frontend code"
|
|
19
19
|
#endif
|
|
20
20
|
|
|
21
|
+
#include "lib/ilist.h"
|
|
21
22
|
#include "storage/backendid.h"
|
|
22
23
|
#include "storage/lockdefs.h"
|
|
23
24
|
#include "storage/lwlock.h"
|
|
24
25
|
#include "storage/shmem.h"
|
|
26
|
+
#include "utils/timestamp.h"
|
|
25
27
|
|
|
26
28
|
/* struct PGPROC is declared in proc.h, but must forward-reference it */
|
|
27
29
|
typedef struct PGPROC PGPROC;
|
|
28
30
|
|
|
29
|
-
typedef struct PROC_QUEUE
|
|
30
|
-
{
|
|
31
|
-
SHM_QUEUE links; /* head of list of PGPROC objects */
|
|
32
|
-
int size; /* number of entries in list */
|
|
33
|
-
} PROC_QUEUE;
|
|
34
|
-
|
|
35
31
|
/* GUC variables */
|
|
36
|
-
extern int
|
|
32
|
+
extern PGDLLIMPORT int max_locks_per_xact;
|
|
37
33
|
|
|
38
34
|
#ifdef LOCK_DEBUG
|
|
39
|
-
extern int
|
|
40
|
-
extern bool Trace_locks;
|
|
41
|
-
extern bool Trace_userlocks;
|
|
42
|
-
extern int
|
|
43
|
-
extern bool Debug_deadlocks;
|
|
35
|
+
extern PGDLLIMPORT int Trace_lock_oidmin;
|
|
36
|
+
extern PGDLLIMPORT bool Trace_locks;
|
|
37
|
+
extern PGDLLIMPORT bool Trace_userlocks;
|
|
38
|
+
extern PGDLLIMPORT int Trace_lock_table;
|
|
39
|
+
extern PGDLLIMPORT bool Debug_deadlocks;
|
|
44
40
|
#endif /* LOCK_DEBUG */
|
|
45
41
|
|
|
46
42
|
|
|
47
43
|
/*
|
|
48
44
|
* Top-level transactions are identified by VirtualTransactionIDs comprising
|
|
49
|
-
* PGPROC fields backendId and lxid. For prepared transactions, the
|
|
50
|
-
* LocalTransactionId is an ordinary XID
|
|
51
|
-
*
|
|
52
|
-
*
|
|
45
|
+
* PGPROC fields backendId and lxid. For recovered prepared transactions, the
|
|
46
|
+
* LocalTransactionId is an ordinary XID; LOCKTAG_VIRTUALTRANSACTION never
|
|
47
|
+
* refers to that kind. These are guaranteed unique over the short term, but
|
|
48
|
+
* will be reused after a database restart or XID wraparound; hence they
|
|
49
|
+
* should never be stored on disk.
|
|
53
50
|
*
|
|
54
51
|
* Note that struct VirtualTransactionId can not be assumed to be atomically
|
|
55
52
|
* assignable as a whole. However, type LocalTransactionId is assumed to
|
|
@@ -69,7 +66,7 @@ typedef struct
|
|
|
69
66
|
#define LocalTransactionIdIsValid(lxid) ((lxid) != InvalidLocalTransactionId)
|
|
70
67
|
#define VirtualTransactionIdIsValid(vxid) \
|
|
71
68
|
(LocalTransactionIdIsValid((vxid).localTransactionId))
|
|
72
|
-
#define
|
|
69
|
+
#define VirtualTransactionIdIsRecoveredPreparedXact(vxid) \
|
|
73
70
|
((vxid).backendId == InvalidBackendId)
|
|
74
71
|
#define VirtualTransactionIdEquals(vxid1, vxid2) \
|
|
75
72
|
((vxid1).backendId == (vxid2).backendId && \
|
|
@@ -147,12 +144,14 @@ typedef enum LockTagType
|
|
|
147
144
|
LOCKTAG_SPECULATIVE_TOKEN, /* speculative insertion Xid and token */
|
|
148
145
|
LOCKTAG_OBJECT, /* non-relation database object */
|
|
149
146
|
LOCKTAG_USERLOCK, /* reserved for old contrib/userlock code */
|
|
150
|
-
LOCKTAG_ADVISORY /* advisory user locks */
|
|
147
|
+
LOCKTAG_ADVISORY, /* advisory user locks */
|
|
148
|
+
LOCKTAG_APPLY_TRANSACTION /* transaction being applied on a logical
|
|
149
|
+
* replication subscriber */
|
|
151
150
|
} LockTagType;
|
|
152
151
|
|
|
153
|
-
#define LOCKTAG_LAST_TYPE
|
|
152
|
+
#define LOCKTAG_LAST_TYPE LOCKTAG_APPLY_TRANSACTION
|
|
154
153
|
|
|
155
|
-
extern const char *const LockTagTypeNames[];
|
|
154
|
+
extern PGDLLIMPORT const char *const LockTagTypeNames[];
|
|
156
155
|
|
|
157
156
|
/*
|
|
158
157
|
* The LOCKTAG struct is defined with malice aforethought to fit into 16
|
|
@@ -276,6 +275,17 @@ typedef struct LOCKTAG
|
|
|
276
275
|
(locktag).locktag_type = LOCKTAG_ADVISORY, \
|
|
277
276
|
(locktag).locktag_lockmethodid = USER_LOCKMETHOD)
|
|
278
277
|
|
|
278
|
+
/*
|
|
279
|
+
* ID info for a remote transaction on a logical replication subscriber is: DB
|
|
280
|
+
* OID + SUBSCRIPTION OID + TRANSACTION ID + OBJID
|
|
281
|
+
*/
|
|
282
|
+
#define SET_LOCKTAG_APPLY_TRANSACTION(locktag,dboid,suboid,xid,objid) \
|
|
283
|
+
((locktag).locktag_field1 = (dboid), \
|
|
284
|
+
(locktag).locktag_field2 = (suboid), \
|
|
285
|
+
(locktag).locktag_field3 = (xid), \
|
|
286
|
+
(locktag).locktag_field4 = (objid), \
|
|
287
|
+
(locktag).locktag_type = LOCKTAG_APPLY_TRANSACTION, \
|
|
288
|
+
(locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
|
|
279
289
|
|
|
280
290
|
/*
|
|
281
291
|
* Per-locked-object lock information:
|
|
@@ -303,8 +313,8 @@ typedef struct LOCK
|
|
|
303
313
|
/* data */
|
|
304
314
|
LOCKMASK grantMask; /* bitmask for lock types already granted */
|
|
305
315
|
LOCKMASK waitMask; /* bitmask for lock types awaited */
|
|
306
|
-
|
|
307
|
-
|
|
316
|
+
dlist_head procLocks; /* list of PROCLOCK objects assoc. with lock */
|
|
317
|
+
dclist_head waitProcs; /* list of PGPROC objects waiting on lock */
|
|
308
318
|
int requested[MAX_LOCKMODES]; /* counts of requested locks */
|
|
309
319
|
int nRequested; /* total of requested[] array */
|
|
310
320
|
int granted[MAX_LOCKMODES]; /* counts of granted locks */
|
|
@@ -365,8 +375,8 @@ typedef struct PROCLOCK
|
|
|
365
375
|
PGPROC *groupLeader; /* proc's lock group leader, or proc itself */
|
|
366
376
|
LOCKMASK holdMask; /* bitmask for lock types currently held */
|
|
367
377
|
LOCKMASK releaseMask; /* bitmask for lock types to be released */
|
|
368
|
-
|
|
369
|
-
|
|
378
|
+
dlist_node lockLink; /* list link in LOCK's list of proclocks */
|
|
379
|
+
dlist_node procLink; /* list link in PGPROC's list of proclocks */
|
|
370
380
|
} PROCLOCK;
|
|
371
381
|
|
|
372
382
|
#define PROCLOCK_LOCKMETHOD(proclock) \
|
|
@@ -446,6 +456,8 @@ typedef struct LockInstanceData
|
|
|
446
456
|
LOCKMODE waitLockMode; /* lock awaited by this PGPROC, if any */
|
|
447
457
|
BackendId backend; /* backend ID of this PGPROC */
|
|
448
458
|
LocalTransactionId lxid; /* local transaction ID of this PGPROC */
|
|
459
|
+
TimestampTz waitStart; /* time at which this PGPROC started waiting
|
|
460
|
+
* for lock */
|
|
449
461
|
int pid; /* pid of this PGPROC */
|
|
450
462
|
int leaderPid; /* pid of group leader; = pid if no group */
|
|
451
463
|
bool fastpath; /* taken via fastpath? */
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* contains definition that have to (indirectly) be available when included by
|
|
8
8
|
* FRONTEND code.
|
|
9
9
|
*
|
|
10
|
-
* Portions Copyright (c) 1996-
|
|
10
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
11
11
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
12
12
|
*
|
|
13
13
|
* src/include/storage/lockdefs.h
|
|
@@ -36,8 +36,8 @@ typedef int LOCKMODE;
|
|
|
36
36
|
#define AccessShareLock 1 /* SELECT */
|
|
37
37
|
#define RowShareLock 2 /* SELECT FOR UPDATE/FOR SHARE */
|
|
38
38
|
#define RowExclusiveLock 3 /* INSERT, UPDATE, DELETE */
|
|
39
|
-
#define ShareUpdateExclusiveLock 4 /* VACUUM (non-FULL),ANALYZE, CREATE
|
|
40
|
-
* CONCURRENTLY */
|
|
39
|
+
#define ShareUpdateExclusiveLock 4 /* VACUUM (non-FULL), ANALYZE, CREATE
|
|
40
|
+
* INDEX CONCURRENTLY */
|
|
41
41
|
#define ShareLock 5 /* CREATE INDEX (WITHOUT CONCURRENTLY) */
|
|
42
42
|
#define ShareRowExclusiveLock 6 /* like EXCLUSIVE MODE, but allows ROW
|
|
43
43
|
* SHARE */
|
|
@@ -45,7 +45,7 @@ typedef int LOCKMODE;
|
|
|
45
45
|
#define AccessExclusiveLock 8 /* ALTER TABLE, DROP TABLE, VACUUM FULL,
|
|
46
46
|
* and unqualified LOCK TABLE */
|
|
47
47
|
|
|
48
|
-
#define MaxLockMode 8
|
|
48
|
+
#define MaxLockMode 8 /* highest standard lock mode */
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
/* WAL representation of an AccessExclusiveLock on a table */
|