pg_query 2.0.3 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +165 -0
- data/README.md +67 -29
- data/Rakefile +8 -23
- data/ext/pg_query/extconf.rb +21 -3
- data/ext/pg_query/include/pg_query.h +29 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
- data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
- data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
- data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
- data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
- data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
- data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +778 -0
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
- data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
- data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
- data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
- data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
- data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
- data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
- data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +21026 -17002
- data/ext/pg_query/pg_query_deparse.c +1 -9896
- data/ext/pg_query/pg_query_fingerprint.c +162 -50
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
- data/ext/pg_query/pg_query_normalize.c +259 -64
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
- data/ext/pg_query/pg_query_ruby.c +6 -1
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +3 -2
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +99 -12
- data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
- data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +420 -0
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +545 -498
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +717 -113
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +103 -40
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +51 -29
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +7 -5
- data/lib/pg_query/fingerprint.rb +21 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +141 -50
- data/lib/pg_query/pg_query_pb.rb +175 -3031
- data/lib/pg_query/treewalker.rb +26 -2
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +443 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/rmgr.h +0 -35
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parser.h +0 -41
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pgstat.h +0 -1487
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/regproc.h +0 -28
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- data/ext/pg_query/src_port_strnlen.c +0 -39
- data/lib/pg_query/json_field_names.rb +0 -1402
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* slot.h
|
|
3
3
|
* Replication slot management.
|
|
4
4
|
*
|
|
5
|
-
* Copyright (c) 2012-
|
|
5
|
+
* Copyright (c) 2012-2023, PostgreSQL Global Development Group
|
|
6
6
|
*
|
|
7
7
|
*-------------------------------------------------------------------------
|
|
8
8
|
*/
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
#include "storage/lwlock.h"
|
|
16
16
|
#include "storage/shmem.h"
|
|
17
17
|
#include "storage/spin.h"
|
|
18
|
+
#include "replication/walreceiver.h"
|
|
18
19
|
|
|
19
20
|
/*
|
|
20
21
|
* Behaviour of replication slots, upon release or crash.
|
|
@@ -36,13 +37,20 @@ typedef enum ReplicationSlotPersistency
|
|
|
36
37
|
RS_TEMPORARY
|
|
37
38
|
} ReplicationSlotPersistency;
|
|
38
39
|
|
|
39
|
-
/*
|
|
40
|
-
|
|
40
|
+
/*
|
|
41
|
+
* Slots can be invalidated, e.g. due to max_slot_wal_keep_size. If so, the
|
|
42
|
+
* 'invalidated' field is set to a value other than _NONE.
|
|
43
|
+
*/
|
|
44
|
+
typedef enum ReplicationSlotInvalidationCause
|
|
41
45
|
{
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
RS_INVAL_NONE,
|
|
47
|
+
/* required WAL has been removed */
|
|
48
|
+
RS_INVAL_WAL_REMOVED,
|
|
49
|
+
/* required rows have been removed */
|
|
50
|
+
RS_INVAL_HORIZON,
|
|
51
|
+
/* wal_level insufficient for slot */
|
|
52
|
+
RS_INVAL_WAL_LEVEL,
|
|
53
|
+
} ReplicationSlotInvalidationCause;
|
|
46
54
|
|
|
47
55
|
/*
|
|
48
56
|
* On-Disk data of a replication slot, preserved across restarts.
|
|
@@ -79,8 +87,8 @@ typedef struct ReplicationSlotPersistentData
|
|
|
79
87
|
/* oldest LSN that might be required by this replication slot */
|
|
80
88
|
XLogRecPtr restart_lsn;
|
|
81
89
|
|
|
82
|
-
/*
|
|
83
|
-
|
|
90
|
+
/* RS_INVAL_NONE if valid, or the reason for having been invalidated */
|
|
91
|
+
ReplicationSlotInvalidationCause invalidated;
|
|
84
92
|
|
|
85
93
|
/*
|
|
86
94
|
* Oldest LSN that the client has acked receipt for. This is used as the
|
|
@@ -90,6 +98,17 @@ typedef struct ReplicationSlotPersistentData
|
|
|
90
98
|
*/
|
|
91
99
|
XLogRecPtr confirmed_flush;
|
|
92
100
|
|
|
101
|
+
/*
|
|
102
|
+
* LSN at which we enabled two_phase commit for this slot or LSN at which
|
|
103
|
+
* we found a consistent point at the time of slot creation.
|
|
104
|
+
*/
|
|
105
|
+
XLogRecPtr two_phase_at;
|
|
106
|
+
|
|
107
|
+
/*
|
|
108
|
+
* Allow decoding of prepared transactions?
|
|
109
|
+
*/
|
|
110
|
+
bool two_phase;
|
|
111
|
+
|
|
93
112
|
/* plugin name */
|
|
94
113
|
NameData plugin;
|
|
95
114
|
} ReplicationSlotPersistentData;
|
|
@@ -191,17 +210,19 @@ extern void ReplicationSlotsShmemInit(void);
|
|
|
191
210
|
|
|
192
211
|
/* management of individual slots */
|
|
193
212
|
extern void ReplicationSlotCreate(const char *name, bool db_specific,
|
|
194
|
-
ReplicationSlotPersistency
|
|
213
|
+
ReplicationSlotPersistency persistency,
|
|
214
|
+
bool two_phase);
|
|
195
215
|
extern void ReplicationSlotPersist(void);
|
|
196
216
|
extern void ReplicationSlotDrop(const char *name, bool nowait);
|
|
197
217
|
|
|
198
|
-
extern
|
|
218
|
+
extern void ReplicationSlotAcquire(const char *name, bool nowait);
|
|
199
219
|
extern void ReplicationSlotRelease(void);
|
|
200
220
|
extern void ReplicationSlotCleanup(void);
|
|
201
221
|
extern void ReplicationSlotSave(void);
|
|
202
222
|
extern void ReplicationSlotMarkDirty(void);
|
|
203
223
|
|
|
204
224
|
/* misc stuff */
|
|
225
|
+
extern void ReplicationSlotInitialize(void);
|
|
205
226
|
extern bool ReplicationSlotValidateName(const char *name, int elevel);
|
|
206
227
|
extern void ReplicationSlotReserveWal(void);
|
|
207
228
|
extern void ReplicationSlotsComputeRequiredXmin(bool already_locked);
|
|
@@ -209,11 +230,20 @@ extern void ReplicationSlotsComputeRequiredLSN(void);
|
|
|
209
230
|
extern XLogRecPtr ReplicationSlotsComputeLogicalRestartLSN(void);
|
|
210
231
|
extern bool ReplicationSlotsCountDBSlots(Oid dboid, int *nslots, int *nactive);
|
|
211
232
|
extern void ReplicationSlotsDropDBSlots(Oid dboid);
|
|
212
|
-
extern
|
|
233
|
+
extern bool InvalidateObsoleteReplicationSlots(ReplicationSlotInvalidationCause cause,
|
|
234
|
+
XLogSegNo oldestSegno,
|
|
235
|
+
Oid dboid,
|
|
236
|
+
TransactionId snapshotConflictHorizon);
|
|
237
|
+
extern ReplicationSlot *SearchNamedReplicationSlot(const char *name, bool need_lock);
|
|
238
|
+
extern int ReplicationSlotIndex(ReplicationSlot *slot);
|
|
239
|
+
extern bool ReplicationSlotName(int index, Name name);
|
|
240
|
+
extern void ReplicationSlotNameForTablesync(Oid suboid, Oid relid, char *syncslotname, Size szslot);
|
|
241
|
+
extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname, bool missing_ok);
|
|
213
242
|
|
|
214
243
|
extern void StartupReplicationSlots(void);
|
|
215
244
|
extern void CheckPointReplicationSlots(void);
|
|
216
245
|
|
|
217
246
|
extern void CheckSlotRequirements(void);
|
|
247
|
+
extern void CheckSlotPermissions(void);
|
|
218
248
|
|
|
219
249
|
#endif /* SLOT_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* syncrep.h
|
|
4
4
|
* Exports from replication/syncrep.c.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 2010-
|
|
6
|
+
* Portions Copyright (c) 2010-2023, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* IDENTIFICATION
|
|
9
9
|
* src/include/replication/syncrep.h
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
#define _SYNCREP_H
|
|
15
15
|
|
|
16
16
|
#include "access/xlogdefs.h"
|
|
17
|
-
#include "utils/guc.h"
|
|
18
17
|
|
|
19
18
|
#define SyncRepRequested() \
|
|
20
19
|
(max_wal_senders > 0 && synchronous_commit > SYNCHRONOUS_COMMIT_LOCAL_FLUSH)
|
|
@@ -72,14 +71,14 @@ typedef struct SyncRepConfigData
|
|
|
72
71
|
char member_names[FLEXIBLE_ARRAY_MEMBER];
|
|
73
72
|
} SyncRepConfigData;
|
|
74
73
|
|
|
75
|
-
extern SyncRepConfigData *SyncRepConfig;
|
|
74
|
+
extern PGDLLIMPORT SyncRepConfigData *SyncRepConfig;
|
|
76
75
|
|
|
77
76
|
/* communication variables for parsing synchronous_standby_names GUC */
|
|
78
|
-
extern SyncRepConfigData *syncrep_parse_result;
|
|
79
|
-
extern char *syncrep_parse_error_msg;
|
|
77
|
+
extern PGDLLIMPORT SyncRepConfigData *syncrep_parse_result;
|
|
78
|
+
extern PGDLLIMPORT char *syncrep_parse_error_msg;
|
|
80
79
|
|
|
81
80
|
/* user-settable parameters for synchronous replication */
|
|
82
|
-
extern char *SyncRepStandbyNames;
|
|
81
|
+
extern PGDLLIMPORT char *SyncRepStandbyNames;
|
|
83
82
|
|
|
84
83
|
/* called by user backend */
|
|
85
84
|
extern void SyncRepWaitForLSN(XLogRecPtr lsn, bool commit);
|
|
@@ -97,11 +96,6 @@ extern int SyncRepGetCandidateStandbys(SyncRepStandbyData **standbys);
|
|
|
97
96
|
/* called by checkpointer */
|
|
98
97
|
extern void SyncRepUpdateSyncStandbysDefined(void);
|
|
99
98
|
|
|
100
|
-
/* GUC infrastructure */
|
|
101
|
-
extern bool check_synchronous_standby_names(char **newval, void **extra, GucSource source);
|
|
102
|
-
extern void assign_synchronous_standby_names(const char *newval, void *extra);
|
|
103
|
-
extern void assign_synchronous_commit(int newval, void *extra);
|
|
104
|
-
|
|
105
99
|
/*
|
|
106
100
|
* Internal functions for parsing synchronous_standby_names grammar,
|
|
107
101
|
* in syncrep_gram.y and syncrep_scanner.l
|
|
@@ -109,7 +103,7 @@ extern void assign_synchronous_commit(int newval, void *extra);
|
|
|
109
103
|
extern int syncrep_yyparse(void);
|
|
110
104
|
extern int syncrep_yylex(void);
|
|
111
105
|
extern void syncrep_yyerror(const char *str);
|
|
112
|
-
extern void syncrep_scanner_init(const char *
|
|
106
|
+
extern void syncrep_scanner_init(const char *str);
|
|
113
107
|
extern void syncrep_scanner_finish(void);
|
|
114
108
|
|
|
115
109
|
#endif /* _SYNCREP_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* walreceiver.h
|
|
4
4
|
* Exports from replication/walreceiverfuncs.c.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 2010-
|
|
6
|
+
* Portions Copyright (c) 2010-2023, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* src/include/replication/walreceiver.h
|
|
9
9
|
*
|
|
@@ -12,21 +12,24 @@
|
|
|
12
12
|
#ifndef _WALRECEIVER_H
|
|
13
13
|
#define _WALRECEIVER_H
|
|
14
14
|
|
|
15
|
+
#include <netdb.h>
|
|
16
|
+
#include <sys/socket.h>
|
|
17
|
+
|
|
15
18
|
#include "access/xlog.h"
|
|
16
19
|
#include "access/xlogdefs.h"
|
|
17
|
-
#include "getaddrinfo.h" /* for NI_MAXHOST */
|
|
18
20
|
#include "pgtime.h"
|
|
19
21
|
#include "port/atomics.h"
|
|
20
22
|
#include "replication/logicalproto.h"
|
|
21
23
|
#include "replication/walsender.h"
|
|
24
|
+
#include "storage/condition_variable.h"
|
|
22
25
|
#include "storage/latch.h"
|
|
23
26
|
#include "storage/spin.h"
|
|
24
27
|
#include "utils/tuplestore.h"
|
|
25
28
|
|
|
26
29
|
/* user-settable parameters */
|
|
27
|
-
extern int
|
|
28
|
-
extern int
|
|
29
|
-
extern bool hot_standby_feedback;
|
|
30
|
+
extern PGDLLIMPORT int wal_receiver_status_interval;
|
|
31
|
+
extern PGDLLIMPORT int wal_receiver_timeout;
|
|
32
|
+
extern PGDLLIMPORT bool hot_standby_feedback;
|
|
30
33
|
|
|
31
34
|
/*
|
|
32
35
|
* MAXCONNINFO: maximum size of a connection string.
|
|
@@ -62,6 +65,7 @@ typedef struct
|
|
|
62
65
|
*/
|
|
63
66
|
pid_t pid;
|
|
64
67
|
WalRcvState walRcvState;
|
|
68
|
+
ConditionVariable walRcvStoppedCV;
|
|
65
69
|
pg_time_t startTime;
|
|
66
70
|
|
|
67
71
|
/*
|
|
@@ -158,7 +162,7 @@ typedef struct
|
|
|
158
162
|
sig_atomic_t force_reply; /* used as a bool */
|
|
159
163
|
} WalRcvData;
|
|
160
164
|
|
|
161
|
-
extern WalRcvData *WalRcv;
|
|
165
|
+
extern PGDLLIMPORT WalRcvData *WalRcv;
|
|
162
166
|
|
|
163
167
|
typedef struct
|
|
164
168
|
{
|
|
@@ -177,6 +181,12 @@ typedef struct
|
|
|
177
181
|
{
|
|
178
182
|
uint32 proto_version; /* Logical protocol version */
|
|
179
183
|
List *publication_names; /* String list of publications */
|
|
184
|
+
bool binary; /* Ask publisher to use binary */
|
|
185
|
+
char *streaming_str; /* Streaming of large transactions */
|
|
186
|
+
bool twophase; /* Streaming of two-phase transactions at
|
|
187
|
+
* prepare time */
|
|
188
|
+
char *origin; /* Only publish data originating from the
|
|
189
|
+
* specified origin */
|
|
180
190
|
} logical;
|
|
181
191
|
} proto;
|
|
182
192
|
} WalRcvStreamOptions;
|
|
@@ -208,44 +218,172 @@ typedef enum
|
|
|
208
218
|
typedef struct WalRcvExecResult
|
|
209
219
|
{
|
|
210
220
|
WalRcvExecStatus status;
|
|
221
|
+
int sqlstate;
|
|
211
222
|
char *err;
|
|
212
223
|
Tuplestorestate *tuplestore;
|
|
213
224
|
TupleDesc tupledesc;
|
|
214
225
|
} WalRcvExecResult;
|
|
215
226
|
|
|
216
|
-
/* libpqwalreceiver hooks */
|
|
217
|
-
|
|
227
|
+
/* WAL receiver - libpqwalreceiver hooks */
|
|
228
|
+
|
|
229
|
+
/*
|
|
230
|
+
* walrcv_connect_fn
|
|
231
|
+
*
|
|
232
|
+
* Establish connection to a cluster. 'logical' is true if the
|
|
233
|
+
* connection is logical, and false if the connection is physical.
|
|
234
|
+
* 'appname' is a name associated to the connection, to use for example
|
|
235
|
+
* with fallback_application_name or application_name. Returns the
|
|
236
|
+
* details about the connection established, as defined by
|
|
237
|
+
* WalReceiverConn for each WAL receiver module. On error, NULL is
|
|
238
|
+
* returned with 'err' including the error generated.
|
|
239
|
+
*/
|
|
240
|
+
typedef WalReceiverConn *(*walrcv_connect_fn) (const char *conninfo,
|
|
241
|
+
bool logical,
|
|
242
|
+
bool must_use_password,
|
|
218
243
|
const char *appname,
|
|
219
244
|
char **err);
|
|
220
|
-
|
|
245
|
+
|
|
246
|
+
/*
|
|
247
|
+
* walrcv_check_conninfo_fn
|
|
248
|
+
*
|
|
249
|
+
* Parse and validate the connection string given as of 'conninfo'.
|
|
250
|
+
*/
|
|
251
|
+
typedef void (*walrcv_check_conninfo_fn) (const char *conninfo,
|
|
252
|
+
bool must_use_password);
|
|
253
|
+
|
|
254
|
+
/*
|
|
255
|
+
* walrcv_get_conninfo_fn
|
|
256
|
+
*
|
|
257
|
+
* Returns a user-displayable conninfo string. Note that any
|
|
258
|
+
* security-sensitive fields should be obfuscated.
|
|
259
|
+
*/
|
|
221
260
|
typedef char *(*walrcv_get_conninfo_fn) (WalReceiverConn *conn);
|
|
261
|
+
|
|
262
|
+
/*
|
|
263
|
+
* walrcv_get_senderinfo_fn
|
|
264
|
+
*
|
|
265
|
+
* Provide information of the WAL sender this WAL receiver is connected
|
|
266
|
+
* to, as of 'sender_host' for the host of the sender and 'sender_port'
|
|
267
|
+
* for its port.
|
|
268
|
+
*/
|
|
222
269
|
typedef void (*walrcv_get_senderinfo_fn) (WalReceiverConn *conn,
|
|
223
270
|
char **sender_host,
|
|
224
271
|
int *sender_port);
|
|
272
|
+
|
|
273
|
+
/*
|
|
274
|
+
* walrcv_identify_system_fn
|
|
275
|
+
*
|
|
276
|
+
* Run IDENTIFY_SYSTEM on the cluster connected to and validate the
|
|
277
|
+
* identity of the cluster. Returns the system ID of the cluster
|
|
278
|
+
* connected to. 'primary_tli' is the timeline ID of the sender.
|
|
279
|
+
*/
|
|
225
280
|
typedef char *(*walrcv_identify_system_fn) (WalReceiverConn *conn,
|
|
226
281
|
TimeLineID *primary_tli);
|
|
282
|
+
|
|
283
|
+
/*
|
|
284
|
+
* walrcv_server_version_fn
|
|
285
|
+
*
|
|
286
|
+
* Returns the version number of the cluster connected to.
|
|
287
|
+
*/
|
|
227
288
|
typedef int (*walrcv_server_version_fn) (WalReceiverConn *conn);
|
|
289
|
+
|
|
290
|
+
/*
|
|
291
|
+
* walrcv_readtimelinehistoryfile_fn
|
|
292
|
+
*
|
|
293
|
+
* Fetch from cluster the timeline history file for timeline 'tli'.
|
|
294
|
+
* Returns the name of the timeline history file as of 'filename', its
|
|
295
|
+
* contents as of 'content' and its 'size'.
|
|
296
|
+
*/
|
|
228
297
|
typedef void (*walrcv_readtimelinehistoryfile_fn) (WalReceiverConn *conn,
|
|
229
298
|
TimeLineID tli,
|
|
230
299
|
char **filename,
|
|
231
|
-
char **content,
|
|
300
|
+
char **content,
|
|
301
|
+
int *size);
|
|
302
|
+
|
|
303
|
+
/*
|
|
304
|
+
* walrcv_startstreaming_fn
|
|
305
|
+
*
|
|
306
|
+
* Start streaming WAL data from given streaming options. Returns true
|
|
307
|
+
* if the connection has switched successfully to copy-both mode and false
|
|
308
|
+
* if the server received the command and executed it successfully, but
|
|
309
|
+
* didn't switch to copy-mode.
|
|
310
|
+
*/
|
|
232
311
|
typedef bool (*walrcv_startstreaming_fn) (WalReceiverConn *conn,
|
|
233
312
|
const WalRcvStreamOptions *options);
|
|
313
|
+
|
|
314
|
+
/*
|
|
315
|
+
* walrcv_endstreaming_fn
|
|
316
|
+
*
|
|
317
|
+
* Stop streaming of WAL data. Returns the next timeline ID of the cluster
|
|
318
|
+
* connected to in 'next_tli', or 0 if there was no report.
|
|
319
|
+
*/
|
|
234
320
|
typedef void (*walrcv_endstreaming_fn) (WalReceiverConn *conn,
|
|
235
321
|
TimeLineID *next_tli);
|
|
236
|
-
|
|
322
|
+
|
|
323
|
+
/*
|
|
324
|
+
* walrcv_receive_fn
|
|
325
|
+
*
|
|
326
|
+
* Receive a message available from the WAL stream. 'buffer' is a pointer
|
|
327
|
+
* to a buffer holding the message received. Returns the length of the data,
|
|
328
|
+
* 0 if no data is available yet ('wait_fd' is a socket descriptor which can
|
|
329
|
+
* be waited on before a retry), and -1 if the cluster ended the COPY.
|
|
330
|
+
*/
|
|
331
|
+
typedef int (*walrcv_receive_fn) (WalReceiverConn *conn,
|
|
332
|
+
char **buffer,
|
|
237
333
|
pgsocket *wait_fd);
|
|
238
|
-
|
|
334
|
+
|
|
335
|
+
/*
|
|
336
|
+
* walrcv_send_fn
|
|
337
|
+
*
|
|
338
|
+
* Send a message of size 'nbytes' to the WAL stream with 'buffer' as
|
|
339
|
+
* contents.
|
|
340
|
+
*/
|
|
341
|
+
typedef void (*walrcv_send_fn) (WalReceiverConn *conn,
|
|
342
|
+
const char *buffer,
|
|
239
343
|
int nbytes);
|
|
344
|
+
|
|
345
|
+
/*
|
|
346
|
+
* walrcv_create_slot_fn
|
|
347
|
+
*
|
|
348
|
+
* Create a new replication slot named 'slotname'. 'temporary' defines
|
|
349
|
+
* if the slot is temporary. 'snapshot_action' defines the behavior wanted
|
|
350
|
+
* for an exported snapshot (see replication protocol for more details).
|
|
351
|
+
* 'lsn' includes the LSN position at which the created slot became
|
|
352
|
+
* consistent. Returns the name of the exported snapshot for a logical
|
|
353
|
+
* slot, or NULL for a physical slot.
|
|
354
|
+
*/
|
|
240
355
|
typedef char *(*walrcv_create_slot_fn) (WalReceiverConn *conn,
|
|
241
|
-
const char *slotname,
|
|
356
|
+
const char *slotname,
|
|
357
|
+
bool temporary,
|
|
358
|
+
bool two_phase,
|
|
242
359
|
CRSSnapshotAction snapshot_action,
|
|
243
360
|
XLogRecPtr *lsn);
|
|
361
|
+
|
|
362
|
+
/*
|
|
363
|
+
* walrcv_get_backend_pid_fn
|
|
364
|
+
*
|
|
365
|
+
* Returns the PID of the remote backend process.
|
|
366
|
+
*/
|
|
244
367
|
typedef pid_t (*walrcv_get_backend_pid_fn) (WalReceiverConn *conn);
|
|
368
|
+
|
|
369
|
+
/*
|
|
370
|
+
* walrcv_exec_fn
|
|
371
|
+
*
|
|
372
|
+
* Send generic queries (and commands) to the remote cluster. 'nRetTypes'
|
|
373
|
+
* is the expected number of returned attributes, and 'retTypes' an array
|
|
374
|
+
* including their type OIDs. Returns the status of the execution and
|
|
375
|
+
* tuples if any.
|
|
376
|
+
*/
|
|
245
377
|
typedef WalRcvExecResult *(*walrcv_exec_fn) (WalReceiverConn *conn,
|
|
246
378
|
const char *query,
|
|
247
379
|
const int nRetTypes,
|
|
248
380
|
const Oid *retTypes);
|
|
381
|
+
|
|
382
|
+
/*
|
|
383
|
+
* walrcv_disconnect_fn
|
|
384
|
+
*
|
|
385
|
+
* Disconnect with the cluster.
|
|
386
|
+
*/
|
|
249
387
|
typedef void (*walrcv_disconnect_fn) (WalReceiverConn *conn);
|
|
250
388
|
|
|
251
389
|
typedef struct WalReceiverFunctionsType
|
|
@@ -269,10 +407,10 @@ typedef struct WalReceiverFunctionsType
|
|
|
269
407
|
|
|
270
408
|
extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
|
|
271
409
|
|
|
272
|
-
#define walrcv_connect(conninfo, logical, appname, err) \
|
|
273
|
-
WalReceiverFunctions->walrcv_connect(conninfo, logical, appname, err)
|
|
274
|
-
#define walrcv_check_conninfo(conninfo) \
|
|
275
|
-
WalReceiverFunctions->walrcv_check_conninfo(conninfo)
|
|
410
|
+
#define walrcv_connect(conninfo, logical, must_use_password, appname, err) \
|
|
411
|
+
WalReceiverFunctions->walrcv_connect(conninfo, logical, must_use_password, appname, err)
|
|
412
|
+
#define walrcv_check_conninfo(conninfo, must_use_password) \
|
|
413
|
+
WalReceiverFunctions->walrcv_check_conninfo(conninfo, must_use_password)
|
|
276
414
|
#define walrcv_get_conninfo(conn) \
|
|
277
415
|
WalReceiverFunctions->walrcv_get_conninfo(conn)
|
|
278
416
|
#define walrcv_get_senderinfo(conn, sender_host, sender_port) \
|
|
@@ -291,8 +429,8 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
|
|
|
291
429
|
WalReceiverFunctions->walrcv_receive(conn, buffer, wait_fd)
|
|
292
430
|
#define walrcv_send(conn, buffer, nbytes) \
|
|
293
431
|
WalReceiverFunctions->walrcv_send(conn, buffer, nbytes)
|
|
294
|
-
#define walrcv_create_slot(conn, slotname, temporary, snapshot_action, lsn) \
|
|
295
|
-
WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, snapshot_action, lsn)
|
|
432
|
+
#define walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn) \
|
|
433
|
+
WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn)
|
|
296
434
|
#define walrcv_get_backend_pid(conn) \
|
|
297
435
|
WalReceiverFunctions->walrcv_get_backend_pid(conn)
|
|
298
436
|
#define walrcv_exec(conn, exec, nRetTypes, retTypes) \
|
|
@@ -321,6 +459,7 @@ walrcv_clear_result(WalRcvExecResult *walres)
|
|
|
321
459
|
/* prototypes for functions in walreceiver.c */
|
|
322
460
|
extern void WalReceiverMain(void) pg_attribute_noreturn();
|
|
323
461
|
extern void ProcessWalRcvInterrupts(void);
|
|
462
|
+
extern void WalRcvForceReply(void);
|
|
324
463
|
|
|
325
464
|
/* prototypes for functions in walreceiverfuncs.c */
|
|
326
465
|
extern Size WalRcvShmemSize(void);
|
|
@@ -335,6 +474,5 @@ extern XLogRecPtr GetWalRcvFlushRecPtr(XLogRecPtr *latestChunkStart, TimeLineID
|
|
|
335
474
|
extern XLogRecPtr GetWalRcvWriteRecPtr(void);
|
|
336
475
|
extern int GetReplicationApplyDelay(void);
|
|
337
476
|
extern int GetReplicationTransferLatency(void);
|
|
338
|
-
extern void WalRcvForceReply(void);
|
|
339
477
|
|
|
340
478
|
#endif /* _WALRECEIVER_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* walsender.h
|
|
4
4
|
* Exports from replication/walsender.c.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 2010-
|
|
6
|
+
* Portions Copyright (c) 2010-2023, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* src/include/replication/walsender.h
|
|
9
9
|
*
|
|
@@ -25,24 +25,24 @@ typedef enum
|
|
|
25
25
|
} CRSSnapshotAction;
|
|
26
26
|
|
|
27
27
|
/* global state */
|
|
28
|
-
extern bool am_walsender;
|
|
29
|
-
extern bool am_cascading_walsender;
|
|
30
|
-
extern bool am_db_walsender;
|
|
31
|
-
extern bool wake_wal_senders;
|
|
28
|
+
extern PGDLLIMPORT bool am_walsender;
|
|
29
|
+
extern PGDLLIMPORT bool am_cascading_walsender;
|
|
30
|
+
extern PGDLLIMPORT bool am_db_walsender;
|
|
31
|
+
extern PGDLLIMPORT bool wake_wal_senders;
|
|
32
32
|
|
|
33
33
|
/* user-settable parameters */
|
|
34
|
-
extern int
|
|
35
|
-
extern int
|
|
36
|
-
extern bool log_replication_commands;
|
|
34
|
+
extern PGDLLIMPORT int max_wal_senders;
|
|
35
|
+
extern PGDLLIMPORT int wal_sender_timeout;
|
|
36
|
+
extern PGDLLIMPORT bool log_replication_commands;
|
|
37
37
|
|
|
38
38
|
extern void InitWalSender(void);
|
|
39
|
-
extern bool exec_replication_command(const char *
|
|
39
|
+
extern bool exec_replication_command(const char *cmd_string);
|
|
40
40
|
extern void WalSndErrorCleanup(void);
|
|
41
41
|
extern void WalSndResourceCleanup(bool isCommit);
|
|
42
42
|
extern void WalSndSignals(void);
|
|
43
43
|
extern Size WalSndShmemSize(void);
|
|
44
44
|
extern void WalSndShmemInit(void);
|
|
45
|
-
extern void WalSndWakeup(
|
|
45
|
+
extern void WalSndWakeup(bool physical, bool logical);
|
|
46
46
|
extern void WalSndInitStopping(void);
|
|
47
47
|
extern void WalSndWaitStopping(void);
|
|
48
48
|
extern void HandleWalSndInitStopping(void);
|
|
@@ -60,15 +60,15 @@ extern void WalSndRqstFileReload(void);
|
|
|
60
60
|
/*
|
|
61
61
|
* wakeup walsenders if there is work to be done
|
|
62
62
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
63
|
+
static inline void
|
|
64
|
+
WalSndWakeupProcessRequests(bool physical, bool logical)
|
|
65
|
+
{
|
|
66
|
+
if (wake_wal_senders)
|
|
67
|
+
{
|
|
68
|
+
wake_wal_senders = false;
|
|
69
|
+
if (max_wal_senders > 0)
|
|
70
|
+
WalSndWakeup(physical, logical);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
73
|
|
|
74
74
|
#endif /* _WALSENDER_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* prs2lock.h
|
|
4
4
|
* data structures for POSTGRES Rule System II (rewrite rules only)
|
|
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/rewrite/prs2lock.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* External interface to query rewriter.
|
|
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/rewrite/rewriteHandler.h
|
|
@@ -23,11 +23,6 @@ extern void AcquireRewriteLocks(Query *parsetree,
|
|
|
23
23
|
bool forUpdatePushedDown);
|
|
24
24
|
|
|
25
25
|
extern Node *build_column_default(Relation rel, int attrno);
|
|
26
|
-
extern void rewriteTargetListUD(Query *parsetree, RangeTblEntry *target_rte,
|
|
27
|
-
Relation target_relation);
|
|
28
|
-
|
|
29
|
-
extern void fill_extraUpdatedCols(RangeTblEntry *target_rte,
|
|
30
|
-
Relation target_relation);
|
|
31
26
|
|
|
32
27
|
extern Query *get_view_query(Relation view);
|
|
33
28
|
extern const char *view_query_is_auto_updatable(Query *viewquery,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Querytree manipulation subroutines for query rewriter.
|
|
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/rewrite/rewriteManip.h
|
|
@@ -41,8 +41,10 @@ typedef enum ReplaceVarsNoMatchOption
|
|
|
41
41
|
} ReplaceVarsNoMatchOption;
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
extern void CombineRangeTables(List **dst_rtable, List **dst_perminfos,
|
|
45
|
+
List *src_rtable, List *src_perminfos);
|
|
44
46
|
extern void OffsetVarNodes(Node *node, int offset, int sublevels_up);
|
|
45
|
-
extern void ChangeVarNodes(Node *node, int
|
|
47
|
+
extern void ChangeVarNodes(Node *node, int rt_index, int new_index,
|
|
46
48
|
int sublevels_up);
|
|
47
49
|
extern void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up,
|
|
48
50
|
int min_sublevels_up);
|
|
@@ -63,6 +65,13 @@ extern bool contain_windowfuncs(Node *node);
|
|
|
63
65
|
extern int locate_windowfunc(Node *node);
|
|
64
66
|
extern bool checkExprHasSubLink(Node *node);
|
|
65
67
|
|
|
68
|
+
extern Node *add_nulling_relids(Node *node,
|
|
69
|
+
const Bitmapset *target_relids,
|
|
70
|
+
const Bitmapset *added_relids);
|
|
71
|
+
extern Node *remove_nulling_relids(Node *node,
|
|
72
|
+
const Bitmapset *removable_relids,
|
|
73
|
+
const Bitmapset *except_relids);
|
|
74
|
+
|
|
66
75
|
extern Node *replace_rte_variables(Node *node,
|
|
67
76
|
int target_varno, int sublevels_up,
|
|
68
77
|
replace_rte_variables_callback callback,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
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/rewrite/rewriteSupport.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES backend id communication 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/backendid.h
|
|
@@ -25,13 +25,13 @@ typedef int BackendId; /* unique currently active backend identifier */
|
|
|
25
25
|
extern PGDLLIMPORT BackendId MyBackendId; /* backend id of this backend */
|
|
26
26
|
|
|
27
27
|
/* backend id of our parallel session leader, or InvalidBackendId if none */
|
|
28
|
-
extern PGDLLIMPORT BackendId
|
|
28
|
+
extern PGDLLIMPORT BackendId ParallelLeaderBackendId;
|
|
29
29
|
|
|
30
30
|
/*
|
|
31
31
|
* The BackendId to use for our session's temp relations is normally our own,
|
|
32
32
|
* but parallel workers should use their leader's ID.
|
|
33
33
|
*/
|
|
34
34
|
#define BackendIdForTempRelations() \
|
|
35
|
-
(
|
|
35
|
+
(ParallelLeaderBackendId == InvalidBackendId ? MyBackendId : ParallelLeaderBackendId)
|
|
36
36
|
|
|
37
37
|
#endif /* BACKENDID_H */
|