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,74 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* postgres_ext.h
|
|
4
|
+
*
|
|
5
|
+
* This file contains declarations of things that are visible everywhere
|
|
6
|
+
* in PostgreSQL *and* are visible to clients of frontend interface libraries.
|
|
7
|
+
* For example, the Oid type is part of the API of libpq and other libraries.
|
|
8
|
+
*
|
|
9
|
+
* Declarations which are specific to a particular interface should
|
|
10
|
+
* go in the header file for that interface (such as libpq-fe.h). This
|
|
11
|
+
* file is only for fundamental Postgres declarations.
|
|
12
|
+
*
|
|
13
|
+
* User-written C functions don't count as "external to Postgres."
|
|
14
|
+
* Those function much as local modifications to the backend itself, and
|
|
15
|
+
* use header files that are otherwise internal to Postgres to interface
|
|
16
|
+
* with the backend.
|
|
17
|
+
*
|
|
18
|
+
* src/include/postgres_ext.h
|
|
19
|
+
*
|
|
20
|
+
*-------------------------------------------------------------------------
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#ifndef POSTGRES_EXT_H
|
|
24
|
+
#define POSTGRES_EXT_H
|
|
25
|
+
|
|
26
|
+
#include "pg_config_ext.h"
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* Object ID is a fundamental type in Postgres.
|
|
30
|
+
*/
|
|
31
|
+
typedef unsigned int Oid;
|
|
32
|
+
|
|
33
|
+
#ifdef __cplusplus
|
|
34
|
+
#define InvalidOid (Oid(0))
|
|
35
|
+
#else
|
|
36
|
+
#define InvalidOid ((Oid) 0)
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
#define OID_MAX UINT_MAX
|
|
40
|
+
/* you will need to include <limits.h> to use the above #define */
|
|
41
|
+
|
|
42
|
+
#define atooid(x) ((Oid) strtoul((x), NULL, 10))
|
|
43
|
+
/* the above needs <stdlib.h> */
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
/* Define a signed 64-bit integer type for use in client API declarations. */
|
|
47
|
+
typedef PG_INT64_TYPE pg_int64;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
/*
|
|
51
|
+
* Identifiers of error message fields. Kept here to keep common
|
|
52
|
+
* between frontend and backend, and also to export them to libpq
|
|
53
|
+
* applications.
|
|
54
|
+
*/
|
|
55
|
+
#define PG_DIAG_SEVERITY 'S'
|
|
56
|
+
#define PG_DIAG_SEVERITY_NONLOCALIZED 'V'
|
|
57
|
+
#define PG_DIAG_SQLSTATE 'C'
|
|
58
|
+
#define PG_DIAG_MESSAGE_PRIMARY 'M'
|
|
59
|
+
#define PG_DIAG_MESSAGE_DETAIL 'D'
|
|
60
|
+
#define PG_DIAG_MESSAGE_HINT 'H'
|
|
61
|
+
#define PG_DIAG_STATEMENT_POSITION 'P'
|
|
62
|
+
#define PG_DIAG_INTERNAL_POSITION 'p'
|
|
63
|
+
#define PG_DIAG_INTERNAL_QUERY 'q'
|
|
64
|
+
#define PG_DIAG_CONTEXT 'W'
|
|
65
|
+
#define PG_DIAG_SCHEMA_NAME 's'
|
|
66
|
+
#define PG_DIAG_TABLE_NAME 't'
|
|
67
|
+
#define PG_DIAG_COLUMN_NAME 'c'
|
|
68
|
+
#define PG_DIAG_DATATYPE_NAME 'd'
|
|
69
|
+
#define PG_DIAG_CONSTRAINT_NAME 'n'
|
|
70
|
+
#define PG_DIAG_SOURCE_FILE 'F'
|
|
71
|
+
#define PG_DIAG_SOURCE_LINE 'L'
|
|
72
|
+
#define PG_DIAG_SOURCE_FUNCTION 'R'
|
|
73
|
+
|
|
74
|
+
#endif /* POSTGRES_EXT_H */
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* autovacuum.h
|
|
4
|
+
* header file for integrated autovacuum daemon
|
|
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/postmaster/autovacuum.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef AUTOVACUUM_H
|
|
15
|
+
#define AUTOVACUUM_H
|
|
16
|
+
|
|
17
|
+
#include "storage/block.h"
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* Other processes can request specific work from autovacuum, identified by
|
|
21
|
+
* AutoVacuumWorkItem elements.
|
|
22
|
+
*/
|
|
23
|
+
typedef enum
|
|
24
|
+
{
|
|
25
|
+
AVW_BRINSummarizeRange
|
|
26
|
+
} AutoVacuumWorkItemType;
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
/* GUC variables */
|
|
30
|
+
extern bool autovacuum_start_daemon;
|
|
31
|
+
extern int autovacuum_max_workers;
|
|
32
|
+
extern int autovacuum_work_mem;
|
|
33
|
+
extern int autovacuum_naptime;
|
|
34
|
+
extern int autovacuum_vac_thresh;
|
|
35
|
+
extern double autovacuum_vac_scale;
|
|
36
|
+
extern int autovacuum_vac_ins_thresh;
|
|
37
|
+
extern double autovacuum_vac_ins_scale;
|
|
38
|
+
extern int autovacuum_anl_thresh;
|
|
39
|
+
extern double autovacuum_anl_scale;
|
|
40
|
+
extern int autovacuum_freeze_max_age;
|
|
41
|
+
extern int autovacuum_multixact_freeze_max_age;
|
|
42
|
+
extern double autovacuum_vac_cost_delay;
|
|
43
|
+
extern int autovacuum_vac_cost_limit;
|
|
44
|
+
|
|
45
|
+
/* autovacuum launcher PID, only valid when worker is shutting down */
|
|
46
|
+
extern int AutovacuumLauncherPid;
|
|
47
|
+
|
|
48
|
+
extern int Log_autovacuum_min_duration;
|
|
49
|
+
|
|
50
|
+
/* Status inquiry functions */
|
|
51
|
+
extern bool AutoVacuumingActive(void);
|
|
52
|
+
extern bool IsAutoVacuumLauncherProcess(void);
|
|
53
|
+
extern bool IsAutoVacuumWorkerProcess(void);
|
|
54
|
+
|
|
55
|
+
#define IsAnyAutoVacuumProcess() \
|
|
56
|
+
(IsAutoVacuumLauncherProcess() || IsAutoVacuumWorkerProcess())
|
|
57
|
+
|
|
58
|
+
/* Functions to start autovacuum process, called from postmaster */
|
|
59
|
+
extern void autovac_init(void);
|
|
60
|
+
extern int StartAutoVacLauncher(void);
|
|
61
|
+
extern int StartAutoVacWorker(void);
|
|
62
|
+
|
|
63
|
+
/* called from postmaster when a worker could not be forked */
|
|
64
|
+
extern void AutoVacWorkerFailed(void);
|
|
65
|
+
|
|
66
|
+
/* autovacuum cost-delay balancer */
|
|
67
|
+
extern void AutoVacuumUpdateDelay(void);
|
|
68
|
+
|
|
69
|
+
#ifdef EXEC_BACKEND
|
|
70
|
+
extern void AutoVacLauncherMain(int argc, char *argv[]) pg_attribute_noreturn();
|
|
71
|
+
extern void AutoVacWorkerMain(int argc, char *argv[]) pg_attribute_noreturn();
|
|
72
|
+
extern void AutovacuumWorkerIAm(void);
|
|
73
|
+
extern void AutovacuumLauncherIAm(void);
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type,
|
|
77
|
+
Oid relationId, BlockNumber blkno);
|
|
78
|
+
|
|
79
|
+
/* shared memory stuff */
|
|
80
|
+
extern Size AutoVacuumShmemSize(void);
|
|
81
|
+
extern void AutoVacuumShmemInit(void);
|
|
82
|
+
|
|
83
|
+
#endif /* AUTOVACUUM_H */
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
* bgworker.h
|
|
3
|
+
* POSTGRES pluggable background workers interface
|
|
4
|
+
*
|
|
5
|
+
* A background worker is a process able to run arbitrary, user-supplied code,
|
|
6
|
+
* including normal transactions.
|
|
7
|
+
*
|
|
8
|
+
* Any external module loaded via shared_preload_libraries can register a
|
|
9
|
+
* worker. Workers can also be registered dynamically at runtime. In either
|
|
10
|
+
* case, the worker process is forked from the postmaster and runs the
|
|
11
|
+
* user-supplied "main" function. This code may connect to a database and
|
|
12
|
+
* run transactions. Workers can remain active indefinitely, but will be
|
|
13
|
+
* terminated if a shutdown or crash occurs.
|
|
14
|
+
*
|
|
15
|
+
* If the fork() call fails in the postmaster, it will try again later. Note
|
|
16
|
+
* that the failure can only be transient (fork failure due to high load,
|
|
17
|
+
* memory pressure, too many processes, etc); more permanent problems, like
|
|
18
|
+
* failure to connect to a database, are detected later in the worker and dealt
|
|
19
|
+
* with just by having the worker exit normally. A worker which exits with
|
|
20
|
+
* a return code of 0 will never be restarted and will be removed from worker
|
|
21
|
+
* list. A worker which exits with a return code of 1 will be restarted after
|
|
22
|
+
* the configured restart interval (unless that interval is BGW_NEVER_RESTART).
|
|
23
|
+
* The TerminateBackgroundWorker() function can be used to terminate a
|
|
24
|
+
* dynamically registered background worker; the worker will be sent a SIGTERM
|
|
25
|
+
* and will not be restarted after it exits. Whenever the postmaster knows
|
|
26
|
+
* that a worker will not be restarted, it unregisters the worker, freeing up
|
|
27
|
+
* that worker's slot for use by a new worker.
|
|
28
|
+
*
|
|
29
|
+
* Note that there might be more than one worker in a database concurrently,
|
|
30
|
+
* and the same module may request more than one worker running the same (or
|
|
31
|
+
* different) code.
|
|
32
|
+
*
|
|
33
|
+
*
|
|
34
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
35
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
36
|
+
*
|
|
37
|
+
* IDENTIFICATION
|
|
38
|
+
* src/include/postmaster/bgworker.h
|
|
39
|
+
*--------------------------------------------------------------------
|
|
40
|
+
*/
|
|
41
|
+
#ifndef BGWORKER_H
|
|
42
|
+
#define BGWORKER_H
|
|
43
|
+
|
|
44
|
+
/*---------------------------------------------------------------------
|
|
45
|
+
* External module API.
|
|
46
|
+
*---------------------------------------------------------------------
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* Pass this flag to have your worker be able to connect to shared memory.
|
|
51
|
+
*/
|
|
52
|
+
#define BGWORKER_SHMEM_ACCESS 0x0001
|
|
53
|
+
|
|
54
|
+
/*
|
|
55
|
+
* This flag means the bgworker requires a database connection. The connection
|
|
56
|
+
* is not established automatically; the worker must establish it later.
|
|
57
|
+
* It requires that BGWORKER_SHMEM_ACCESS was passed too.
|
|
58
|
+
*/
|
|
59
|
+
#define BGWORKER_BACKEND_DATABASE_CONNECTION 0x0002
|
|
60
|
+
|
|
61
|
+
/*
|
|
62
|
+
* This class is used internally for parallel queries, to keep track of the
|
|
63
|
+
* number of active parallel workers and make sure we never launch more than
|
|
64
|
+
* max_parallel_workers parallel workers at the same time. Third party
|
|
65
|
+
* background workers should not use this class.
|
|
66
|
+
*/
|
|
67
|
+
#define BGWORKER_CLASS_PARALLEL 0x0010
|
|
68
|
+
/* add additional bgworker classes here */
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
typedef void (*bgworker_main_type) (Datum main_arg);
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
* Points in time at which a bgworker can request to be started
|
|
75
|
+
*/
|
|
76
|
+
typedef enum
|
|
77
|
+
{
|
|
78
|
+
BgWorkerStart_PostmasterStart,
|
|
79
|
+
BgWorkerStart_ConsistentState,
|
|
80
|
+
BgWorkerStart_RecoveryFinished
|
|
81
|
+
} BgWorkerStartTime;
|
|
82
|
+
|
|
83
|
+
#define BGW_DEFAULT_RESTART_INTERVAL 60
|
|
84
|
+
#define BGW_NEVER_RESTART -1
|
|
85
|
+
#define BGW_MAXLEN 96
|
|
86
|
+
#define BGW_EXTRALEN 128
|
|
87
|
+
|
|
88
|
+
typedef struct BackgroundWorker
|
|
89
|
+
{
|
|
90
|
+
char bgw_name[BGW_MAXLEN];
|
|
91
|
+
char bgw_type[BGW_MAXLEN];
|
|
92
|
+
int bgw_flags;
|
|
93
|
+
BgWorkerStartTime bgw_start_time;
|
|
94
|
+
int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */
|
|
95
|
+
char bgw_library_name[BGW_MAXLEN];
|
|
96
|
+
char bgw_function_name[BGW_MAXLEN];
|
|
97
|
+
Datum bgw_main_arg;
|
|
98
|
+
char bgw_extra[BGW_EXTRALEN];
|
|
99
|
+
pid_t bgw_notify_pid; /* SIGUSR1 this backend on start/stop */
|
|
100
|
+
} BackgroundWorker;
|
|
101
|
+
|
|
102
|
+
typedef enum BgwHandleStatus
|
|
103
|
+
{
|
|
104
|
+
BGWH_STARTED, /* worker is running */
|
|
105
|
+
BGWH_NOT_YET_STARTED, /* worker hasn't been started yet */
|
|
106
|
+
BGWH_STOPPED, /* worker has exited */
|
|
107
|
+
BGWH_POSTMASTER_DIED /* postmaster died; worker status unclear */
|
|
108
|
+
} BgwHandleStatus;
|
|
109
|
+
|
|
110
|
+
struct BackgroundWorkerHandle;
|
|
111
|
+
typedef struct BackgroundWorkerHandle BackgroundWorkerHandle;
|
|
112
|
+
|
|
113
|
+
/* Register a new bgworker during shared_preload_libraries */
|
|
114
|
+
extern void RegisterBackgroundWorker(BackgroundWorker *worker);
|
|
115
|
+
|
|
116
|
+
/* Register a new bgworker from a regular backend */
|
|
117
|
+
extern bool RegisterDynamicBackgroundWorker(BackgroundWorker *worker,
|
|
118
|
+
BackgroundWorkerHandle **handle);
|
|
119
|
+
|
|
120
|
+
/* Query the status of a bgworker */
|
|
121
|
+
extern BgwHandleStatus GetBackgroundWorkerPid(BackgroundWorkerHandle *handle,
|
|
122
|
+
pid_t *pidp);
|
|
123
|
+
extern BgwHandleStatus WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *pid);
|
|
124
|
+
extern BgwHandleStatus
|
|
125
|
+
WaitForBackgroundWorkerShutdown(BackgroundWorkerHandle *);
|
|
126
|
+
extern const char *GetBackgroundWorkerTypeByPid(pid_t pid);
|
|
127
|
+
|
|
128
|
+
/* Terminate a bgworker */
|
|
129
|
+
extern void TerminateBackgroundWorker(BackgroundWorkerHandle *handle);
|
|
130
|
+
|
|
131
|
+
/* This is valid in a running worker */
|
|
132
|
+
extern PGDLLIMPORT BackgroundWorker *MyBgworkerEntry;
|
|
133
|
+
|
|
134
|
+
/*
|
|
135
|
+
* Connect to the specified database, as the specified user. Only a worker
|
|
136
|
+
* that passed BGWORKER_BACKEND_DATABASE_CONNECTION during registration may
|
|
137
|
+
* call this.
|
|
138
|
+
*
|
|
139
|
+
* If username is NULL, bootstrapping superuser is used.
|
|
140
|
+
* If dbname is NULL, connection is made to no specific database;
|
|
141
|
+
* only shared catalogs can be accessed.
|
|
142
|
+
*/
|
|
143
|
+
extern void BackgroundWorkerInitializeConnection(const char *dbname, const char *username, uint32 flags);
|
|
144
|
+
|
|
145
|
+
/* Just like the above, but specifying database and user by OID. */
|
|
146
|
+
extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags);
|
|
147
|
+
|
|
148
|
+
/*
|
|
149
|
+
* Flags to BackgroundWorkerInitializeConnection et al
|
|
150
|
+
*
|
|
151
|
+
*
|
|
152
|
+
* Allow bypassing datallowconn restrictions when connecting to database
|
|
153
|
+
*/
|
|
154
|
+
#define BGWORKER_BYPASS_ALLOWCONN 1
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
/* Block/unblock signals in a background worker process */
|
|
158
|
+
extern void BackgroundWorkerBlockSignals(void);
|
|
159
|
+
extern void BackgroundWorkerUnblockSignals(void);
|
|
160
|
+
|
|
161
|
+
#endif /* BGWORKER_H */
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
* bgworker_internals.h
|
|
3
|
+
* POSTGRES pluggable background workers internals
|
|
4
|
+
*
|
|
5
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
6
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
7
|
+
*
|
|
8
|
+
* IDENTIFICATION
|
|
9
|
+
* src/include/postmaster/bgworker_internals.h
|
|
10
|
+
*--------------------------------------------------------------------
|
|
11
|
+
*/
|
|
12
|
+
#ifndef BGWORKER_INTERNALS_H
|
|
13
|
+
#define BGWORKER_INTERNALS_H
|
|
14
|
+
|
|
15
|
+
#include "datatype/timestamp.h"
|
|
16
|
+
#include "lib/ilist.h"
|
|
17
|
+
#include "postmaster/bgworker.h"
|
|
18
|
+
|
|
19
|
+
/* GUC options */
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* Maximum possible value of parallel workers.
|
|
23
|
+
*/
|
|
24
|
+
#define MAX_PARALLEL_WORKER_LIMIT 1024
|
|
25
|
+
|
|
26
|
+
/*
|
|
27
|
+
* List of background workers, private to postmaster.
|
|
28
|
+
*
|
|
29
|
+
* A worker that requests a database connection during registration will have
|
|
30
|
+
* rw_backend set, and will be present in BackendList. Note: do not rely on
|
|
31
|
+
* rw_backend being non-NULL for shmem-connected workers!
|
|
32
|
+
*/
|
|
33
|
+
typedef struct RegisteredBgWorker
|
|
34
|
+
{
|
|
35
|
+
BackgroundWorker rw_worker; /* its registry entry */
|
|
36
|
+
struct bkend *rw_backend; /* its BackendList entry, or NULL */
|
|
37
|
+
pid_t rw_pid; /* 0 if not running */
|
|
38
|
+
int rw_child_slot;
|
|
39
|
+
TimestampTz rw_crashed_at; /* if not 0, time it last crashed */
|
|
40
|
+
int rw_shmem_slot;
|
|
41
|
+
bool rw_terminate;
|
|
42
|
+
slist_node rw_lnode; /* list link */
|
|
43
|
+
} RegisteredBgWorker;
|
|
44
|
+
|
|
45
|
+
extern slist_head BackgroundWorkerList;
|
|
46
|
+
|
|
47
|
+
extern Size BackgroundWorkerShmemSize(void);
|
|
48
|
+
extern void BackgroundWorkerShmemInit(void);
|
|
49
|
+
extern void BackgroundWorkerStateChange(bool allow_new_workers);
|
|
50
|
+
extern void ForgetBackgroundWorker(slist_mutable_iter *cur);
|
|
51
|
+
extern void ReportBackgroundWorkerPID(RegisteredBgWorker *);
|
|
52
|
+
extern void ReportBackgroundWorkerExit(slist_mutable_iter *cur);
|
|
53
|
+
extern void BackgroundWorkerStopNotifications(pid_t pid);
|
|
54
|
+
extern void ForgetUnstartedBackgroundWorkers(void);
|
|
55
|
+
extern void ResetBackgroundWorkerCrashTimes(void);
|
|
56
|
+
|
|
57
|
+
/* Function to start a background worker, called from postmaster.c */
|
|
58
|
+
extern void StartBackgroundWorker(void) pg_attribute_noreturn();
|
|
59
|
+
|
|
60
|
+
#ifdef EXEC_BACKEND
|
|
61
|
+
extern BackgroundWorker *BackgroundWorkerEntry(int slotno);
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
#endif /* BGWORKER_INTERNALS_H */
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* bgwriter.h
|
|
4
|
+
* Exports from postmaster/bgwriter.c and postmaster/checkpointer.c.
|
|
5
|
+
*
|
|
6
|
+
* The bgwriter process used to handle checkpointing duties too. Now
|
|
7
|
+
* there is a separate process, but we did not bother to split this header.
|
|
8
|
+
*
|
|
9
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
10
|
+
*
|
|
11
|
+
* src/include/postmaster/bgwriter.h
|
|
12
|
+
*
|
|
13
|
+
*-------------------------------------------------------------------------
|
|
14
|
+
*/
|
|
15
|
+
#ifndef _BGWRITER_H
|
|
16
|
+
#define _BGWRITER_H
|
|
17
|
+
|
|
18
|
+
#include "storage/block.h"
|
|
19
|
+
#include "storage/relfilenode.h"
|
|
20
|
+
#include "storage/smgr.h"
|
|
21
|
+
#include "storage/sync.h"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/* GUC options */
|
|
25
|
+
extern int BgWriterDelay;
|
|
26
|
+
extern int CheckPointTimeout;
|
|
27
|
+
extern int CheckPointWarning;
|
|
28
|
+
extern double CheckPointCompletionTarget;
|
|
29
|
+
|
|
30
|
+
extern void BackgroundWriterMain(void) pg_attribute_noreturn();
|
|
31
|
+
extern void CheckpointerMain(void) pg_attribute_noreturn();
|
|
32
|
+
|
|
33
|
+
extern void RequestCheckpoint(int flags);
|
|
34
|
+
extern void CheckpointWriteDelay(int flags, double progress);
|
|
35
|
+
|
|
36
|
+
extern bool ForwardSyncRequest(const FileTag *ftag, SyncRequestType type);
|
|
37
|
+
|
|
38
|
+
extern void AbsorbSyncRequests(void);
|
|
39
|
+
|
|
40
|
+
extern Size CheckpointerShmemSize(void);
|
|
41
|
+
extern void CheckpointerShmemInit(void);
|
|
42
|
+
|
|
43
|
+
extern bool FirstCallSinceLastCheckpoint(void);
|
|
44
|
+
|
|
45
|
+
#endif /* _BGWRITER_H */
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* fork_process.h
|
|
4
|
+
* Exports from postmaster/fork_process.c.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
7
|
+
*
|
|
8
|
+
* src/include/postmaster/fork_process.h
|
|
9
|
+
*
|
|
10
|
+
*-------------------------------------------------------------------------
|
|
11
|
+
*/
|
|
12
|
+
#ifndef FORK_PROCESS_H
|
|
13
|
+
#define FORK_PROCESS_H
|
|
14
|
+
|
|
15
|
+
extern pid_t fork_process(void);
|
|
16
|
+
|
|
17
|
+
#endif /* FORK_PROCESS_H */
|