pg_query 5.1.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 +30 -0
- data/README.md +1 -1
- data/Rakefile +4 -4
- 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 +20 -6
- data/ext/pg_query/include/pg_query.h +4 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
- data/ext/pg_query/include/postgres/access/amapi.h +14 -3
- data/ext/pg_query/include/postgres/access/attmap.h +1 -1
- data/ext/pg_query/include/postgres/access/attnum.h +1 -1
- 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 +2 -3
- data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
- data/ext/pg_query/include/postgres/access/detoast.h +1 -1
- data/ext/pg_query/include/postgres/access/genam.h +17 -4
- data/ext/pg_query/include/postgres/access/gin.h +1 -1
- data/ext/pg_query/include/postgres/access/htup.h +1 -1
- data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
- data/ext/pg_query/include/postgres/access/itup.h +3 -3
- data/ext/pg_query/include/postgres/access/parallel.h +1 -2
- data/ext/pg_query/include/postgres/access/printtup.h +1 -1
- data/ext/pg_query/include/postgres/access/relation.h +1 -1
- data/ext/pg_query/include/postgres/access/relscan.h +1 -1
- data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
- data/ext/pg_query/include/postgres/access/sdir.h +1 -1
- data/ext/pg_query/include/postgres/access/skey.h +1 -1
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
- data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
- data/ext/pg_query/include/postgres/access/table.h +1 -1
- data/ext/pg_query/include/postgres/access/tableam.h +35 -25
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
- data/ext/pg_query/include/postgres/access/transam.h +50 -7
- data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
- data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
- data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
- data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
- data/ext/pg_query/include/postgres/access/twophase.h +2 -2
- data/ext/pg_query/include/postgres/access/xact.h +5 -5
- data/ext/pg_query/include/postgres/access/xlog.h +20 -12
- data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
- data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
- data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
- data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
- data/ext/pg_query/include/postgres/c.h +32 -37
- data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
- data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
- data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
- data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
- data/ext/pg_query/include/postgres/catalog/index.h +22 -18
- data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
- data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +2 -6
- data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
- data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
- data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
- data/ext/pg_query/include/postgres/commands/explain.h +19 -3
- data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
- data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
- data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
- data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
- data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
- data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +79 -4
- data/ext/pg_query/include/postgres/common/keywords.h +1 -1
- data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
- data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
- data/ext/pg_query/include/postgres/common/relpath.h +4 -4
- data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
- data/ext/pg_query/include/postgres/common/sha2.h +1 -1
- data/ext/pg_query/include/postgres/common/string.h +1 -1
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
- data/ext/pg_query/include/postgres/executor/executor.h +6 -5
- data/ext/pg_query/include/postgres/executor/functions.h +2 -1
- data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
- data/ext/pg_query/include/postgres/executor/spi.h +2 -8
- data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
- data/ext/pg_query/include/postgres/fmgr.h +2 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
- data/ext/pg_query/include/postgres/funcapi.h +2 -2
- data/ext/pg_query/include/postgres/gram.h +871 -830
- data/ext/pg_query/include/postgres/gramparse.h +1 -1
- data/ext/pg_query/include/postgres/jit/jit.h +4 -3
- data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
- data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
- data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
- data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
- data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
- data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
- data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
- data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
- data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
- data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
- data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
- data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/postgres/miscadmin.h +72 -52
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
- data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
- data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
- data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
- data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
- data/ext/pg_query/include/postgres/nodes/params.h +1 -1
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
- data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
- data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
- data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
- data/ext/pg_query/include/postgres/nodes/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
- data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
- data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
- data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
- data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
- data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
- data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
- data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
- data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
- data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
- data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
- data/ext/pg_query/include/postgres/parser/parser.h +3 -3
- data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
- data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
- data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/postgres/pg_config.h +53 -45
- data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
- data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
- data/ext/pg_query/include/postgres/pg_trace.h +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +13 -11
- data/ext/pg_query/include/postgres/pgtime.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
- data/ext/pg_query/include/postgres/plpgsql.h +15 -13
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
- data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
- data/ext/pg_query/include/postgres/port/atomics.h +93 -6
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
- data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +48 -1
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
- data/ext/pg_query/include/postgres/port.h +39 -4
- data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres/postgres.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
- data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
- data/ext/pg_query/include/postgres/regex/regex.h +92 -9
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
- data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
- data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
- data/ext/pg_query/include/postgres/replication/origin.h +1 -1
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
- data/ext/pg_query/include/postgres/replication/slot.h +45 -5
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
- data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
- data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/postgres/storage/block.h +1 -1
- data/ext/pg_query/include/postgres/storage/buf.h +1 -1
- data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
- data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
- data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
- data/ext/pg_query/include/postgres/storage/fd.h +30 -13
- data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
- data/ext/pg_query/include/postgres/storage/item.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
- data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
- data/ext/pg_query/include/postgres/storage/latch.h +4 -2
- data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
- data/ext/pg_query/include/postgres/storage/lock.h +19 -19
- data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
- data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
- data/ext/pg_query/include/postgres/storage/off.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
- data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
- data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
- data/ext/pg_query/include/postgres/storage/proc.h +48 -26
- data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
- data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
- data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
- data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
- data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
- data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
- data/ext/pg_query/include/postgres/storage/spin.h +1 -1
- data/ext/pg_query/include/postgres/storage/standby.h +13 -3
- data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/postgres/storage/sync.h +4 -4
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
- data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
- data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
- data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
- data/ext/pg_query/include/postgres/utils/acl.h +19 -7
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/postgres/utils/array.h +1 -2
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
- data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
- data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
- data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
- data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
- data/ext/pg_query/include/postgres/utils/date.h +1 -1
- data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
- data/ext/pg_query/include/postgres/utils/datum.h +1 -1
- data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
- data/ext/pg_query/include/postgres/utils/elog.h +3 -8
- data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/postgres/utils/float.h +1 -1
- data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/postgres/utils/guc.h +20 -6
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
- data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
- data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +1 -1
- data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
- data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
- data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
- data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
- data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
- data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
- data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
- data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
- data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
- data/ext/pg_query/include/postgres/utils/portal.h +10 -10
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
- data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
- data/ext/pg_query/include/postgres/utils/rel.h +14 -15
- data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
- data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
- data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
- data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
- data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
- data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
- data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
- data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
- data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
- data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
- data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
- data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
- data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +4 -4
- data/ext/pg_query/include/postgres/varatt.h +1 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
- data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
- data/ext/pg_query/pg_query.pb-c.c +6598 -3739
- data/ext/pg_query/pg_query_normalize.c +42 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/postgres_deparse.c +601 -172
- data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +3 -7
- data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
- data/ext/pg_query/src_backend_parser_parser.c +8 -8
- data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
- data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
- data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
- data/ext/pg_query/src_common_encnames.c +43 -44
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +511 -466
- 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 +18 -1
- data/ext/pg_query/src_common_wchar.c +92 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
- 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 +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_port_pg_bitutils.c +173 -28
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +15 -18
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +1 -1
- data/lib/pg_query/fingerprint.rb +3 -5
- data/lib/pg_query/param_refs.rb +2 -2
- data/lib/pg_query/parse.rb +5 -7
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +27 -25
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +38 -15
- data/lib/pg_query/truncate.rb +18 -20
- data/lib/pg_query/version.rb +1 -1
- metadata +31 -82
- data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
- data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -6,7 +6,7 @@
|
|
6
6
|
* NOTE: for historical reasons, this does not correspond to pqcomm.c.
|
7
7
|
* pqcomm.c's routines are declared in libpq.h.
|
8
8
|
*
|
9
|
-
* Portions Copyright (c) 1996-
|
9
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
10
10
|
* Portions Copyright (c) 1994, Regents of the University of California
|
11
11
|
*
|
12
12
|
* src/include/libpq/pqcomm.h
|
@@ -21,6 +21,12 @@
|
|
21
21
|
#include <netdb.h>
|
22
22
|
#include <netinet/in.h>
|
23
23
|
|
24
|
+
/*
|
25
|
+
* The definitions for the request/response codes are kept in a separate file
|
26
|
+
* for ease of use in third party programs.
|
27
|
+
*/
|
28
|
+
#include "libpq/protocol.h"
|
29
|
+
|
24
30
|
typedef struct
|
25
31
|
{
|
26
32
|
struct sockaddr_storage addr;
|
@@ -103,8 +109,6 @@ typedef ProtocolVersion MsgType;
|
|
103
109
|
|
104
110
|
typedef uint32 PacketLen;
|
105
111
|
|
106
|
-
extern PGDLLIMPORT bool Db_user_namespace;
|
107
|
-
|
108
112
|
/*
|
109
113
|
* In protocol 3.0 and later, the startup packet length is not fixed, but
|
110
114
|
* we set an arbitrary limit on it anyway. This is just to prevent simple
|
@@ -114,23 +118,6 @@ extern PGDLLIMPORT bool Db_user_namespace;
|
|
114
118
|
#define MAX_STARTUP_PACKET_LENGTH 10000
|
115
119
|
|
116
120
|
|
117
|
-
/* These are the authentication request codes sent by the backend. */
|
118
|
-
|
119
|
-
#define AUTH_REQ_OK 0 /* User is authenticated */
|
120
|
-
#define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */
|
121
|
-
#define AUTH_REQ_KRB5 2 /* Kerberos V5. Not supported any more. */
|
122
|
-
#define AUTH_REQ_PASSWORD 3 /* Password */
|
123
|
-
#define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
|
124
|
-
#define AUTH_REQ_MD5 5 /* md5 password */
|
125
|
-
/* 6 is available. It was used for SCM creds, not supported any more. */
|
126
|
-
#define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
|
127
|
-
#define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
|
128
|
-
#define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
|
129
|
-
#define AUTH_REQ_SASL 10 /* Begin SASL authentication */
|
130
|
-
#define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */
|
131
|
-
#define AUTH_REQ_SASL_FIN 12 /* Final SASL message */
|
132
|
-
#define AUTH_REQ_MAX AUTH_REQ_SASL_FIN /* maximum AUTH_REQ_* value */
|
133
|
-
|
134
121
|
typedef uint32 AuthRequest;
|
135
122
|
|
136
123
|
|
@@ -152,6 +139,25 @@ typedef struct CancelRequestPacket
|
|
152
139
|
uint32 cancelAuthCode; /* secret key to authorize cancel */
|
153
140
|
} CancelRequestPacket;
|
154
141
|
|
142
|
+
/* Application-Layer Protocol Negotiation is required for direct connections
|
143
|
+
* to avoid protocol confusion attacks (e.g https://alpaca-attack.com/).
|
144
|
+
*
|
145
|
+
* ALPN is specified in RFC 7301
|
146
|
+
*
|
147
|
+
* This string should be registered at:
|
148
|
+
* https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
|
149
|
+
*
|
150
|
+
* OpenSSL uses this wire-format for the list of alpn protocols even in the
|
151
|
+
* API. Both server and client take the same format parameter but the client
|
152
|
+
* actually sends it to the server as-is and the server it specifies the
|
153
|
+
* preference order to use to choose the one selected to send back.
|
154
|
+
*
|
155
|
+
* c.f. https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_alpn_select_cb.html
|
156
|
+
*
|
157
|
+
* The #define can be used to initialize a char[] vector to use directly in the API
|
158
|
+
*/
|
159
|
+
#define PG_ALPN_PROTOCOL "postgresql"
|
160
|
+
#define PG_ALPN_PROTOCOL_VECTOR { 10, 'p','o','s','t','g','r','e','s','q','l' }
|
155
161
|
|
156
162
|
/*
|
157
163
|
* A client can also start by sending a SSL or GSSAPI negotiation request to
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* pqformat.h
|
4
4
|
* Definitions for formatting and parsing frontend/backend messages
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/libpq/pqformat.h
|
@@ -23,8 +23,7 @@ extern void pq_endmessage(StringInfo buf);
|
|
23
23
|
extern void pq_endmessage_reuse(StringInfo buf);
|
24
24
|
|
25
25
|
extern void pq_sendbytes(StringInfo buf, const void *data, int datalen);
|
26
|
-
extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen
|
27
|
-
bool countincludesself);
|
26
|
+
extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen);
|
28
27
|
extern void pq_sendtext(StringInfo buf, const char *str, int slen);
|
29
28
|
extern void pq_sendstring(StringInfo buf, const char *str);
|
30
29
|
extern void pq_send_ascii_string(StringInfo buf, const char *str);
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* pqsignal.h
|
4
4
|
* Backend signal(2) support (see also src/port/pqsignal.c)
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/libpq/pqsignal.h
|
@@ -0,0 +1,89 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* protocol.h
|
4
|
+
* Definitions of the request/response codes for the wire protocol.
|
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/libpq/protocol.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef PROTOCOL_H
|
15
|
+
#define PROTOCOL_H
|
16
|
+
|
17
|
+
/* These are the request codes sent by the frontend. */
|
18
|
+
|
19
|
+
#define PqMsg_Bind 'B'
|
20
|
+
#define PqMsg_Close 'C'
|
21
|
+
#define PqMsg_Describe 'D'
|
22
|
+
#define PqMsg_Execute 'E'
|
23
|
+
#define PqMsg_FunctionCall 'F'
|
24
|
+
#define PqMsg_Flush 'H'
|
25
|
+
#define PqMsg_Parse 'P'
|
26
|
+
#define PqMsg_Query 'Q'
|
27
|
+
#define PqMsg_Sync 'S'
|
28
|
+
#define PqMsg_Terminate 'X'
|
29
|
+
#define PqMsg_CopyFail 'f'
|
30
|
+
#define PqMsg_GSSResponse 'p'
|
31
|
+
#define PqMsg_PasswordMessage 'p'
|
32
|
+
#define PqMsg_SASLInitialResponse 'p'
|
33
|
+
#define PqMsg_SASLResponse 'p'
|
34
|
+
|
35
|
+
|
36
|
+
/* These are the response codes sent by the backend. */
|
37
|
+
|
38
|
+
#define PqMsg_ParseComplete '1'
|
39
|
+
#define PqMsg_BindComplete '2'
|
40
|
+
#define PqMsg_CloseComplete '3'
|
41
|
+
#define PqMsg_NotificationResponse 'A'
|
42
|
+
#define PqMsg_CommandComplete 'C'
|
43
|
+
#define PqMsg_DataRow 'D'
|
44
|
+
#define PqMsg_ErrorResponse 'E'
|
45
|
+
#define PqMsg_CopyInResponse 'G'
|
46
|
+
#define PqMsg_CopyOutResponse 'H'
|
47
|
+
#define PqMsg_EmptyQueryResponse 'I'
|
48
|
+
#define PqMsg_BackendKeyData 'K'
|
49
|
+
#define PqMsg_NoticeResponse 'N'
|
50
|
+
#define PqMsg_AuthenticationRequest 'R'
|
51
|
+
#define PqMsg_ParameterStatus 'S'
|
52
|
+
#define PqMsg_RowDescription 'T'
|
53
|
+
#define PqMsg_FunctionCallResponse 'V'
|
54
|
+
#define PqMsg_CopyBothResponse 'W'
|
55
|
+
#define PqMsg_ReadyForQuery 'Z'
|
56
|
+
#define PqMsg_NoData 'n'
|
57
|
+
#define PqMsg_PortalSuspended 's'
|
58
|
+
#define PqMsg_ParameterDescription 't'
|
59
|
+
#define PqMsg_NegotiateProtocolVersion 'v'
|
60
|
+
|
61
|
+
|
62
|
+
/* These are the codes sent by both the frontend and backend. */
|
63
|
+
|
64
|
+
#define PqMsg_CopyDone 'c'
|
65
|
+
#define PqMsg_CopyData 'd'
|
66
|
+
|
67
|
+
|
68
|
+
/* These are the codes sent by parallel workers to leader processes. */
|
69
|
+
#define PqMsg_Progress 'P'
|
70
|
+
|
71
|
+
|
72
|
+
/* These are the authentication request codes sent by the backend. */
|
73
|
+
|
74
|
+
#define AUTH_REQ_OK 0 /* User is authenticated */
|
75
|
+
#define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */
|
76
|
+
#define AUTH_REQ_KRB5 2 /* Kerberos V5. Not supported any more. */
|
77
|
+
#define AUTH_REQ_PASSWORD 3 /* Password */
|
78
|
+
#define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
|
79
|
+
#define AUTH_REQ_MD5 5 /* md5 password */
|
80
|
+
/* 6 is available. It was used for SCM creds, not supported any more. */
|
81
|
+
#define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
|
82
|
+
#define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
|
83
|
+
#define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
|
84
|
+
#define AUTH_REQ_SASL 10 /* Begin SASL authentication */
|
85
|
+
#define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */
|
86
|
+
#define AUTH_REQ_SASL_FIN 12 /* Final SASL message */
|
87
|
+
#define AUTH_REQ_MAX AUTH_REQ_SASL_FIN /* maximum AUTH_REQ_* value */
|
88
|
+
|
89
|
+
#endif /* PROTOCOL_H */
|
@@ -7,7 +7,7 @@
|
|
7
7
|
*
|
8
8
|
* See src/interfaces/libpq/fe-auth-sasl.h for the frontend counterpart.
|
9
9
|
*
|
10
|
-
* Portions Copyright (c) 1996-
|
10
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
11
11
|
* Portions Copyright (c) 1994, Regents of the University of California
|
12
12
|
*
|
13
13
|
* src/include/libpq/sasl.h
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* scram.h
|
4
4
|
* Interface to libpq/scram.c
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/libpq/scram.h
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* pg_wchar.h
|
4
4
|
* multibyte-character support
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/mb/pg_wchar.h
|
@@ -13,14 +13,15 @@
|
|
13
13
|
* included by libpq client programs. In particular, a libpq client
|
14
14
|
* should not assume that the encoding IDs used by the version of libpq
|
15
15
|
* it's linked to match up with the IDs declared here.
|
16
|
+
* To help prevent mistakes, relevant functions that are exported by
|
17
|
+
* libpq have a physically different name when being referenced
|
18
|
+
* statically.
|
16
19
|
*
|
17
20
|
*-------------------------------------------------------------------------
|
18
21
|
*/
|
19
22
|
#ifndef PG_WCHAR_H
|
20
23
|
#define PG_WCHAR_H
|
21
24
|
|
22
|
-
#include "port/simd.h"
|
23
|
-
|
24
25
|
/*
|
25
26
|
* The pg_wchar type
|
26
27
|
*/
|
@@ -223,11 +224,10 @@ typedef unsigned int pg_wchar;
|
|
223
224
|
/*
|
224
225
|
* PostgreSQL encoding identifiers
|
225
226
|
*
|
226
|
-
* WARNING:
|
227
|
-
*
|
228
|
-
*
|
229
|
-
*
|
230
|
-
* If you add some encoding don't forget to check
|
227
|
+
* WARNING: If you add some encoding don't forget to update
|
228
|
+
* the pg_enc2name_tbl[] array (in src/common/encnames.c),
|
229
|
+
* the pg_enc2gettext_tbl[] array (in src/common/encnames.c) and
|
230
|
+
* the pg_wchar_table[] array (in src/common/wchar.c) and to check
|
231
231
|
* PG_ENCODING_BE_LAST macro.
|
232
232
|
*
|
233
233
|
* PG_SQL_ASCII is default encoding and must be = 0.
|
@@ -366,13 +366,7 @@ extern PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[];
|
|
366
366
|
/*
|
367
367
|
* Encoding names for gettext
|
368
368
|
*/
|
369
|
-
|
370
|
-
{
|
371
|
-
pg_enc encoding;
|
372
|
-
const char *name;
|
373
|
-
} pg_enc2gettext;
|
374
|
-
|
375
|
-
extern PGDLLIMPORT const pg_enc2gettext pg_enc2gettext_tbl[];
|
369
|
+
extern PGDLLIMPORT const char *pg_enc2gettext_tbl[];
|
376
370
|
|
377
371
|
/*
|
378
372
|
* pg_wchar stuff
|
@@ -561,6 +555,99 @@ surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second)
|
|
561
555
|
return ((first & 0x3FF) << 10) + 0x10000 + (second & 0x3FF);
|
562
556
|
}
|
563
557
|
|
558
|
+
/*
|
559
|
+
* Convert a UTF-8 character to a Unicode code point.
|
560
|
+
* This is a one-character version of pg_utf2wchar_with_len.
|
561
|
+
*
|
562
|
+
* No error checks here, c must point to a long-enough string.
|
563
|
+
*/
|
564
|
+
static inline pg_wchar
|
565
|
+
utf8_to_unicode(const unsigned char *c)
|
566
|
+
{
|
567
|
+
if ((*c & 0x80) == 0)
|
568
|
+
return (pg_wchar) c[0];
|
569
|
+
else if ((*c & 0xe0) == 0xc0)
|
570
|
+
return (pg_wchar) (((c[0] & 0x1f) << 6) |
|
571
|
+
(c[1] & 0x3f));
|
572
|
+
else if ((*c & 0xf0) == 0xe0)
|
573
|
+
return (pg_wchar) (((c[0] & 0x0f) << 12) |
|
574
|
+
((c[1] & 0x3f) << 6) |
|
575
|
+
(c[2] & 0x3f));
|
576
|
+
else if ((*c & 0xf8) == 0xf0)
|
577
|
+
return (pg_wchar) (((c[0] & 0x07) << 18) |
|
578
|
+
((c[1] & 0x3f) << 12) |
|
579
|
+
((c[2] & 0x3f) << 6) |
|
580
|
+
(c[3] & 0x3f));
|
581
|
+
else
|
582
|
+
/* that is an invalid code on purpose */
|
583
|
+
return 0xffffffff;
|
584
|
+
}
|
585
|
+
|
586
|
+
/*
|
587
|
+
* Map a Unicode code point to UTF-8. utf8string must have at least
|
588
|
+
* unicode_utf8len(c) bytes available.
|
589
|
+
*/
|
590
|
+
static inline unsigned char *
|
591
|
+
unicode_to_utf8(pg_wchar c, unsigned char *utf8string)
|
592
|
+
{
|
593
|
+
if (c <= 0x7F)
|
594
|
+
{
|
595
|
+
utf8string[0] = c;
|
596
|
+
}
|
597
|
+
else if (c <= 0x7FF)
|
598
|
+
{
|
599
|
+
utf8string[0] = 0xC0 | ((c >> 6) & 0x1F);
|
600
|
+
utf8string[1] = 0x80 | (c & 0x3F);
|
601
|
+
}
|
602
|
+
else if (c <= 0xFFFF)
|
603
|
+
{
|
604
|
+
utf8string[0] = 0xE0 | ((c >> 12) & 0x0F);
|
605
|
+
utf8string[1] = 0x80 | ((c >> 6) & 0x3F);
|
606
|
+
utf8string[2] = 0x80 | (c & 0x3F);
|
607
|
+
}
|
608
|
+
else
|
609
|
+
{
|
610
|
+
utf8string[0] = 0xF0 | ((c >> 18) & 0x07);
|
611
|
+
utf8string[1] = 0x80 | ((c >> 12) & 0x3F);
|
612
|
+
utf8string[2] = 0x80 | ((c >> 6) & 0x3F);
|
613
|
+
utf8string[3] = 0x80 | (c & 0x3F);
|
614
|
+
}
|
615
|
+
|
616
|
+
return utf8string;
|
617
|
+
}
|
618
|
+
|
619
|
+
/*
|
620
|
+
* Number of bytes needed to represent the given char in UTF8.
|
621
|
+
*/
|
622
|
+
static inline int
|
623
|
+
unicode_utf8len(pg_wchar c)
|
624
|
+
{
|
625
|
+
if (c <= 0x7F)
|
626
|
+
return 1;
|
627
|
+
else if (c <= 0x7FF)
|
628
|
+
return 2;
|
629
|
+
else if (c <= 0xFFFF)
|
630
|
+
return 3;
|
631
|
+
else
|
632
|
+
return 4;
|
633
|
+
}
|
634
|
+
|
635
|
+
/*
|
636
|
+
* The functions in this list are exported by libpq, and we need to be sure
|
637
|
+
* that we know which calls are satisfied by libpq and which are satisfied
|
638
|
+
* by static linkage to libpgcommon. (This is because we might be using a
|
639
|
+
* libpq.so that's of a different major version and has encoding IDs that
|
640
|
+
* differ from the current version's.) The nominal function names are what
|
641
|
+
* are actually used in and exported by libpq, while the names exported by
|
642
|
+
* libpgcommon.a and libpgcommon_srv.a end in "_private".
|
643
|
+
*/
|
644
|
+
#if defined(USE_PRIVATE_ENCODING_FUNCS) || !defined(FRONTEND)
|
645
|
+
#define pg_char_to_encoding pg_char_to_encoding_private
|
646
|
+
#define pg_encoding_to_char pg_encoding_to_char_private
|
647
|
+
#define pg_valid_server_encoding pg_valid_server_encoding_private
|
648
|
+
#define pg_valid_server_encoding_id pg_valid_server_encoding_id_private
|
649
|
+
#define pg_utf_mblen pg_utf_mblen_private
|
650
|
+
#endif
|
564
651
|
|
565
652
|
/*
|
566
653
|
* These functions are considered part of libpq's exported API and
|
@@ -575,6 +662,7 @@ extern int pg_valid_server_encoding_id(int encoding);
|
|
575
662
|
* (in addition to the ones just above). The constant tables declared
|
576
663
|
* earlier in this file are also available from libpgcommon.
|
577
664
|
*/
|
665
|
+
extern void pg_encoding_set_invalid(int encoding, char *dst);
|
578
666
|
extern int pg_encoding_mblen(int encoding, const char *mbstr);
|
579
667
|
extern int pg_encoding_mblen_bounded(int encoding, const char *mbstr);
|
580
668
|
extern int pg_encoding_dsplen(int encoding, const char *mbstr);
|
@@ -702,71 +790,4 @@ extern int mic2latin_with_table(const unsigned char *mic, unsigned char *p,
|
|
702
790
|
extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len);
|
703
791
|
#endif
|
704
792
|
|
705
|
-
|
706
|
-
/*
|
707
|
-
* Verify a chunk of bytes for valid ASCII.
|
708
|
-
*
|
709
|
-
* Returns false if the input contains any zero bytes or bytes with the
|
710
|
-
* high-bit set. Input len must be a multiple of the chunk size (8 or 16).
|
711
|
-
*/
|
712
|
-
static inline bool
|
713
|
-
is_valid_ascii(const unsigned char *s, int len)
|
714
|
-
{
|
715
|
-
const unsigned char *const s_end = s + len;
|
716
|
-
Vector8 chunk;
|
717
|
-
Vector8 highbit_cum = vector8_broadcast(0);
|
718
|
-
#ifdef USE_NO_SIMD
|
719
|
-
Vector8 zero_cum = vector8_broadcast(0x80);
|
720
|
-
#endif
|
721
|
-
|
722
|
-
Assert(len % sizeof(chunk) == 0);
|
723
|
-
|
724
|
-
while (s < s_end)
|
725
|
-
{
|
726
|
-
vector8_load(&chunk, s);
|
727
|
-
|
728
|
-
/* Capture any zero bytes in this chunk. */
|
729
|
-
#ifdef USE_NO_SIMD
|
730
|
-
|
731
|
-
/*
|
732
|
-
* First, add 0x7f to each byte. This sets the high bit in each byte,
|
733
|
-
* unless it was a zero. If any resulting high bits are zero, the
|
734
|
-
* corresponding high bits in the zero accumulator will be cleared.
|
735
|
-
*
|
736
|
-
* If none of the bytes in the chunk had the high bit set, the max
|
737
|
-
* value each byte can have after the addition is 0x7f + 0x7f = 0xfe,
|
738
|
-
* and we don't need to worry about carrying over to the next byte. If
|
739
|
-
* any input bytes did have the high bit set, it doesn't matter
|
740
|
-
* because we check for those separately.
|
741
|
-
*/
|
742
|
-
zero_cum &= (chunk + vector8_broadcast(0x7F));
|
743
|
-
#else
|
744
|
-
|
745
|
-
/*
|
746
|
-
* Set all bits in each lane of the highbit accumulator where input
|
747
|
-
* bytes are zero.
|
748
|
-
*/
|
749
|
-
highbit_cum = vector8_or(highbit_cum,
|
750
|
-
vector8_eq(chunk, vector8_broadcast(0)));
|
751
|
-
#endif
|
752
|
-
|
753
|
-
/* Capture all set bits in this chunk. */
|
754
|
-
highbit_cum = vector8_or(highbit_cum, chunk);
|
755
|
-
|
756
|
-
s += sizeof(chunk);
|
757
|
-
}
|
758
|
-
|
759
|
-
/* Check if any high bits in the high bit accumulator got set. */
|
760
|
-
if (vector8_is_highbit_set(highbit_cum))
|
761
|
-
return false;
|
762
|
-
|
763
|
-
#ifdef USE_NO_SIMD
|
764
|
-
/* Check if any high bits in the zero accumulator got cleared. */
|
765
|
-
if (zero_cum != vector8_broadcast(0x80))
|
766
|
-
return false;
|
767
|
-
#endif
|
768
|
-
|
769
|
-
return true;
|
770
|
-
}
|
771
|
-
|
772
793
|
#endif /* PG_WCHAR_H */
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* stringinfo_mb.h
|
4
4
|
* multibyte support for StringInfo
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/mb/stringinfo_mb.h
|
@@ -10,7 +10,7 @@
|
|
10
10
|
* Over time, this has also become the preferred place for widely known
|
11
11
|
* resource-limitation stuff, such as work_mem and check_stack_depth().
|
12
12
|
*
|
13
|
-
* Portions Copyright (c) 1996-
|
13
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
15
15
|
*
|
16
16
|
* src/include/miscadmin.h
|
@@ -91,6 +91,7 @@ extern PGDLLIMPORT __thread volatile sig_atomic_t InterruptPending;
|
|
91
91
|
extern PGDLLIMPORT volatile sig_atomic_t QueryCancelPending;
|
92
92
|
extern PGDLLIMPORT volatile sig_atomic_t ProcDiePending;
|
93
93
|
extern PGDLLIMPORT volatile sig_atomic_t IdleInTransactionSessionTimeoutPending;
|
94
|
+
extern PGDLLIMPORT volatile sig_atomic_t TransactionTimeoutPending;
|
94
95
|
extern PGDLLIMPORT volatile sig_atomic_t IdleSessionTimeoutPending;
|
95
96
|
extern PGDLLIMPORT volatile sig_atomic_t ProcSignalBarrierPending;
|
96
97
|
extern PGDLLIMPORT volatile sig_atomic_t LogMemoryContextPending;
|
@@ -164,7 +165,6 @@ do { \
|
|
164
165
|
extern PGDLLIMPORT pid_t PostmasterPid;
|
165
166
|
extern PGDLLIMPORT bool IsPostmasterEnvironment;
|
166
167
|
extern PGDLLIMPORT bool IsUnderPostmaster;
|
167
|
-
extern PGDLLIMPORT bool IsBackgroundWorker;
|
168
168
|
extern PGDLLIMPORT bool IsBinaryUpgrade;
|
169
169
|
|
170
170
|
extern PGDLLIMPORT __thread bool ExitOnAnyError;
|
@@ -178,6 +178,14 @@ extern PGDLLIMPORT int MaxConnections;
|
|
178
178
|
extern PGDLLIMPORT int max_worker_processes;
|
179
179
|
extern PGDLLIMPORT int max_parallel_workers;
|
180
180
|
|
181
|
+
extern PGDLLIMPORT int commit_timestamp_buffers;
|
182
|
+
extern PGDLLIMPORT int multixact_member_buffers;
|
183
|
+
extern PGDLLIMPORT int multixact_offset_buffers;
|
184
|
+
extern PGDLLIMPORT int notify_buffers;
|
185
|
+
extern PGDLLIMPORT int serializable_buffers;
|
186
|
+
extern PGDLLIMPORT int subtransaction_buffers;
|
187
|
+
extern PGDLLIMPORT int transaction_buffers;
|
188
|
+
|
181
189
|
extern PGDLLIMPORT int MyProcPid;
|
182
190
|
extern PGDLLIMPORT pg_time_t MyStartTime;
|
183
191
|
extern PGDLLIMPORT TimestampTz MyStartTimestamp;
|
@@ -194,15 +202,12 @@ extern PGDLLIMPORT char pkglib_path[];
|
|
194
202
|
extern PGDLLIMPORT char postgres_exec_path[];
|
195
203
|
#endif
|
196
204
|
|
197
|
-
/*
|
198
|
-
* done in storage/backendid.h for now.
|
199
|
-
*
|
200
|
-
* extern BackendId MyBackendId;
|
201
|
-
*/
|
202
205
|
extern PGDLLIMPORT Oid MyDatabaseId;
|
203
206
|
|
204
207
|
extern PGDLLIMPORT Oid MyDatabaseTableSpace;
|
205
208
|
|
209
|
+
extern PGDLLIMPORT bool MyDatabaseHasLoginEventTriggers;
|
210
|
+
|
206
211
|
/*
|
207
212
|
* Date/Time Configuration
|
208
213
|
*
|
@@ -300,10 +305,6 @@ extern void PreventCommandIfReadOnly(const char *cmdname);
|
|
300
305
|
extern void PreventCommandIfParallelMode(const char *cmdname);
|
301
306
|
extern void PreventCommandDuringRecovery(const char *cmdname);
|
302
307
|
|
303
|
-
/* in utils/misc/guc_tables.c */
|
304
|
-
extern PGDLLIMPORT int trace_recovery_messages;
|
305
|
-
extern int trace_recovery(int trace_level);
|
306
|
-
|
307
308
|
/*****************************************************************************
|
308
309
|
* pdir.h -- *
|
309
310
|
* POSTGRES directory path definitions. *
|
@@ -323,28 +324,72 @@ extern void InitProcessLocalLatch(void);
|
|
323
324
|
extern void SwitchToSharedLatch(void);
|
324
325
|
extern void SwitchBackToLocalLatch(void);
|
325
326
|
|
327
|
+
/*
|
328
|
+
* MyBackendType indicates what kind of a backend this is.
|
329
|
+
*
|
330
|
+
* If you add entries, please also update the child_process_kinds array in
|
331
|
+
* launch_backend.c.
|
332
|
+
*/
|
326
333
|
typedef enum BackendType
|
327
334
|
{
|
328
335
|
B_INVALID = 0,
|
329
|
-
|
336
|
+
|
337
|
+
/* Backends and other backend-like processes */
|
338
|
+
B_BACKEND,
|
330
339
|
B_AUTOVAC_LAUNCHER,
|
331
340
|
B_AUTOVAC_WORKER,
|
332
|
-
B_BACKEND,
|
333
341
|
B_BG_WORKER,
|
342
|
+
B_WAL_SENDER,
|
343
|
+
B_SLOTSYNC_WORKER,
|
344
|
+
|
345
|
+
B_STANDALONE_BACKEND,
|
346
|
+
|
347
|
+
/*
|
348
|
+
* Auxiliary processes. These have PGPROC entries, but they are not
|
349
|
+
* attached to any particular database, and cannot run transactions or
|
350
|
+
* even take heavyweight locks. There can be only one of each of these
|
351
|
+
* running at a time.
|
352
|
+
*
|
353
|
+
* If you modify these, make sure to update NUM_AUXILIARY_PROCS and the
|
354
|
+
* glossary in the docs.
|
355
|
+
*/
|
356
|
+
B_ARCHIVER,
|
334
357
|
B_BG_WRITER,
|
335
358
|
B_CHECKPOINTER,
|
336
|
-
B_LOGGER,
|
337
|
-
B_STANDALONE_BACKEND,
|
338
359
|
B_STARTUP,
|
339
360
|
B_WAL_RECEIVER,
|
340
|
-
|
361
|
+
B_WAL_SUMMARIZER,
|
341
362
|
B_WAL_WRITER,
|
363
|
+
|
364
|
+
/*
|
365
|
+
* Logger is not connected to shared memory and does not have a PGPROC
|
366
|
+
* entry.
|
367
|
+
*/
|
368
|
+
B_LOGGER,
|
342
369
|
} BackendType;
|
343
370
|
|
344
|
-
#define BACKEND_NUM_TYPES (
|
371
|
+
#define BACKEND_NUM_TYPES (B_LOGGER + 1)
|
345
372
|
|
346
373
|
extern PGDLLIMPORT BackendType MyBackendType;
|
347
374
|
|
375
|
+
#define AmRegularBackendProcess() (MyBackendType == B_BACKEND)
|
376
|
+
#define AmAutoVacuumLauncherProcess() (MyBackendType == B_AUTOVAC_LAUNCHER)
|
377
|
+
#define AmAutoVacuumWorkerProcess() (MyBackendType == B_AUTOVAC_WORKER)
|
378
|
+
#define AmBackgroundWorkerProcess() (MyBackendType == B_BG_WORKER)
|
379
|
+
#define AmWalSenderProcess() (MyBackendType == B_WAL_SENDER)
|
380
|
+
#define AmLogicalSlotSyncWorkerProcess() (MyBackendType == B_SLOTSYNC_WORKER)
|
381
|
+
#define AmArchiverProcess() (MyBackendType == B_ARCHIVER)
|
382
|
+
#define AmBackgroundWriterProcess() (MyBackendType == B_BG_WRITER)
|
383
|
+
#define AmCheckpointerProcess() (MyBackendType == B_CHECKPOINTER)
|
384
|
+
#define AmStartupProcess() (MyBackendType == B_STARTUP)
|
385
|
+
#define AmWalReceiverProcess() (MyBackendType == B_WAL_RECEIVER)
|
386
|
+
#define AmWalSummarizerProcess() (MyBackendType == B_WAL_SUMMARIZER)
|
387
|
+
#define AmWalWriterProcess() (MyBackendType == B_WAL_WRITER)
|
388
|
+
|
389
|
+
#define AmSpecialWorkerProcess() \
|
390
|
+
(AmAutoVacuumLauncherProcess() || \
|
391
|
+
AmLogicalSlotSyncWorkerProcess())
|
392
|
+
|
348
393
|
extern const char *GetBackendTypeDesc(BackendType backendType);
|
349
394
|
|
350
395
|
extern void SetDatabasePath(const char *path);
|
@@ -356,7 +401,9 @@ extern char *GetUserNameFromId(Oid roleid, bool noerr);
|
|
356
401
|
extern Oid GetUserId(void);
|
357
402
|
extern Oid GetOuterUserId(void);
|
358
403
|
extern Oid GetSessionUserId(void);
|
404
|
+
extern bool GetSessionUserIsSuperuser(void);
|
359
405
|
extern Oid GetAuthenticatedUserId(void);
|
406
|
+
extern void SetAuthenticatedUserId(Oid userid);
|
360
407
|
extern void GetUserIdAndSecContext(Oid *userid, int *sec_context);
|
361
408
|
extern void SetUserIdAndSecContext(Oid userid, int sec_context);
|
362
409
|
extern bool InLocalUserIdChange(void);
|
@@ -364,7 +411,8 @@ extern bool InSecurityRestrictedOperation(void);
|
|
364
411
|
extern bool InNoForceRLSOperation(void);
|
365
412
|
extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context);
|
366
413
|
extern void SetUserIdAndContext(Oid userid, bool sec_def_context);
|
367
|
-
extern void InitializeSessionUserId(const char *rolename, Oid roleid
|
414
|
+
extern void InitializeSessionUserId(const char *rolename, Oid roleid,
|
415
|
+
bool bypass_login_check);
|
368
416
|
extern void InitializeSessionUserIdStandalone(void);
|
369
417
|
extern void SetSessionAuthorization(Oid userid, bool is_superuser);
|
370
418
|
extern Oid GetCurrentRoleId(void);
|
@@ -406,7 +454,7 @@ typedef enum ProcessingMode
|
|
406
454
|
{
|
407
455
|
BootstrapProcessing, /* bootstrap creation of template database */
|
408
456
|
InitProcessing, /* initializing system */
|
409
|
-
NormalProcessing /* normal processing */
|
457
|
+
NormalProcessing, /* normal processing */
|
410
458
|
} ProcessingMode;
|
411
459
|
|
412
460
|
extern PGDLLIMPORT ProcessingMode Mode;
|
@@ -426,49 +474,21 @@ extern PGDLLIMPORT ProcessingMode Mode;
|
|
426
474
|
} while(0)
|
427
475
|
|
428
476
|
|
429
|
-
/*
|
430
|
-
* Auxiliary-process type identifiers. These used to be in bootstrap.h
|
431
|
-
* but it seems saner to have them here, with the ProcessingMode stuff.
|
432
|
-
* The MyAuxProcType global is defined and set in auxprocess.c.
|
433
|
-
*
|
434
|
-
* Make sure to list in the glossary any items you add here.
|
435
|
-
*/
|
436
|
-
|
437
|
-
typedef enum
|
438
|
-
{
|
439
|
-
NotAnAuxProcess = -1,
|
440
|
-
StartupProcess = 0,
|
441
|
-
BgWriterProcess,
|
442
|
-
ArchiverProcess,
|
443
|
-
CheckpointerProcess,
|
444
|
-
WalWriterProcess,
|
445
|
-
WalReceiverProcess,
|
446
|
-
|
447
|
-
NUM_AUXPROCTYPES /* Must be last! */
|
448
|
-
} AuxProcType;
|
449
|
-
|
450
|
-
extern PGDLLIMPORT AuxProcType MyAuxProcType;
|
451
|
-
|
452
|
-
#define AmStartupProcess() (MyAuxProcType == StartupProcess)
|
453
|
-
#define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess)
|
454
|
-
#define AmArchiverProcess() (MyAuxProcType == ArchiverProcess)
|
455
|
-
#define AmCheckpointerProcess() (MyAuxProcType == CheckpointerProcess)
|
456
|
-
#define AmWalWriterProcess() (MyAuxProcType == WalWriterProcess)
|
457
|
-
#define AmWalReceiverProcess() (MyAuxProcType == WalReceiverProcess)
|
458
|
-
|
459
|
-
|
460
477
|
/*****************************************************************************
|
461
478
|
* pinit.h -- *
|
462
479
|
* POSTGRES initialization and cleanup definitions. *
|
463
480
|
*****************************************************************************/
|
464
481
|
|
465
482
|
/* in utils/init/postinit.c */
|
483
|
+
/* flags for InitPostgres() */
|
484
|
+
#define INIT_PG_LOAD_SESSION_LIBS 0x0001
|
485
|
+
#define INIT_PG_OVERRIDE_ALLOW_CONNS 0x0002
|
486
|
+
#define INIT_PG_OVERRIDE_ROLE_LOGIN 0x0004
|
466
487
|
extern void pg_split_opts(char **argv, int *argcp, const char *optstr);
|
467
488
|
extern void InitializeMaxBackends(void);
|
468
489
|
extern void InitPostgres(const char *in_dbname, Oid dboid,
|
469
490
|
const char *username, Oid useroid,
|
470
|
-
|
471
|
-
bool override_allow_connections,
|
491
|
+
bits32 flags,
|
472
492
|
char *out_dbname);
|
473
493
|
extern void BaseInit(void);
|
474
494
|
|