pg_query 2.1.0 → 4.2.1
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 +104 -0
- data/README.md +59 -31
- data/Rakefile +2 -2
- data/ext/pg_query/extconf.rb +8 -2
- data/ext/pg_query/include/access/amapi.h +45 -1
- data/ext/pg_query/include/access/attmap.h +1 -1
- data/ext/pg_query/include/access/attnum.h +2 -2
- data/ext/pg_query/include/access/clog.h +4 -2
- data/ext/pg_query/include/access/commit_ts.h +6 -9
- data/ext/pg_query/include/access/detoast.h +1 -11
- data/ext/pg_query/include/access/genam.h +15 -12
- data/ext/pg_query/include/access/gin.h +2 -2
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +75 -87
- data/ext/pg_query/include/access/itup.h +7 -1
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +17 -2
- data/ext/pg_query/include/access/rmgr.h +30 -3
- data/ext/pg_query/include/access/rmgrlist.h +23 -23
- data/ext/pg_query/include/access/sdir.h +1 -1
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +4 -2
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +2 -1
- data/ext/pg_query/include/access/tableam.h +272 -20
- data/ext/pg_query/include/access/toast_compression.h +73 -0
- data/ext/pg_query/include/access/transam.h +123 -13
- data/ext/pg_query/include/access/tupconvert.h +1 -1
- data/ext/pg_query/include/access/tupdesc.h +1 -1
- data/ext/pg_query/include/access/tupmacs.h +3 -3
- data/ext/pg_query/include/access/twophase.h +5 -1
- data/ext/pg_query/include/access/xact.h +79 -19
- data/ext/pg_query/include/access/xlog.h +60 -155
- data/ext/pg_query/include/access/xlog_internal.h +50 -14
- data/ext/pg_query/include/access/xlogdefs.h +8 -16
- data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/access/xlogreader.h +148 -32
- data/ext/pg_query/include/access/xlogrecord.h +18 -9
- data/ext/pg_query/include/access/xlogrecovery.h +157 -0
- data/ext/pg_query/include/c.h +101 -44
- data/ext/pg_query/include/catalog/catalog.h +3 -1
- data/ext/pg_query/include/catalog/catversion.h +2 -2
- data/ext/pg_query/include/catalog/dependency.h +10 -16
- data/ext/pg_query/include/catalog/genbki.h +83 -5
- data/ext/pg_query/include/catalog/index.h +18 -3
- data/ext/pg_query/include/catalog/indexing.h +12 -324
- data/ext/pg_query/include/catalog/namespace.h +4 -2
- data/ext/pg_query/include/catalog/objectaccess.h +70 -2
- data/ext/pg_query/include/catalog/objectaddress.h +11 -6
- data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_am.h +4 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
- data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
- data/ext/pg_query/include/catalog/pg_authid.h +7 -2
- data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
- data/ext/pg_query/include/catalog/pg_class.h +45 -15
- data/ext/pg_query/include/catalog/pg_class_d.h +31 -2
- data/ext/pg_query/include/catalog/pg_collation.h +33 -8
- data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
- data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/catalog/pg_control.h +5 -5
- data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
- data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_depend.h +11 -7
- data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_index.h +17 -7
- data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
- data/ext/pg_query/include/catalog/pg_language.h +10 -5
- data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
- data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
- data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_operator.h +21 -16
- data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_proc.h +20 -11
- data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
- data/ext/pg_query/include/catalog/pg_publication.h +50 -4
- data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
- data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/catalog/pg_transform.h +8 -5
- data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
- data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_type.h +56 -24
- data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
- data/ext/pg_query/include/catalog/storage.h +5 -3
- data/ext/pg_query/include/commands/async.h +4 -5
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +11 -24
- data/ext/pg_query/include/commands/event_trigger.h +2 -2
- data/ext/pg_query/include/commands/explain.h +1 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +3 -1
- data/ext/pg_query/include/commands/trigger.h +27 -17
- data/ext/pg_query/include/commands/user.h +2 -2
- data/ext/pg_query/include/commands/vacuum.h +88 -41
- data/ext/pg_query/include/commands/variable.h +1 -1
- data/ext/pg_query/include/common/file_perm.h +4 -4
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/ip.h +1 -7
- data/ext/pg_query/include/common/keywords.h +2 -6
- data/ext/pg_query/include/common/kwlookup.h +1 -1
- data/ext/pg_query/include/common/pg_prng.h +60 -0
- data/ext/pg_query/include/common/relpath.h +2 -2
- data/ext/pg_query/include/common/string.h +24 -1
- data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/datatype/timestamp.h +40 -1
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +65 -22
- data/ext/pg_query/include/executor/functions.h +17 -3
- data/ext/pg_query/include/executor/instrument.h +33 -16
- data/ext/pg_query/include/executor/spi.h +41 -3
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +1 -1
- data/ext/pg_query/include/fmgr.h +13 -7
- data/ext/pg_query/include/funcapi.h +16 -4
- data/ext/pg_query/include/getaddrinfo.h +1 -1
- data/ext/pg_query/include/jit/jit.h +11 -11
- data/ext/pg_query/include/kwlist_d.h +517 -494
- data/ext/pg_query/include/lib/dshash.h +112 -0
- data/ext/pg_query/include/lib/ilist.h +20 -1
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +150 -25
- data/ext/pg_query/include/lib/sort_template.h +432 -0
- data/ext/pg_query/include/lib/stringinfo.h +1 -1
- data/ext/pg_query/include/libpq/auth.h +6 -4
- data/ext/pg_query/include/libpq/crypt.h +5 -4
- data/ext/pg_query/include/libpq/hba.h +43 -4
- data/ext/pg_query/include/libpq/libpq-be.h +23 -6
- data/ext/pg_query/include/libpq/libpq.h +31 -20
- data/ext/pg_query/include/libpq/pqcomm.h +17 -31
- data/ext/pg_query/include/libpq/pqformat.h +1 -1
- data/ext/pg_query/include/libpq/pqsignal.h +4 -4
- data/ext/pg_query/include/mb/pg_wchar.h +106 -23
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +71 -52
- data/ext/pg_query/include/nodes/bitmapset.h +1 -1
- data/ext/pg_query/include/nodes/execnodes.h +272 -80
- data/ext/pg_query/include/nodes/extensible.h +4 -2
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +7 -6
- data/ext/pg_query/include/nodes/memnodes.h +5 -3
- data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/nodes/nodes.h +30 -11
- data/ext/pg_query/include/nodes/params.h +1 -1
- data/ext/pg_query/include/nodes/parsenodes.h +327 -94
- data/ext/pg_query/include/nodes/pathnodes.h +245 -67
- data/ext/pg_query/include/nodes/pg_list.h +75 -68
- data/ext/pg_query/include/nodes/plannodes.h +128 -30
- data/ext/pg_query/include/nodes/primnodes.h +99 -47
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +58 -39
- data/ext/pg_query/include/optimizer/cost.h +9 -2
- data/ext/pg_query/include/optimizer/geqo.h +9 -7
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +25 -22
- data/ext/pg_query/include/optimizer/paths.h +6 -6
- data/ext/pg_query/include/optimizer/planmain.h +15 -14
- data/ext/pg_query/include/parser/analyze.h +19 -5
- data/ext/pg_query/include/parser/gram.h +947 -913
- data/ext/pg_query/include/parser/gramparse.h +1 -1
- data/ext/pg_query/include/parser/kwlist.h +463 -453
- data/ext/pg_query/include/parser/parse_agg.h +2 -7
- data/ext/pg_query/include/parser/parse_coerce.h +4 -1
- data/ext/pg_query/include/parser/parse_expr.h +2 -3
- data/ext/pg_query/include/parser/parse_func.h +2 -1
- data/ext/pg_query/include/parser/parse_node.h +21 -9
- data/ext/pg_query/include/parser/parse_oper.h +1 -3
- data/ext/pg_query/include/parser/parse_relation.h +5 -4
- data/ext/pg_query/include/parser/parse_type.h +1 -1
- data/ext/pg_query/include/parser/parser.h +31 -4
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +1 -1
- data/ext/pg_query/include/parser/scansup.h +2 -5
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +94 -46
- data/ext/pg_query/include/pg_config_manual.h +74 -21
- data/ext/pg_query/include/pg_getopt.h +6 -6
- data/ext/pg_query/include/pg_query.h +5 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +1220 -422
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +152 -26
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +174 -30
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +449 -1237
- data/ext/pg_query/include/pgtime.h +14 -4
- data/ext/pg_query/include/pl_gram.h +126 -128
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/include/plerrcodes.h +9 -1
- data/ext/pg_query/include/plpgsql.h +52 -54
- data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
- data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
- data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
- data/ext/pg_query/include/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +1 -1
- data/ext/pg_query/include/port/pg_bitutils.h +88 -12
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port.h +72 -43
- data/ext/pg_query/include/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres.h +60 -16
- data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
- data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
- data/ext/pg_query/include/postmaster/bgworker.h +2 -1
- data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
- data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +42 -8
- data/ext/pg_query/include/postmaster/postmaster.h +18 -17
- data/ext/pg_query/include/postmaster/startup.h +39 -0
- data/ext/pg_query/include/postmaster/syslogger.h +15 -10
- data/ext/pg_query/include/postmaster/walwriter.h +3 -3
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1422 -916
- data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
- data/ext/pg_query/include/regex/regex.h +18 -16
- data/ext/pg_query/include/replication/logicallauncher.h +3 -5
- data/ext/pg_query/include/replication/logicalproto.h +161 -17
- data/ext/pg_query/include/replication/logicalworker.h +1 -1
- data/ext/pg_query/include/replication/origin.h +7 -7
- data/ext/pg_query/include/replication/reorderbuffer.h +262 -44
- data/ext/pg_query/include/replication/slot.h +23 -12
- data/ext/pg_query/include/replication/syncrep.h +5 -5
- data/ext/pg_query/include/replication/walreceiver.h +145 -13
- data/ext/pg_query/include/replication/walsender.h +8 -8
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
- data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/storage/backendid.h +3 -3
- data/ext/pg_query/include/storage/block.h +4 -10
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +19 -14
- data/ext/pg_query/include/storage/bufpage.h +6 -8
- data/ext/pg_query/include/storage/condition_variable.h +13 -2
- data/ext/pg_query/include/storage/dsm.h +4 -1
- data/ext/pg_query/include/storage/dsm_impl.h +3 -2
- data/ext/pg_query/include/storage/fd.h +33 -3
- data/ext/pg_query/include/storage/fileset.h +40 -0
- data/ext/pg_query/include/storage/ipc.h +4 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +3 -1
- data/ext/pg_query/include/storage/large_object.h +2 -2
- data/ext/pg_query/include/storage/latch.h +9 -13
- data/ext/pg_query/include/storage/lmgr.h +2 -1
- data/ext/pg_query/include/storage/lock.h +17 -13
- data/ext/pg_query/include/storage/lockdefs.h +2 -2
- data/ext/pg_query/include/storage/lwlock.h +6 -32
- data/ext/pg_query/include/storage/lwlocknames.h +0 -1
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +9 -7
- data/ext/pg_query/include/storage/pmsignal.h +15 -4
- data/ext/pg_query/include/storage/predicate.h +4 -4
- data/ext/pg_query/include/storage/proc.h +183 -55
- data/ext/pg_query/include/storage/procarray.h +98 -0
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -7
- data/ext/pg_query/include/storage/relfilenode.h +1 -1
- data/ext/pg_query/include/storage/s_lock.h +67 -4
- data/ext/pg_query/include/storage/sharedfileset.h +3 -11
- data/ext/pg_query/include/storage/shm_mq.h +5 -4
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -1
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +1 -1
- data/ext/pg_query/include/storage/smgr.h +10 -8
- data/ext/pg_query/include/storage/spin.h +2 -2
- data/ext/pg_query/include/storage/standby.h +13 -6
- data/ext/pg_query/include/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/storage/sync.h +7 -3
- data/ext/pg_query/include/tcop/cmdtag.h +1 -1
- data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -1
- data/ext/pg_query/include/tcop/fastpath.h +1 -2
- data/ext/pg_query/include/tcop/pquery.h +7 -1
- data/ext/pg_query/include/tcop/tcopprot.h +19 -11
- data/ext/pg_query/include/tcop/utility.h +7 -3
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
- data/ext/pg_query/include/utils/acl.h +24 -3
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +7 -2
- data/ext/pg_query/include/utils/backend_progress.h +44 -0
- data/ext/pg_query/include/utils/backend_status.h +321 -0
- data/ext/pg_query/include/utils/builtins.h +11 -11
- data/ext/pg_query/include/utils/bytea.h +3 -2
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +1 -1
- data/ext/pg_query/include/utils/datetime.h +8 -7
- data/ext/pg_query/include/utils/datum.h +9 -1
- data/ext/pg_query/include/utils/dsa.h +1 -1
- data/ext/pg_query/include/utils/dynahash.h +4 -3
- data/ext/pg_query/include/utils/elog.h +52 -21
- data/ext/pg_query/include/utils/errcodes.h +2 -0
- data/ext/pg_query/include/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/utils/float.h +7 -7
- data/ext/pg_query/include/utils/fmgroids.h +1300 -696
- data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
- data/ext/pg_query/include/utils/fmgrtab.h +6 -5
- data/ext/pg_query/include/utils/guc.h +69 -43
- data/ext/pg_query/include/utils/guc_tables.h +23 -19
- data/ext/pg_query/include/utils/hsearch.h +15 -11
- data/ext/pg_query/include/utils/inval.h +5 -1
- data/ext/pg_query/include/utils/lsyscache.h +11 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +8 -3
- data/ext/pg_query/include/utils/numeric.h +19 -5
- data/ext/pg_query/include/utils/palloc.h +25 -3
- data/ext/pg_query/include/utils/partcache.h +1 -1
- data/ext/pg_query/include/utils/pg_locale.h +17 -9
- data/ext/pg_query/include/utils/pg_lsn.h +1 -1
- data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +6 -5
- data/ext/pg_query/include/utils/portal.h +12 -1
- data/ext/pg_query/include/utils/ps_status.h +1 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/queryjumble.h +88 -0
- data/ext/pg_query/include/utils/regproc.h +14 -3
- data/ext/pg_query/include/utils/rel.h +71 -20
- data/ext/pg_query/include/utils/relcache.h +9 -7
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/rls.h +2 -2
- data/ext/pg_query/include/utils/ruleutils.h +4 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +35 -14
- data/ext/pg_query/include/utils/snapshot.h +14 -1
- data/ext/pg_query/include/utils/sortsupport.h +117 -2
- data/ext/pg_query/include/utils/syscache.h +6 -1
- data/ext/pg_query/include/utils/timeout.h +11 -4
- data/ext/pg_query/include/utils/timestamp.h +6 -5
- data/ext/pg_query/include/utils/tuplesort.h +25 -11
- data/ext/pg_query/include/utils/tuplestore.h +2 -2
- data/ext/pg_query/include/utils/typcache.h +24 -17
- data/ext/pg_query/include/utils/tzparser.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +5 -3
- data/ext/pg_query/include/utils/wait_event.h +289 -0
- data/ext/pg_query/include/utils/xml.h +4 -4
- data/ext/pg_query/pg_query.pb-c.c +4318 -2307
- data/ext/pg_query/pg_query_deparse.c +1114 -381
- data/ext/pg_query/pg_query_fingerprint.c +46 -10
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +55 -12
- data/ext/pg_query/pg_query_normalize.c +163 -20
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +65 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
- data/ext/pg_query/pg_query_parse.c +1 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +79 -16
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
- data/ext/pg_query/pg_query_ruby.c +1 -1
- data/ext/pg_query/pg_query_scan.c +2 -1
- data/ext/pg_query/pg_query_split.c +3 -2
- data/ext/pg_query/src_backend_catalog_namespace.c +21 -9
- 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 +3 -1
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +424 -109
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +291 -46
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +86 -11
- data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +33890 -31262
- data/ext/pg_query/src_backend_parser_parser.c +26 -7
- data/ext/pg_query/src_backend_parser_scan.c +644 -441
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +73 -24
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
- 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_ruleutils.c +109 -15
- data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
- data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
- data/ext/pg_query/src_backend_utils_misc_guc.c +207 -45
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
- data/ext/pg_query/src_common_encnames.c +1 -1
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +517 -494
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_pg_prng.c +152 -0
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_string.c +7 -1
- data/ext/pg_query/src_common_stringinfo.c +1 -1
- data/ext/pg_query/src_common_wchar.c +712 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1235 -1261
- 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 +54 -56
- data/ext/pg_query/src_port_pg_bitutils.c +41 -52
- data/ext/pg_query/src_port_pgsleep.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +46 -20
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +6 -4
- data/lib/pg_query/fingerprint.rb +18 -3
- data/lib/pg_query/node.rb +2 -2
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +87 -51
- data/lib/pg_query/pg_query_pb.rb +1109 -942
- data/lib/pg_query/treewalker.rb +6 -0
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- metadata +29 -18
- 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/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/src_backend_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_random.c +0 -31
|
@@ -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-2022, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* src/include/replication/walreceiver.h
|
|
9
9
|
*
|
|
@@ -19,14 +19,15 @@
|
|
|
19
19
|
#include "port/atomics.h"
|
|
20
20
|
#include "replication/logicalproto.h"
|
|
21
21
|
#include "replication/walsender.h"
|
|
22
|
+
#include "storage/condition_variable.h"
|
|
22
23
|
#include "storage/latch.h"
|
|
23
24
|
#include "storage/spin.h"
|
|
24
25
|
#include "utils/tuplestore.h"
|
|
25
26
|
|
|
26
27
|
/* user-settable parameters */
|
|
27
|
-
extern int
|
|
28
|
-
extern int
|
|
29
|
-
extern bool hot_standby_feedback;
|
|
28
|
+
extern PGDLLIMPORT int wal_receiver_status_interval;
|
|
29
|
+
extern PGDLLIMPORT int wal_receiver_timeout;
|
|
30
|
+
extern PGDLLIMPORT bool hot_standby_feedback;
|
|
30
31
|
|
|
31
32
|
/*
|
|
32
33
|
* MAXCONNINFO: maximum size of a connection string.
|
|
@@ -62,6 +63,7 @@ typedef struct
|
|
|
62
63
|
*/
|
|
63
64
|
pid_t pid;
|
|
64
65
|
WalRcvState walRcvState;
|
|
66
|
+
ConditionVariable walRcvStoppedCV;
|
|
65
67
|
pg_time_t startTime;
|
|
66
68
|
|
|
67
69
|
/*
|
|
@@ -158,7 +160,7 @@ typedef struct
|
|
|
158
160
|
sig_atomic_t force_reply; /* used as a bool */
|
|
159
161
|
} WalRcvData;
|
|
160
162
|
|
|
161
|
-
extern WalRcvData *WalRcv;
|
|
163
|
+
extern PGDLLIMPORT WalRcvData *WalRcv;
|
|
162
164
|
|
|
163
165
|
typedef struct
|
|
164
166
|
{
|
|
@@ -177,6 +179,10 @@ typedef struct
|
|
|
177
179
|
{
|
|
178
180
|
uint32 proto_version; /* Logical protocol version */
|
|
179
181
|
List *publication_names; /* String list of publications */
|
|
182
|
+
bool binary; /* Ask publisher to use binary */
|
|
183
|
+
bool streaming; /* Streaming of large transactions */
|
|
184
|
+
bool twophase; /* Streaming of two-phase transactions at
|
|
185
|
+
* prepare time */
|
|
180
186
|
} logical;
|
|
181
187
|
} proto;
|
|
182
188
|
} WalRcvStreamOptions;
|
|
@@ -208,44 +214,170 @@ typedef enum
|
|
|
208
214
|
typedef struct WalRcvExecResult
|
|
209
215
|
{
|
|
210
216
|
WalRcvExecStatus status;
|
|
217
|
+
int sqlstate;
|
|
211
218
|
char *err;
|
|
212
219
|
Tuplestorestate *tuplestore;
|
|
213
220
|
TupleDesc tupledesc;
|
|
214
221
|
} WalRcvExecResult;
|
|
215
222
|
|
|
216
|
-
/* libpqwalreceiver hooks */
|
|
217
|
-
|
|
223
|
+
/* WAL receiver - libpqwalreceiver hooks */
|
|
224
|
+
|
|
225
|
+
/*
|
|
226
|
+
* walrcv_connect_fn
|
|
227
|
+
*
|
|
228
|
+
* Establish connection to a cluster. 'logical' is true if the
|
|
229
|
+
* connection is logical, and false if the connection is physical.
|
|
230
|
+
* 'appname' is a name associated to the connection, to use for example
|
|
231
|
+
* with fallback_application_name or application_name. Returns the
|
|
232
|
+
* details about the connection established, as defined by
|
|
233
|
+
* WalReceiverConn for each WAL receiver module. On error, NULL is
|
|
234
|
+
* returned with 'err' including the error generated.
|
|
235
|
+
*/
|
|
236
|
+
typedef WalReceiverConn *(*walrcv_connect_fn) (const char *conninfo,
|
|
237
|
+
bool logical,
|
|
218
238
|
const char *appname,
|
|
219
239
|
char **err);
|
|
240
|
+
|
|
241
|
+
/*
|
|
242
|
+
* walrcv_check_conninfo_fn
|
|
243
|
+
*
|
|
244
|
+
* Parse and validate the connection string given as of 'conninfo'.
|
|
245
|
+
*/
|
|
220
246
|
typedef void (*walrcv_check_conninfo_fn) (const char *conninfo);
|
|
247
|
+
|
|
248
|
+
/*
|
|
249
|
+
* walrcv_get_conninfo_fn
|
|
250
|
+
*
|
|
251
|
+
* Returns a user-displayable conninfo string. Note that any
|
|
252
|
+
* security-sensitive fields should be obfuscated.
|
|
253
|
+
*/
|
|
221
254
|
typedef char *(*walrcv_get_conninfo_fn) (WalReceiverConn *conn);
|
|
255
|
+
|
|
256
|
+
/*
|
|
257
|
+
* walrcv_get_senderinfo_fn
|
|
258
|
+
*
|
|
259
|
+
* Provide information of the WAL sender this WAL receiver is connected
|
|
260
|
+
* to, as of 'sender_host' for the host of the sender and 'sender_port'
|
|
261
|
+
* for its port.
|
|
262
|
+
*/
|
|
222
263
|
typedef void (*walrcv_get_senderinfo_fn) (WalReceiverConn *conn,
|
|
223
264
|
char **sender_host,
|
|
224
265
|
int *sender_port);
|
|
266
|
+
|
|
267
|
+
/*
|
|
268
|
+
* walrcv_identify_system_fn
|
|
269
|
+
*
|
|
270
|
+
* Run IDENTIFY_SYSTEM on the cluster connected to and validate the
|
|
271
|
+
* identity of the cluster. Returns the system ID of the cluster
|
|
272
|
+
* connected to. 'primary_tli' is the timeline ID of the sender.
|
|
273
|
+
*/
|
|
225
274
|
typedef char *(*walrcv_identify_system_fn) (WalReceiverConn *conn,
|
|
226
275
|
TimeLineID *primary_tli);
|
|
276
|
+
|
|
277
|
+
/*
|
|
278
|
+
* walrcv_server_version_fn
|
|
279
|
+
*
|
|
280
|
+
* Returns the version number of the cluster connected to.
|
|
281
|
+
*/
|
|
227
282
|
typedef int (*walrcv_server_version_fn) (WalReceiverConn *conn);
|
|
283
|
+
|
|
284
|
+
/*
|
|
285
|
+
* walrcv_readtimelinehistoryfile_fn
|
|
286
|
+
*
|
|
287
|
+
* Fetch from cluster the timeline history file for timeline 'tli'.
|
|
288
|
+
* Returns the name of the timeline history file as of 'filename', its
|
|
289
|
+
* contents as of 'content' and its 'size'.
|
|
290
|
+
*/
|
|
228
291
|
typedef void (*walrcv_readtimelinehistoryfile_fn) (WalReceiverConn *conn,
|
|
229
292
|
TimeLineID tli,
|
|
230
293
|
char **filename,
|
|
231
|
-
char **content,
|
|
294
|
+
char **content,
|
|
295
|
+
int *size);
|
|
296
|
+
|
|
297
|
+
/*
|
|
298
|
+
* walrcv_startstreaming_fn
|
|
299
|
+
*
|
|
300
|
+
* Start streaming WAL data from given streaming options. Returns true
|
|
301
|
+
* if the connection has switched successfully to copy-both mode and false
|
|
302
|
+
* if the server received the command and executed it successfully, but
|
|
303
|
+
* didn't switch to copy-mode.
|
|
304
|
+
*/
|
|
232
305
|
typedef bool (*walrcv_startstreaming_fn) (WalReceiverConn *conn,
|
|
233
306
|
const WalRcvStreamOptions *options);
|
|
307
|
+
|
|
308
|
+
/*
|
|
309
|
+
* walrcv_endstreaming_fn
|
|
310
|
+
*
|
|
311
|
+
* Stop streaming of WAL data. Returns the next timeline ID of the cluster
|
|
312
|
+
* connected to in 'next_tli', or 0 if there was no report.
|
|
313
|
+
*/
|
|
234
314
|
typedef void (*walrcv_endstreaming_fn) (WalReceiverConn *conn,
|
|
235
315
|
TimeLineID *next_tli);
|
|
236
|
-
|
|
316
|
+
|
|
317
|
+
/*
|
|
318
|
+
* walrcv_receive_fn
|
|
319
|
+
*
|
|
320
|
+
* Receive a message available from the WAL stream. 'buffer' is a pointer
|
|
321
|
+
* to a buffer holding the message received. Returns the length of the data,
|
|
322
|
+
* 0 if no data is available yet ('wait_fd' is a socket descriptor which can
|
|
323
|
+
* be waited on before a retry), and -1 if the cluster ended the COPY.
|
|
324
|
+
*/
|
|
325
|
+
typedef int (*walrcv_receive_fn) (WalReceiverConn *conn,
|
|
326
|
+
char **buffer,
|
|
237
327
|
pgsocket *wait_fd);
|
|
238
|
-
|
|
328
|
+
|
|
329
|
+
/*
|
|
330
|
+
* walrcv_send_fn
|
|
331
|
+
*
|
|
332
|
+
* Send a message of size 'nbytes' to the WAL stream with 'buffer' as
|
|
333
|
+
* contents.
|
|
334
|
+
*/
|
|
335
|
+
typedef void (*walrcv_send_fn) (WalReceiverConn *conn,
|
|
336
|
+
const char *buffer,
|
|
239
337
|
int nbytes);
|
|
338
|
+
|
|
339
|
+
/*
|
|
340
|
+
* walrcv_create_slot_fn
|
|
341
|
+
*
|
|
342
|
+
* Create a new replication slot named 'slotname'. 'temporary' defines
|
|
343
|
+
* if the slot is temporary. 'snapshot_action' defines the behavior wanted
|
|
344
|
+
* for an exported snapshot (see replication protocol for more details).
|
|
345
|
+
* 'lsn' includes the LSN position at which the created slot became
|
|
346
|
+
* consistent. Returns the name of the exported snapshot for a logical
|
|
347
|
+
* slot, or NULL for a physical slot.
|
|
348
|
+
*/
|
|
240
349
|
typedef char *(*walrcv_create_slot_fn) (WalReceiverConn *conn,
|
|
241
|
-
const char *slotname,
|
|
350
|
+
const char *slotname,
|
|
351
|
+
bool temporary,
|
|
352
|
+
bool two_phase,
|
|
242
353
|
CRSSnapshotAction snapshot_action,
|
|
243
354
|
XLogRecPtr *lsn);
|
|
355
|
+
|
|
356
|
+
/*
|
|
357
|
+
* walrcv_get_backend_pid_fn
|
|
358
|
+
*
|
|
359
|
+
* Returns the PID of the remote backend process.
|
|
360
|
+
*/
|
|
244
361
|
typedef pid_t (*walrcv_get_backend_pid_fn) (WalReceiverConn *conn);
|
|
362
|
+
|
|
363
|
+
/*
|
|
364
|
+
* walrcv_exec_fn
|
|
365
|
+
*
|
|
366
|
+
* Send generic queries (and commands) to the remote cluster. 'nRetTypes'
|
|
367
|
+
* is the expected number of returned attributes, and 'retTypes' an array
|
|
368
|
+
* including their type OIDs. Returns the status of the execution and
|
|
369
|
+
* tuples if any.
|
|
370
|
+
*/
|
|
245
371
|
typedef WalRcvExecResult *(*walrcv_exec_fn) (WalReceiverConn *conn,
|
|
246
372
|
const char *query,
|
|
247
373
|
const int nRetTypes,
|
|
248
374
|
const Oid *retTypes);
|
|
375
|
+
|
|
376
|
+
/*
|
|
377
|
+
* walrcv_disconnect_fn
|
|
378
|
+
*
|
|
379
|
+
* Disconnect with the cluster.
|
|
380
|
+
*/
|
|
249
381
|
typedef void (*walrcv_disconnect_fn) (WalReceiverConn *conn);
|
|
250
382
|
|
|
251
383
|
typedef struct WalReceiverFunctionsType
|
|
@@ -291,8 +423,8 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
|
|
|
291
423
|
WalReceiverFunctions->walrcv_receive(conn, buffer, wait_fd)
|
|
292
424
|
#define walrcv_send(conn, buffer, nbytes) \
|
|
293
425
|
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)
|
|
426
|
+
#define walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn) \
|
|
427
|
+
WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn)
|
|
296
428
|
#define walrcv_get_backend_pid(conn) \
|
|
297
429
|
WalReceiverFunctions->walrcv_get_backend_pid(conn)
|
|
298
430
|
#define walrcv_exec(conn, exec, nRetTypes, retTypes) \
|
|
@@ -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-2022, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* src/include/replication/walsender.h
|
|
9
9
|
*
|
|
@@ -25,15 +25,15 @@ 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
39
|
extern bool exec_replication_command(const char *query_string);
|
|
@@ -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-2022, 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-2022, 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,8 +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
26
|
|
|
29
27
|
extern void fill_extraUpdatedCols(RangeTblEntry *target_rte,
|
|
30
28
|
Relation target_relation);
|
|
@@ -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-2022, 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
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, 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-2022, 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 */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES disk block definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/storage/block.h
|
|
@@ -68,14 +68,14 @@ typedef BlockIdData *BlockId; /* block identifier */
|
|
|
68
68
|
* True iff blockNumber is valid.
|
|
69
69
|
*/
|
|
70
70
|
#define BlockNumberIsValid(blockNumber) \
|
|
71
|
-
((
|
|
71
|
+
((BlockNumber) (blockNumber) != InvalidBlockNumber)
|
|
72
72
|
|
|
73
73
|
/*
|
|
74
74
|
* BlockIdIsValid
|
|
75
75
|
* True iff the block identifier is valid.
|
|
76
76
|
*/
|
|
77
77
|
#define BlockIdIsValid(blockId) \
|
|
78
|
-
|
|
78
|
+
PointerIsValid(blockId)
|
|
79
79
|
|
|
80
80
|
/*
|
|
81
81
|
* BlockIdSet
|
|
@@ -83,7 +83,6 @@ typedef BlockIdData *BlockId; /* block identifier */
|
|
|
83
83
|
*/
|
|
84
84
|
#define BlockIdSet(blockId, blockNumber) \
|
|
85
85
|
( \
|
|
86
|
-
AssertMacro(PointerIsValid(blockId)), \
|
|
87
86
|
(blockId)->bi_hi = (blockNumber) >> 16, \
|
|
88
87
|
(blockId)->bi_lo = (blockNumber) & 0xffff \
|
|
89
88
|
)
|
|
@@ -94,8 +93,6 @@ typedef BlockIdData *BlockId; /* block identifier */
|
|
|
94
93
|
*/
|
|
95
94
|
#define BlockIdCopy(toBlockId, fromBlockId) \
|
|
96
95
|
( \
|
|
97
|
-
AssertMacro(PointerIsValid(toBlockId)), \
|
|
98
|
-
AssertMacro(PointerIsValid(fromBlockId)), \
|
|
99
96
|
(toBlockId)->bi_hi = (fromBlockId)->bi_hi, \
|
|
100
97
|
(toBlockId)->bi_lo = (fromBlockId)->bi_lo \
|
|
101
98
|
)
|
|
@@ -113,9 +110,6 @@ typedef BlockIdData *BlockId; /* block identifier */
|
|
|
113
110
|
* Retrieve the block number from a block identifier.
|
|
114
111
|
*/
|
|
115
112
|
#define BlockIdGetBlockNumber(blockId) \
|
|
116
|
-
(
|
|
117
|
-
AssertMacro(BlockIdIsValid(blockId)), \
|
|
118
|
-
(BlockNumber) (((blockId)->bi_hi << 16) | ((uint16) (blockId)->bi_lo)) \
|
|
119
|
-
)
|
|
113
|
+
((((BlockNumber) (blockId)->bi_hi) << 16) | ((BlockNumber) (blockId)->bi_lo))
|
|
120
114
|
|
|
121
115
|
#endif /* BLOCK_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Basic buffer manager data types.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/storage/buf.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES buffer manager definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/storage/bufmgr.h
|
|
@@ -65,16 +65,16 @@ struct SMgrRelationData;
|
|
|
65
65
|
extern PGDLLIMPORT int NBuffers;
|
|
66
66
|
|
|
67
67
|
/* in bufmgr.c */
|
|
68
|
-
extern bool zero_damaged_pages;
|
|
69
|
-
extern int
|
|
70
|
-
extern double bgwriter_lru_multiplier;
|
|
71
|
-
extern bool track_io_timing;
|
|
72
|
-
extern int
|
|
73
|
-
extern int
|
|
68
|
+
extern PGDLLIMPORT bool zero_damaged_pages;
|
|
69
|
+
extern PGDLLIMPORT int bgwriter_lru_maxpages;
|
|
70
|
+
extern PGDLLIMPORT double bgwriter_lru_multiplier;
|
|
71
|
+
extern PGDLLIMPORT bool track_io_timing;
|
|
72
|
+
extern PGDLLIMPORT int effective_io_concurrency;
|
|
73
|
+
extern PGDLLIMPORT int maintenance_io_concurrency;
|
|
74
74
|
|
|
75
|
-
extern int
|
|
76
|
-
extern int
|
|
77
|
-
extern int
|
|
75
|
+
extern PGDLLIMPORT int checkpoint_flush_after;
|
|
76
|
+
extern PGDLLIMPORT int backend_flush_after;
|
|
77
|
+
extern PGDLLIMPORT int bgwriter_flush_after;
|
|
78
78
|
|
|
79
79
|
/* in buf_init.c */
|
|
80
80
|
extern PGDLLIMPORT char *BufferBlocks;
|
|
@@ -176,13 +176,16 @@ extern PrefetchBufferResult PrefetchSharedBuffer(struct SMgrRelationData *smgr_r
|
|
|
176
176
|
BlockNumber blockNum);
|
|
177
177
|
extern PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum,
|
|
178
178
|
BlockNumber blockNum);
|
|
179
|
+
extern bool ReadRecentBuffer(RelFileNode rnode, ForkNumber forkNum,
|
|
180
|
+
BlockNumber blockNum, Buffer recent_buffer);
|
|
179
181
|
extern Buffer ReadBuffer(Relation reln, BlockNumber blockNum);
|
|
180
182
|
extern Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum,
|
|
181
183
|
BlockNumber blockNum, ReadBufferMode mode,
|
|
182
184
|
BufferAccessStrategy strategy);
|
|
183
185
|
extern Buffer ReadBufferWithoutRelcache(RelFileNode rnode,
|
|
184
186
|
ForkNumber forkNum, BlockNumber blockNum,
|
|
185
|
-
ReadBufferMode mode, BufferAccessStrategy strategy
|
|
187
|
+
ReadBufferMode mode, BufferAccessStrategy strategy,
|
|
188
|
+
bool permanent);
|
|
186
189
|
extern void ReleaseBuffer(Buffer buffer);
|
|
187
190
|
extern void UnlockReleaseBuffer(Buffer buffer);
|
|
188
191
|
extern void MarkBufferDirty(Buffer buffer);
|
|
@@ -192,7 +195,6 @@ extern Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation,
|
|
|
192
195
|
|
|
193
196
|
extern void InitBufferPool(void);
|
|
194
197
|
extern void InitBufferPoolAccess(void);
|
|
195
|
-
extern void InitBufferPoolBackend(void);
|
|
196
198
|
extern void AtEOXact_Buffers(bool isCommit);
|
|
197
199
|
extern void PrintBufferLeakWarning(Buffer buffer);
|
|
198
200
|
extern void CheckPointBuffers(int flags);
|
|
@@ -202,10 +204,13 @@ extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation,
|
|
|
202
204
|
extern void FlushOneBuffer(Buffer buffer);
|
|
203
205
|
extern void FlushRelationBuffers(Relation rel);
|
|
204
206
|
extern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels);
|
|
207
|
+
extern void CreateAndCopyRelationData(RelFileNode src_rnode,
|
|
208
|
+
RelFileNode dst_rnode,
|
|
209
|
+
bool permanent);
|
|
205
210
|
extern void FlushDatabaseBuffers(Oid dbid);
|
|
206
|
-
extern void DropRelFileNodeBuffers(
|
|
211
|
+
extern void DropRelFileNodeBuffers(struct SMgrRelationData *smgr_reln, ForkNumber *forkNum,
|
|
207
212
|
int nforks, BlockNumber *firstDelBlock);
|
|
208
|
-
extern void DropRelFileNodesAllBuffers(
|
|
213
|
+
extern void DropRelFileNodesAllBuffers(struct SMgrRelationData **smgr_reln, int nnodes);
|
|
209
214
|
extern void DropDatabaseBuffers(Oid dbid);
|
|
210
215
|
|
|
211
216
|
#define RelationGetNumberOfBlocks(reln) \
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Standard POSTGRES buffer page definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/storage/bufpage.h
|
|
@@ -389,12 +389,6 @@ PageValidateSpecialPointer(Page page)
|
|
|
389
389
|
#define PageClearAllVisible(page) \
|
|
390
390
|
(((PageHeader) (page))->pd_flags &= ~PD_ALL_VISIBLE)
|
|
391
391
|
|
|
392
|
-
#define PageIsPrunable(page, oldestxmin) \
|
|
393
|
-
( \
|
|
394
|
-
AssertMacro(TransactionIdIsNormal(oldestxmin)), \
|
|
395
|
-
TransactionIdIsValid(((PageHeader) (page))->pd_prune_xid) && \
|
|
396
|
-
TransactionIdPrecedes(((PageHeader) (page))->pd_prune_xid, oldestxmin) \
|
|
397
|
-
)
|
|
398
392
|
#define PageSetPrunable(page, xid) \
|
|
399
393
|
do { \
|
|
400
394
|
Assert(TransactionIdIsNormal(xid)); \
|
|
@@ -424,6 +418,10 @@ do { \
|
|
|
424
418
|
((overwrite) ? PAI_OVERWRITE : 0) | \
|
|
425
419
|
((is_heap) ? PAI_IS_HEAP : 0))
|
|
426
420
|
|
|
421
|
+
#define PageIsVerified(page, blkno) \
|
|
422
|
+
PageIsVerifiedExtended(page, blkno, \
|
|
423
|
+
PIV_LOG_WARNING | PIV_REPORT_STAT)
|
|
424
|
+
|
|
427
425
|
/*
|
|
428
426
|
* Check that BLCKSZ is a multiple of sizeof(size_t). In
|
|
429
427
|
* PageIsVerifiedExtended(), it is much faster to check if a page is
|
|
@@ -435,7 +433,6 @@ StaticAssertDecl(BLCKSZ == ((BLCKSZ / sizeof(size_t)) * sizeof(size_t)),
|
|
|
435
433
|
"BLCKSZ has to be a multiple of sizeof(size_t)");
|
|
436
434
|
|
|
437
435
|
extern void PageInit(Page page, Size pageSize, Size specialSize);
|
|
438
|
-
extern bool PageIsVerified(Page page, BlockNumber blkno);
|
|
439
436
|
extern bool PageIsVerifiedExtended(Page page, BlockNumber blkno, int flags);
|
|
440
437
|
extern OffsetNumber PageAddItemExtended(Page page, Item item, Size size,
|
|
441
438
|
OffsetNumber offsetNumber, int flags);
|
|
@@ -444,6 +441,7 @@ extern Page PageGetTempPageCopy(Page page);
|
|
|
444
441
|
extern Page PageGetTempPageCopySpecial(Page page);
|
|
445
442
|
extern void PageRestoreTempPage(Page tempPage, Page oldPage);
|
|
446
443
|
extern void PageRepairFragmentation(Page page);
|
|
444
|
+
extern void PageTruncateLinePointerArray(Page page);
|
|
447
445
|
extern Size PageGetFreeSpace(Page page);
|
|
448
446
|
extern Size PageGetFreeSpaceForMultipleTuples(Page page, int ntups);
|
|
449
447
|
extern Size PageGetExactFreeSpace(Page page);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* can be canceled prior to the fulfillment of the condition) and do not
|
|
13
13
|
* use pointers internally (so that they are safe to use within DSMs).
|
|
14
14
|
*
|
|
15
|
-
* Portions Copyright (c) 1996-
|
|
15
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
16
16
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
17
17
|
*
|
|
18
18
|
* src/include/storage/condition_variable.h
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
#define CONDITION_VARIABLE_H
|
|
24
24
|
|
|
25
25
|
#include "storage/proclist_types.h"
|
|
26
|
-
#include "storage/
|
|
26
|
+
#include "storage/spin.h"
|
|
27
27
|
|
|
28
28
|
typedef struct
|
|
29
29
|
{
|
|
@@ -31,6 +31,17 @@ typedef struct
|
|
|
31
31
|
proclist_head wakeup; /* list of wake-able processes */
|
|
32
32
|
} ConditionVariable;
|
|
33
33
|
|
|
34
|
+
/*
|
|
35
|
+
* Pad a condition variable to a power-of-two size so that an array of
|
|
36
|
+
* condition variables does not cross a cache line boundary.
|
|
37
|
+
*/
|
|
38
|
+
#define CV_MINIMAL_SIZE (sizeof(ConditionVariable) <= 16 ? 16 : 32)
|
|
39
|
+
typedef union ConditionVariableMinimallyPadded
|
|
40
|
+
{
|
|
41
|
+
ConditionVariable cv;
|
|
42
|
+
char pad[CV_MINIMAL_SIZE];
|
|
43
|
+
} ConditionVariableMinimallyPadded;
|
|
44
|
+
|
|
34
45
|
/* Initialize a condition variable. */
|
|
35
46
|
extern void ConditionVariableInit(ConditionVariable *cv);
|
|
36
47
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* dsm.h
|
|
4
4
|
* manage dynamic shared memory segments
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/storage/dsm.h
|
|
@@ -29,6 +29,9 @@ extern void dsm_postmaster_startup(struct PGShmemHeader *);
|
|
|
29
29
|
extern void dsm_backend_shutdown(void);
|
|
30
30
|
extern void dsm_detach_all(void);
|
|
31
31
|
|
|
32
|
+
extern size_t dsm_estimate_size(void);
|
|
33
|
+
extern void dsm_shmem_init(void);
|
|
34
|
+
|
|
32
35
|
#ifdef EXEC_BACKEND
|
|
33
36
|
extern void dsm_set_control_handle(dsm_handle h);
|
|
34
37
|
#endif
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* dsm_impl.h
|
|
4
4
|
* low-level dynamic shared memory primitives
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/storage/dsm_impl.h
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
#endif
|
|
40
40
|
|
|
41
41
|
/* GUC. */
|
|
42
|
-
extern int
|
|
42
|
+
extern PGDLLIMPORT int dynamic_shared_memory_type;
|
|
43
|
+
extern PGDLLIMPORT int min_dynamic_shared_memory;
|
|
43
44
|
|
|
44
45
|
/*
|
|
45
46
|
* Directory for on-disk state.
|