pg_query 2.2.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +86 -0
- data/README.md +57 -31
- data/Rakefile +5 -6
- data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
- data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
- data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/extconf.rb +33 -9
- data/ext/pg_query/include/pg_query.h +30 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +839 -290
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +638 -481
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +6786 -4193
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +450 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1489 -1044
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +157 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1933 -1410
- data/ext/pg_query/include/postgres/access/amapi.h +303 -0
- data/ext/pg_query/include/postgres/access/attmap.h +54 -0
- data/ext/pg_query/include/postgres/access/attnum.h +64 -0
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +62 -0
- data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
- data/ext/pg_query/include/postgres/access/detoast.h +82 -0
- data/ext/pg_query/include/postgres/access/genam.h +246 -0
- data/ext/pg_query/include/postgres/access/gin.h +91 -0
- data/ext/pg_query/include/postgres/access/htup.h +89 -0
- data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
- data/ext/pg_query/include/postgres/access/itup.h +170 -0
- data/ext/pg_query/include/postgres/access/parallel.h +81 -0
- data/ext/pg_query/include/postgres/access/printtup.h +35 -0
- data/ext/pg_query/include/postgres/access/relation.h +28 -0
- data/ext/pg_query/include/postgres/access/relscan.h +191 -0
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
- data/ext/pg_query/include/postgres/access/sdir.h +67 -0
- data/ext/pg_query/include/postgres/access/skey.h +151 -0
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
- data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
- data/ext/pg_query/include/postgres/access/table.h +28 -0
- data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/postgres/access/transam.h +418 -0
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
- data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
- data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
- data/ext/pg_query/include/postgres/access/twophase.h +65 -0
- data/ext/pg_query/include/postgres/access/xact.h +530 -0
- data/ext/pg_query/include/postgres/access/xlog.h +310 -0
- data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
- data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
- data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
- data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
- data/ext/pg_query/include/postgres/c.h +1374 -0
- data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
- data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
- data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
- data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
- data/ext/pg_query/include/postgres/catalog/index.h +218 -0
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
- data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
- data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
- data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
- data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +49 -0
- data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
- data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
- data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
- data/ext/pg_query/include/postgres/commands/explain.h +145 -0
- data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
- data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
- data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
- data/ext/pg_query/include/postgres/commands/user.h +43 -0
- data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +512 -0
- data/ext/pg_query/include/postgres/common/keywords.h +29 -0
- data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
- data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
- data/ext/pg_query/include/postgres/common/relpath.h +97 -0
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
- data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
- data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
- data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
- data/ext/pg_query/include/postgres/executor/executor.h +681 -0
- data/ext/pg_query/include/postgres/executor/functions.h +56 -0
- data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
- data/ext/pg_query/include/postgres/executor/spi.h +207 -0
- data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
- data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
- data/ext/pg_query/include/postgres/fmgr.h +800 -0
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/postgres/funcapi.h +360 -0
- data/ext/pg_query/include/postgres/gram.h +1168 -0
- data/ext/pg_query/include/postgres/gramparse.h +75 -0
- data/ext/pg_query/include/postgres/jit/jit.h +106 -0
- data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
- data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
- data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
- data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
- data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
- data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
- data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
- data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
- data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
- data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
- data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
- data/ext/pg_query/include/postgres/miscadmin.h +527 -0
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
- data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
- data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
- data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
- data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
- data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
- data/ext/pg_query/include/postgres/nodes/params.h +170 -0
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
- data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
- data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
- data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
- data/ext/pg_query/include/postgres/nodes/print.h +34 -0
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
- data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
- data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
- data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
- data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
- data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
- data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
- data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
- data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
- data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
- data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
- data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
- data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
- data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
- data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
- data/ext/pg_query/include/postgres/pg_config.h +985 -0
- data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
- data/ext/pg_query/include/postgres/pg_trace.h +17 -0
- data/ext/pg_query/include/postgres/pgstat.h +780 -0
- data/ext/pg_query/include/postgres/pgtime.h +94 -0
- data/ext/pg_query/include/postgres/pl_gram.h +385 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
- data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
- data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
- data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
- data/ext/pg_query/include/postgres/port/atomics.h +606 -0
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
- data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +422 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
- data/ext/pg_query/include/postgres/port.h +555 -0
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
- data/ext/pg_query/include/postgres/regex/regex.h +272 -0
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
- data/ext/pg_query/include/postgres/replication/origin.h +73 -0
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
- data/ext/pg_query/include/postgres/replication/slot.h +289 -0
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
- data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
- data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
- data/ext/pg_query/include/postgres/storage/block.h +108 -0
- data/ext/pg_query/include/postgres/storage/buf.h +46 -0
- data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
- data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
- data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
- data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
- data/ext/pg_query/include/postgres/storage/fd.h +219 -0
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
- data/ext/pg_query/include/postgres/storage/item.h +19 -0
- data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
- data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
- data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
- data/ext/pg_query/include/postgres/storage/latch.h +196 -0
- data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
- data/ext/pg_query/include/postgres/storage/lock.h +624 -0
- data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
- data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
- data/ext/pg_query/include/postgres/storage/off.h +57 -0
- data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
- data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
- data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
- data/ext/pg_query/include/postgres/storage/proc.h +488 -0
- data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
- data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
- data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
- data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
- data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
- data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
- data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
- data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
- data/ext/pg_query/include/postgres/storage/spin.h +77 -0
- data/ext/pg_query/include/postgres/storage/standby.h +109 -0
- data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
- data/ext/pg_query/include/postgres/storage/sync.h +66 -0
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
- data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
- data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
- data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
- data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
- data/ext/pg_query/include/postgres/utils/acl.h +290 -0
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
- data/ext/pg_query/include/postgres/utils/array.h +481 -0
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
- data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
- data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
- data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
- data/ext/pg_query/include/postgres/utils/date.h +118 -0
- data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
- data/ext/pg_query/include/postgres/utils/datum.h +76 -0
- data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
- data/ext/pg_query/include/postgres/utils/elog.h +540 -0
- data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
- data/ext/pg_query/include/postgres/utils/float.h +357 -0
- data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
- data/ext/pg_query/include/postgres/utils/guc.h +456 -0
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
- data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
- data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +68 -0
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
- data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
- data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
- data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
- data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
- data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
- data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
- data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
- data/ext/pg_query/include/postgres/utils/portal.h +252 -0
- data/ext/pg_query/include/postgres/utils/probes.h +114 -0
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/postgres/utils/rel.h +711 -0
- data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
- data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
- data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
- data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
- data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
- data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
- data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
- data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
- data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
- data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
- data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
- data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
- data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
- data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
- data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +94 -0
- data/ext/pg_query/include/postgres/varatt.h +358 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +8077 -6217
- data/ext/pg_query/include/protobuf/pg_query.pb.h +132024 -88124
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +24028 -17173
- data/ext/pg_query/pg_query_deparse.c +1 -9902
- data/ext/pg_query/pg_query_fingerprint.c +42 -18
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -25
- data/ext/pg_query/pg_query_normalize.c +44 -3
- data/ext/pg_query/pg_query_outfuncs_json.c +62 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +45 -10
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_scan.c +4 -3
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11496 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +262 -71
- data/ext/pg_query/src_backend_catalog_pg_proc.c +3 -2
- data/ext/pg_query/src_backend_commands_define.c +12 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +142 -156
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +100 -5881
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3831
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +89 -18
- data/ext/pg_query/src_backend_nodes_makefuncs.c +138 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +433 -132
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +45255 -38885
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +6999 -3438
- data/ext/pg_query/src_backend_parser_scansup.c +5 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +156 -114
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +14 -2
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_numutils.c +488 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +247 -34
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +543 -343
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +47 -18
- data/ext/pg_query/src_backend_utils_init_globals.c +22 -7
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +84 -148
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +708 -499
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +710 -218
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
- data/ext/pg_query/src_common_encnames.c +46 -44
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +602 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +21 -4
- data/ext/pg_query/src_common_wchar.c +754 -178
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +143 -24
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1295 -1255
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +20 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +283 -54
- data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +56 -39
- data/ext/pg_query/src_port_strerror.c +9 -21
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +10 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +3 -3
- data/lib/pg_query/parse.rb +25 -15
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +181 -3038
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +55 -8
- data/lib/pg_query/truncate.rb +19 -21
- data/lib/pg_query/version.rb +1 -1
- metadata +447 -436
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +0 -246
- data/ext/pg_query/include/access/attmap.h +0 -52
- data/ext/pg_query/include/access/attnum.h +0 -64
- data/ext/pg_query/include/access/clog.h +0 -61
- data/ext/pg_query/include/access/commit_ts.h +0 -77
- data/ext/pg_query/include/access/detoast.h +0 -92
- data/ext/pg_query/include/access/genam.h +0 -228
- data/ext/pg_query/include/access/gin.h +0 -78
- data/ext/pg_query/include/access/htup.h +0 -89
- data/ext/pg_query/include/access/htup_details.h +0 -819
- data/ext/pg_query/include/access/itup.h +0 -161
- data/ext/pg_query/include/access/parallel.h +0 -82
- data/ext/pg_query/include/access/printtup.h +0 -35
- data/ext/pg_query/include/access/relation.h +0 -28
- data/ext/pg_query/include/access/relscan.h +0 -176
- data/ext/pg_query/include/access/rmgr.h +0 -35
- data/ext/pg_query/include/access/rmgrlist.h +0 -49
- data/ext/pg_query/include/access/sdir.h +0 -58
- data/ext/pg_query/include/access/skey.h +0 -151
- data/ext/pg_query/include/access/stratnum.h +0 -83
- data/ext/pg_query/include/access/sysattr.h +0 -29
- data/ext/pg_query/include/access/table.h +0 -27
- data/ext/pg_query/include/access/tableam.h +0 -1825
- data/ext/pg_query/include/access/transam.h +0 -265
- data/ext/pg_query/include/access/tupconvert.h +0 -51
- data/ext/pg_query/include/access/tupdesc.h +0 -154
- data/ext/pg_query/include/access/tupmacs.h +0 -247
- data/ext/pg_query/include/access/twophase.h +0 -63
- data/ext/pg_query/include/access/xact.h +0 -469
- data/ext/pg_query/include/access/xlog.h +0 -398
- data/ext/pg_query/include/access/xlog_internal.h +0 -339
- data/ext/pg_query/include/access/xlogdefs.h +0 -109
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/access/xlogreader.h +0 -337
- data/ext/pg_query/include/access/xlogrecord.h +0 -227
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/c.h +0 -1334
- data/ext/pg_query/include/catalog/catalog.h +0 -42
- data/ext/pg_query/include/catalog/catversion.h +0 -58
- data/ext/pg_query/include/catalog/dependency.h +0 -277
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/index.h +0 -199
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/catalog/namespace.h +0 -188
- data/ext/pg_query/include/catalog/objectaccess.h +0 -197
- data/ext/pg_query/include/catalog/objectaddress.h +0 -84
- data/ext/pg_query/include/catalog/pg_aggregate.h +0 -176
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -77
- data/ext/pg_query/include/catalog/pg_am.h +0 -60
- data/ext/pg_query/include/catalog/pg_am_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_attribute.h +0 -204
- data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -59
- data/ext/pg_query/include/catalog/pg_authid.h +0 -58
- data/ext/pg_query/include/catalog/pg_authid_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_class.h +0 -200
- data/ext/pg_query/include/catalog/pg_class_d.h +0 -103
- data/ext/pg_query/include/catalog/pg_collation.h +0 -73
- data/ext/pg_query/include/catalog/pg_collation_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_constraint.h +0 -247
- data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -67
- data/ext/pg_query/include/catalog/pg_control.h +0 -252
- data/ext/pg_query/include/catalog/pg_conversion.h +0 -72
- data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_depend.h +0 -73
- data/ext/pg_query/include/catalog/pg_depend_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -51
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_index.h +0 -80
- data/ext/pg_query/include/catalog/pg_index_d.h +0 -56
- data/ext/pg_query/include/catalog/pg_language.h +0 -67
- data/ext/pg_query/include/catalog/pg_language_d.h +0 -39
- data/ext/pg_query/include/catalog/pg_namespace.h +0 -59
- data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_opclass.h +0 -85
- data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_operator.h +0 -104
- data/ext/pg_query/include/catalog/pg_operator_d.h +0 -106
- data/ext/pg_query/include/catalog/pg_opfamily.h +0 -60
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -47
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -63
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_proc.h +0 -211
- data/ext/pg_query/include/catalog/pg_proc_d.h +0 -99
- data/ext/pg_query/include/catalog/pg_publication.h +0 -118
- data/ext/pg_query/include/catalog/pg_publication_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -57
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -29
- data/ext/pg_query/include/catalog/pg_statistic.h +0 -275
- data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -194
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -74
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -40
- data/ext/pg_query/include/catalog/pg_transform.h +0 -45
- data/ext/pg_query/include/catalog/pg_transform_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_trigger.h +0 -137
- data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -106
- data/ext/pg_query/include/catalog/pg_ts_config.h +0 -50
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -54
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -33
- data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -57
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_ts_template.h +0 -48
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_type.h +0 -373
- data/ext/pg_query/include/catalog/pg_type_d.h +0 -285
- data/ext/pg_query/include/catalog/storage.h +0 -48
- data/ext/pg_query/include/commands/async.h +0 -54
- data/ext/pg_query/include/commands/dbcommands.h +0 -35
- data/ext/pg_query/include/commands/defrem.h +0 -173
- data/ext/pg_query/include/commands/event_trigger.h +0 -88
- data/ext/pg_query/include/commands/explain.h +0 -127
- data/ext/pg_query/include/commands/prepare.h +0 -61
- data/ext/pg_query/include/commands/tablespace.h +0 -69
- data/ext/pg_query/include/commands/trigger.h +0 -285
- data/ext/pg_query/include/commands/user.h +0 -37
- data/ext/pg_query/include/commands/vacuum.h +0 -293
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/file_perm.h +0 -56
- data/ext/pg_query/include/common/hashfn.h +0 -104
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/keywords.h +0 -33
- data/ext/pg_query/include/common/kwlookup.h +0 -44
- data/ext/pg_query/include/common/relpath.h +0 -90
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/common/unicode_combining_table.h +0 -196
- data/ext/pg_query/include/datatype/timestamp.h +0 -197
- data/ext/pg_query/include/executor/execdesc.h +0 -70
- data/ext/pg_query/include/executor/executor.h +0 -620
- data/ext/pg_query/include/executor/functions.h +0 -41
- data/ext/pg_query/include/executor/instrument.h +0 -101
- data/ext/pg_query/include/executor/spi.h +0 -175
- data/ext/pg_query/include/executor/tablefunc.h +0 -67
- data/ext/pg_query/include/executor/tuptable.h +0 -487
- data/ext/pg_query/include/fmgr.h +0 -775
- data/ext/pg_query/include/funcapi.h +0 -348
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/jit/jit.h +0 -105
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/lib/ilist.h +0 -727
- data/ext/pg_query/include/lib/pairingheap.h +0 -102
- data/ext/pg_query/include/lib/simplehash.h +0 -1059
- data/ext/pg_query/include/lib/stringinfo.h +0 -161
- data/ext/pg_query/include/libpq/auth.h +0 -29
- data/ext/pg_query/include/libpq/crypt.h +0 -46
- data/ext/pg_query/include/libpq/hba.h +0 -140
- data/ext/pg_query/include/libpq/libpq-be.h +0 -326
- data/ext/pg_query/include/libpq/libpq.h +0 -134
- data/ext/pg_query/include/libpq/pqcomm.h +0 -208
- data/ext/pg_query/include/libpq/pqformat.h +0 -210
- data/ext/pg_query/include/libpq/pqsignal.h +0 -42
- data/ext/pg_query/include/mb/pg_wchar.h +0 -673
- data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
- data/ext/pg_query/include/miscadmin.h +0 -489
- data/ext/pg_query/include/nodes/bitmapset.h +0 -122
- data/ext/pg_query/include/nodes/execnodes.h +0 -2523
- data/ext/pg_query/include/nodes/extensible.h +0 -160
- data/ext/pg_query/include/nodes/lockoptions.h +0 -61
- data/ext/pg_query/include/nodes/makefuncs.h +0 -108
- data/ext/pg_query/include/nodes/memnodes.h +0 -108
- data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
- data/ext/pg_query/include/nodes/nodes.h +0 -842
- data/ext/pg_query/include/nodes/params.h +0 -170
- data/ext/pg_query/include/nodes/parsenodes.h +0 -3580
- data/ext/pg_query/include/nodes/pathnodes.h +0 -2557
- data/ext/pg_query/include/nodes/pg_list.h +0 -606
- data/ext/pg_query/include/nodes/plannodes.h +0 -1266
- data/ext/pg_query/include/nodes/primnodes.h +0 -1541
- data/ext/pg_query/include/nodes/print.h +0 -34
- data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/optimizer/cost.h +0 -206
- data/ext/pg_query/include/optimizer/geqo.h +0 -88
- data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
- data/ext/pg_query/include/optimizer/optimizer.h +0 -194
- data/ext/pg_query/include/optimizer/paths.h +0 -257
- data/ext/pg_query/include/optimizer/planmain.h +0 -119
- data/ext/pg_query/include/parser/analyze.h +0 -49
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/gramparse.h +0 -75
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_agg.h +0 -68
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_coerce.h +0 -98
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_expr.h +0 -26
- data/ext/pg_query/include/parser/parse_func.h +0 -73
- data/ext/pg_query/include/parser/parse_node.h +0 -327
- data/ext/pg_query/include/parser/parse_oper.h +0 -67
- data/ext/pg_query/include/parser/parse_relation.h +0 -123
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parse_type.h +0 -60
- data/ext/pg_query/include/parser/parser.h +0 -41
- data/ext/pg_query/include/parser/parsetree.h +0 -61
- data/ext/pg_query/include/parser/scanner.h +0 -152
- data/ext/pg_query/include/parser/scansup.h +0 -30
- data/ext/pg_query/include/partitioning/partdefs.h +0 -26
- data/ext/pg_query/include/pg_config.h +0 -995
- data/ext/pg_query/include/pg_config_manual.h +0 -357
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pg_getopt.h +0 -56
- data/ext/pg_query/include/pg_trace.h +0 -17
- data/ext/pg_query/include/pgstat.h +0 -1488
- data/ext/pg_query/include/pgtime.h +0 -84
- data/ext/pg_query/include/pl_gram.h +0 -385
- data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
- data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -112
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -246
- data/ext/pg_query/include/plerrcodes.h +0 -990
- data/ext/pg_query/include/plpgsql.h +0 -1347
- data/ext/pg_query/include/port/atomics/arch-arm.h +0 -26
- data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
- data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
- data/ext/pg_query/include/port/atomics/fallback.h +0 -170
- data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
- data/ext/pg_query/include/port/atomics/generic.h +0 -401
- data/ext/pg_query/include/port/atomics.h +0 -524
- data/ext/pg_query/include/port/pg_bitutils.h +0 -272
- data/ext/pg_query/include/port/pg_bswap.h +0 -161
- data/ext/pg_query/include/port/pg_crc32c.h +0 -101
- data/ext/pg_query/include/port.h +0 -528
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postgres.h +0 -764
- data/ext/pg_query/include/postgres_ext.h +0 -74
- data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
- data/ext/pg_query/include/postmaster/bgworker.h +0 -161
- data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
- data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/interrupt.h +0 -32
- data/ext/pg_query/include/postmaster/pgarch.h +0 -39
- data/ext/pg_query/include/postmaster/postmaster.h +0 -77
- data/ext/pg_query/include/postmaster/syslogger.h +0 -98
- data/ext/pg_query/include/postmaster/walwriter.h +0 -21
- data/ext/pg_query/include/regex/regex.h +0 -184
- data/ext/pg_query/include/replication/logicallauncher.h +0 -31
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/origin.h +0 -73
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -468
- data/ext/pg_query/include/replication/slot.h +0 -219
- data/ext/pg_query/include/replication/syncrep.h +0 -115
- data/ext/pg_query/include/replication/walreceiver.h +0 -340
- data/ext/pg_query/include/replication/walsender.h +0 -74
- data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
- data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -40
- data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
- data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
- data/ext/pg_query/include/storage/backendid.h +0 -37
- data/ext/pg_query/include/storage/block.h +0 -121
- data/ext/pg_query/include/storage/buf.h +0 -46
- data/ext/pg_query/include/storage/bufmgr.h +0 -292
- data/ext/pg_query/include/storage/bufpage.h +0 -459
- data/ext/pg_query/include/storage/condition_variable.h +0 -62
- data/ext/pg_query/include/storage/dsm.h +0 -61
- data/ext/pg_query/include/storage/dsm_impl.h +0 -75
- data/ext/pg_query/include/storage/fd.h +0 -168
- data/ext/pg_query/include/storage/ipc.h +0 -81
- data/ext/pg_query/include/storage/item.h +0 -19
- data/ext/pg_query/include/storage/itemid.h +0 -184
- data/ext/pg_query/include/storage/itemptr.h +0 -206
- data/ext/pg_query/include/storage/large_object.h +0 -100
- data/ext/pg_query/include/storage/latch.h +0 -190
- data/ext/pg_query/include/storage/lmgr.h +0 -114
- data/ext/pg_query/include/storage/lock.h +0 -613
- data/ext/pg_query/include/storage/lockdefs.h +0 -59
- data/ext/pg_query/include/storage/lwlock.h +0 -233
- data/ext/pg_query/include/storage/lwlocknames.h +0 -51
- data/ext/pg_query/include/storage/off.h +0 -57
- data/ext/pg_query/include/storage/pg_sema.h +0 -61
- data/ext/pg_query/include/storage/pg_shmem.h +0 -90
- data/ext/pg_query/include/storage/pmsignal.h +0 -94
- data/ext/pg_query/include/storage/predicate.h +0 -87
- data/ext/pg_query/include/storage/proc.h +0 -347
- data/ext/pg_query/include/storage/proclist_types.h +0 -51
- data/ext/pg_query/include/storage/procsignal.h +0 -75
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/storage/s_lock.h +0 -1071
- data/ext/pg_query/include/storage/sharedfileset.h +0 -45
- data/ext/pg_query/include/storage/shm_mq.h +0 -85
- data/ext/pg_query/include/storage/shm_toc.h +0 -58
- data/ext/pg_query/include/storage/shmem.h +0 -81
- data/ext/pg_query/include/storage/sinval.h +0 -153
- data/ext/pg_query/include/storage/sinvaladt.h +0 -43
- data/ext/pg_query/include/storage/smgr.h +0 -109
- data/ext/pg_query/include/storage/spin.h +0 -77
- data/ext/pg_query/include/storage/standby.h +0 -91
- data/ext/pg_query/include/storage/standbydefs.h +0 -74
- data/ext/pg_query/include/storage/sync.h +0 -62
- data/ext/pg_query/include/tcop/cmdtag.h +0 -58
- data/ext/pg_query/include/tcop/cmdtaglist.h +0 -217
- data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
- data/ext/pg_query/include/tcop/dest.h +0 -149
- data/ext/pg_query/include/tcop/fastpath.h +0 -21
- data/ext/pg_query/include/tcop/pquery.h +0 -51
- data/ext/pg_query/include/tcop/tcopprot.h +0 -89
- data/ext/pg_query/include/tcop/utility.h +0 -108
- data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
- data/ext/pg_query/include/utils/acl.h +0 -312
- data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
- data/ext/pg_query/include/utils/array.h +0 -459
- data/ext/pg_query/include/utils/builtins.h +0 -128
- data/ext/pg_query/include/utils/bytea.h +0 -27
- data/ext/pg_query/include/utils/catcache.h +0 -231
- data/ext/pg_query/include/utils/date.h +0 -90
- data/ext/pg_query/include/utils/datetime.h +0 -343
- data/ext/pg_query/include/utils/datum.h +0 -68
- data/ext/pg_query/include/utils/dsa.h +0 -123
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- data/ext/pg_query/include/utils/elog.h +0 -439
- data/ext/pg_query/include/utils/errcodes.h +0 -352
- data/ext/pg_query/include/utils/expandeddatum.h +0 -159
- data/ext/pg_query/include/utils/expandedrecord.h +0 -231
- data/ext/pg_query/include/utils/float.h +0 -356
- data/ext/pg_query/include/utils/fmgroids.h +0 -2657
- data/ext/pg_query/include/utils/fmgrprotos.h +0 -2646
- data/ext/pg_query/include/utils/fmgrtab.h +0 -48
- data/ext/pg_query/include/utils/guc.h +0 -443
- data/ext/pg_query/include/utils/guc_tables.h +0 -272
- data/ext/pg_query/include/utils/hsearch.h +0 -149
- data/ext/pg_query/include/utils/inval.h +0 -65
- data/ext/pg_query/include/utils/lsyscache.h +0 -198
- data/ext/pg_query/include/utils/memdebug.h +0 -82
- data/ext/pg_query/include/utils/memutils.h +0 -225
- data/ext/pg_query/include/utils/numeric.h +0 -76
- data/ext/pg_query/include/utils/palloc.h +0 -136
- data/ext/pg_query/include/utils/partcache.h +0 -102
- data/ext/pg_query/include/utils/pg_locale.h +0 -119
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/plancache.h +0 -235
- data/ext/pg_query/include/utils/portal.h +0 -254
- data/ext/pg_query/include/utils/probes.h +0 -114
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/queryenvironment.h +0 -74
- data/ext/pg_query/include/utils/regproc.h +0 -28
- data/ext/pg_query/include/utils/rel.h +0 -643
- data/ext/pg_query/include/utils/relcache.h +0 -150
- data/ext/pg_query/include/utils/reltrigger.h +0 -81
- data/ext/pg_query/include/utils/resowner.h +0 -86
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/ruleutils.h +0 -44
- data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
- data/ext/pg_query/include/utils/snapmgr.h +0 -159
- data/ext/pg_query/include/utils/snapshot.h +0 -206
- data/ext/pg_query/include/utils/sortsupport.h +0 -276
- data/ext/pg_query/include/utils/syscache.h +0 -219
- data/ext/pg_query/include/utils/timeout.h +0 -88
- data/ext/pg_query/include/utils/timestamp.h +0 -116
- data/ext/pg_query/include/utils/tuplesort.h +0 -277
- data/ext/pg_query/include/utils/tuplestore.h +0 -91
- data/ext/pg_query/include/utils/typcache.h +0 -202
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/include/utils/varlena.h +0 -39
- data/ext/pg_query/include/utils/xml.h +0 -84
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1832
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -0,0 +1,228 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* lwlock.h
|
4
|
+
* Lightweight lock manager
|
5
|
+
*
|
6
|
+
*
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
9
|
+
*
|
10
|
+
* src/include/storage/lwlock.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef LWLOCK_H
|
15
|
+
#define LWLOCK_H
|
16
|
+
|
17
|
+
#ifdef FRONTEND
|
18
|
+
#error "lwlock.h may not be included from frontend code"
|
19
|
+
#endif
|
20
|
+
|
21
|
+
#include "port/atomics.h"
|
22
|
+
#include "storage/lwlocknames.h"
|
23
|
+
#include "storage/proclist_types.h"
|
24
|
+
|
25
|
+
struct PGPROC;
|
26
|
+
|
27
|
+
/* what state of the wait process is a backend in */
|
28
|
+
typedef enum LWLockWaitState
|
29
|
+
{
|
30
|
+
LW_WS_NOT_WAITING, /* not currently waiting / woken up */
|
31
|
+
LW_WS_WAITING, /* currently waiting */
|
32
|
+
LW_WS_PENDING_WAKEUP, /* removed from waitlist, but not yet
|
33
|
+
* signalled */
|
34
|
+
} LWLockWaitState;
|
35
|
+
|
36
|
+
/*
|
37
|
+
* Code outside of lwlock.c should not manipulate the contents of this
|
38
|
+
* structure directly, but we have to declare it here to allow LWLocks to be
|
39
|
+
* incorporated into other data structures.
|
40
|
+
*/
|
41
|
+
typedef struct LWLock
|
42
|
+
{
|
43
|
+
uint16 tranche; /* tranche ID */
|
44
|
+
pg_atomic_uint32 state; /* state of exclusive/nonexclusive lockers */
|
45
|
+
proclist_head waiters; /* list of waiting PGPROCs */
|
46
|
+
#ifdef LOCK_DEBUG
|
47
|
+
pg_atomic_uint32 nwaiters; /* number of waiters */
|
48
|
+
struct PGPROC *owner; /* last exclusive owner of the lock */
|
49
|
+
#endif
|
50
|
+
} LWLock;
|
51
|
+
|
52
|
+
/*
|
53
|
+
* In most cases, it's desirable to force each tranche of LWLocks to be aligned
|
54
|
+
* on a cache line boundary and make the array stride a power of 2. This saves
|
55
|
+
* a few cycles in indexing, but more importantly ensures that individual
|
56
|
+
* LWLocks don't cross cache line boundaries. This reduces cache contention
|
57
|
+
* problems, especially on AMD Opterons. In some cases, it's useful to add
|
58
|
+
* even more padding so that each LWLock takes up an entire cache line; this is
|
59
|
+
* useful, for example, in the main LWLock array, where the overall number of
|
60
|
+
* locks is small but some are heavily contended.
|
61
|
+
*/
|
62
|
+
#define LWLOCK_PADDED_SIZE PG_CACHE_LINE_SIZE
|
63
|
+
|
64
|
+
StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
|
65
|
+
"Miscalculated LWLock padding");
|
66
|
+
|
67
|
+
/* LWLock, padded to a full cache line size */
|
68
|
+
typedef union LWLockPadded
|
69
|
+
{
|
70
|
+
LWLock lock;
|
71
|
+
char pad[LWLOCK_PADDED_SIZE];
|
72
|
+
} LWLockPadded;
|
73
|
+
|
74
|
+
extern PGDLLIMPORT LWLockPadded *MainLWLockArray;
|
75
|
+
|
76
|
+
/* struct for storing named tranche information */
|
77
|
+
typedef struct NamedLWLockTranche
|
78
|
+
{
|
79
|
+
int trancheId;
|
80
|
+
char *trancheName;
|
81
|
+
} NamedLWLockTranche;
|
82
|
+
|
83
|
+
extern PGDLLIMPORT NamedLWLockTranche *NamedLWLockTrancheArray;
|
84
|
+
extern PGDLLIMPORT int NamedLWLockTrancheRequests;
|
85
|
+
|
86
|
+
/*
|
87
|
+
* It's a bit odd to declare NUM_BUFFER_PARTITIONS and NUM_LOCK_PARTITIONS
|
88
|
+
* here, but we need them to figure out offsets within MainLWLockArray, and
|
89
|
+
* having this file include lock.h or bufmgr.h would be backwards.
|
90
|
+
*/
|
91
|
+
|
92
|
+
/* Number of partitions of the shared buffer mapping hashtable */
|
93
|
+
#define NUM_BUFFER_PARTITIONS 128
|
94
|
+
|
95
|
+
/* Number of partitions the shared lock tables are divided into */
|
96
|
+
#define LOG2_NUM_LOCK_PARTITIONS 4
|
97
|
+
#define NUM_LOCK_PARTITIONS (1 << LOG2_NUM_LOCK_PARTITIONS)
|
98
|
+
|
99
|
+
/* Number of partitions the shared predicate lock tables are divided into */
|
100
|
+
#define LOG2_NUM_PREDICATELOCK_PARTITIONS 4
|
101
|
+
#define NUM_PREDICATELOCK_PARTITIONS (1 << LOG2_NUM_PREDICATELOCK_PARTITIONS)
|
102
|
+
|
103
|
+
/* Offsets for various chunks of preallocated lwlocks. */
|
104
|
+
#define BUFFER_MAPPING_LWLOCK_OFFSET NUM_INDIVIDUAL_LWLOCKS
|
105
|
+
#define LOCK_MANAGER_LWLOCK_OFFSET \
|
106
|
+
(BUFFER_MAPPING_LWLOCK_OFFSET + NUM_BUFFER_PARTITIONS)
|
107
|
+
#define PREDICATELOCK_MANAGER_LWLOCK_OFFSET \
|
108
|
+
(LOCK_MANAGER_LWLOCK_OFFSET + NUM_LOCK_PARTITIONS)
|
109
|
+
#define NUM_FIXED_LWLOCKS \
|
110
|
+
(PREDICATELOCK_MANAGER_LWLOCK_OFFSET + NUM_PREDICATELOCK_PARTITIONS)
|
111
|
+
|
112
|
+
typedef enum LWLockMode
|
113
|
+
{
|
114
|
+
LW_EXCLUSIVE,
|
115
|
+
LW_SHARED,
|
116
|
+
LW_WAIT_UNTIL_FREE, /* A special mode used in PGPROC->lwWaitMode,
|
117
|
+
* when waiting for lock to become free. Not
|
118
|
+
* to be used as LWLockAcquire argument */
|
119
|
+
} LWLockMode;
|
120
|
+
|
121
|
+
|
122
|
+
#ifdef LOCK_DEBUG
|
123
|
+
extern PGDLLIMPORT bool Trace_lwlocks;
|
124
|
+
#endif
|
125
|
+
|
126
|
+
extern bool LWLockAcquire(LWLock *lock, LWLockMode mode);
|
127
|
+
extern bool LWLockConditionalAcquire(LWLock *lock, LWLockMode mode);
|
128
|
+
extern bool LWLockAcquireOrWait(LWLock *lock, LWLockMode mode);
|
129
|
+
extern void LWLockRelease(LWLock *lock);
|
130
|
+
extern void LWLockReleaseClearVar(LWLock *lock, pg_atomic_uint64 *valptr, uint64 val);
|
131
|
+
extern void LWLockReleaseAll(void);
|
132
|
+
extern bool LWLockHeldByMe(LWLock *lock);
|
133
|
+
extern bool LWLockAnyHeldByMe(LWLock *lock, int nlocks, size_t stride);
|
134
|
+
extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode);
|
135
|
+
|
136
|
+
extern bool LWLockWaitForVar(LWLock *lock, pg_atomic_uint64 *valptr, uint64 oldval, uint64 *newval);
|
137
|
+
extern void LWLockUpdateVar(LWLock *lock, pg_atomic_uint64 *valptr, uint64 val);
|
138
|
+
|
139
|
+
extern Size LWLockShmemSize(void);
|
140
|
+
extern void CreateLWLocks(void);
|
141
|
+
extern void InitLWLockAccess(void);
|
142
|
+
|
143
|
+
extern const char *GetLWLockIdentifier(uint32 classId, uint16 eventId);
|
144
|
+
|
145
|
+
/*
|
146
|
+
* Extensions (or core code) can obtain an LWLocks by calling
|
147
|
+
* RequestNamedLWLockTranche() during postmaster startup. Subsequently,
|
148
|
+
* call GetNamedLWLockTranche() to obtain a pointer to an array containing
|
149
|
+
* the number of LWLocks requested.
|
150
|
+
*/
|
151
|
+
extern void RequestNamedLWLockTranche(const char *tranche_name, int num_lwlocks);
|
152
|
+
extern LWLockPadded *GetNamedLWLockTranche(const char *tranche_name);
|
153
|
+
|
154
|
+
/*
|
155
|
+
* There is another, more flexible method of obtaining lwlocks. First, call
|
156
|
+
* LWLockNewTrancheId just once to obtain a tranche ID; this allocates from
|
157
|
+
* a shared counter. Next, each individual process using the tranche should
|
158
|
+
* call LWLockRegisterTranche() to associate that tranche ID with a name.
|
159
|
+
* Finally, LWLockInitialize should be called just once per lwlock, passing
|
160
|
+
* the tranche ID as an argument.
|
161
|
+
*
|
162
|
+
* It may seem strange that each process using the tranche must register it
|
163
|
+
* separately, but dynamic shared memory segments aren't guaranteed to be
|
164
|
+
* mapped at the same address in all coordinating backends, so storing the
|
165
|
+
* registration in the main shared memory segment wouldn't work for that case.
|
166
|
+
*/
|
167
|
+
extern int LWLockNewTrancheId(void);
|
168
|
+
extern void LWLockRegisterTranche(int tranche_id, const char *tranche_name);
|
169
|
+
extern void LWLockInitialize(LWLock *lock, int tranche_id);
|
170
|
+
|
171
|
+
/*
|
172
|
+
* Every tranche ID less than NUM_INDIVIDUAL_LWLOCKS is reserved; also,
|
173
|
+
* we reserve additional tranche IDs for builtin tranches not included in
|
174
|
+
* the set of individual LWLocks. A call to LWLockNewTrancheId will never
|
175
|
+
* return a value less than LWTRANCHE_FIRST_USER_DEFINED.
|
176
|
+
*/
|
177
|
+
typedef enum BuiltinTrancheIds
|
178
|
+
{
|
179
|
+
LWTRANCHE_XACT_BUFFER = NUM_INDIVIDUAL_LWLOCKS,
|
180
|
+
LWTRANCHE_COMMITTS_BUFFER,
|
181
|
+
LWTRANCHE_SUBTRANS_BUFFER,
|
182
|
+
LWTRANCHE_MULTIXACTOFFSET_BUFFER,
|
183
|
+
LWTRANCHE_MULTIXACTMEMBER_BUFFER,
|
184
|
+
LWTRANCHE_NOTIFY_BUFFER,
|
185
|
+
LWTRANCHE_SERIAL_BUFFER,
|
186
|
+
LWTRANCHE_WAL_INSERT,
|
187
|
+
LWTRANCHE_BUFFER_CONTENT,
|
188
|
+
LWTRANCHE_REPLICATION_ORIGIN_STATE,
|
189
|
+
LWTRANCHE_REPLICATION_SLOT_IO,
|
190
|
+
LWTRANCHE_LOCK_FASTPATH,
|
191
|
+
LWTRANCHE_BUFFER_MAPPING,
|
192
|
+
LWTRANCHE_LOCK_MANAGER,
|
193
|
+
LWTRANCHE_PREDICATE_LOCK_MANAGER,
|
194
|
+
LWTRANCHE_PARALLEL_HASH_JOIN,
|
195
|
+
LWTRANCHE_PARALLEL_QUERY_DSA,
|
196
|
+
LWTRANCHE_PER_SESSION_DSA,
|
197
|
+
LWTRANCHE_PER_SESSION_RECORD_TYPE,
|
198
|
+
LWTRANCHE_PER_SESSION_RECORD_TYPMOD,
|
199
|
+
LWTRANCHE_SHARED_TUPLESTORE,
|
200
|
+
LWTRANCHE_SHARED_TIDBITMAP,
|
201
|
+
LWTRANCHE_PARALLEL_APPEND,
|
202
|
+
LWTRANCHE_PER_XACT_PREDICATE_LIST,
|
203
|
+
LWTRANCHE_PGSTATS_DSA,
|
204
|
+
LWTRANCHE_PGSTATS_HASH,
|
205
|
+
LWTRANCHE_PGSTATS_DATA,
|
206
|
+
LWTRANCHE_LAUNCHER_DSA,
|
207
|
+
LWTRANCHE_LAUNCHER_HASH,
|
208
|
+
LWTRANCHE_DSM_REGISTRY_DSA,
|
209
|
+
LWTRANCHE_DSM_REGISTRY_HASH,
|
210
|
+
LWTRANCHE_COMMITTS_SLRU,
|
211
|
+
LWTRANCHE_MULTIXACTMEMBER_SLRU,
|
212
|
+
LWTRANCHE_MULTIXACTOFFSET_SLRU,
|
213
|
+
LWTRANCHE_NOTIFY_SLRU,
|
214
|
+
LWTRANCHE_SERIAL_SLRU,
|
215
|
+
LWTRANCHE_SUBTRANS_SLRU,
|
216
|
+
LWTRANCHE_XACT_SLRU,
|
217
|
+
LWTRANCHE_PARALLEL_VACUUM_DSA,
|
218
|
+
LWTRANCHE_FIRST_USER_DEFINED,
|
219
|
+
} BuiltinTrancheIds;
|
220
|
+
|
221
|
+
/*
|
222
|
+
* Prior to PostgreSQL 9.4, we used an enum type called LWLockId to refer
|
223
|
+
* to LWLocks. New code should instead use LWLock *. However, for the
|
224
|
+
* convenience of third-party code, we include the following typedef.
|
225
|
+
*/
|
226
|
+
typedef LWLock *LWLockId;
|
227
|
+
|
228
|
+
#endif /* LWLOCK_H */
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/* autogenerated from src/include/storage/lwlocklist.h, do not edit */
|
2
|
+
/* there is deliberately not an #ifndef LWLOCKNAMES_H here */
|
3
|
+
|
4
|
+
#define ShmemIndexLock (&MainLWLockArray[1].lock)
|
5
|
+
#define OidGenLock (&MainLWLockArray[2].lock)
|
6
|
+
#define XidGenLock (&MainLWLockArray[3].lock)
|
7
|
+
#define ProcArrayLock (&MainLWLockArray[4].lock)
|
8
|
+
#define SInvalReadLock (&MainLWLockArray[5].lock)
|
9
|
+
#define SInvalWriteLock (&MainLWLockArray[6].lock)
|
10
|
+
#define WALBufMappingLock (&MainLWLockArray[7].lock)
|
11
|
+
#define WALWriteLock (&MainLWLockArray[8].lock)
|
12
|
+
#define ControlFileLock (&MainLWLockArray[9].lock)
|
13
|
+
#define MultiXactGenLock (&MainLWLockArray[13].lock)
|
14
|
+
#define RelCacheInitLock (&MainLWLockArray[16].lock)
|
15
|
+
#define CheckpointerCommLock (&MainLWLockArray[17].lock)
|
16
|
+
#define TwoPhaseStateLock (&MainLWLockArray[18].lock)
|
17
|
+
#define TablespaceCreateLock (&MainLWLockArray[19].lock)
|
18
|
+
#define BtreeVacuumLock (&MainLWLockArray[20].lock)
|
19
|
+
#define AddinShmemInitLock (&MainLWLockArray[21].lock)
|
20
|
+
#define AutovacuumLock (&MainLWLockArray[22].lock)
|
21
|
+
#define AutovacuumScheduleLock (&MainLWLockArray[23].lock)
|
22
|
+
#define SyncScanLock (&MainLWLockArray[24].lock)
|
23
|
+
#define RelationMappingLock (&MainLWLockArray[25].lock)
|
24
|
+
#define NotifyQueueLock (&MainLWLockArray[27].lock)
|
25
|
+
#define SerializableXactHashLock (&MainLWLockArray[28].lock)
|
26
|
+
#define SerializableFinishedListLock (&MainLWLockArray[29].lock)
|
27
|
+
#define SerializablePredicateListLock (&MainLWLockArray[30].lock)
|
28
|
+
#define SyncRepLock (&MainLWLockArray[32].lock)
|
29
|
+
#define BackgroundWorkerLock (&MainLWLockArray[33].lock)
|
30
|
+
#define DynamicSharedMemoryControlLock (&MainLWLockArray[34].lock)
|
31
|
+
#define AutoFileLock (&MainLWLockArray[35].lock)
|
32
|
+
#define ReplicationSlotAllocationLock (&MainLWLockArray[36].lock)
|
33
|
+
#define ReplicationSlotControlLock (&MainLWLockArray[37].lock)
|
34
|
+
#define CommitTsLock (&MainLWLockArray[39].lock)
|
35
|
+
#define ReplicationOriginLock (&MainLWLockArray[40].lock)
|
36
|
+
#define MultiXactTruncationLock (&MainLWLockArray[41].lock)
|
37
|
+
#define LogicalRepWorkerLock (&MainLWLockArray[43].lock)
|
38
|
+
#define XactTruncationLock (&MainLWLockArray[44].lock)
|
39
|
+
#define WrapLimitsVacuumLock (&MainLWLockArray[46].lock)
|
40
|
+
#define NotifyQueueTailLock (&MainLWLockArray[47].lock)
|
41
|
+
#define WaitEventCustomLock (&MainLWLockArray[48].lock)
|
42
|
+
#define WALSummarizerLock (&MainLWLockArray[49].lock)
|
43
|
+
#define DSMRegistryLock (&MainLWLockArray[50].lock)
|
44
|
+
#define InjectionPointLock (&MainLWLockArray[51].lock)
|
45
|
+
#define SerialControlLock (&MainLWLockArray[52].lock)
|
46
|
+
|
47
|
+
#define NUM_INDIVIDUAL_LWLOCKS 53
|
@@ -0,0 +1,57 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* off.h
|
4
|
+
* POSTGRES disk "offset" definitions.
|
5
|
+
*
|
6
|
+
*
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
9
|
+
*
|
10
|
+
* src/include/storage/off.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef OFF_H
|
15
|
+
#define OFF_H
|
16
|
+
|
17
|
+
#include "storage/itemid.h"
|
18
|
+
/*
|
19
|
+
* OffsetNumber:
|
20
|
+
*
|
21
|
+
* this is a 1-based index into the linp (ItemIdData) array in the
|
22
|
+
* header of each disk page.
|
23
|
+
*/
|
24
|
+
typedef uint16 OffsetNumber;
|
25
|
+
|
26
|
+
#define InvalidOffsetNumber ((OffsetNumber) 0)
|
27
|
+
#define FirstOffsetNumber ((OffsetNumber) 1)
|
28
|
+
#define MaxOffsetNumber ((OffsetNumber) (BLCKSZ / sizeof(ItemIdData)))
|
29
|
+
|
30
|
+
/* ----------------
|
31
|
+
* support macros
|
32
|
+
* ----------------
|
33
|
+
*/
|
34
|
+
|
35
|
+
/*
|
36
|
+
* OffsetNumberIsValid
|
37
|
+
* True iff the offset number is valid.
|
38
|
+
*/
|
39
|
+
#define OffsetNumberIsValid(offsetNumber) \
|
40
|
+
((bool) ((offsetNumber != InvalidOffsetNumber) && \
|
41
|
+
(offsetNumber <= MaxOffsetNumber)))
|
42
|
+
|
43
|
+
/*
|
44
|
+
* OffsetNumberNext
|
45
|
+
* OffsetNumberPrev
|
46
|
+
* Increments/decrements the argument. These macros look pointless
|
47
|
+
* but they help us disambiguate the different manipulations on
|
48
|
+
* OffsetNumbers (e.g., sometimes we subtract one from an
|
49
|
+
* OffsetNumber to move back, and sometimes we do so to form a
|
50
|
+
* real C array index).
|
51
|
+
*/
|
52
|
+
#define OffsetNumberNext(offsetNumber) \
|
53
|
+
((OffsetNumber) (1 + (offsetNumber)))
|
54
|
+
#define OffsetNumberPrev(offsetNumber) \
|
55
|
+
((OffsetNumber) (-1 + (offsetNumber)))
|
56
|
+
|
57
|
+
#endif /* OFF_H */
|
@@ -0,0 +1,61 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* pg_sema.h
|
4
|
+
* Platform-independent API for semaphores.
|
5
|
+
*
|
6
|
+
* PostgreSQL requires counting semaphores (the kind that keep track of
|
7
|
+
* multiple unlock operations, and will allow an equal number of subsequent
|
8
|
+
* lock operations before blocking). The underlying implementation is
|
9
|
+
* not the same on every platform. This file defines the API that must
|
10
|
+
* be provided by each port.
|
11
|
+
*
|
12
|
+
*
|
13
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
14
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
15
|
+
*
|
16
|
+
* src/include/storage/pg_sema.h
|
17
|
+
*
|
18
|
+
*-------------------------------------------------------------------------
|
19
|
+
*/
|
20
|
+
#ifndef PG_SEMA_H
|
21
|
+
#define PG_SEMA_H
|
22
|
+
|
23
|
+
/*
|
24
|
+
* struct PGSemaphoreData and pointer type PGSemaphore are the data structure
|
25
|
+
* representing an individual semaphore. The contents of PGSemaphoreData vary
|
26
|
+
* across implementations and must never be touched by platform-independent
|
27
|
+
* code; hence, PGSemaphoreData is declared as an opaque struct here.
|
28
|
+
*
|
29
|
+
* However, Windows is sufficiently unlike our other ports that it doesn't
|
30
|
+
* seem worth insisting on ABI compatibility for Windows too. Hence, on
|
31
|
+
* that platform just define PGSemaphore as HANDLE.
|
32
|
+
*/
|
33
|
+
#ifndef USE_WIN32_SEMAPHORES
|
34
|
+
typedef struct PGSemaphoreData *PGSemaphore;
|
35
|
+
#else
|
36
|
+
typedef HANDLE PGSemaphore;
|
37
|
+
#endif
|
38
|
+
|
39
|
+
|
40
|
+
/* Report amount of shared memory needed */
|
41
|
+
extern Size PGSemaphoreShmemSize(int maxSemas);
|
42
|
+
|
43
|
+
/* Module initialization (called during postmaster start or shmem reinit) */
|
44
|
+
extern void PGReserveSemaphores(int maxSemas);
|
45
|
+
|
46
|
+
/* Allocate a PGSemaphore structure with initial count 1 */
|
47
|
+
extern PGSemaphore PGSemaphoreCreate(void);
|
48
|
+
|
49
|
+
/* Reset a previously-initialized PGSemaphore to have count 0 */
|
50
|
+
extern void PGSemaphoreReset(PGSemaphore sema);
|
51
|
+
|
52
|
+
/* Lock a semaphore (decrement count), blocking if count would be < 0 */
|
53
|
+
extern void PGSemaphoreLock(PGSemaphore sema);
|
54
|
+
|
55
|
+
/* Unlock a semaphore (increment count) */
|
56
|
+
extern void PGSemaphoreUnlock(PGSemaphore sema);
|
57
|
+
|
58
|
+
/* Lock a semaphore only if able to do so without blocking */
|
59
|
+
extern bool PGSemaphoreTryLock(PGSemaphore sema);
|
60
|
+
|
61
|
+
#endif /* PG_SEMA_H */
|
@@ -0,0 +1,93 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* pg_shmem.h
|
4
|
+
* Platform-independent API for shared memory support.
|
5
|
+
*
|
6
|
+
* Every port is expected to support shared memory with approximately
|
7
|
+
* SysV-ish semantics; in particular, a memory block is not anonymous
|
8
|
+
* but has an ID, and we must be able to tell whether there are any
|
9
|
+
* remaining processes attached to a block of a specified ID.
|
10
|
+
*
|
11
|
+
* To simplify life for the SysV implementation, the ID is assumed to
|
12
|
+
* consist of two unsigned long values (these are key and ID in SysV
|
13
|
+
* terms). Other platforms may ignore the second value if they need
|
14
|
+
* only one ID number.
|
15
|
+
*
|
16
|
+
*
|
17
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
18
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
19
|
+
*
|
20
|
+
* src/include/storage/pg_shmem.h
|
21
|
+
*
|
22
|
+
*-------------------------------------------------------------------------
|
23
|
+
*/
|
24
|
+
#ifndef PG_SHMEM_H
|
25
|
+
#define PG_SHMEM_H
|
26
|
+
|
27
|
+
#include "storage/dsm_impl.h"
|
28
|
+
|
29
|
+
typedef struct PGShmemHeader /* standard header for all Postgres shmem */
|
30
|
+
{
|
31
|
+
int32 magic; /* magic # to identify Postgres segments */
|
32
|
+
#define PGShmemMagic 679834894
|
33
|
+
pid_t creatorPID; /* PID of creating process (set but unread) */
|
34
|
+
Size totalsize; /* total size of segment */
|
35
|
+
Size freeoffset; /* offset to first free space */
|
36
|
+
dsm_handle dsm_control; /* ID of dynamic shared memory control seg */
|
37
|
+
void *index; /* pointer to ShmemIndex table */
|
38
|
+
#ifndef WIN32 /* Windows doesn't have useful inode#s */
|
39
|
+
dev_t device; /* device data directory is on */
|
40
|
+
ino_t inode; /* inode number of data directory */
|
41
|
+
#endif
|
42
|
+
} PGShmemHeader;
|
43
|
+
|
44
|
+
/* GUC variables */
|
45
|
+
extern PGDLLIMPORT int shared_memory_type;
|
46
|
+
extern PGDLLIMPORT int huge_pages;
|
47
|
+
extern PGDLLIMPORT int huge_page_size;
|
48
|
+
|
49
|
+
/* Possible values for huge_pages and huge_pages_status */
|
50
|
+
typedef enum
|
51
|
+
{
|
52
|
+
HUGE_PAGES_OFF,
|
53
|
+
HUGE_PAGES_ON,
|
54
|
+
HUGE_PAGES_TRY, /* only for huge_pages */
|
55
|
+
HUGE_PAGES_UNKNOWN, /* only for huge_pages_status */
|
56
|
+
} HugePagesType;
|
57
|
+
|
58
|
+
/* Possible values for shared_memory_type */
|
59
|
+
typedef enum
|
60
|
+
{
|
61
|
+
SHMEM_TYPE_WINDOWS,
|
62
|
+
SHMEM_TYPE_SYSV,
|
63
|
+
SHMEM_TYPE_MMAP,
|
64
|
+
} PGShmemType;
|
65
|
+
|
66
|
+
#ifndef WIN32
|
67
|
+
extern PGDLLIMPORT unsigned long UsedShmemSegID;
|
68
|
+
#else
|
69
|
+
extern PGDLLIMPORT HANDLE UsedShmemSegID;
|
70
|
+
extern PGDLLIMPORT void *ShmemProtectiveRegion;
|
71
|
+
#endif
|
72
|
+
extern PGDLLIMPORT void *UsedShmemSegAddr;
|
73
|
+
|
74
|
+
#if !defined(WIN32) && !defined(EXEC_BACKEND)
|
75
|
+
#define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_MMAP
|
76
|
+
#elif !defined(WIN32)
|
77
|
+
#define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_SYSV
|
78
|
+
#else
|
79
|
+
#define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_WINDOWS
|
80
|
+
#endif
|
81
|
+
|
82
|
+
#ifdef EXEC_BACKEND
|
83
|
+
extern void PGSharedMemoryReAttach(void);
|
84
|
+
extern void PGSharedMemoryNoReAttach(void);
|
85
|
+
#endif
|
86
|
+
|
87
|
+
extern PGShmemHeader *PGSharedMemoryCreate(Size size,
|
88
|
+
PGShmemHeader **shim);
|
89
|
+
extern bool PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2);
|
90
|
+
extern void PGSharedMemoryDetach(void);
|
91
|
+
extern void GetHugePageSize(Size *hugepagesize, int *mmap_flags);
|
92
|
+
|
93
|
+
#endif /* PG_SHMEM_H */
|
@@ -0,0 +1,105 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* pmsignal.h
|
4
|
+
* routines for signaling between the postmaster and its child processes
|
5
|
+
*
|
6
|
+
*
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
9
|
+
*
|
10
|
+
* src/include/storage/pmsignal.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef PMSIGNAL_H
|
15
|
+
#define PMSIGNAL_H
|
16
|
+
|
17
|
+
#include <signal.h>
|
18
|
+
|
19
|
+
#ifdef HAVE_SYS_PRCTL_H
|
20
|
+
#include "sys/prctl.h"
|
21
|
+
#endif
|
22
|
+
|
23
|
+
#ifdef HAVE_SYS_PROCCTL_H
|
24
|
+
#include "sys/procctl.h"
|
25
|
+
#endif
|
26
|
+
|
27
|
+
/*
|
28
|
+
* Reasons for signaling the postmaster. We can cope with simultaneous
|
29
|
+
* signals for different reasons. If the same reason is signaled multiple
|
30
|
+
* times in quick succession, however, the postmaster is likely to observe
|
31
|
+
* only one notification of it. This is okay for the present uses.
|
32
|
+
*/
|
33
|
+
typedef enum
|
34
|
+
{
|
35
|
+
PMSIGNAL_RECOVERY_STARTED, /* recovery has started */
|
36
|
+
PMSIGNAL_BEGIN_HOT_STANDBY, /* begin Hot Standby */
|
37
|
+
PMSIGNAL_ROTATE_LOGFILE, /* send SIGUSR1 to syslogger to rotate logfile */
|
38
|
+
PMSIGNAL_START_AUTOVAC_LAUNCHER, /* start an autovacuum launcher */
|
39
|
+
PMSIGNAL_START_AUTOVAC_WORKER, /* start an autovacuum worker */
|
40
|
+
PMSIGNAL_BACKGROUND_WORKER_CHANGE, /* background worker state change */
|
41
|
+
PMSIGNAL_START_WALRECEIVER, /* start a walreceiver */
|
42
|
+
PMSIGNAL_ADVANCE_STATE_MACHINE, /* advance postmaster's state machine */
|
43
|
+
|
44
|
+
NUM_PMSIGNALS /* Must be last value of enum! */
|
45
|
+
} PMSignalReason;
|
46
|
+
|
47
|
+
/*
|
48
|
+
* Reasons why the postmaster would send SIGQUIT to its children.
|
49
|
+
*/
|
50
|
+
typedef enum
|
51
|
+
{
|
52
|
+
PMQUIT_NOT_SENT = 0, /* postmaster hasn't sent SIGQUIT */
|
53
|
+
PMQUIT_FOR_CRASH, /* some other backend bought the farm */
|
54
|
+
PMQUIT_FOR_STOP, /* immediate stop was commanded */
|
55
|
+
} QuitSignalReason;
|
56
|
+
|
57
|
+
/* PMSignalData is an opaque struct, details known only within pmsignal.c */
|
58
|
+
typedef struct PMSignalData PMSignalData;
|
59
|
+
|
60
|
+
/*
|
61
|
+
* prototypes for functions in pmsignal.c
|
62
|
+
*/
|
63
|
+
extern Size PMSignalShmemSize(void);
|
64
|
+
extern void PMSignalShmemInit(void);
|
65
|
+
extern void SendPostmasterSignal(PMSignalReason reason);
|
66
|
+
extern bool CheckPostmasterSignal(PMSignalReason reason);
|
67
|
+
extern void SetQuitSignalReason(QuitSignalReason reason);
|
68
|
+
extern QuitSignalReason GetQuitSignalReason(void);
|
69
|
+
extern int AssignPostmasterChildSlot(void);
|
70
|
+
extern bool ReleasePostmasterChildSlot(int slot);
|
71
|
+
extern bool IsPostmasterChildWalSender(int slot);
|
72
|
+
extern void MarkPostmasterChildActive(void);
|
73
|
+
extern void MarkPostmasterChildInactive(void);
|
74
|
+
extern void MarkPostmasterChildWalSender(void);
|
75
|
+
extern bool PostmasterIsAliveInternal(void);
|
76
|
+
extern void PostmasterDeathSignalInit(void);
|
77
|
+
|
78
|
+
|
79
|
+
/*
|
80
|
+
* Do we have a way to ask for a signal on parent death?
|
81
|
+
*
|
82
|
+
* If we do, pmsignal.c will set up a signal handler, that sets a flag when
|
83
|
+
* the parent dies. Checking the flag first makes PostmasterIsAlive() a lot
|
84
|
+
* cheaper in usual case that the postmaster is alive.
|
85
|
+
*/
|
86
|
+
#if (defined(HAVE_SYS_PRCTL_H) && defined(PR_SET_PDEATHSIG)) || \
|
87
|
+
(defined(HAVE_SYS_PROCCTL_H) && defined(PROC_PDEATHSIG_CTL))
|
88
|
+
#define USE_POSTMASTER_DEATH_SIGNAL
|
89
|
+
#endif
|
90
|
+
|
91
|
+
#ifdef USE_POSTMASTER_DEATH_SIGNAL
|
92
|
+
extern PGDLLIMPORT volatile sig_atomic_t postmaster_possibly_dead;
|
93
|
+
|
94
|
+
static inline bool
|
95
|
+
PostmasterIsAlive(void)
|
96
|
+
{
|
97
|
+
if (likely(!postmaster_possibly_dead))
|
98
|
+
return true;
|
99
|
+
return PostmasterIsAliveInternal();
|
100
|
+
}
|
101
|
+
#else
|
102
|
+
#define PostmasterIsAlive() PostmasterIsAliveInternal()
|
103
|
+
#endif
|
104
|
+
|
105
|
+
#endif /* PMSIGNAL_H */
|
@@ -0,0 +1,83 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* predicate.h
|
4
|
+
* POSTGRES public predicate locking definitions.
|
5
|
+
*
|
6
|
+
*
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
9
|
+
*
|
10
|
+
* src/include/storage/predicate.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef PREDICATE_H
|
15
|
+
#define PREDICATE_H
|
16
|
+
|
17
|
+
#include "storage/lock.h"
|
18
|
+
#include "utils/relcache.h"
|
19
|
+
#include "utils/snapshot.h"
|
20
|
+
|
21
|
+
|
22
|
+
/*
|
23
|
+
* GUC variables
|
24
|
+
*/
|
25
|
+
extern PGDLLIMPORT int max_predicate_locks_per_xact;
|
26
|
+
extern PGDLLIMPORT int max_predicate_locks_per_relation;
|
27
|
+
extern PGDLLIMPORT int max_predicate_locks_per_page;
|
28
|
+
|
29
|
+
/*
|
30
|
+
* A handle used for sharing SERIALIZABLEXACT objects between the participants
|
31
|
+
* in a parallel query.
|
32
|
+
*/
|
33
|
+
typedef void *SerializableXactHandle;
|
34
|
+
|
35
|
+
/*
|
36
|
+
* function prototypes
|
37
|
+
*/
|
38
|
+
|
39
|
+
/* housekeeping for shared memory predicate lock structures */
|
40
|
+
extern void InitPredicateLocks(void);
|
41
|
+
extern Size PredicateLockShmemSize(void);
|
42
|
+
|
43
|
+
extern void CheckPointPredicate(void);
|
44
|
+
|
45
|
+
/* predicate lock reporting */
|
46
|
+
extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno);
|
47
|
+
|
48
|
+
/* predicate lock maintenance */
|
49
|
+
extern Snapshot GetSerializableTransactionSnapshot(Snapshot snapshot);
|
50
|
+
extern void SetSerializableTransactionSnapshot(Snapshot snapshot,
|
51
|
+
VirtualTransactionId *sourcevxid,
|
52
|
+
int sourcepid);
|
53
|
+
extern void RegisterPredicateLockingXid(TransactionId xid);
|
54
|
+
extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
|
55
|
+
extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
|
56
|
+
extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot,
|
57
|
+
TransactionId tuple_xid);
|
58
|
+
extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
|
59
|
+
extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
|
60
|
+
extern void TransferPredicateLocksToHeapRelation(Relation relation);
|
61
|
+
extern void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe);
|
62
|
+
|
63
|
+
/* conflict detection (may also trigger rollback) */
|
64
|
+
extern bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot);
|
65
|
+
extern void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot);
|
66
|
+
extern void CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno);
|
67
|
+
extern void CheckTableForSerializableConflictIn(Relation relation);
|
68
|
+
|
69
|
+
/* final rollback checking */
|
70
|
+
extern void PreCommit_CheckForSerializationFailure(void);
|
71
|
+
|
72
|
+
/* two-phase commit support */
|
73
|
+
extern void AtPrepare_PredicateLocks(void);
|
74
|
+
extern void PostPrepare_PredicateLocks(TransactionId xid);
|
75
|
+
extern void PredicateLockTwoPhaseFinish(TransactionId xid, bool isCommit);
|
76
|
+
extern void predicatelock_twophase_recover(TransactionId xid, uint16 info,
|
77
|
+
void *recdata, uint32 len);
|
78
|
+
|
79
|
+
/* parallel query support */
|
80
|
+
extern SerializableXactHandle ShareSerializableXact(void);
|
81
|
+
extern void AttachSerializableXact(SerializableXactHandle handle);
|
82
|
+
|
83
|
+
#endif /* PREDICATE_H */
|