pg_query 4.2.1 → 5.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 +31 -0
- data/README.md +6 -8
- data/Rakefile +5 -6
- data/ext/pg_query/extconf.rb +14 -4
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
- data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
- data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
- data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
- data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
- 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/{common → postgres/common}/string.h +5 -3
- data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
- data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
- 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/{mb → postgres/mb}/pg_wchar.h +35 -18
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -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 +26 -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 +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
- 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_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
- data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
- data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
- data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
- data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
- data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
- data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- 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 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- 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 +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- 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 +534 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- 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 +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +79 -5
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +6 -10
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +23 -5
- data/lib/pg_query/version.rb +1 -1
- metadata +432 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- 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/ps_status.h +0 -25
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
- /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* (null-terminated text) or arbitrary binary data. All storage is allocated
|
|
9
9
|
* with palloc() (falling back to malloc in frontend code).
|
|
10
10
|
*
|
|
11
|
-
* Portions Copyright (c) 1996-
|
|
11
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
13
13
|
*
|
|
14
14
|
* src/include/lib/stringinfo.h
|
|
@@ -142,7 +142,7 @@ extern void appendStringInfoSpaces(StringInfo str, int count);
|
|
|
142
142
|
* if necessary.
|
|
143
143
|
*/
|
|
144
144
|
extern void appendBinaryStringInfo(StringInfo str,
|
|
145
|
-
const
|
|
145
|
+
const void *data, int datalen);
|
|
146
146
|
|
|
147
147
|
/*------------------------
|
|
148
148
|
* appendBinaryStringInfoNT
|
|
@@ -150,7 +150,7 @@ extern void appendBinaryStringInfo(StringInfo str,
|
|
|
150
150
|
* if necessary. Does not ensure a trailing null-byte exists.
|
|
151
151
|
*/
|
|
152
152
|
extern void appendBinaryStringInfoNT(StringInfo str,
|
|
153
|
-
const
|
|
153
|
+
const void *data, int datalen);
|
|
154
154
|
|
|
155
155
|
/*------------------------
|
|
156
156
|
* enlargeStringInfo
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Definitions for network authentication routines
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/libpq/auth.h
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
extern PGDLLIMPORT char *pg_krb_server_keyfile;
|
|
20
20
|
extern PGDLLIMPORT bool pg_krb_caseins_users;
|
|
21
|
-
extern PGDLLIMPORT
|
|
21
|
+
extern PGDLLIMPORT bool pg_gss_accept_delegation;
|
|
22
22
|
|
|
23
23
|
extern void ClientAuthentication(Port *port);
|
|
24
24
|
extern void sendAuthRequest(Port *port, AuthRequest areq, const char *extradata,
|
|
@@ -28,4 +28,10 @@ extern void sendAuthRequest(Port *port, AuthRequest areq, const char *extradata,
|
|
|
28
28
|
typedef void (*ClientAuthentication_hook_type) (Port *, int);
|
|
29
29
|
extern PGDLLIMPORT ClientAuthentication_hook_type ClientAuthentication_hook;
|
|
30
30
|
|
|
31
|
+
/* hook type for password manglers */
|
|
32
|
+
typedef char *(*auth_password_hook_typ) (char *input);
|
|
33
|
+
|
|
34
|
+
/* Default LDAP password mutator hook, can be overridden by a shared library */
|
|
35
|
+
extern PGDLLIMPORT auth_password_hook_typ ldap_password_hook;
|
|
36
|
+
|
|
31
37
|
#endif /* AUTH_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* crypt.h
|
|
4
4
|
* Interface to libpq/crypt.c
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/libpq/crypt.h
|
|
@@ -77,8 +77,23 @@ typedef enum ClientCertName
|
|
|
77
77
|
clientCertDN
|
|
78
78
|
} ClientCertName;
|
|
79
79
|
|
|
80
|
+
/*
|
|
81
|
+
* A single string token lexed from an authentication configuration file
|
|
82
|
+
* (pg_ident.conf or pg_hba.conf), together with whether the token has
|
|
83
|
+
* been quoted. If "string" begins with a slash, it may optionally
|
|
84
|
+
* contain a regular expression (currently used for pg_ident.conf when
|
|
85
|
+
* building IdentLines and for pg_hba.conf when building HbaLines).
|
|
86
|
+
*/
|
|
87
|
+
typedef struct AuthToken
|
|
88
|
+
{
|
|
89
|
+
char *string;
|
|
90
|
+
bool quoted;
|
|
91
|
+
regex_t *regex;
|
|
92
|
+
} AuthToken;
|
|
93
|
+
|
|
80
94
|
typedef struct HbaLine
|
|
81
95
|
{
|
|
96
|
+
char *sourcefile;
|
|
82
97
|
int linenumber;
|
|
83
98
|
char *rawline;
|
|
84
99
|
ConnType conntype;
|
|
@@ -127,22 +142,10 @@ typedef struct IdentLine
|
|
|
127
142
|
int linenumber;
|
|
128
143
|
|
|
129
144
|
char *usermap;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
regex_t re;
|
|
145
|
+
AuthToken *system_user;
|
|
146
|
+
AuthToken *pg_user;
|
|
133
147
|
} IdentLine;
|
|
134
148
|
|
|
135
|
-
/*
|
|
136
|
-
* A single string token lexed from an authentication configuration file
|
|
137
|
-
* (pg_ident.conf or pg_hba.conf), together with whether the token has
|
|
138
|
-
* been quoted.
|
|
139
|
-
*/
|
|
140
|
-
typedef struct AuthToken
|
|
141
|
-
{
|
|
142
|
-
char *string;
|
|
143
|
-
bool quoted;
|
|
144
|
-
} AuthToken;
|
|
145
|
-
|
|
146
149
|
/*
|
|
147
150
|
* TokenizedAuthLine represents one line lexed from an authentication
|
|
148
151
|
* configuration file. Each item in the "fields" list is a sub-list of
|
|
@@ -155,6 +158,7 @@ typedef struct AuthToken
|
|
|
155
158
|
typedef struct TokenizedAuthLine
|
|
156
159
|
{
|
|
157
160
|
List *fields; /* List of lists of AuthTokens */
|
|
161
|
+
char *file_name; /* File name of origin */
|
|
158
162
|
int line_num; /* Line number */
|
|
159
163
|
char *raw_line; /* Raw line text */
|
|
160
164
|
char *err_msg; /* Error message if any */
|
|
@@ -168,12 +172,15 @@ extern bool load_ident(void);
|
|
|
168
172
|
extern const char *hba_authname(UserAuth auth_method);
|
|
169
173
|
extern void hba_getauthmethod(hbaPort *port);
|
|
170
174
|
extern int check_usermap(const char *usermap_name,
|
|
171
|
-
const char *
|
|
175
|
+
const char *pg_user, const char *system_user,
|
|
172
176
|
bool case_insensitive);
|
|
173
177
|
extern HbaLine *parse_hba_line(TokenizedAuthLine *tok_line, int elevel);
|
|
174
178
|
extern IdentLine *parse_ident_line(TokenizedAuthLine *tok_line, int elevel);
|
|
175
179
|
extern bool pg_isblank(const char c);
|
|
176
|
-
extern
|
|
177
|
-
|
|
180
|
+
extern FILE *open_auth_file(const char *filename, int elevel, int depth,
|
|
181
|
+
char **err_msg);
|
|
182
|
+
extern void free_auth_file(FILE *file, int depth);
|
|
183
|
+
extern void tokenize_auth_file(const char *filename, FILE *file,
|
|
184
|
+
List **tok_lines, int elevel, int depth);
|
|
178
185
|
|
|
179
186
|
#endif /* HBA_H */
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Structs that need to be client-visible are in pqcomm.h.
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
|
-
* Portions Copyright (c) 1996-
|
|
11
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
13
13
|
*
|
|
14
14
|
* src/include/libpq/libpq-be.h
|
|
@@ -23,9 +23,7 @@
|
|
|
23
23
|
#include <openssl/ssl.h>
|
|
24
24
|
#include <openssl/err.h>
|
|
25
25
|
#endif
|
|
26
|
-
#ifdef HAVE_NETINET_TCP_H
|
|
27
26
|
#include <netinet/tcp.h>
|
|
28
|
-
#endif
|
|
29
27
|
|
|
30
28
|
#ifdef ENABLE_GSS
|
|
31
29
|
#if defined(HAVE_GSSAPI_H)
|
|
@@ -33,14 +31,6 @@
|
|
|
33
31
|
#else
|
|
34
32
|
#include <gssapi/gssapi.h>
|
|
35
33
|
#endif /* HAVE_GSSAPI_H */
|
|
36
|
-
/*
|
|
37
|
-
* GSSAPI brings in headers that set a lot of things in the global namespace on win32,
|
|
38
|
-
* that doesn't match the msvc build. It gives a bunch of compiler warnings that we ignore,
|
|
39
|
-
* but also defines a symbol that simply does not exist. Undefine it again.
|
|
40
|
-
*/
|
|
41
|
-
#ifdef _MSC_VER
|
|
42
|
-
#undef HAVE_GETADDRINFO
|
|
43
|
-
#endif
|
|
44
34
|
#endif /* ENABLE_GSS */
|
|
45
35
|
|
|
46
36
|
#ifdef ENABLE_SSPI
|
|
@@ -94,10 +84,42 @@ typedef struct
|
|
|
94
84
|
* GSSAPI auth was not used */
|
|
95
85
|
bool auth; /* GSSAPI Authentication used */
|
|
96
86
|
bool enc; /* GSSAPI encryption in use */
|
|
87
|
+
bool delegated_creds; /* GSSAPI Delegated credentials */
|
|
97
88
|
#endif
|
|
98
89
|
} pg_gssinfo;
|
|
99
90
|
#endif
|
|
100
91
|
|
|
92
|
+
/*
|
|
93
|
+
* ClientConnectionInfo includes the fields describing the client connection
|
|
94
|
+
* that are copied over to parallel workers as nothing from Port does that.
|
|
95
|
+
* The same rules apply for allocations here as for Port (everything must be
|
|
96
|
+
* malloc'd or palloc'd in TopMemoryContext).
|
|
97
|
+
*
|
|
98
|
+
* If you add a struct member here, remember to also handle serialization in
|
|
99
|
+
* SerializeClientConnectionInfo() and co.
|
|
100
|
+
*/
|
|
101
|
+
typedef struct ClientConnectionInfo
|
|
102
|
+
{
|
|
103
|
+
/*
|
|
104
|
+
* Authenticated identity. The meaning of this identifier is dependent on
|
|
105
|
+
* auth_method; it is the identity (if any) that the user presented during
|
|
106
|
+
* the authentication cycle, before they were assigned a database role.
|
|
107
|
+
* (It is effectively the "SYSTEM-USERNAME" of a pg_ident usermap --
|
|
108
|
+
* though the exact string in use may be different, depending on pg_hba
|
|
109
|
+
* options.)
|
|
110
|
+
*
|
|
111
|
+
* authn_id is NULL if the user has not actually been authenticated, for
|
|
112
|
+
* example if the "trust" auth method is in use.
|
|
113
|
+
*/
|
|
114
|
+
const char *authn_id;
|
|
115
|
+
|
|
116
|
+
/*
|
|
117
|
+
* The HBA method that determined the above authn_id. This only has
|
|
118
|
+
* meaning if authn_id is not NULL; otherwise it's undefined.
|
|
119
|
+
*/
|
|
120
|
+
UserAuth auth_method;
|
|
121
|
+
} ClientConnectionInfo;
|
|
122
|
+
|
|
101
123
|
/*
|
|
102
124
|
* This is used by the postmaster in its communication with frontends. It
|
|
103
125
|
* contains all state information needed during this communication before the
|
|
@@ -158,19 +180,6 @@ typedef struct Port
|
|
|
158
180
|
*/
|
|
159
181
|
HbaLine *hba;
|
|
160
182
|
|
|
161
|
-
/*
|
|
162
|
-
* Authenticated identity. The meaning of this identifier is dependent on
|
|
163
|
-
* hba->auth_method; it is the identity (if any) that the user presented
|
|
164
|
-
* during the authentication cycle, before they were assigned a database
|
|
165
|
-
* role. (It is effectively the "SYSTEM-USERNAME" of a pg_ident usermap
|
|
166
|
-
* -- though the exact string in use may be different, depending on pg_hba
|
|
167
|
-
* options.)
|
|
168
|
-
*
|
|
169
|
-
* authn_id is NULL if the user has not actually been authenticated, for
|
|
170
|
-
* example if the "trust" auth method is in use.
|
|
171
|
-
*/
|
|
172
|
-
const char *authn_id;
|
|
173
|
-
|
|
174
183
|
/*
|
|
175
184
|
* TCP keepalive and user timeout settings.
|
|
176
185
|
*
|
|
@@ -300,7 +309,7 @@ extern void be_tls_get_peer_serial(Port *port, char *ptr, size_t len);
|
|
|
300
309
|
* This is not supported with old versions of OpenSSL that don't have
|
|
301
310
|
* the X509_get_signature_nid() function.
|
|
302
311
|
*/
|
|
303
|
-
#if defined(USE_OPENSSL) && defined(HAVE_X509_GET_SIGNATURE_NID)
|
|
312
|
+
#if defined(USE_OPENSSL) && (defined(HAVE_X509_GET_SIGNATURE_NID) || defined(HAVE_X509_GET_SIGNATURE_INFO))
|
|
304
313
|
#define HAVE_BE_TLS_GET_CERTIFICATE_HASH
|
|
305
314
|
extern char *be_tls_get_certificate_hash(Port *port, size_t *len);
|
|
306
315
|
#endif
|
|
@@ -320,6 +329,7 @@ extern PGDLLIMPORT openssl_tls_init_hook_typ openssl_tls_init_hook;
|
|
|
320
329
|
extern bool be_gssapi_get_auth(Port *port);
|
|
321
330
|
extern bool be_gssapi_get_enc(Port *port);
|
|
322
331
|
extern const char *be_gssapi_get_princ(Port *port);
|
|
332
|
+
extern bool be_gssapi_get_delegation(Port *port);
|
|
323
333
|
|
|
324
334
|
/* Read and write to a GSSAPI-encrypted connection. */
|
|
325
335
|
extern ssize_t be_gssapi_read(Port *port, void *ptr, size_t len);
|
|
@@ -327,6 +337,7 @@ extern ssize_t be_gssapi_write(Port *port, void *ptr, size_t len);
|
|
|
327
337
|
#endif /* ENABLE_GSS */
|
|
328
338
|
|
|
329
339
|
extern PGDLLIMPORT ProtocolVersion FrontendProtocol;
|
|
340
|
+
extern PGDLLIMPORT ClientConnectionInfo MyClientConnectionInfo;
|
|
330
341
|
|
|
331
342
|
/* TCP keepalives configuration. These are no-ops on an AF_UNIX socket. */
|
|
332
343
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES LIBPQ buffer structure definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/libpq/libpq.h
|
|
@@ -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-2023, 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
|
|
@@ -17,54 +17,22 @@
|
|
|
17
17
|
#define PQCOMM_H
|
|
18
18
|
|
|
19
19
|
#include <sys/socket.h>
|
|
20
|
-
#include <netdb.h>
|
|
21
|
-
#ifdef HAVE_SYS_UN_H
|
|
22
20
|
#include <sys/un.h>
|
|
23
|
-
#
|
|
21
|
+
#include <netdb.h>
|
|
24
22
|
#include <netinet/in.h>
|
|
25
23
|
|
|
26
|
-
#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
|
|
27
|
-
|
|
28
|
-
#ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
|
|
29
|
-
#ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
|
|
30
|
-
#define ss_family __ss_family
|
|
31
|
-
#else
|
|
32
|
-
#error struct sockaddr_storage does not provide an ss_family member
|
|
33
|
-
#endif
|
|
34
|
-
#endif
|
|
35
|
-
|
|
36
|
-
#ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN
|
|
37
|
-
#define ss_len __ss_len
|
|
38
|
-
#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
|
|
39
|
-
#endif
|
|
40
|
-
#else /* !HAVE_STRUCT_SOCKADDR_STORAGE */
|
|
41
|
-
|
|
42
|
-
/* Define a struct sockaddr_storage if we don't have one. */
|
|
43
|
-
|
|
44
|
-
struct sockaddr_storage
|
|
45
|
-
{
|
|
46
|
-
union
|
|
47
|
-
{
|
|
48
|
-
struct sockaddr sa; /* get the system-dependent fields */
|
|
49
|
-
int64 ss_align; /* ensures struct is properly aligned */
|
|
50
|
-
char ss_pad[128]; /* ensures struct has desired size */
|
|
51
|
-
} ss_stuff;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
#define ss_family ss_stuff.sa.sa_family
|
|
55
|
-
/* It should have an ss_len field if sockaddr has sa_len. */
|
|
56
|
-
#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
|
|
57
|
-
#define ss_len ss_stuff.sa.sa_len
|
|
58
|
-
#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
|
|
59
|
-
#endif
|
|
60
|
-
#endif /* HAVE_STRUCT_SOCKADDR_STORAGE */
|
|
61
|
-
|
|
62
24
|
typedef struct
|
|
63
25
|
{
|
|
64
26
|
struct sockaddr_storage addr;
|
|
65
27
|
socklen_t salen;
|
|
66
28
|
} SockAddr;
|
|
67
29
|
|
|
30
|
+
typedef struct
|
|
31
|
+
{
|
|
32
|
+
int family;
|
|
33
|
+
SockAddr addr;
|
|
34
|
+
} AddrInfo;
|
|
35
|
+
|
|
68
36
|
/* Configure the UNIX socket location for the well known port. */
|
|
69
37
|
|
|
70
38
|
#define UNIXSOCK_PATH(path, port, sockdir) \
|
|
@@ -154,13 +122,14 @@ extern PGDLLIMPORT bool Db_user_namespace;
|
|
|
154
122
|
#define AUTH_REQ_PASSWORD 3 /* Password */
|
|
155
123
|
#define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
|
|
156
124
|
#define AUTH_REQ_MD5 5 /* md5 password */
|
|
157
|
-
|
|
125
|
+
/* 6 is available. It was used for SCM creds, not supported any more. */
|
|
158
126
|
#define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
|
|
159
127
|
#define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
|
|
160
128
|
#define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
|
|
161
129
|
#define AUTH_REQ_SASL 10 /* Begin SASL authentication */
|
|
162
130
|
#define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */
|
|
163
131
|
#define AUTH_REQ_SASL_FIN 12 /* Final SASL message */
|
|
132
|
+
#define AUTH_REQ_MAX AUTH_REQ_SASL_FIN /* maximum AUTH_REQ_* value */
|
|
164
133
|
|
|
165
134
|
typedef uint32 AuthRequest;
|
|
166
135
|
|
|
@@ -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-2023, 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
|
|
@@ -22,7 +22,7 @@ extern void pq_beginmessage_reuse(StringInfo buf, char msgtype);
|
|
|
22
22
|
extern void pq_endmessage(StringInfo buf);
|
|
23
23
|
extern void pq_endmessage_reuse(StringInfo buf);
|
|
24
24
|
|
|
25
|
-
extern void pq_sendbytes(StringInfo buf, const
|
|
25
|
+
extern void pq_sendbytes(StringInfo buf, const void *data, int datalen);
|
|
26
26
|
extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen,
|
|
27
27
|
bool countincludesself);
|
|
28
28
|
extern void pq_sendtext(StringInfo buf, const char *str, int slen);
|
|
@@ -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-2023, 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
|
|
@@ -15,15 +15,30 @@
|
|
|
15
15
|
|
|
16
16
|
#include <signal.h>
|
|
17
17
|
|
|
18
|
-
#
|
|
19
|
-
#define PG_SETMASK(mask) sigprocmask(SIG_SETMASK, mask, NULL)
|
|
20
|
-
#else
|
|
18
|
+
#ifdef WIN32
|
|
21
19
|
/* Emulate POSIX sigset_t APIs on Windows */
|
|
22
20
|
typedef int sigset_t;
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
#define SA_RESTART 1
|
|
23
|
+
#define SA_NODEFER 2
|
|
24
|
+
|
|
25
|
+
struct sigaction
|
|
26
|
+
{
|
|
27
|
+
void (*sa_handler) (int);
|
|
28
|
+
/* sa_sigaction not yet implemented */
|
|
29
|
+
sigset_t sa_mask;
|
|
30
|
+
int sa_flags;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
extern int pqsigprocmask(int how, const sigset_t *set, sigset_t *oset);
|
|
34
|
+
extern int pqsigaction(int signum, const struct sigaction *act,
|
|
35
|
+
struct sigaction *oldact);
|
|
36
|
+
|
|
37
|
+
#define SIG_BLOCK 1
|
|
38
|
+
#define SIG_UNBLOCK 2
|
|
39
|
+
#define SIG_SETMASK 3
|
|
40
|
+
#define sigprocmask(how, set, oset) pqsigprocmask((how), (set), (oset))
|
|
41
|
+
#define sigaction(signum, act, oldact) pqsigaction((signum), (act), (oldact))
|
|
27
42
|
#define sigemptyset(set) (*(set) = 0)
|
|
28
43
|
#define sigfillset(set) (*(set) = ~0)
|
|
29
44
|
#define sigaddset(set, signum) (*(set) |= (sigmask(signum)))
|
|
@@ -36,7 +51,4 @@ extern PGDLLIMPORT sigset_t StartupBlockSig;
|
|
|
36
51
|
|
|
37
52
|
extern void pqinitmask(void);
|
|
38
53
|
|
|
39
|
-
/* pqsigfunc is declared in src/include/port.h */
|
|
40
|
-
extern pqsigfunc pqsignal_pm(int signo, pqsigfunc func);
|
|
41
|
-
|
|
42
54
|
#endif /* PQSIGNAL_H */
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* sasl.h
|
|
4
|
+
* Defines the SASL mechanism interface for the backend.
|
|
5
|
+
*
|
|
6
|
+
* Each SASL mechanism defines a frontend and a backend callback structure.
|
|
7
|
+
*
|
|
8
|
+
* See src/interfaces/libpq/fe-auth-sasl.h for the frontend counterpart.
|
|
9
|
+
*
|
|
10
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
11
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
12
|
+
*
|
|
13
|
+
* src/include/libpq/sasl.h
|
|
14
|
+
*
|
|
15
|
+
*-------------------------------------------------------------------------
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#ifndef PG_SASL_H
|
|
19
|
+
#define PG_SASL_H
|
|
20
|
+
|
|
21
|
+
#include "lib/stringinfo.h"
|
|
22
|
+
#include "libpq/libpq-be.h"
|
|
23
|
+
|
|
24
|
+
/* Status codes for message exchange */
|
|
25
|
+
#define PG_SASL_EXCHANGE_CONTINUE 0
|
|
26
|
+
#define PG_SASL_EXCHANGE_SUCCESS 1
|
|
27
|
+
#define PG_SASL_EXCHANGE_FAILURE 2
|
|
28
|
+
|
|
29
|
+
/*
|
|
30
|
+
* Backend SASL mechanism callbacks.
|
|
31
|
+
*
|
|
32
|
+
* To implement a backend mechanism, declare a pg_be_sasl_mech struct with
|
|
33
|
+
* appropriate callback implementations. Then pass the mechanism to
|
|
34
|
+
* CheckSASLAuth() during ClientAuthentication(), once the server has decided
|
|
35
|
+
* which authentication method to use.
|
|
36
|
+
*/
|
|
37
|
+
typedef struct pg_be_sasl_mech
|
|
38
|
+
{
|
|
39
|
+
/*---------
|
|
40
|
+
* get_mechanisms()
|
|
41
|
+
*
|
|
42
|
+
* Retrieves the list of SASL mechanism names supported by this
|
|
43
|
+
* implementation.
|
|
44
|
+
*
|
|
45
|
+
* Input parameters:
|
|
46
|
+
*
|
|
47
|
+
* port: The client Port
|
|
48
|
+
*
|
|
49
|
+
* Output parameters:
|
|
50
|
+
*
|
|
51
|
+
* buf: A StringInfo buffer that the callback should populate with
|
|
52
|
+
* supported mechanism names. The names are appended into this
|
|
53
|
+
* StringInfo, each one ending with '\0' bytes.
|
|
54
|
+
*---------
|
|
55
|
+
*/
|
|
56
|
+
void (*get_mechanisms) (Port *port, StringInfo buf);
|
|
57
|
+
|
|
58
|
+
/*---------
|
|
59
|
+
* init()
|
|
60
|
+
*
|
|
61
|
+
* Initializes mechanism-specific state for a connection. This callback
|
|
62
|
+
* must return a pointer to its allocated state, which will be passed
|
|
63
|
+
* as-is as the first argument to the other callbacks.
|
|
64
|
+
*
|
|
65
|
+
* Input parameters:
|
|
66
|
+
*
|
|
67
|
+
* port: The client Port.
|
|
68
|
+
*
|
|
69
|
+
* mech: The actual mechanism name in use by the client.
|
|
70
|
+
*
|
|
71
|
+
* shadow_pass: The stored secret for the role being authenticated, or
|
|
72
|
+
* NULL if one does not exist. Mechanisms that do not use
|
|
73
|
+
* shadow entries may ignore this parameter. If a
|
|
74
|
+
* mechanism uses shadow entries but shadow_pass is NULL,
|
|
75
|
+
* the implementation must continue the exchange as if the
|
|
76
|
+
* user existed and the password did not match, to avoid
|
|
77
|
+
* disclosing valid user names.
|
|
78
|
+
*---------
|
|
79
|
+
*/
|
|
80
|
+
void *(*init) (Port *port, const char *mech, const char *shadow_pass);
|
|
81
|
+
|
|
82
|
+
/*---------
|
|
83
|
+
* exchange()
|
|
84
|
+
*
|
|
85
|
+
* Produces a server challenge to be sent to the client. The callback
|
|
86
|
+
* must return one of the PG_SASL_EXCHANGE_* values, depending on
|
|
87
|
+
* whether the exchange continues, has finished successfully, or has
|
|
88
|
+
* failed.
|
|
89
|
+
*
|
|
90
|
+
* Input parameters:
|
|
91
|
+
*
|
|
92
|
+
* state: The opaque mechanism state returned by init()
|
|
93
|
+
*
|
|
94
|
+
* input: The response data sent by the client, or NULL if the
|
|
95
|
+
* mechanism is client-first but the client did not send an
|
|
96
|
+
* initial response. (This can only happen during the first
|
|
97
|
+
* message from the client.) This is guaranteed to be
|
|
98
|
+
* null-terminated for safety, but SASL allows embedded
|
|
99
|
+
* nulls in responses, so mechanisms must be careful to
|
|
100
|
+
* check inputlen.
|
|
101
|
+
*
|
|
102
|
+
* inputlen: The length of the challenge data sent by the server, or
|
|
103
|
+
* -1 if the client did not send an initial response
|
|
104
|
+
*
|
|
105
|
+
* Output parameters, to be set by the callback function:
|
|
106
|
+
*
|
|
107
|
+
* output: A palloc'd buffer containing either the server's next
|
|
108
|
+
* challenge (if PG_SASL_EXCHANGE_CONTINUE is returned) or
|
|
109
|
+
* the server's outcome data (if PG_SASL_EXCHANGE_SUCCESS is
|
|
110
|
+
* returned and the mechanism requires data to be sent during
|
|
111
|
+
* a successful outcome). The callback should set this to
|
|
112
|
+
* NULL if the exchange is over and no output should be sent,
|
|
113
|
+
* which should correspond to either PG_SASL_EXCHANGE_FAILURE
|
|
114
|
+
* or a PG_SASL_EXCHANGE_SUCCESS with no outcome data.
|
|
115
|
+
*
|
|
116
|
+
* outputlen: The length of the challenge data. Ignored if *output is
|
|
117
|
+
* NULL.
|
|
118
|
+
*
|
|
119
|
+
* logdetail: Set to an optional DETAIL message to be printed to the
|
|
120
|
+
* server log, to disambiguate failure modes. (The client
|
|
121
|
+
* will only ever see the same generic authentication
|
|
122
|
+
* failure message.) Ignored if the exchange is completed
|
|
123
|
+
* with PG_SASL_EXCHANGE_SUCCESS.
|
|
124
|
+
*---------
|
|
125
|
+
*/
|
|
126
|
+
int (*exchange) (void *state,
|
|
127
|
+
const char *input, int inputlen,
|
|
128
|
+
char **output, int *outputlen,
|
|
129
|
+
const char **logdetail);
|
|
130
|
+
} pg_be_sasl_mech;
|
|
131
|
+
|
|
132
|
+
/* Common implementation for auth.c */
|
|
133
|
+
extern int CheckSASLAuth(const pg_be_sasl_mech *mech, Port *port,
|
|
134
|
+
char *shadow_pass, const char **logdetail);
|
|
135
|
+
|
|
136
|
+
#endif /* PG_SASL_H */
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* scram.h
|
|
4
|
+
* Interface to libpq/scram.c
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* src/include/libpq/scram.h
|
|
10
|
+
*
|
|
11
|
+
*-------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
#ifndef PG_SCRAM_H
|
|
14
|
+
#define PG_SCRAM_H
|
|
15
|
+
|
|
16
|
+
#include "common/cryptohash.h"
|
|
17
|
+
#include "lib/stringinfo.h"
|
|
18
|
+
#include "libpq/libpq-be.h"
|
|
19
|
+
#include "libpq/sasl.h"
|
|
20
|
+
|
|
21
|
+
/* Number of iterations when generating new secrets */
|
|
22
|
+
extern PGDLLIMPORT int scram_sha_256_iterations;
|
|
23
|
+
|
|
24
|
+
/* SASL implementation callbacks */
|
|
25
|
+
extern PGDLLIMPORT const pg_be_sasl_mech pg_be_scram_mech;
|
|
26
|
+
|
|
27
|
+
/* Routines to handle and check SCRAM-SHA-256 secret */
|
|
28
|
+
extern char *pg_be_scram_build_secret(const char *password);
|
|
29
|
+
extern bool parse_scram_secret(const char *secret,
|
|
30
|
+
int *iterations,
|
|
31
|
+
pg_cryptohash_type *hash_type,
|
|
32
|
+
int *key_length, char **salt,
|
|
33
|
+
uint8 *stored_key, uint8 *server_key);
|
|
34
|
+
extern bool scram_verify_plain_password(const char *username,
|
|
35
|
+
const char *password, const char *secret);
|
|
36
|
+
|
|
37
|
+
#endif /* PG_SCRAM_H */
|