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 transaction system 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/access/xact.h
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
#include "datatype/timestamp.h"
|
|
20
20
|
#include "lib/stringinfo.h"
|
|
21
21
|
#include "nodes/pg_list.h"
|
|
22
|
-
#include "storage/
|
|
22
|
+
#include "storage/relfilelocator.h"
|
|
23
23
|
#include "storage/sinval.h"
|
|
24
24
|
|
|
25
25
|
/*
|
|
@@ -113,6 +113,13 @@ extern PGDLLIMPORT int MyXactFlags;
|
|
|
113
113
|
*/
|
|
114
114
|
#define XACT_FLAGS_NEEDIMMEDIATECOMMIT (1U << 2)
|
|
115
115
|
|
|
116
|
+
/*
|
|
117
|
+
* XACT_FLAGS_PIPELINING - set when we complete an extended-query-protocol
|
|
118
|
+
* Execute message. This is useful for detecting that an implicit transaction
|
|
119
|
+
* block has been created via pipelining.
|
|
120
|
+
*/
|
|
121
|
+
#define XACT_FLAGS_PIPELINING (1U << 3)
|
|
122
|
+
|
|
116
123
|
/*
|
|
117
124
|
* start- and end-of-transaction callbacks for dynamically loaded modules
|
|
118
125
|
*/
|
|
@@ -180,7 +187,7 @@ typedef struct SavedTransactionCharacteristics
|
|
|
180
187
|
*/
|
|
181
188
|
#define XACT_XINFO_HAS_DBINFO (1U << 0)
|
|
182
189
|
#define XACT_XINFO_HAS_SUBXACTS (1U << 1)
|
|
183
|
-
#define
|
|
190
|
+
#define XACT_XINFO_HAS_RELFILELOCATORS (1U << 2)
|
|
184
191
|
#define XACT_XINFO_HAS_INVALS (1U << 3)
|
|
185
192
|
#define XACT_XINFO_HAS_TWOPHASE (1U << 4)
|
|
186
193
|
#define XACT_XINFO_HAS_ORIGIN (1U << 5)
|
|
@@ -258,12 +265,12 @@ typedef struct xl_xact_subxacts
|
|
|
258
265
|
} xl_xact_subxacts;
|
|
259
266
|
#define MinSizeOfXactSubxacts offsetof(xl_xact_subxacts, subxacts)
|
|
260
267
|
|
|
261
|
-
typedef struct
|
|
268
|
+
typedef struct xl_xact_relfilelocators
|
|
262
269
|
{
|
|
263
270
|
int nrels; /* number of relations */
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
#define
|
|
271
|
+
RelFileLocator xlocators[FLEXIBLE_ARRAY_MEMBER];
|
|
272
|
+
} xl_xact_relfilelocators;
|
|
273
|
+
#define MinSizeOfXactRelfileLocators offsetof(xl_xact_relfilelocators, xlocators)
|
|
267
274
|
|
|
268
275
|
/*
|
|
269
276
|
* A transactionally dropped statistics entry.
|
|
@@ -311,7 +318,7 @@ typedef struct xl_xact_commit
|
|
|
311
318
|
/* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */
|
|
312
319
|
/* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */
|
|
313
320
|
/* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */
|
|
314
|
-
/*
|
|
321
|
+
/* xl_xact_relfilelocators follows if XINFO_HAS_RELFILELOCATORS */
|
|
315
322
|
/* xl_xact_stats_items follows if XINFO_HAS_DROPPED_STATS */
|
|
316
323
|
/* xl_xact_invals follows if XINFO_HAS_INVALS */
|
|
317
324
|
/* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */
|
|
@@ -327,7 +334,7 @@ typedef struct xl_xact_abort
|
|
|
327
334
|
/* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */
|
|
328
335
|
/* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */
|
|
329
336
|
/* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */
|
|
330
|
-
/*
|
|
337
|
+
/* xl_xact_relfilelocators follows if XINFO_HAS_RELFILELOCATORS */
|
|
331
338
|
/* xl_xact_stats_items follows if XINFO_HAS_DROPPED_STATS */
|
|
332
339
|
/* No invalidation messages needed. */
|
|
333
340
|
/* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */
|
|
@@ -373,7 +380,7 @@ typedef struct xl_xact_parsed_commit
|
|
|
373
380
|
TransactionId *subxacts;
|
|
374
381
|
|
|
375
382
|
int nrels;
|
|
376
|
-
|
|
383
|
+
RelFileLocator *xlocators;
|
|
377
384
|
|
|
378
385
|
int nstats;
|
|
379
386
|
xl_xact_stats_item *stats;
|
|
@@ -384,7 +391,7 @@ typedef struct xl_xact_parsed_commit
|
|
|
384
391
|
TransactionId twophase_xid; /* only for 2PC */
|
|
385
392
|
char twophase_gid[GIDSIZE]; /* only for 2PC */
|
|
386
393
|
int nabortrels; /* only for 2PC */
|
|
387
|
-
|
|
394
|
+
RelFileLocator *abortlocators; /* only for 2PC */
|
|
388
395
|
int nabortstats; /* only for 2PC */
|
|
389
396
|
xl_xact_stats_item *abortstats; /* only for 2PC */
|
|
390
397
|
|
|
@@ -406,7 +413,7 @@ typedef struct xl_xact_parsed_abort
|
|
|
406
413
|
TransactionId *subxacts;
|
|
407
414
|
|
|
408
415
|
int nrels;
|
|
409
|
-
|
|
416
|
+
RelFileLocator *xlocators;
|
|
410
417
|
|
|
411
418
|
int nstats;
|
|
412
419
|
xl_xact_stats_item *stats;
|
|
@@ -489,9 +496,9 @@ extern int xactGetCommittedChildren(TransactionId **ptr);
|
|
|
489
496
|
|
|
490
497
|
extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time,
|
|
491
498
|
int nsubxacts, TransactionId *subxacts,
|
|
492
|
-
int nrels,
|
|
493
|
-
int
|
|
494
|
-
xl_xact_stats_item *
|
|
499
|
+
int nrels, RelFileLocator *rels,
|
|
500
|
+
int ndroppedstats,
|
|
501
|
+
xl_xact_stats_item *droppedstats,
|
|
495
502
|
int nmsgs, SharedInvalidationMessage *msgs,
|
|
496
503
|
bool relcacheInval,
|
|
497
504
|
int xactflags,
|
|
@@ -500,9 +507,9 @@ extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time,
|
|
|
500
507
|
|
|
501
508
|
extern XLogRecPtr XactLogAbortRecord(TimestampTz abort_time,
|
|
502
509
|
int nsubxacts, TransactionId *subxacts,
|
|
503
|
-
int nrels,
|
|
504
|
-
int
|
|
505
|
-
xl_xact_stats_item *
|
|
510
|
+
int nrels, RelFileLocator *rels,
|
|
511
|
+
int ndroppedstats,
|
|
512
|
+
xl_xact_stats_item *droppedstats,
|
|
506
513
|
int xactflags, TransactionId twophase_xid,
|
|
507
514
|
const char *twophase_gid);
|
|
508
515
|
extern void xact_redo(XLogReaderState *record);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* PostgreSQL write-ahead log manager
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/access/xlog.h
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
#ifndef XLOG_H
|
|
12
12
|
#define XLOG_H
|
|
13
13
|
|
|
14
|
+
#include "access/xlogbackup.h"
|
|
14
15
|
#include "access/xlogdefs.h"
|
|
15
|
-
#include "access/xlogreader.h"
|
|
16
16
|
#include "datatype/timestamp.h"
|
|
17
17
|
#include "lib/stringinfo.h"
|
|
18
18
|
#include "nodes/pg_list.h"
|
|
@@ -191,25 +191,26 @@ typedef enum WALAvailability
|
|
|
191
191
|
} WALAvailability;
|
|
192
192
|
|
|
193
193
|
struct XLogRecData;
|
|
194
|
+
struct XLogReaderState;
|
|
194
195
|
|
|
195
196
|
extern XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata,
|
|
196
197
|
XLogRecPtr fpw_lsn,
|
|
197
198
|
uint8 flags,
|
|
198
199
|
int num_fpi,
|
|
199
200
|
bool topxid_included);
|
|
200
|
-
extern void XLogFlush(XLogRecPtr
|
|
201
|
+
extern void XLogFlush(XLogRecPtr record);
|
|
201
202
|
extern bool XLogBackgroundFlush(void);
|
|
202
|
-
extern bool XLogNeedsFlush(XLogRecPtr
|
|
203
|
-
extern int XLogFileInit(XLogSegNo
|
|
203
|
+
extern bool XLogNeedsFlush(XLogRecPtr record);
|
|
204
|
+
extern int XLogFileInit(XLogSegNo logsegno, TimeLineID logtli);
|
|
204
205
|
extern int XLogFileOpen(XLogSegNo segno, TimeLineID tli);
|
|
205
206
|
|
|
206
207
|
extern void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli);
|
|
207
208
|
extern XLogSegNo XLogGetLastRemovedSegno(void);
|
|
208
|
-
extern void XLogSetAsyncXactLSN(XLogRecPtr
|
|
209
|
+
extern void XLogSetAsyncXactLSN(XLogRecPtr asyncXactLSN);
|
|
209
210
|
extern void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn);
|
|
210
211
|
|
|
211
|
-
extern void xlog_redo(XLogReaderState *record);
|
|
212
|
-
extern void xlog_desc(StringInfo buf, XLogReaderState *record);
|
|
212
|
+
extern void xlog_redo(struct XLogReaderState *record);
|
|
213
|
+
extern void xlog_desc(StringInfo buf, struct XLogReaderState *record);
|
|
213
214
|
extern const char *xlog_identify(uint8 info);
|
|
214
215
|
|
|
215
216
|
extern void issue_xlog_fsync(int fd, XLogSegNo segno, TimeLineID tli);
|
|
@@ -227,7 +228,9 @@ extern XLogRecPtr GetFakeLSNForUnloggedRel(void);
|
|
|
227
228
|
extern Size XLOGShmemSize(void);
|
|
228
229
|
extern void XLOGShmemInit(void);
|
|
229
230
|
extern void BootStrapXLOG(void);
|
|
231
|
+
extern void InitializeWalConsistencyChecking(void);
|
|
230
232
|
extern void LocalProcessControlFile(bool reset);
|
|
233
|
+
extern WalLevel GetActiveWalLevelOnStandby(void);
|
|
231
234
|
extern void StartupXLOG(void);
|
|
232
235
|
extern void ShutdownXLOG(int code, Datum arg);
|
|
233
236
|
extern void CreateCheckPoint(int flags);
|
|
@@ -245,9 +248,6 @@ extern XLogRecPtr GetLastImportantRecPtr(void);
|
|
|
245
248
|
|
|
246
249
|
extern void SetWalWriterSleeping(bool sleeping);
|
|
247
250
|
|
|
248
|
-
extern void assign_max_wal_size(int newval, void *extra);
|
|
249
|
-
extern void assign_checkpoint_completion_target(double newval, void *extra);
|
|
250
|
-
|
|
251
251
|
/*
|
|
252
252
|
* Routines used by xlogrecovery.c to call back into xlog.c during recovery.
|
|
253
253
|
*/
|
|
@@ -279,11 +279,10 @@ typedef enum SessionBackupState
|
|
|
279
279
|
SESSION_BACKUP_RUNNING,
|
|
280
280
|
} SessionBackupState;
|
|
281
281
|
|
|
282
|
-
extern
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
extern
|
|
286
|
-
TimeLineID *stoptli_p);
|
|
282
|
+
extern void do_pg_backup_start(const char *backupidstr, bool fast,
|
|
283
|
+
List **tablespaces, BackupState *state,
|
|
284
|
+
StringInfo tblspcmapfile);
|
|
285
|
+
extern void do_pg_backup_stop(BackupState *state, bool waitforarchive);
|
|
287
286
|
extern void do_pg_abort_backup(int code, Datum arg);
|
|
288
287
|
extern void register_persistent_abort_backup_handler(void);
|
|
289
288
|
extern SessionBackupState get_backup_status(void);
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Note: This file must be includable in both frontend and backend contexts,
|
|
12
12
|
* to allow stand-alone tools like pg_receivewal to deal with WAL files.
|
|
13
13
|
*
|
|
14
|
-
* Portions Copyright (c) 1996-
|
|
14
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
16
16
|
*
|
|
17
17
|
* src/include/access/xlog_internal.h
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
#include "lib/stringinfo.h"
|
|
26
26
|
#include "pgtime.h"
|
|
27
27
|
#include "storage/block.h"
|
|
28
|
-
#include "storage/
|
|
28
|
+
#include "storage/relfilelocator.h"
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
/*
|
|
32
32
|
* Each page of XLOG file has a header like this:
|
|
33
33
|
*/
|
|
34
|
-
#define XLOG_PAGE_MAGIC
|
|
34
|
+
#define XLOG_PAGE_MAGIC 0xD113 /* can be used as WAL version indicator */
|
|
35
35
|
|
|
36
36
|
typedef struct XLogPageHeaderData
|
|
37
37
|
{
|
|
@@ -159,74 +159,112 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader;
|
|
|
159
159
|
#define XLOG_FNAME_LEN 24
|
|
160
160
|
|
|
161
161
|
/*
|
|
162
|
-
* Generate a WAL segment file name. Do not use this
|
|
162
|
+
* Generate a WAL segment file name. Do not use this function in a helper
|
|
163
163
|
* function allocating the result generated.
|
|
164
164
|
*/
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
static inline void
|
|
166
|
+
XLogFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo, int wal_segsz_bytes)
|
|
167
|
+
{
|
|
168
|
+
snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli,
|
|
169
|
+
(uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)),
|
|
170
|
+
(uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes)));
|
|
171
|
+
}
|
|
169
172
|
|
|
170
|
-
|
|
171
|
-
|
|
173
|
+
static inline void
|
|
174
|
+
XLogFileNameById(char *fname, TimeLineID tli, uint32 log, uint32 seg)
|
|
175
|
+
{
|
|
176
|
+
snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, log, seg);
|
|
177
|
+
}
|
|
172
178
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
179
|
+
static inline bool
|
|
180
|
+
IsXLogFileName(const char *fname)
|
|
181
|
+
{
|
|
182
|
+
return (strlen(fname) == XLOG_FNAME_LEN && \
|
|
183
|
+
strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN);
|
|
184
|
+
}
|
|
176
185
|
|
|
177
186
|
/*
|
|
178
187
|
* XLOG segment with .partial suffix. Used by pg_receivewal and at end of
|
|
179
188
|
* archive recovery, when we want to archive a WAL segment but it might not
|
|
180
189
|
* be complete yet.
|
|
181
190
|
*/
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
191
|
+
static inline bool
|
|
192
|
+
IsPartialXLogFileName(const char *fname)
|
|
193
|
+
{
|
|
194
|
+
return (strlen(fname) == XLOG_FNAME_LEN + strlen(".partial") &&
|
|
195
|
+
strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN &&
|
|
196
|
+
strcmp(fname + XLOG_FNAME_LEN, ".partial") == 0);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
static inline void
|
|
200
|
+
XLogFromFileName(const char *fname, TimeLineID *tli, XLogSegNo *logSegNo, int wal_segsz_bytes)
|
|
201
|
+
{
|
|
202
|
+
uint32 log;
|
|
203
|
+
uint32 seg;
|
|
204
|
+
|
|
205
|
+
sscanf(fname, "%08X%08X%08X", tli, &log, &seg);
|
|
206
|
+
*logSegNo = (uint64) log * XLogSegmentsPerXLogId(wal_segsz_bytes) + seg;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
static inline void
|
|
210
|
+
XLogFilePath(char *path, TimeLineID tli, XLogSegNo logSegNo, int wal_segsz_bytes)
|
|
211
|
+
{
|
|
212
|
+
snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli,
|
|
213
|
+
(uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)),
|
|
214
|
+
(uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes)));
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
static inline void
|
|
218
|
+
TLHistoryFileName(char *fname, TimeLineID tli)
|
|
219
|
+
{
|
|
220
|
+
snprintf(fname, MAXFNAMELEN, "%08X.history", tli);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
static inline bool
|
|
224
|
+
IsTLHistoryFileName(const char *fname)
|
|
225
|
+
{
|
|
226
|
+
return (strlen(fname) == 8 + strlen(".history") &&
|
|
227
|
+
strspn(fname, "0123456789ABCDEF") == 8 &&
|
|
228
|
+
strcmp(fname + 8, ".history") == 0);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
static inline void
|
|
232
|
+
TLHistoryFilePath(char *path, TimeLineID tli)
|
|
233
|
+
{
|
|
234
|
+
snprintf(path, MAXPGPATH, XLOGDIR "/%08X.history", tli);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
static inline void
|
|
238
|
+
StatusFilePath(char *path, const char *xlog, const char *suffix)
|
|
239
|
+
{
|
|
240
|
+
snprintf(path, MAXPGPATH, XLOGDIR "/archive_status/%s%s", xlog, suffix);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
static inline void
|
|
244
|
+
BackupHistoryFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo, XLogRecPtr startpoint, int wal_segsz_bytes)
|
|
245
|
+
{
|
|
246
|
+
snprintf(fname, MAXFNAMELEN, "%08X%08X%08X.%08X.backup", tli,
|
|
247
|
+
(uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)),
|
|
248
|
+
(uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes)),
|
|
249
|
+
(uint32) (XLogSegmentOffset(startpoint, wal_segsz_bytes)));
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
static inline bool
|
|
253
|
+
IsBackupHistoryFileName(const char *fname)
|
|
254
|
+
{
|
|
255
|
+
return (strlen(fname) > XLOG_FNAME_LEN &&
|
|
256
|
+
strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN &&
|
|
257
|
+
strcmp(fname + strlen(fname) - strlen(".backup"), ".backup") == 0);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
static inline void
|
|
261
|
+
BackupHistoryFilePath(char *path, TimeLineID tli, XLogSegNo logSegNo, XLogRecPtr startpoint, int wal_segsz_bytes)
|
|
262
|
+
{
|
|
263
|
+
snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X.%08X.backup", tli,
|
|
264
|
+
(uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)),
|
|
265
|
+
(uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes)),
|
|
266
|
+
(uint32) (XLogSegmentOffset((startpoint), wal_segsz_bytes)));
|
|
267
|
+
}
|
|
230
268
|
|
|
231
269
|
/*
|
|
232
270
|
* Information logged when we detect a change in one of the parameters
|
|
@@ -324,7 +362,7 @@ extern PGDLLIMPORT RmgrData RmgrTable[];
|
|
|
324
362
|
extern void RmgrStartup(void);
|
|
325
363
|
extern void RmgrCleanup(void);
|
|
326
364
|
extern void RmgrNotFound(RmgrId rmid);
|
|
327
|
-
extern void RegisterCustomRmgr(RmgrId rmid, RmgrData *rmgr);
|
|
365
|
+
extern void RegisterCustomRmgr(RmgrId rmid, const RmgrData *rmgr);
|
|
328
366
|
|
|
329
367
|
#ifndef FRONTEND
|
|
330
368
|
static inline bool
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* xlogbackup.h
|
|
4
|
+
* Definitions for internals of base backups.
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* IDENTIFICATION
|
|
10
|
+
* src/include/access/xlogbackup.h
|
|
11
|
+
*-------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef XLOG_BACKUP_H
|
|
15
|
+
#define XLOG_BACKUP_H
|
|
16
|
+
|
|
17
|
+
#include "access/xlogdefs.h"
|
|
18
|
+
#include "pgtime.h"
|
|
19
|
+
|
|
20
|
+
/* Structure to hold backup state. */
|
|
21
|
+
typedef struct BackupState
|
|
22
|
+
{
|
|
23
|
+
/* Fields saved at backup start */
|
|
24
|
+
/* Backup label name one extra byte for null-termination */
|
|
25
|
+
char name[MAXPGPATH + 1];
|
|
26
|
+
XLogRecPtr startpoint; /* backup start WAL location */
|
|
27
|
+
TimeLineID starttli; /* backup start TLI */
|
|
28
|
+
XLogRecPtr checkpointloc; /* last checkpoint location */
|
|
29
|
+
pg_time_t starttime; /* backup start time */
|
|
30
|
+
bool started_in_recovery; /* backup started in recovery? */
|
|
31
|
+
|
|
32
|
+
/* Fields saved at the end of backup */
|
|
33
|
+
XLogRecPtr stoppoint; /* backup stop WAL location */
|
|
34
|
+
TimeLineID stoptli; /* backup stop TLI */
|
|
35
|
+
pg_time_t stoptime; /* backup stop time */
|
|
36
|
+
} BackupState;
|
|
37
|
+
|
|
38
|
+
extern char *build_backup_content(BackupState *state,
|
|
39
|
+
bool ishistoryfile);
|
|
40
|
+
|
|
41
|
+
#endif /* XLOG_BACKUP_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Postgres write-ahead log manager record pointer and
|
|
5
5
|
* timeline number definitions
|
|
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/access/xlogdefs.h
|
|
@@ -67,35 +67,16 @@ typedef uint16 RepOriginId;
|
|
|
67
67
|
/*
|
|
68
68
|
* This chunk of hackery attempts to determine which file sync methods
|
|
69
69
|
* are available on the current platform, and to choose an appropriate
|
|
70
|
-
* default method.
|
|
71
|
-
*
|
|
70
|
+
* default method.
|
|
71
|
+
*
|
|
72
|
+
* Note that we define our own O_DSYNC on Windows, but not O_SYNC.
|
|
72
73
|
*/
|
|
73
|
-
#if defined(O_SYNC)
|
|
74
|
-
#define OPEN_SYNC_FLAG O_SYNC
|
|
75
|
-
#elif defined(O_FSYNC)
|
|
76
|
-
#define OPEN_SYNC_FLAG O_FSYNC
|
|
77
|
-
#endif
|
|
78
|
-
|
|
79
|
-
#if defined(O_DSYNC)
|
|
80
|
-
#if defined(OPEN_SYNC_FLAG)
|
|
81
|
-
/* O_DSYNC is distinct? */
|
|
82
|
-
#if O_DSYNC != OPEN_SYNC_FLAG
|
|
83
|
-
#define OPEN_DATASYNC_FLAG O_DSYNC
|
|
84
|
-
#endif
|
|
85
|
-
#else /* !defined(OPEN_SYNC_FLAG) */
|
|
86
|
-
/* Win32 only has O_DSYNC */
|
|
87
|
-
#define OPEN_DATASYNC_FLAG O_DSYNC
|
|
88
|
-
#endif
|
|
89
|
-
#endif
|
|
90
|
-
|
|
91
74
|
#if defined(PLATFORM_DEFAULT_SYNC_METHOD)
|
|
92
75
|
#define DEFAULT_SYNC_METHOD PLATFORM_DEFAULT_SYNC_METHOD
|
|
93
|
-
#elif defined(
|
|
76
|
+
#elif defined(O_DSYNC) && (!defined(O_SYNC) || O_DSYNC != O_SYNC)
|
|
94
77
|
#define DEFAULT_SYNC_METHOD SYNC_METHOD_OPEN_DSYNC
|
|
95
|
-
#elif defined(HAVE_FDATASYNC)
|
|
96
|
-
#define DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
|
|
97
78
|
#else
|
|
98
|
-
#define DEFAULT_SYNC_METHOD
|
|
79
|
+
#define DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
|
|
99
80
|
#endif
|
|
100
81
|
|
|
101
82
|
#endif /* XLOG_DEFS_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* xlogprefetcher.h
|
|
4
4
|
* Declarations for the recovery prefetching module.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 2022, PostgreSQL Global Development Group
|
|
6
|
+
* Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* IDENTIFICATION
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* xlogreader.h
|
|
4
4
|
* Definitions for the generic XLog reading facility
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 2013-
|
|
6
|
+
* Portions Copyright (c) 2013-2023, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* IDENTIFICATION
|
|
9
9
|
* src/include/access/xlogreader.h
|
|
@@ -122,7 +122,7 @@ typedef struct
|
|
|
122
122
|
bool in_use;
|
|
123
123
|
|
|
124
124
|
/* Identify the block this refers to */
|
|
125
|
-
|
|
125
|
+
RelFileLocator rlocator;
|
|
126
126
|
ForkNumber forknum;
|
|
127
127
|
BlockNumber blkno;
|
|
128
128
|
|
|
@@ -332,7 +332,6 @@ extern XLogReaderState *XLogReaderAllocate(int wal_segment_size,
|
|
|
332
332
|
const char *waldir,
|
|
333
333
|
XLogReaderRoutine *routine,
|
|
334
334
|
void *private_data);
|
|
335
|
-
extern XLogReaderRoutine *LocalXLogReaderRoutine(void);
|
|
336
335
|
|
|
337
336
|
/* Free an XLogReader */
|
|
338
337
|
extern void XLogReaderFree(XLogReaderState *state);
|
|
@@ -400,7 +399,7 @@ extern bool DecodeXLogRecord(XLogReaderState *state,
|
|
|
400
399
|
DecodedXLogRecord *decoded,
|
|
401
400
|
XLogRecord *record,
|
|
402
401
|
XLogRecPtr lsn,
|
|
403
|
-
char **
|
|
402
|
+
char **errormsg);
|
|
404
403
|
|
|
405
404
|
/*
|
|
406
405
|
* Macros that provide access to parts of the record most recently returned by
|
|
@@ -425,6 +424,8 @@ extern bool DecodeXLogRecord(XLogReaderState *state,
|
|
|
425
424
|
((decoder)->record->blocks[block_id].has_image)
|
|
426
425
|
#define XLogRecBlockImageApply(decoder, block_id) \
|
|
427
426
|
((decoder)->record->blocks[block_id].apply_image)
|
|
427
|
+
#define XLogRecHasBlockData(decoder, block_id) \
|
|
428
|
+
((decoder)->record->blocks[block_id].has_data)
|
|
428
429
|
|
|
429
430
|
#ifndef FRONTEND
|
|
430
431
|
extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record);
|
|
@@ -433,10 +434,10 @@ extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record);
|
|
|
433
434
|
extern bool RestoreBlockImage(XLogReaderState *record, uint8 block_id, char *page);
|
|
434
435
|
extern char *XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len);
|
|
435
436
|
extern void XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id,
|
|
436
|
-
|
|
437
|
+
RelFileLocator *rlocator, ForkNumber *forknum,
|
|
437
438
|
BlockNumber *blknum);
|
|
438
439
|
extern bool XLogRecGetBlockTagExtended(XLogReaderState *record, uint8 block_id,
|
|
439
|
-
|
|
440
|
+
RelFileLocator *rlocator, ForkNumber *forknum,
|
|
440
441
|
BlockNumber *blknum,
|
|
441
442
|
Buffer *prefetch_buffer);
|
|
442
443
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Definitions for the WAL record format.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/access/xlogrecord.h
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
#include "access/xlogdefs.h"
|
|
16
16
|
#include "port/pg_crc32c.h"
|
|
17
17
|
#include "storage/block.h"
|
|
18
|
-
#include "storage/
|
|
18
|
+
#include "storage/relfilelocator.h"
|
|
19
19
|
|
|
20
20
|
/*
|
|
21
21
|
* The overall layout of an XLOG record is:
|
|
@@ -62,6 +62,17 @@ typedef struct XLogRecord
|
|
|
62
62
|
#define XLR_INFO_MASK 0x0F
|
|
63
63
|
#define XLR_RMGR_INFO_MASK 0xF0
|
|
64
64
|
|
|
65
|
+
/*
|
|
66
|
+
* XLogReader needs to allocate all the data of a WAL record in a single
|
|
67
|
+
* chunk. This means that a single XLogRecord cannot exceed MaxAllocSize
|
|
68
|
+
* in length if we ignore any allocation overhead of the XLogReader.
|
|
69
|
+
*
|
|
70
|
+
* To accommodate some overhead, this value allows for 4M of allocation
|
|
71
|
+
* overhead, that should be plenty enough for what
|
|
72
|
+
* DecodeXLogRecordRequiredSpace() expects as extra.
|
|
73
|
+
*/
|
|
74
|
+
#define XLogRecordMaxSize (1020 * 1024 * 1024)
|
|
75
|
+
|
|
65
76
|
/*
|
|
66
77
|
* If a WAL record modifies any relation files, in ways not covered by the
|
|
67
78
|
* usual block references, this flag is set. This is not used for anything
|
|
@@ -97,7 +108,7 @@ typedef struct XLogRecordBlockHeader
|
|
|
97
108
|
* image) */
|
|
98
109
|
|
|
99
110
|
/* If BKPBLOCK_HAS_IMAGE, an XLogRecordBlockImageHeader struct follows */
|
|
100
|
-
/* If BKPBLOCK_SAME_REL is not set, a
|
|
111
|
+
/* If BKPBLOCK_SAME_REL is not set, a RelFileLocator follows */
|
|
101
112
|
/* BlockNumber follows */
|
|
102
113
|
} XLogRecordBlockHeader;
|
|
103
114
|
|
|
@@ -175,7 +186,7 @@ typedef struct XLogRecordBlockCompressHeader
|
|
|
175
186
|
(SizeOfXLogRecordBlockHeader + \
|
|
176
187
|
SizeOfXLogRecordBlockImageHeader + \
|
|
177
188
|
SizeOfXLogRecordBlockCompressHeader + \
|
|
178
|
-
sizeof(
|
|
189
|
+
sizeof(RelFileLocator) + \
|
|
179
190
|
sizeof(BlockNumber))
|
|
180
191
|
|
|
181
192
|
/*
|
|
@@ -187,7 +198,8 @@ typedef struct XLogRecordBlockCompressHeader
|
|
|
187
198
|
#define BKPBLOCK_HAS_IMAGE 0x10 /* block data is an XLogRecordBlockImage */
|
|
188
199
|
#define BKPBLOCK_HAS_DATA 0x20
|
|
189
200
|
#define BKPBLOCK_WILL_INIT 0x40 /* redo will re-init the page */
|
|
190
|
-
#define BKPBLOCK_SAME_REL 0x80 /*
|
|
201
|
+
#define BKPBLOCK_SAME_REL 0x80 /* RelFileLocator omitted, same as
|
|
202
|
+
* previous */
|
|
191
203
|
|
|
192
204
|
/*
|
|
193
205
|
* XLogRecordDataHeaderShort/Long are used for the "main data" portion of
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Functions for WAL recovery and standby mode
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/access/xlogrecovery.h
|
|
@@ -65,7 +65,6 @@ extern PGDLLIMPORT TimestampTz recoveryTargetTime;
|
|
|
65
65
|
extern PGDLLIMPORT const char *recoveryTargetName;
|
|
66
66
|
extern PGDLLIMPORT XLogRecPtr recoveryTargetLSN;
|
|
67
67
|
extern PGDLLIMPORT RecoveryTargetType recoveryTarget;
|
|
68
|
-
extern PGDLLIMPORT char *PromoteTriggerFile;
|
|
69
68
|
extern PGDLLIMPORT bool wal_receiver_create_temp_slot;
|
|
70
69
|
extern PGDLLIMPORT RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal;
|
|
71
70
|
extern PGDLLIMPORT TimeLineID recoveryTargetTLIRequested;
|
|
@@ -80,7 +79,9 @@ extern PGDLLIMPORT bool StandbyMode;
|
|
|
80
79
|
extern Size XLogRecoveryShmemSize(void);
|
|
81
80
|
extern void XLogRecoveryShmemInit(void);
|
|
82
81
|
|
|
83
|
-
extern void InitWalRecovery(ControlFileData *ControlFile,
|
|
82
|
+
extern void InitWalRecovery(ControlFileData *ControlFile,
|
|
83
|
+
bool *wasShutdown_ptr, bool *haveBackupLabel_ptr,
|
|
84
|
+
bool *haveTblspcMap_ptr);
|
|
84
85
|
extern void PerformWalRecovery(void);
|
|
85
86
|
|
|
86
87
|
/*
|