gitlab-pg_query 1.3.1 → 2.0.4
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 +217 -99
- data/README.md +92 -69
- data/Rakefile +85 -5
- data/ext/pg_query/extconf.rb +3 -40
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +246 -0
- data/ext/pg_query/include/access/attmap.h +52 -0
- data/ext/pg_query/include/access/attnum.h +64 -0
- data/ext/pg_query/include/access/clog.h +61 -0
- data/ext/pg_query/include/access/commit_ts.h +77 -0
- data/ext/pg_query/include/access/detoast.h +92 -0
- data/ext/pg_query/include/access/genam.h +228 -0
- data/ext/pg_query/include/access/gin.h +78 -0
- data/ext/pg_query/include/access/htup.h +89 -0
- data/ext/pg_query/include/access/htup_details.h +819 -0
- data/ext/pg_query/include/access/itup.h +161 -0
- data/ext/pg_query/include/access/parallel.h +82 -0
- data/ext/pg_query/include/access/printtup.h +35 -0
- data/ext/pg_query/include/access/relation.h +28 -0
- data/ext/pg_query/include/access/relscan.h +176 -0
- data/ext/pg_query/include/access/rmgr.h +35 -0
- data/ext/pg_query/include/access/rmgrlist.h +49 -0
- data/ext/pg_query/include/access/sdir.h +58 -0
- data/ext/pg_query/include/access/skey.h +151 -0
- data/ext/pg_query/include/access/stratnum.h +83 -0
- data/ext/pg_query/include/access/sysattr.h +29 -0
- data/ext/pg_query/include/access/table.h +27 -0
- data/ext/pg_query/include/access/tableam.h +1825 -0
- data/ext/pg_query/include/access/transam.h +265 -0
- data/ext/pg_query/include/access/tupconvert.h +51 -0
- data/ext/pg_query/include/access/tupdesc.h +154 -0
- data/ext/pg_query/include/access/tupmacs.h +247 -0
- data/ext/pg_query/include/access/twophase.h +61 -0
- data/ext/pg_query/include/access/xact.h +463 -0
- data/ext/pg_query/include/access/xlog.h +398 -0
- data/ext/pg_query/include/access/xlog_internal.h +330 -0
- data/ext/pg_query/include/access/xlogdefs.h +109 -0
- data/ext/pg_query/include/access/xloginsert.h +64 -0
- data/ext/pg_query/include/access/xlogreader.h +327 -0
- data/ext/pg_query/include/access/xlogrecord.h +227 -0
- data/ext/pg_query/include/bootstrap/bootstrap.h +62 -0
- data/ext/pg_query/include/c.h +1322 -0
- data/ext/pg_query/include/catalog/catalog.h +42 -0
- data/ext/pg_query/include/catalog/catversion.h +58 -0
- data/ext/pg_query/include/catalog/dependency.h +275 -0
- data/ext/pg_query/include/catalog/genbki.h +64 -0
- data/ext/pg_query/include/catalog/index.h +199 -0
- data/ext/pg_query/include/catalog/indexing.h +366 -0
- data/ext/pg_query/include/catalog/namespace.h +188 -0
- data/ext/pg_query/include/catalog/objectaccess.h +197 -0
- data/ext/pg_query/include/catalog/objectaddress.h +84 -0
- data/ext/pg_query/include/catalog/pg_aggregate.h +176 -0
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +77 -0
- data/ext/pg_query/include/catalog/pg_am.h +60 -0
- data/ext/pg_query/include/catalog/pg_am_d.h +45 -0
- data/ext/pg_query/include/catalog/pg_attribute.h +204 -0
- data/ext/pg_query/include/catalog/pg_attribute_d.h +59 -0
- data/ext/pg_query/include/catalog/pg_authid.h +58 -0
- data/ext/pg_query/include/catalog/pg_authid_d.h +49 -0
- data/ext/pg_query/include/catalog/pg_class.h +200 -0
- data/ext/pg_query/include/catalog/pg_class_d.h +103 -0
- data/ext/pg_query/include/catalog/pg_collation.h +73 -0
- data/ext/pg_query/include/catalog/pg_collation_d.h +45 -0
- data/ext/pg_query/include/catalog/pg_constraint.h +247 -0
- data/ext/pg_query/include/catalog/pg_constraint_d.h +67 -0
- data/ext/pg_query/include/catalog/pg_control.h +250 -0
- data/ext/pg_query/include/catalog/pg_conversion.h +72 -0
- data/ext/pg_query/include/catalog/pg_conversion_d.h +35 -0
- data/ext/pg_query/include/catalog/pg_depend.h +73 -0
- data/ext/pg_query/include/catalog/pg_depend_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_event_trigger.h +51 -0
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_index.h +80 -0
- data/ext/pg_query/include/catalog/pg_index_d.h +56 -0
- data/ext/pg_query/include/catalog/pg_language.h +67 -0
- data/ext/pg_query/include/catalog/pg_language_d.h +39 -0
- data/ext/pg_query/include/catalog/pg_namespace.h +59 -0
- data/ext/pg_query/include/catalog/pg_namespace_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_opclass.h +85 -0
- data/ext/pg_query/include/catalog/pg_opclass_d.h +49 -0
- data/ext/pg_query/include/catalog/pg_operator.h +102 -0
- data/ext/pg_query/include/catalog/pg_operator_d.h +106 -0
- data/ext/pg_query/include/catalog/pg_opfamily.h +60 -0
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +47 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +63 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +35 -0
- data/ext/pg_query/include/catalog/pg_proc.h +211 -0
- data/ext/pg_query/include/catalog/pg_proc_d.h +99 -0
- data/ext/pg_query/include/catalog/pg_publication.h +115 -0
- data/ext/pg_query/include/catalog/pg_publication_d.h +36 -0
- data/ext/pg_query/include/catalog/pg_replication_origin.h +57 -0
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +29 -0
- data/ext/pg_query/include/catalog/pg_statistic.h +275 -0
- data/ext/pg_query/include/catalog/pg_statistic_d.h +194 -0
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +74 -0
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +40 -0
- data/ext/pg_query/include/catalog/pg_transform.h +45 -0
- data/ext/pg_query/include/catalog/pg_transform_d.h +32 -0
- data/ext/pg_query/include/catalog/pg_trigger.h +137 -0
- data/ext/pg_query/include/catalog/pg_trigger_d.h +106 -0
- data/ext/pg_query/include/catalog/pg_ts_config.h +50 -0
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +32 -0
- data/ext/pg_query/include/catalog/pg_ts_dict.h +54 -0
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +33 -0
- data/ext/pg_query/include/catalog/pg_ts_parser.h +57 -0
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +35 -0
- data/ext/pg_query/include/catalog/pg_ts_template.h +48 -0
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +32 -0
- data/ext/pg_query/include/catalog/pg_type.h +372 -0
- data/ext/pg_query/include/catalog/pg_type_d.h +285 -0
- data/ext/pg_query/include/catalog/storage.h +48 -0
- data/ext/pg_query/include/commands/async.h +54 -0
- data/ext/pg_query/include/commands/dbcommands.h +35 -0
- data/ext/pg_query/include/commands/defrem.h +173 -0
- data/ext/pg_query/include/commands/event_trigger.h +88 -0
- data/ext/pg_query/include/commands/explain.h +127 -0
- data/ext/pg_query/include/commands/prepare.h +61 -0
- data/ext/pg_query/include/commands/tablespace.h +67 -0
- data/ext/pg_query/include/commands/trigger.h +277 -0
- data/ext/pg_query/include/commands/user.h +37 -0
- data/ext/pg_query/include/commands/vacuum.h +293 -0
- data/ext/pg_query/include/commands/variable.h +38 -0
- data/ext/pg_query/include/common/file_perm.h +56 -0
- data/ext/pg_query/include/common/hashfn.h +104 -0
- data/ext/pg_query/include/common/ip.h +37 -0
- data/ext/pg_query/include/common/keywords.h +33 -0
- data/ext/pg_query/include/common/kwlookup.h +44 -0
- data/ext/pg_query/include/common/relpath.h +90 -0
- data/ext/pg_query/include/common/string.h +19 -0
- data/ext/pg_query/include/common/unicode_combining_table.h +196 -0
- data/ext/pg_query/include/datatype/timestamp.h +197 -0
- data/ext/pg_query/include/executor/execdesc.h +70 -0
- data/ext/pg_query/include/executor/executor.h +614 -0
- data/ext/pg_query/include/executor/functions.h +41 -0
- data/ext/pg_query/include/executor/instrument.h +101 -0
- data/ext/pg_query/include/executor/spi.h +175 -0
- data/ext/pg_query/include/executor/tablefunc.h +67 -0
- data/ext/pg_query/include/executor/tuptable.h +487 -0
- data/ext/pg_query/include/fmgr.h +775 -0
- data/ext/pg_query/include/funcapi.h +348 -0
- data/ext/pg_query/include/getaddrinfo.h +162 -0
- data/ext/pg_query/include/jit/jit.h +105 -0
- data/ext/pg_query/include/kwlist_d.h +1072 -0
- data/ext/pg_query/include/lib/ilist.h +727 -0
- data/ext/pg_query/include/lib/pairingheap.h +102 -0
- data/ext/pg_query/include/lib/simplehash.h +1059 -0
- data/ext/pg_query/include/lib/stringinfo.h +161 -0
- data/ext/pg_query/include/libpq/auth.h +29 -0
- data/ext/pg_query/include/libpq/crypt.h +46 -0
- data/ext/pg_query/include/libpq/hba.h +140 -0
- data/ext/pg_query/include/libpq/libpq-be.h +326 -0
- data/ext/pg_query/include/libpq/libpq.h +133 -0
- data/ext/pg_query/include/libpq/pqcomm.h +208 -0
- data/ext/pg_query/include/libpq/pqformat.h +210 -0
- data/ext/pg_query/include/libpq/pqsignal.h +42 -0
- data/ext/pg_query/include/mb/pg_wchar.h +672 -0
- data/ext/pg_query/include/mb/stringinfo_mb.h +24 -0
- data/ext/pg_query/include/miscadmin.h +476 -0
- data/ext/pg_query/include/nodes/bitmapset.h +122 -0
- data/ext/pg_query/include/nodes/execnodes.h +2520 -0
- data/ext/pg_query/include/nodes/extensible.h +160 -0
- data/ext/pg_query/include/nodes/lockoptions.h +61 -0
- data/ext/pg_query/include/nodes/makefuncs.h +108 -0
- data/ext/pg_query/include/nodes/memnodes.h +108 -0
- data/ext/pg_query/include/nodes/nodeFuncs.h +162 -0
- data/ext/pg_query/include/nodes/nodes.h +842 -0
- data/ext/pg_query/include/nodes/params.h +170 -0
- data/ext/pg_query/include/nodes/parsenodes.h +3579 -0
- data/ext/pg_query/include/nodes/pathnodes.h +2556 -0
- data/ext/pg_query/include/nodes/pg_list.h +605 -0
- data/ext/pg_query/include/nodes/plannodes.h +1251 -0
- data/ext/pg_query/include/nodes/primnodes.h +1541 -0
- data/ext/pg_query/include/nodes/print.h +34 -0
- data/ext/pg_query/include/nodes/tidbitmap.h +75 -0
- data/ext/pg_query/include/nodes/value.h +61 -0
- data/ext/pg_query/include/optimizer/cost.h +206 -0
- data/ext/pg_query/include/optimizer/geqo.h +88 -0
- data/ext/pg_query/include/optimizer/geqo_gene.h +45 -0
- data/ext/pg_query/include/optimizer/optimizer.h +199 -0
- data/ext/pg_query/include/optimizer/paths.h +249 -0
- data/ext/pg_query/include/optimizer/planmain.h +119 -0
- data/ext/pg_query/include/parser/analyze.h +49 -0
- data/ext/pg_query/include/parser/gram.h +1067 -0
- data/ext/pg_query/include/parser/gramparse.h +75 -0
- data/ext/pg_query/include/parser/kwlist.h +477 -0
- data/ext/pg_query/include/parser/parse_agg.h +68 -0
- data/ext/pg_query/include/parser/parse_clause.h +54 -0
- data/ext/pg_query/include/parser/parse_coerce.h +97 -0
- data/ext/pg_query/include/parser/parse_collate.h +27 -0
- data/ext/pg_query/include/parser/parse_expr.h +26 -0
- data/ext/pg_query/include/parser/parse_func.h +73 -0
- data/ext/pg_query/include/parser/parse_node.h +327 -0
- data/ext/pg_query/include/parser/parse_oper.h +67 -0
- data/ext/pg_query/include/parser/parse_relation.h +123 -0
- data/ext/pg_query/include/parser/parse_target.h +46 -0
- data/ext/pg_query/include/parser/parse_type.h +60 -0
- data/ext/pg_query/include/parser/parser.h +41 -0
- data/ext/pg_query/include/parser/parsetree.h +61 -0
- data/ext/pg_query/include/parser/scanner.h +152 -0
- data/ext/pg_query/include/parser/scansup.h +30 -0
- data/ext/pg_query/include/partitioning/partdefs.h +26 -0
- data/ext/pg_query/include/pg_config.h +989 -0
- data/ext/pg_query/include/pg_config_ext.h +8 -0
- data/ext/pg_query/include/pg_config_manual.h +350 -0
- data/ext/pg_query/include/pg_config_os.h +8 -0
- data/ext/pg_query/include/pg_getopt.h +56 -0
- data/ext/pg_query/include/pg_query.h +121 -0
- data/ext/pg_query/include/pg_query_enum_defs.c +2454 -0
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +875 -0
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +12413 -0
- data/ext/pg_query/include/pg_query_json_helper.c +61 -0
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +686 -0
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +2437 -0
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +222 -0
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +2878 -0
- data/ext/pg_query/include/pg_trace.h +17 -0
- data/ext/pg_query/include/pgstat.h +1487 -0
- data/ext/pg_query/include/pgtime.h +84 -0
- data/ext/pg_query/include/pl_gram.h +385 -0
- data/ext/pg_query/include/pl_reserved_kwlist.h +52 -0
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +114 -0
- data/ext/pg_query/include/pl_unreserved_kwlist.h +112 -0
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +246 -0
- data/ext/pg_query/include/plerrcodes.h +990 -0
- data/ext/pg_query/include/plpgsql.h +1347 -0
- data/ext/pg_query/include/port.h +524 -0
- data/ext/pg_query/include/port/atomics.h +524 -0
- data/ext/pg_query/include/port/atomics/arch-arm.h +26 -0
- data/ext/pg_query/include/port/atomics/arch-ppc.h +254 -0
- data/ext/pg_query/include/port/atomics/arch-x86.h +252 -0
- data/ext/pg_query/include/port/atomics/fallback.h +170 -0
- data/ext/pg_query/include/port/atomics/generic-gcc.h +286 -0
- data/ext/pg_query/include/port/atomics/generic.h +401 -0
- data/ext/pg_query/include/port/pg_bitutils.h +226 -0
- data/ext/pg_query/include/port/pg_bswap.h +161 -0
- data/ext/pg_query/include/port/pg_crc32c.h +101 -0
- data/ext/pg_query/include/portability/instr_time.h +256 -0
- data/ext/pg_query/include/postgres.h +764 -0
- data/ext/pg_query/include/postgres_ext.h +74 -0
- data/ext/pg_query/include/postmaster/autovacuum.h +83 -0
- data/ext/pg_query/include/postmaster/bgworker.h +161 -0
- data/ext/pg_query/include/postmaster/bgworker_internals.h +64 -0
- data/ext/pg_query/include/postmaster/bgwriter.h +45 -0
- data/ext/pg_query/include/postmaster/fork_process.h +17 -0
- data/ext/pg_query/include/postmaster/interrupt.h +32 -0
- data/ext/pg_query/include/postmaster/pgarch.h +39 -0
- data/ext/pg_query/include/postmaster/postmaster.h +77 -0
- data/ext/pg_query/include/postmaster/syslogger.h +98 -0
- data/ext/pg_query/include/postmaster/walwriter.h +21 -0
- data/ext/pg_query/include/protobuf-c.h +1106 -0
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +1106 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +10846 -0
- data/ext/pg_query/include/protobuf/pg_query.pb.h +124718 -0
- data/ext/pg_query/include/regex/regex.h +184 -0
- data/ext/pg_query/include/replication/logicallauncher.h +31 -0
- data/ext/pg_query/include/replication/logicalproto.h +110 -0
- data/ext/pg_query/include/replication/logicalworker.h +19 -0
- data/ext/pg_query/include/replication/origin.h +73 -0
- data/ext/pg_query/include/replication/reorderbuffer.h +467 -0
- data/ext/pg_query/include/replication/slot.h +219 -0
- data/ext/pg_query/include/replication/syncrep.h +115 -0
- data/ext/pg_query/include/replication/walreceiver.h +340 -0
- data/ext/pg_query/include/replication/walsender.h +74 -0
- data/ext/pg_query/include/rewrite/prs2lock.h +46 -0
- data/ext/pg_query/include/rewrite/rewriteHandler.h +40 -0
- data/ext/pg_query/include/rewrite/rewriteManip.h +87 -0
- data/ext/pg_query/include/rewrite/rewriteSupport.h +26 -0
- data/ext/pg_query/include/storage/backendid.h +37 -0
- data/ext/pg_query/include/storage/block.h +121 -0
- data/ext/pg_query/include/storage/buf.h +46 -0
- data/ext/pg_query/include/storage/bufmgr.h +292 -0
- data/ext/pg_query/include/storage/bufpage.h +459 -0
- data/ext/pg_query/include/storage/condition_variable.h +62 -0
- data/ext/pg_query/include/storage/dsm.h +61 -0
- data/ext/pg_query/include/storage/dsm_impl.h +75 -0
- data/ext/pg_query/include/storage/fd.h +168 -0
- data/ext/pg_query/include/storage/ipc.h +81 -0
- data/ext/pg_query/include/storage/item.h +19 -0
- data/ext/pg_query/include/storage/itemid.h +184 -0
- data/ext/pg_query/include/storage/itemptr.h +206 -0
- data/ext/pg_query/include/storage/large_object.h +100 -0
- data/ext/pg_query/include/storage/latch.h +190 -0
- data/ext/pg_query/include/storage/lmgr.h +114 -0
- data/ext/pg_query/include/storage/lock.h +612 -0
- data/ext/pg_query/include/storage/lockdefs.h +59 -0
- data/ext/pg_query/include/storage/lwlock.h +232 -0
- data/ext/pg_query/include/storage/lwlocknames.h +51 -0
- data/ext/pg_query/include/storage/off.h +57 -0
- data/ext/pg_query/include/storage/pg_sema.h +61 -0
- data/ext/pg_query/include/storage/pg_shmem.h +90 -0
- data/ext/pg_query/include/storage/pmsignal.h +94 -0
- data/ext/pg_query/include/storage/predicate.h +87 -0
- data/ext/pg_query/include/storage/proc.h +333 -0
- data/ext/pg_query/include/storage/proclist_types.h +51 -0
- data/ext/pg_query/include/storage/procsignal.h +75 -0
- data/ext/pg_query/include/storage/relfilenode.h +99 -0
- data/ext/pg_query/include/storage/s_lock.h +1047 -0
- data/ext/pg_query/include/storage/sharedfileset.h +45 -0
- data/ext/pg_query/include/storage/shm_mq.h +85 -0
- data/ext/pg_query/include/storage/shm_toc.h +58 -0
- data/ext/pg_query/include/storage/shmem.h +81 -0
- data/ext/pg_query/include/storage/sinval.h +153 -0
- data/ext/pg_query/include/storage/sinvaladt.h +43 -0
- data/ext/pg_query/include/storage/smgr.h +109 -0
- data/ext/pg_query/include/storage/spin.h +77 -0
- data/ext/pg_query/include/storage/standby.h +91 -0
- data/ext/pg_query/include/storage/standbydefs.h +74 -0
- data/ext/pg_query/include/storage/sync.h +62 -0
- data/ext/pg_query/include/tcop/cmdtag.h +58 -0
- data/ext/pg_query/include/tcop/cmdtaglist.h +217 -0
- data/ext/pg_query/include/tcop/deparse_utility.h +108 -0
- data/ext/pg_query/include/tcop/dest.h +149 -0
- data/ext/pg_query/include/tcop/fastpath.h +21 -0
- data/ext/pg_query/include/tcop/pquery.h +45 -0
- data/ext/pg_query/include/tcop/tcopprot.h +89 -0
- data/ext/pg_query/include/tcop/utility.h +108 -0
- data/ext/pg_query/include/tsearch/ts_cache.h +98 -0
- data/ext/pg_query/include/utils/acl.h +312 -0
- data/ext/pg_query/include/utils/aclchk_internal.h +45 -0
- data/ext/pg_query/include/utils/array.h +458 -0
- data/ext/pg_query/include/utils/builtins.h +127 -0
- data/ext/pg_query/include/utils/bytea.h +27 -0
- data/ext/pg_query/include/utils/catcache.h +231 -0
- data/ext/pg_query/include/utils/date.h +90 -0
- data/ext/pg_query/include/utils/datetime.h +343 -0
- data/ext/pg_query/include/utils/datum.h +68 -0
- data/ext/pg_query/include/utils/dsa.h +123 -0
- data/ext/pg_query/include/utils/dynahash.h +19 -0
- data/ext/pg_query/include/utils/elog.h +439 -0
- data/ext/pg_query/include/utils/errcodes.h +352 -0
- data/ext/pg_query/include/utils/expandeddatum.h +159 -0
- data/ext/pg_query/include/utils/expandedrecord.h +231 -0
- data/ext/pg_query/include/utils/float.h +356 -0
- data/ext/pg_query/include/utils/fmgroids.h +2657 -0
- data/ext/pg_query/include/utils/fmgrprotos.h +2646 -0
- data/ext/pg_query/include/utils/fmgrtab.h +48 -0
- data/ext/pg_query/include/utils/guc.h +443 -0
- data/ext/pg_query/include/utils/guc_tables.h +272 -0
- data/ext/pg_query/include/utils/hsearch.h +149 -0
- data/ext/pg_query/include/utils/inval.h +64 -0
- data/ext/pg_query/include/utils/lsyscache.h +197 -0
- data/ext/pg_query/include/utils/memdebug.h +82 -0
- data/ext/pg_query/include/utils/memutils.h +225 -0
- data/ext/pg_query/include/utils/numeric.h +76 -0
- data/ext/pg_query/include/utils/palloc.h +136 -0
- data/ext/pg_query/include/utils/partcache.h +102 -0
- data/ext/pg_query/include/utils/pg_locale.h +119 -0
- data/ext/pg_query/include/utils/pg_lsn.h +29 -0
- data/ext/pg_query/include/utils/pidfile.h +56 -0
- data/ext/pg_query/include/utils/plancache.h +235 -0
- data/ext/pg_query/include/utils/portal.h +241 -0
- data/ext/pg_query/include/utils/probes.h +114 -0
- data/ext/pg_query/include/utils/ps_status.h +25 -0
- data/ext/pg_query/include/utils/queryenvironment.h +74 -0
- data/ext/pg_query/include/utils/regproc.h +28 -0
- data/ext/pg_query/include/utils/rel.h +644 -0
- data/ext/pg_query/include/utils/relcache.h +151 -0
- data/ext/pg_query/include/utils/reltrigger.h +81 -0
- data/ext/pg_query/include/utils/resowner.h +86 -0
- data/ext/pg_query/include/utils/rls.h +50 -0
- data/ext/pg_query/include/utils/ruleutils.h +44 -0
- data/ext/pg_query/include/utils/sharedtuplestore.h +61 -0
- data/ext/pg_query/include/utils/snapmgr.h +158 -0
- data/ext/pg_query/include/utils/snapshot.h +206 -0
- data/ext/pg_query/include/utils/sortsupport.h +276 -0
- data/ext/pg_query/include/utils/syscache.h +219 -0
- data/ext/pg_query/include/utils/timeout.h +88 -0
- data/ext/pg_query/include/utils/timestamp.h +116 -0
- data/ext/pg_query/include/utils/tuplesort.h +277 -0
- data/ext/pg_query/include/utils/tuplestore.h +91 -0
- data/ext/pg_query/include/utils/typcache.h +202 -0
- data/ext/pg_query/include/utils/tzparser.h +39 -0
- data/ext/pg_query/include/utils/varlena.h +39 -0
- data/ext/pg_query/include/utils/xml.h +84 -0
- data/ext/pg_query/include/xxhash.h +5445 -0
- data/ext/pg_query/include/xxhash/xxhash.h +5445 -0
- data/ext/pg_query/pg_query.c +104 -0
- data/ext/pg_query/pg_query.pb-c.c +37628 -0
- data/ext/pg_query/pg_query_deparse.c +9959 -0
- data/ext/pg_query/pg_query_fingerprint.c +295 -0
- data/ext/pg_query/pg_query_fingerprint.h +8 -0
- data/ext/pg_query/pg_query_internal.h +24 -0
- data/ext/pg_query/pg_query_json_plpgsql.c +738 -0
- data/ext/pg_query/pg_query_json_plpgsql.h +9 -0
- data/ext/pg_query/pg_query_normalize.c +439 -0
- data/ext/pg_query/pg_query_outfuncs.h +10 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +297 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +237 -0
- data/ext/pg_query/pg_query_parse.c +148 -0
- data/ext/pg_query/pg_query_parse_plpgsql.c +460 -0
- data/ext/pg_query/pg_query_readfuncs.h +11 -0
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +142 -0
- data/ext/pg_query/pg_query_ruby.c +108 -12
- data/ext/pg_query/pg_query_scan.c +173 -0
- data/ext/pg_query/pg_query_split.c +221 -0
- data/ext/pg_query/protobuf-c.c +3660 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +1051 -0
- data/ext/pg_query/src_backend_catalog_pg_proc.c +142 -0
- data/ext/pg_query/src_backend_commands_define.c +117 -0
- data/ext/pg_query/src_backend_libpq_pqcomm.c +651 -0
- data/ext/pg_query/src_backend_nodes_bitmapset.c +513 -0
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +6013 -0
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +4003 -0
- data/ext/pg_query/src_backend_nodes_extensible.c +99 -0
- data/ext/pg_query/src_backend_nodes_list.c +922 -0
- data/ext/pg_query/src_backend_nodes_makefuncs.c +417 -0
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +1363 -0
- data/ext/pg_query/src_backend_nodes_value.c +84 -0
- data/ext/pg_query/src_backend_parser_gram.c +47456 -0
- data/ext/pg_query/src_backend_parser_parse_expr.c +313 -0
- data/ext/pg_query/src_backend_parser_parser.c +497 -0
- data/ext/pg_query/src_backend_parser_scan.c +7091 -0
- data/ext/pg_query/src_backend_parser_scansup.c +160 -0
- data/ext/pg_query/src_backend_postmaster_postmaster.c +2230 -0
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +192 -0
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +370 -0
- data/ext/pg_query/src_backend_tcop_postgres.c +776 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +326 -0
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +98 -0
- data/ext/pg_query/src_backend_utils_adt_format_type.c +136 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +1683 -0
- data/ext/pg_query/src_backend_utils_error_assert.c +74 -0
- data/ext/pg_query/src_backend_utils_error_elog.c +1748 -0
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +570 -0
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +1086 -0
- data/ext/pg_query/src_backend_utils_init_globals.c +168 -0
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +839 -0
- data/ext/pg_query/src_backend_utils_misc_guc.c +1831 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +1560 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +1006 -0
- data/ext/pg_query/src_common_encnames.c +158 -0
- data/ext/pg_query/src_common_keywords.c +39 -0
- data/ext/pg_query/src_common_kwlist_d.h +1081 -0
- data/ext/pg_query/src_common_kwlookup.c +91 -0
- data/ext/pg_query/src_common_psprintf.c +158 -0
- data/ext/pg_query/src_common_string.c +86 -0
- data/ext/pg_query/src_common_stringinfo.c +336 -0
- data/ext/pg_query/src_common_wchar.c +1651 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1133 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +877 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +6533 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +107 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +123 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +671 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +255 -0
- data/ext/pg_query/src_port_erand48.c +127 -0
- data/ext/pg_query/src_port_pg_bitutils.c +246 -0
- data/ext/pg_query/src_port_pgsleep.c +69 -0
- data/ext/pg_query/src_port_pgstrcasecmp.c +83 -0
- data/ext/pg_query/src_port_qsort.c +240 -0
- data/ext/pg_query/src_port_random.c +31 -0
- data/ext/pg_query/src_port_snprintf.c +1449 -0
- data/ext/pg_query/src_port_strerror.c +324 -0
- data/ext/pg_query/src_port_strnlen.c +39 -0
- data/ext/pg_query/xxhash.c +43 -0
- data/lib/pg_query.rb +7 -4
- data/lib/pg_query/constants.rb +21 -0
- data/lib/pg_query/deparse.rb +15 -1581
- data/lib/pg_query/filter_columns.rb +88 -85
- data/lib/pg_query/fingerprint.rb +122 -87
- data/lib/pg_query/json_field_names.rb +1402 -0
- data/lib/pg_query/node.rb +31 -0
- data/lib/pg_query/param_refs.rb +42 -37
- data/lib/pg_query/parse.rb +220 -203
- data/lib/pg_query/parse_error.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +3211 -0
- data/lib/pg_query/scan.rb +23 -0
- data/lib/pg_query/treewalker.rb +24 -40
- data/lib/pg_query/truncate.rb +71 -42
- data/lib/pg_query/version.rb +2 -2
- metadata +472 -11
- data/ext/pg_query/pg_query_ruby.h +0 -10
- data/lib/pg_query/deep_dup.rb +0 -16
- data/lib/pg_query/deparse/alter_table.rb +0 -42
- data/lib/pg_query/deparse/interval.rb +0 -105
- data/lib/pg_query/deparse/keywords.rb +0 -159
- data/lib/pg_query/deparse/rename.rb +0 -41
- data/lib/pg_query/legacy_parsetree.rb +0 -109
- data/lib/pg_query/node_types.rb +0 -296
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* smgr.h
|
|
4
|
+
* storage manager switch public interface declarations.
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
|
+
*
|
|
10
|
+
* src/include/storage/smgr.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef SMGR_H
|
|
15
|
+
#define SMGR_H
|
|
16
|
+
|
|
17
|
+
#include "lib/ilist.h"
|
|
18
|
+
#include "storage/block.h"
|
|
19
|
+
#include "storage/relfilenode.h"
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* smgr.c maintains a table of SMgrRelation objects, which are essentially
|
|
23
|
+
* cached file handles. An SMgrRelation is created (if not already present)
|
|
24
|
+
* by smgropen(), and destroyed by smgrclose(). Note that neither of these
|
|
25
|
+
* operations imply I/O, they just create or destroy a hashtable entry.
|
|
26
|
+
* (But smgrclose() may release associated resources, such as OS-level file
|
|
27
|
+
* descriptors.)
|
|
28
|
+
*
|
|
29
|
+
* An SMgrRelation may have an "owner", which is just a pointer to it from
|
|
30
|
+
* somewhere else; smgr.c will clear this pointer if the SMgrRelation is
|
|
31
|
+
* closed. We use this to avoid dangling pointers from relcache to smgr
|
|
32
|
+
* without having to make the smgr explicitly aware of relcache. There
|
|
33
|
+
* can't be more than one "owner" pointer per SMgrRelation, but that's
|
|
34
|
+
* all we need.
|
|
35
|
+
*
|
|
36
|
+
* SMgrRelations that do not have an "owner" are considered to be transient,
|
|
37
|
+
* and are deleted at end of transaction.
|
|
38
|
+
*/
|
|
39
|
+
typedef struct SMgrRelationData
|
|
40
|
+
{
|
|
41
|
+
/* rnode is the hashtable lookup key, so it must be first! */
|
|
42
|
+
RelFileNodeBackend smgr_rnode; /* relation physical identifier */
|
|
43
|
+
|
|
44
|
+
/* pointer to owning pointer, or NULL if none */
|
|
45
|
+
struct SMgrRelationData **smgr_owner;
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* These next three fields are not actually used or manipulated by smgr,
|
|
49
|
+
* except that they are reset to InvalidBlockNumber upon a cache flush
|
|
50
|
+
* event (in particular, upon truncation of the relation). Higher levels
|
|
51
|
+
* store cached state here so that it will be reset when truncation
|
|
52
|
+
* happens. In all three cases, InvalidBlockNumber means "unknown".
|
|
53
|
+
*/
|
|
54
|
+
BlockNumber smgr_targblock; /* current insertion target block */
|
|
55
|
+
BlockNumber smgr_fsm_nblocks; /* last known size of fsm fork */
|
|
56
|
+
BlockNumber smgr_vm_nblocks; /* last known size of vm fork */
|
|
57
|
+
|
|
58
|
+
/* additional public fields may someday exist here */
|
|
59
|
+
|
|
60
|
+
/*
|
|
61
|
+
* Fields below here are intended to be private to smgr.c and its
|
|
62
|
+
* submodules. Do not touch them from elsewhere.
|
|
63
|
+
*/
|
|
64
|
+
int smgr_which; /* storage manager selector */
|
|
65
|
+
|
|
66
|
+
/*
|
|
67
|
+
* for md.c; per-fork arrays of the number of open segments
|
|
68
|
+
* (md_num_open_segs) and the segments themselves (md_seg_fds).
|
|
69
|
+
*/
|
|
70
|
+
int md_num_open_segs[MAX_FORKNUM + 1];
|
|
71
|
+
struct _MdfdVec *md_seg_fds[MAX_FORKNUM + 1];
|
|
72
|
+
|
|
73
|
+
/* if unowned, list link in list of all unowned SMgrRelations */
|
|
74
|
+
dlist_node node;
|
|
75
|
+
} SMgrRelationData;
|
|
76
|
+
|
|
77
|
+
typedef SMgrRelationData *SMgrRelation;
|
|
78
|
+
|
|
79
|
+
#define SmgrIsTemp(smgr) \
|
|
80
|
+
RelFileNodeBackendIsTemp((smgr)->smgr_rnode)
|
|
81
|
+
|
|
82
|
+
extern void smgrinit(void);
|
|
83
|
+
extern SMgrRelation smgropen(RelFileNode rnode, BackendId backend);
|
|
84
|
+
extern bool smgrexists(SMgrRelation reln, ForkNumber forknum);
|
|
85
|
+
extern void smgrsetowner(SMgrRelation *owner, SMgrRelation reln);
|
|
86
|
+
extern void smgrclearowner(SMgrRelation *owner, SMgrRelation reln);
|
|
87
|
+
extern void smgrclose(SMgrRelation reln);
|
|
88
|
+
extern void smgrcloseall(void);
|
|
89
|
+
extern void smgrclosenode(RelFileNodeBackend rnode);
|
|
90
|
+
extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
|
|
91
|
+
extern void smgrdosyncall(SMgrRelation *rels, int nrels);
|
|
92
|
+
extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo);
|
|
93
|
+
extern void smgrextend(SMgrRelation reln, ForkNumber forknum,
|
|
94
|
+
BlockNumber blocknum, char *buffer, bool skipFsync);
|
|
95
|
+
extern bool smgrprefetch(SMgrRelation reln, ForkNumber forknum,
|
|
96
|
+
BlockNumber blocknum);
|
|
97
|
+
extern void smgrread(SMgrRelation reln, ForkNumber forknum,
|
|
98
|
+
BlockNumber blocknum, char *buffer);
|
|
99
|
+
extern void smgrwrite(SMgrRelation reln, ForkNumber forknum,
|
|
100
|
+
BlockNumber blocknum, char *buffer, bool skipFsync);
|
|
101
|
+
extern void smgrwriteback(SMgrRelation reln, ForkNumber forknum,
|
|
102
|
+
BlockNumber blocknum, BlockNumber nblocks);
|
|
103
|
+
extern BlockNumber smgrnblocks(SMgrRelation reln, ForkNumber forknum);
|
|
104
|
+
extern void smgrtruncate(SMgrRelation reln, ForkNumber *forknum,
|
|
105
|
+
int nforks, BlockNumber *nblocks);
|
|
106
|
+
extern void smgrimmedsync(SMgrRelation reln, ForkNumber forknum);
|
|
107
|
+
extern void AtEOXact_SMgr(void);
|
|
108
|
+
|
|
109
|
+
#endif /* SMGR_H */
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* spin.h
|
|
4
|
+
* Hardware-independent implementation of spinlocks.
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* The hardware-independent interface to spinlocks is defined by the
|
|
8
|
+
* typedef "slock_t" and these macros:
|
|
9
|
+
*
|
|
10
|
+
* void SpinLockInit(volatile slock_t *lock)
|
|
11
|
+
* Initialize a spinlock (to the unlocked state).
|
|
12
|
+
*
|
|
13
|
+
* void SpinLockAcquire(volatile slock_t *lock)
|
|
14
|
+
* Acquire a spinlock, waiting if necessary.
|
|
15
|
+
* Time out and abort() if unable to acquire the lock in a
|
|
16
|
+
* "reasonable" amount of time --- typically ~ 1 minute.
|
|
17
|
+
*
|
|
18
|
+
* void SpinLockRelease(volatile slock_t *lock)
|
|
19
|
+
* Unlock a previously acquired lock.
|
|
20
|
+
*
|
|
21
|
+
* bool SpinLockFree(slock_t *lock)
|
|
22
|
+
* Tests if the lock is free. Returns true if free, false if locked.
|
|
23
|
+
* This does *not* change the state of the lock.
|
|
24
|
+
*
|
|
25
|
+
* Callers must beware that the macro argument may be evaluated multiple
|
|
26
|
+
* times!
|
|
27
|
+
*
|
|
28
|
+
* Load and store operations in calling code are guaranteed not to be
|
|
29
|
+
* reordered with respect to these operations, because they include a
|
|
30
|
+
* compiler barrier. (Before PostgreSQL 9.5, callers needed to use a
|
|
31
|
+
* volatile qualifier to access data protected by spinlocks.)
|
|
32
|
+
*
|
|
33
|
+
* Keep in mind the coding rule that spinlocks must not be held for more
|
|
34
|
+
* than a few instructions. In particular, we assume it is not possible
|
|
35
|
+
* for a CHECK_FOR_INTERRUPTS() to occur while holding a spinlock, and so
|
|
36
|
+
* it is not necessary to do HOLD/RESUME_INTERRUPTS() in these macros.
|
|
37
|
+
*
|
|
38
|
+
* These macros are implemented in terms of hardware-dependent macros
|
|
39
|
+
* supplied by s_lock.h. There is not currently any extra functionality
|
|
40
|
+
* added by this header, but there has been in the past and may someday
|
|
41
|
+
* be again.
|
|
42
|
+
*
|
|
43
|
+
*
|
|
44
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
45
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
46
|
+
*
|
|
47
|
+
* src/include/storage/spin.h
|
|
48
|
+
*
|
|
49
|
+
*-------------------------------------------------------------------------
|
|
50
|
+
*/
|
|
51
|
+
#ifndef SPIN_H
|
|
52
|
+
#define SPIN_H
|
|
53
|
+
|
|
54
|
+
#include "storage/s_lock.h"
|
|
55
|
+
#ifndef HAVE_SPINLOCKS
|
|
56
|
+
#include "storage/pg_sema.h"
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
#define SpinLockInit(lock) S_INIT_LOCK(lock)
|
|
61
|
+
|
|
62
|
+
#define SpinLockAcquire(lock) S_LOCK(lock)
|
|
63
|
+
|
|
64
|
+
#define SpinLockRelease(lock) S_UNLOCK(lock)
|
|
65
|
+
|
|
66
|
+
#define SpinLockFree(lock) S_LOCK_FREE(lock)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
extern int SpinlockSemas(void);
|
|
70
|
+
extern Size SpinlockSemaSize(void);
|
|
71
|
+
|
|
72
|
+
#ifndef HAVE_SPINLOCKS
|
|
73
|
+
extern void SpinlockSemaInit(void);
|
|
74
|
+
extern PGSemaphore *SpinlockSemaArray;
|
|
75
|
+
#endif
|
|
76
|
+
|
|
77
|
+
#endif /* SPIN_H */
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* standby.h
|
|
4
|
+
* Definitions for hot standby mode.
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
|
+
*
|
|
10
|
+
* src/include/storage/standby.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef STANDBY_H
|
|
15
|
+
#define STANDBY_H
|
|
16
|
+
|
|
17
|
+
#include "storage/lock.h"
|
|
18
|
+
#include "storage/procsignal.h"
|
|
19
|
+
#include "storage/relfilenode.h"
|
|
20
|
+
#include "storage/standbydefs.h"
|
|
21
|
+
|
|
22
|
+
/* User-settable GUC parameters */
|
|
23
|
+
extern int vacuum_defer_cleanup_age;
|
|
24
|
+
extern int max_standby_archive_delay;
|
|
25
|
+
extern int max_standby_streaming_delay;
|
|
26
|
+
|
|
27
|
+
extern void InitRecoveryTransactionEnvironment(void);
|
|
28
|
+
extern void ShutdownRecoveryTransactionEnvironment(void);
|
|
29
|
+
|
|
30
|
+
extern void ResolveRecoveryConflictWithSnapshot(TransactionId latestRemovedXid,
|
|
31
|
+
RelFileNode node);
|
|
32
|
+
extern void ResolveRecoveryConflictWithTablespace(Oid tsid);
|
|
33
|
+
extern void ResolveRecoveryConflictWithDatabase(Oid dbid);
|
|
34
|
+
|
|
35
|
+
extern void ResolveRecoveryConflictWithLock(LOCKTAG locktag);
|
|
36
|
+
extern void ResolveRecoveryConflictWithBufferPin(void);
|
|
37
|
+
extern void CheckRecoveryConflictDeadlock(void);
|
|
38
|
+
extern void StandbyDeadLockHandler(void);
|
|
39
|
+
extern void StandbyTimeoutHandler(void);
|
|
40
|
+
extern void StandbyLockTimeoutHandler(void);
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* Standby Rmgr (RM_STANDBY_ID)
|
|
44
|
+
*
|
|
45
|
+
* Standby recovery manager exists to perform actions that are required
|
|
46
|
+
* to make hot standby work. That includes logging AccessExclusiveLocks taken
|
|
47
|
+
* by transactions and running-xacts snapshots.
|
|
48
|
+
*/
|
|
49
|
+
extern void StandbyAcquireAccessExclusiveLock(TransactionId xid, Oid dbOid, Oid relOid);
|
|
50
|
+
extern void StandbyReleaseLockTree(TransactionId xid,
|
|
51
|
+
int nsubxids, TransactionId *subxids);
|
|
52
|
+
extern void StandbyReleaseAllLocks(void);
|
|
53
|
+
extern void StandbyReleaseOldLocks(TransactionId oldxid);
|
|
54
|
+
|
|
55
|
+
#define MinSizeOfXactRunningXacts offsetof(xl_running_xacts, xids)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* Declarations for GetRunningTransactionData(). Similar to Snapshots, but
|
|
60
|
+
* not quite. This has nothing at all to do with visibility on this server,
|
|
61
|
+
* so this is completely separate from snapmgr.c and snapmgr.h.
|
|
62
|
+
* This data is important for creating the initial snapshot state on a
|
|
63
|
+
* standby server. We need lots more information than a normal snapshot,
|
|
64
|
+
* hence we use a specific data structure for our needs. This data
|
|
65
|
+
* is written to WAL as a separate record immediately after each
|
|
66
|
+
* checkpoint. That means that wherever we start a standby from we will
|
|
67
|
+
* almost immediately see the data we need to begin executing queries.
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
typedef struct RunningTransactionsData
|
|
71
|
+
{
|
|
72
|
+
int xcnt; /* # of xact ids in xids[] */
|
|
73
|
+
int subxcnt; /* # of subxact ids in xids[] */
|
|
74
|
+
bool subxid_overflow; /* snapshot overflowed, subxids missing */
|
|
75
|
+
TransactionId nextXid; /* xid from ShmemVariableCache->nextFullXid */
|
|
76
|
+
TransactionId oldestRunningXid; /* *not* oldestXmin */
|
|
77
|
+
TransactionId latestCompletedXid; /* so we can set xmax */
|
|
78
|
+
|
|
79
|
+
TransactionId *xids; /* array of (sub)xids still running */
|
|
80
|
+
} RunningTransactionsData;
|
|
81
|
+
|
|
82
|
+
typedef RunningTransactionsData *RunningTransactions;
|
|
83
|
+
|
|
84
|
+
extern void LogAccessExclusiveLock(Oid dbOid, Oid relOid);
|
|
85
|
+
extern void LogAccessExclusiveLockPrepare(void);
|
|
86
|
+
|
|
87
|
+
extern XLogRecPtr LogStandbySnapshot(void);
|
|
88
|
+
extern void LogStandbyInvalidations(int nmsgs, SharedInvalidationMessage *msgs,
|
|
89
|
+
bool relcacheInitFileInval);
|
|
90
|
+
|
|
91
|
+
#endif /* STANDBY_H */
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* standbydefs.h
|
|
4
|
+
* Frontend exposed definitions for hot standby mode.
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
|
+
*
|
|
10
|
+
* src/include/storage/standbydefs.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef STANDBYDEFS_H
|
|
15
|
+
#define STANDBYDEFS_H
|
|
16
|
+
|
|
17
|
+
#include "access/xlogreader.h"
|
|
18
|
+
#include "lib/stringinfo.h"
|
|
19
|
+
#include "storage/lockdefs.h"
|
|
20
|
+
#include "storage/sinval.h"
|
|
21
|
+
|
|
22
|
+
/* Recovery handlers for the Standby Rmgr (RM_STANDBY_ID) */
|
|
23
|
+
extern void standby_redo(XLogReaderState *record);
|
|
24
|
+
extern void standby_desc(StringInfo buf, XLogReaderState *record);
|
|
25
|
+
extern const char *standby_identify(uint8 info);
|
|
26
|
+
extern void standby_desc_invalidations(StringInfo buf,
|
|
27
|
+
int nmsgs, SharedInvalidationMessage *msgs,
|
|
28
|
+
Oid dbId, Oid tsId,
|
|
29
|
+
bool relcacheInitFileInval);
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
* XLOG message types
|
|
33
|
+
*/
|
|
34
|
+
#define XLOG_STANDBY_LOCK 0x00
|
|
35
|
+
#define XLOG_RUNNING_XACTS 0x10
|
|
36
|
+
#define XLOG_INVALIDATIONS 0x20
|
|
37
|
+
|
|
38
|
+
typedef struct xl_standby_locks
|
|
39
|
+
{
|
|
40
|
+
int nlocks; /* number of entries in locks array */
|
|
41
|
+
xl_standby_lock locks[FLEXIBLE_ARRAY_MEMBER];
|
|
42
|
+
} xl_standby_locks;
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
* When we write running xact data to WAL, we use this structure.
|
|
46
|
+
*/
|
|
47
|
+
typedef struct xl_running_xacts
|
|
48
|
+
{
|
|
49
|
+
int xcnt; /* # of xact ids in xids[] */
|
|
50
|
+
int subxcnt; /* # of subxact ids in xids[] */
|
|
51
|
+
bool subxid_overflow; /* snapshot overflowed, subxids missing */
|
|
52
|
+
TransactionId nextXid; /* xid from ShmemVariableCache->nextFullXid */
|
|
53
|
+
TransactionId oldestRunningXid; /* *not* oldestXmin */
|
|
54
|
+
TransactionId latestCompletedXid; /* so we can set xmax */
|
|
55
|
+
|
|
56
|
+
TransactionId xids[FLEXIBLE_ARRAY_MEMBER];
|
|
57
|
+
} xl_running_xacts;
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* Invalidations for standby, currently only when transactions without an
|
|
61
|
+
* assigned xid commit.
|
|
62
|
+
*/
|
|
63
|
+
typedef struct xl_invalidations
|
|
64
|
+
{
|
|
65
|
+
Oid dbId; /* MyDatabaseId */
|
|
66
|
+
Oid tsId; /* MyDatabaseTableSpace */
|
|
67
|
+
bool relcacheInitFileInval; /* invalidate relcache init files */
|
|
68
|
+
int nmsgs; /* number of shared inval msgs */
|
|
69
|
+
SharedInvalidationMessage msgs[FLEXIBLE_ARRAY_MEMBER];
|
|
70
|
+
} xl_invalidations;
|
|
71
|
+
|
|
72
|
+
#define MinSizeOfInvalidations offsetof(xl_invalidations, msgs)
|
|
73
|
+
|
|
74
|
+
#endif /* STANDBYDEFS_H */
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* sync.h
|
|
4
|
+
* File synchronization management code.
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* src/include/storage/sync.h
|
|
10
|
+
*
|
|
11
|
+
*-------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
#ifndef SYNC_H
|
|
14
|
+
#define SYNC_H
|
|
15
|
+
|
|
16
|
+
#include "storage/relfilenode.h"
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
* Type of sync request. These are used to manage the set of pending
|
|
20
|
+
* requests to call a sync handler's sync or unlink functions at the next
|
|
21
|
+
* checkpoint.
|
|
22
|
+
*/
|
|
23
|
+
typedef enum SyncRequestType
|
|
24
|
+
{
|
|
25
|
+
SYNC_REQUEST, /* schedule a call of sync function */
|
|
26
|
+
SYNC_UNLINK_REQUEST, /* schedule a call of unlink function */
|
|
27
|
+
SYNC_FORGET_REQUEST, /* forget all calls for a tag */
|
|
28
|
+
SYNC_FILTER_REQUEST /* forget all calls satisfying match fn */
|
|
29
|
+
} SyncRequestType;
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
* Which set of functions to use to handle a given request. The values of
|
|
33
|
+
* the enumerators must match the indexes of the function table in sync.c.
|
|
34
|
+
*/
|
|
35
|
+
typedef enum SyncRequestHandler
|
|
36
|
+
{
|
|
37
|
+
SYNC_HANDLER_MD = 0 /* md smgr */
|
|
38
|
+
} SyncRequestHandler;
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
* A tag identifying a file. Currently it has the members required for md.c's
|
|
42
|
+
* usage, but sync.c has no knowledge of the internal structure, and it is
|
|
43
|
+
* liable to change as required by future handlers.
|
|
44
|
+
*/
|
|
45
|
+
typedef struct FileTag
|
|
46
|
+
{
|
|
47
|
+
int16 handler; /* SyncRequestHandler value, saving space */
|
|
48
|
+
int16 forknum; /* ForkNumber, saving space */
|
|
49
|
+
RelFileNode rnode;
|
|
50
|
+
uint32 segno;
|
|
51
|
+
} FileTag;
|
|
52
|
+
|
|
53
|
+
extern void InitSync(void);
|
|
54
|
+
extern void SyncPreCheckpoint(void);
|
|
55
|
+
extern void SyncPostCheckpoint(void);
|
|
56
|
+
extern void ProcessSyncRequests(void);
|
|
57
|
+
extern void RememberSyncRequest(const FileTag *ftag, SyncRequestType type);
|
|
58
|
+
extern void EnableSyncRequestForwarding(void);
|
|
59
|
+
extern bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type,
|
|
60
|
+
bool retryOnError);
|
|
61
|
+
|
|
62
|
+
#endif /* SYNC_H */
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* cmdtag.h
|
|
4
|
+
* Declarations for commandtag names and enumeration.
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* src/include/tcop/cmdtag.h
|
|
10
|
+
*
|
|
11
|
+
*-------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
#ifndef CMDTAG_H
|
|
14
|
+
#define CMDTAG_H
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
#define PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt) \
|
|
18
|
+
tag,
|
|
19
|
+
|
|
20
|
+
typedef enum CommandTag
|
|
21
|
+
{
|
|
22
|
+
#include "tcop/cmdtaglist.h"
|
|
23
|
+
COMMAND_TAG_NEXTTAG
|
|
24
|
+
} CommandTag;
|
|
25
|
+
|
|
26
|
+
#undef PG_CMDTAG
|
|
27
|
+
|
|
28
|
+
typedef struct QueryCompletion
|
|
29
|
+
{
|
|
30
|
+
CommandTag commandTag;
|
|
31
|
+
uint64 nprocessed;
|
|
32
|
+
} QueryCompletion;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
static inline void
|
|
36
|
+
SetQueryCompletion(QueryCompletion *qc, CommandTag commandTag,
|
|
37
|
+
uint64 nprocessed)
|
|
38
|
+
{
|
|
39
|
+
qc->commandTag = commandTag;
|
|
40
|
+
qc->nprocessed = nprocessed;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static inline void
|
|
44
|
+
CopyQueryCompletion(QueryCompletion *dst, const QueryCompletion *src)
|
|
45
|
+
{
|
|
46
|
+
dst->commandTag = src->commandTag;
|
|
47
|
+
dst->nprocessed = src->nprocessed;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
extern void InitializeQueryCompletion(QueryCompletion *qc);
|
|
52
|
+
extern const char *GetCommandTagName(CommandTag commandTag);
|
|
53
|
+
extern bool command_tag_display_rowcount(CommandTag commandTag);
|
|
54
|
+
extern bool command_tag_event_trigger_ok(CommandTag commandTag);
|
|
55
|
+
extern bool command_tag_table_rewrite_ok(CommandTag commandTag);
|
|
56
|
+
extern CommandTag GetCommandTagEnum(const char *tagname);
|
|
57
|
+
|
|
58
|
+
#endif /* CMDTAG_H */
|