pg_query 4.2.1 → 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 +31 -0
- data/README.md +6 -8
- data/Rakefile +5 -6
- data/ext/pg_query/extconf.rb +14 -4
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
- data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
- 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 +1 -1
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
- 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 +1 -1
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
- data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
- 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 +58 -98
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
- data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
- data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -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 +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
- 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 +4 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
- 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 +1 -1
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
- 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/{common → postgres/common}/string.h +5 -3
- data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
- 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 +11 -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 +34 -17
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
- 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} +21 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
- 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 +2 -2
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
- data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
- 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 +35 -18
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
- 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 +96 -511
- 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 +377 -139
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
- 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/{nodes → postgres/nodes}/value.h +12 -2
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
- 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 +1 -1
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
- 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} +1 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -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 +1 -1
- 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 +62 -25
- 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} +42 -75
- 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 +1 -4
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
- data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
- data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
- 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 +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
- data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -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 +94 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
- 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 +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
- data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
- 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 +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
- 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 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
- 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 +41 -21
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
- 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 +7 -6
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
- 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 +20 -5
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
- data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
- 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/{utils → postgres/utils}/regproc.h +3 -3
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
- 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 +6 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
- data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
- 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 +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- 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 +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +534 -510
- 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 +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- 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 +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +79 -5
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +6 -10
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +23 -5
- data/lib/pg_query/version.rb +1 -1
- metadata +432 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- 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/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
- /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
|
@@ -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
|
|
@@ -205,4 +222,24 @@ extern int32 ItemPointerCompare(ItemPointer arg1, ItemPointer arg2);
|
|
|
205
222
|
extern void ItemPointerInc(ItemPointer pointer);
|
|
206
223
|
extern void ItemPointerDec(ItemPointer pointer);
|
|
207
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)
|
|
244
|
+
|
|
208
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
|
|
@@ -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
|
|
@@ -135,9 +135,16 @@ typedef struct Latch
|
|
|
135
135
|
#define WL_SOCKET_CONNECTED WL_SOCKET_WRITEABLE
|
|
136
136
|
#endif
|
|
137
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
|
|
138
144
|
#define WL_SOCKET_MASK (WL_SOCKET_READABLE | \
|
|
139
145
|
WL_SOCKET_WRITEABLE | \
|
|
140
146
|
WL_SOCKET_CONNECTED | \
|
|
147
|
+
WL_SOCKET_ACCEPT | \
|
|
141
148
|
WL_SOCKET_CLOSED)
|
|
142
149
|
|
|
143
150
|
typedef struct WaitEvent
|
|
@@ -168,6 +175,7 @@ extern void ShutdownLatchSupport(void);
|
|
|
168
175
|
|
|
169
176
|
extern WaitEventSet *CreateWaitEventSet(MemoryContext context, int nevents);
|
|
170
177
|
extern void FreeWaitEventSet(WaitEventSet *set);
|
|
178
|
+
extern void FreeWaitEventSetAfterFork(WaitEventSet *set);
|
|
171
179
|
extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd,
|
|
172
180
|
Latch *latch, void *user_data);
|
|
173
181
|
extern void ModifyWaitEvent(WaitEventSet *set, int pos, uint32 events, Latch *latch);
|
|
@@ -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
|
|
@@ -107,6 +107,11 @@ extern void LockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid,
|
|
|
107
107
|
extern void UnlockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid,
|
|
108
108
|
LOCKMODE lockmode);
|
|
109
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
|
+
|
|
110
115
|
/* Describe a locktag for error messages */
|
|
111
116
|
extern void DescribeLockTag(StringInfo buf, const LOCKTAG *tag);
|
|
112
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,6 +18,7 @@
|
|
|
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"
|
|
@@ -27,12 +28,6 @@
|
|
|
27
28
|
/* struct PGPROC is declared in proc.h, but must forward-reference it */
|
|
28
29
|
typedef struct PGPROC PGPROC;
|
|
29
30
|
|
|
30
|
-
typedef struct PROC_QUEUE
|
|
31
|
-
{
|
|
32
|
-
SHM_QUEUE links; /* head of list of PGPROC objects */
|
|
33
|
-
int size; /* number of entries in list */
|
|
34
|
-
} PROC_QUEUE;
|
|
35
|
-
|
|
36
31
|
/* GUC variables */
|
|
37
32
|
extern PGDLLIMPORT int max_locks_per_xact;
|
|
38
33
|
|
|
@@ -149,10 +144,12 @@ typedef enum LockTagType
|
|
|
149
144
|
LOCKTAG_SPECULATIVE_TOKEN, /* speculative insertion Xid and token */
|
|
150
145
|
LOCKTAG_OBJECT, /* non-relation database object */
|
|
151
146
|
LOCKTAG_USERLOCK, /* reserved for old contrib/userlock code */
|
|
152
|
-
LOCKTAG_ADVISORY /* advisory user locks */
|
|
147
|
+
LOCKTAG_ADVISORY, /* advisory user locks */
|
|
148
|
+
LOCKTAG_APPLY_TRANSACTION /* transaction being applied on a logical
|
|
149
|
+
* replication subscriber */
|
|
153
150
|
} LockTagType;
|
|
154
151
|
|
|
155
|
-
#define LOCKTAG_LAST_TYPE
|
|
152
|
+
#define LOCKTAG_LAST_TYPE LOCKTAG_APPLY_TRANSACTION
|
|
156
153
|
|
|
157
154
|
extern PGDLLIMPORT const char *const LockTagTypeNames[];
|
|
158
155
|
|
|
@@ -278,6 +275,17 @@ typedef struct LOCKTAG
|
|
|
278
275
|
(locktag).locktag_type = LOCKTAG_ADVISORY, \
|
|
279
276
|
(locktag).locktag_lockmethodid = USER_LOCKMETHOD)
|
|
280
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)
|
|
281
289
|
|
|
282
290
|
/*
|
|
283
291
|
* Per-locked-object lock information:
|
|
@@ -305,8 +313,8 @@ typedef struct LOCK
|
|
|
305
313
|
/* data */
|
|
306
314
|
LOCKMASK grantMask; /* bitmask for lock types already granted */
|
|
307
315
|
LOCKMASK waitMask; /* bitmask for lock types awaited */
|
|
308
|
-
|
|
309
|
-
|
|
316
|
+
dlist_head procLocks; /* list of PROCLOCK objects assoc. with lock */
|
|
317
|
+
dclist_head waitProcs; /* list of PGPROC objects waiting on lock */
|
|
310
318
|
int requested[MAX_LOCKMODES]; /* counts of requested locks */
|
|
311
319
|
int nRequested; /* total of requested[] array */
|
|
312
320
|
int granted[MAX_LOCKMODES]; /* counts of granted locks */
|
|
@@ -367,8 +375,8 @@ typedef struct PROCLOCK
|
|
|
367
375
|
PGPROC *groupLeader; /* proc's lock group leader, or proc itself */
|
|
368
376
|
LOCKMASK holdMask; /* bitmask for lock types currently held */
|
|
369
377
|
LOCKMASK releaseMask; /* bitmask for lock types to be released */
|
|
370
|
-
|
|
371
|
-
|
|
378
|
+
dlist_node lockLink; /* list link in LOCK's list of proclocks */
|
|
379
|
+
dlist_node procLink; /* list link in PGPROC's list of proclocks */
|
|
372
380
|
} PROCLOCK;
|
|
373
381
|
|
|
374
382
|
#define PROCLOCK_LOCKMETHOD(proclock) \
|
|
@@ -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 */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Lightweight lock manager
|
|
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/lwlock.h
|
|
@@ -23,6 +23,15 @@
|
|
|
23
23
|
|
|
24
24
|
struct PGPROC;
|
|
25
25
|
|
|
26
|
+
/* what state of the wait process is a backend in */
|
|
27
|
+
typedef enum LWLockWaitState
|
|
28
|
+
{
|
|
29
|
+
LW_WS_NOT_WAITING, /* not currently waiting / woken up */
|
|
30
|
+
LW_WS_WAITING, /* currently waiting */
|
|
31
|
+
LW_WS_PENDING_WAKEUP, /* removed from waitlist, but not yet
|
|
32
|
+
* signalled */
|
|
33
|
+
} LWLockWaitState;
|
|
34
|
+
|
|
26
35
|
/*
|
|
27
36
|
* Code outside of lwlock.c should not manipulate the contents of this
|
|
28
37
|
* structure directly, but we have to declare it here to allow LWLocks to be
|
|
@@ -51,6 +60,9 @@ typedef struct LWLock
|
|
|
51
60
|
*/
|
|
52
61
|
#define LWLOCK_PADDED_SIZE PG_CACHE_LINE_SIZE
|
|
53
62
|
|
|
63
|
+
StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
|
|
64
|
+
"Miscalculated LWLock padding");
|
|
65
|
+
|
|
54
66
|
/* LWLock, padded to a full cache line size */
|
|
55
67
|
typedef union LWLockPadded
|
|
56
68
|
{
|
|
@@ -124,7 +136,7 @@ extern bool LWLockAnyHeldByMe(LWLock *lock, int nlocks, size_t stride);
|
|
|
124
136
|
extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode);
|
|
125
137
|
|
|
126
138
|
extern bool LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval);
|
|
127
|
-
extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64
|
|
139
|
+
extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 val);
|
|
128
140
|
|
|
129
141
|
extern Size LWLockShmemSize(void);
|
|
130
142
|
extern void CreateLWLocks(void);
|
|
@@ -193,6 +205,8 @@ typedef enum BuiltinTrancheIds
|
|
|
193
205
|
LWTRANCHE_PGSTATS_DSA,
|
|
194
206
|
LWTRANCHE_PGSTATS_HASH,
|
|
195
207
|
LWTRANCHE_PGSTATS_DATA,
|
|
208
|
+
LWTRANCHE_LAUNCHER_DSA,
|
|
209
|
+
LWTRANCHE_LAUNCHER_HASH,
|
|
196
210
|
LWTRANCHE_FIRST_USER_DEFINED
|
|
197
211
|
} BuiltinTrancheIds;
|
|
198
212
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES disk "offset" 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/off.h
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* be provided by each port.
|
|
11
11
|
*
|
|
12
12
|
*
|
|
13
|
-
* Portions Copyright (c) 1996-
|
|
13
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
15
15
|
*
|
|
16
16
|
* src/include/storage/pg_sema.h
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* only one ID number.
|
|
15
15
|
*
|
|
16
16
|
*
|
|
17
|
-
* Portions Copyright (c) 1996-
|
|
17
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
18
18
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
19
19
|
*
|
|
20
20
|
* src/include/storage/pg_shmem.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* routines for signaling between the postmaster and its child processes
|
|
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/pmsignal.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES public predicate locking 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/predicate.h
|
|
@@ -58,7 +58,7 @@ extern void RegisterPredicateLockingXid(TransactionId xid);
|
|
|
58
58
|
extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
|
|
59
59
|
extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
|
|
60
60
|
extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot,
|
|
61
|
-
TransactionId
|
|
61
|
+
TransactionId tuple_xid);
|
|
62
62
|
extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
|
|
63
63
|
extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
|
|
64
64
|
extern void TransferPredicateLocksToHeapRelation(Relation relation);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* per-process shared memory data structures
|
|
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/proc.h
|
|
@@ -32,6 +32,8 @@
|
|
|
32
32
|
* If none of the caches have overflowed, we can assume that an XID that's not
|
|
33
33
|
* listed anywhere in the PGPROC array is not a running transaction. Else we
|
|
34
34
|
* have to look at pg_subtrans.
|
|
35
|
+
*
|
|
36
|
+
* See src/test/isolation/specs/subxid-overflow.spec if you change this.
|
|
35
37
|
*/
|
|
36
38
|
#define PGPROC_MAX_CACHED_SUBXIDS 64 /* XXX guessed-at value */
|
|
37
39
|
|
|
@@ -89,7 +91,7 @@ struct XidCache
|
|
|
89
91
|
#define INVALID_PGPROCNO PG_INT32_MAX
|
|
90
92
|
|
|
91
93
|
/*
|
|
92
|
-
* Flags for PGPROC.
|
|
94
|
+
* Flags for PGPROC.delayChkptFlags
|
|
93
95
|
*
|
|
94
96
|
* These flags can be used to delay the start or completion of a checkpoint
|
|
95
97
|
* for short periods. A flag is in effect if the corresponding bit is set in
|
|
@@ -116,7 +118,7 @@ struct XidCache
|
|
|
116
118
|
* to phase 3. This is useful if we are performing a WAL-logged operation that
|
|
117
119
|
* might invalidate buffers, such as relation truncation. In this case, we need
|
|
118
120
|
* to ensure that any buffers which were invalidated and thus not flushed by
|
|
119
|
-
* the checkpoint are
|
|
121
|
+
* the checkpoint are actually destroyed on disk. Replay can cope with a file
|
|
120
122
|
* or block that doesn't exist, but not with a block that has the wrong
|
|
121
123
|
* contents.
|
|
122
124
|
*/
|
|
@@ -147,7 +149,7 @@ typedef enum
|
|
|
147
149
|
* but its myProcLocks[] lists are valid.
|
|
148
150
|
*
|
|
149
151
|
* We allow many fields of this struct to be accessed without locks, such as
|
|
150
|
-
*
|
|
152
|
+
* delayChkptFlags and isBackgroundWorker. However, keep in mind that writing
|
|
151
153
|
* mirrored ones (see below) requires holding ProcArrayLock or XidGenLock in
|
|
152
154
|
* at least shared mode, so that pgxactoff does not change concurrently.
|
|
153
155
|
*
|
|
@@ -165,8 +167,8 @@ typedef enum
|
|
|
165
167
|
struct PGPROC
|
|
166
168
|
{
|
|
167
169
|
/* proc->links MUST BE FIRST IN STRUCT (see ProcSleep,ProcWakeup,etc) */
|
|
168
|
-
|
|
169
|
-
|
|
170
|
+
dlist_node links; /* list link if process is in a list */
|
|
171
|
+
dlist_head *procgloballist; /* procglobal list that owns this PGPROC */
|
|
170
172
|
|
|
171
173
|
PGSemaphore sem; /* ONE semaphore to sleep on */
|
|
172
174
|
ProcWaitStatus waitStatus;
|
|
@@ -191,7 +193,11 @@ struct PGPROC
|
|
|
191
193
|
|
|
192
194
|
int pgxactoff; /* offset into various ProcGlobal->arrays with
|
|
193
195
|
* data mirrored from this PGPROC */
|
|
194
|
-
|
|
196
|
+
|
|
197
|
+
int pgprocno; /* Number of this PGPROC in
|
|
198
|
+
* ProcGlobal->allProcs array. This is set
|
|
199
|
+
* once by InitProcGlobal().
|
|
200
|
+
* ProcGlobal->allProcs[n].pgprocno == n */
|
|
195
201
|
|
|
196
202
|
/* These fields are zero while a backend is still starting up: */
|
|
197
203
|
BackendId backendId; /* This backend's backend ID (if assigned) */
|
|
@@ -211,7 +217,7 @@ struct PGPROC
|
|
|
211
217
|
bool recoveryConflictPending;
|
|
212
218
|
|
|
213
219
|
/* Info about LWLock the process is currently waiting for, if any. */
|
|
214
|
-
|
|
220
|
+
uint8 lwWaiting; /* see LWLockWaitState */
|
|
215
221
|
uint8 lwWaitMode; /* lwlock mode being waited for */
|
|
216
222
|
proclist_node lwWaitLink; /* position in LW lock wait list */
|
|
217
223
|
|
|
@@ -242,14 +248,14 @@ struct PGPROC
|
|
|
242
248
|
*/
|
|
243
249
|
XLogRecPtr waitLSN; /* waiting for this LSN or higher */
|
|
244
250
|
int syncRepState; /* wait state for sync rep */
|
|
245
|
-
|
|
251
|
+
dlist_node syncRepLinks; /* list link if process is in syncrep queue */
|
|
246
252
|
|
|
247
253
|
/*
|
|
248
254
|
* All PROCLOCK objects for locks held or awaited by this backend are
|
|
249
255
|
* linked into one of these lists, according to the partition number of
|
|
250
256
|
* their lock.
|
|
251
257
|
*/
|
|
252
|
-
|
|
258
|
+
dlist_head myProcLocks[NUM_LOCK_PARTITIONS];
|
|
253
259
|
|
|
254
260
|
XidCacheStatus subxidStatus; /* mirrored with
|
|
255
261
|
* ProcGlobal->subxidStates[i] */
|
|
@@ -379,13 +385,13 @@ typedef struct PROC_HDR
|
|
|
379
385
|
/* Length of allProcs array */
|
|
380
386
|
uint32 allProcCount;
|
|
381
387
|
/* Head of list of free PGPROC structures */
|
|
382
|
-
|
|
388
|
+
dlist_head freeProcs;
|
|
383
389
|
/* Head of list of autovacuum's free PGPROC structures */
|
|
384
|
-
|
|
390
|
+
dlist_head autovacFreeProcs;
|
|
385
391
|
/* Head of list of bgworker free PGPROC structures */
|
|
386
|
-
|
|
392
|
+
dlist_head bgworkerFreeProcs;
|
|
387
393
|
/* Head of list of walsender free PGPROC structures */
|
|
388
|
-
|
|
394
|
+
dlist_head walsenderFreeProcs;
|
|
389
395
|
/* First pgproc waiting for group XID clear */
|
|
390
396
|
pg_atomic_uint32 procArrayGroupFirst;
|
|
391
397
|
/* First pgproc waiting for group transaction status update */
|
|
@@ -439,12 +445,11 @@ extern void InitAuxiliaryProcess(void);
|
|
|
439
445
|
extern void SetStartupBufferPinWaitBufId(int bufid);
|
|
440
446
|
extern int GetStartupBufferPinWaitBufId(void);
|
|
441
447
|
|
|
442
|
-
extern bool HaveNFreeProcs(int n);
|
|
448
|
+
extern bool HaveNFreeProcs(int n, int *nfree);
|
|
443
449
|
extern void ProcReleaseLocks(bool isCommit);
|
|
444
450
|
|
|
445
|
-
extern void ProcQueueInit(PROC_QUEUE *queue);
|
|
446
451
|
extern ProcWaitStatus ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable);
|
|
447
|
-
extern
|
|
452
|
+
extern void ProcWakeup(PGPROC *proc, ProcWaitStatus waitStatus);
|
|
448
453
|
extern void ProcLockWakeup(LockMethod lockMethodTable, LOCK *lock);
|
|
449
454
|
extern void CheckDeadLockAlert(void);
|
|
450
455
|
extern bool IsWaitingForLock(void);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES process array 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/procarray.h
|
|
@@ -39,6 +39,7 @@ extern void ExpireTreeKnownAssignedTransactionIds(TransactionId xid,
|
|
|
39
39
|
TransactionId max_xid);
|
|
40
40
|
extern void ExpireAllKnownAssignedTransactionIds(void);
|
|
41
41
|
extern void ExpireOldKnownAssignedTransactionIds(TransactionId xid);
|
|
42
|
+
extern void KnownAssignedTransactionIdsIdleMaintenance(void);
|
|
42
43
|
|
|
43
44
|
extern int GetMaxSnapshotXidCount(void);
|
|
44
45
|
extern int GetMaxSnapshotSubxidCount(void);
|
|
@@ -57,7 +58,7 @@ extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
|
|
|
57
58
|
extern TransactionId GetOldestTransactionIdConsideredRunning(void);
|
|
58
59
|
extern TransactionId GetOldestActiveTransactionId(void);
|
|
59
60
|
extern TransactionId GetOldestSafeDecodingTransactionId(bool catalogOnly);
|
|
60
|
-
extern void GetReplicationHorizons(TransactionId *
|
|
61
|
+
extern void GetReplicationHorizons(TransactionId *xmin, TransactionId *catalog_xmin);
|
|
61
62
|
|
|
62
63
|
extern VirtualTransactionId *GetVirtualXIDsDelayingChkpt(int *nvxids, int type);
|
|
63
64
|
extern bool HaveVirtualXIDsDelayingChkpt(VirtualTransactionId *vxids,
|