pg_query 2.0.3 → 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 +165 -0
- data/README.md +67 -29
- data/Rakefile +8 -23
- data/ext/pg_query/extconf.rb +21 -3
- data/ext/pg_query/include/pg_query.h +29 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
- data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
- data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
- 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 +17 -2
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
- 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 +4 -2
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
- 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 +60 -100
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
- data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
- data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -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 +11 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
- 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 +6 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
- 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 +2 -6
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
- 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 +50 -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 +98 -32
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
- 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} +33 -8
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
- 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 +12 -12
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
- data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
- 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 +125 -25
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
- 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 +100 -496
- 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 +678 -207
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- 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/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
- data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- 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 +2 -5
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +778 -0
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
- 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} +10 -10
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
- data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -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 +3 -3
- 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 +129 -16
- 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} +107 -111
- 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 +17 -20
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
- 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 +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -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 +96 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
- data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
- 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 +9 -7
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
- data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
- 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 +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
- 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 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
- data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
- 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 +48 -27
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
- data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
- 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 +13 -12
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
- 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 +38 -9
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
- 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/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
- 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 +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
- data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
- data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +21026 -17002
- data/ext/pg_query/pg_query_deparse.c +1 -9896
- data/ext/pg_query/pg_query_fingerprint.c +162 -50
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
- data/ext/pg_query/pg_query_normalize.c +259 -64
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
- data/ext/pg_query/pg_query_ruby.c +6 -1
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +3 -2
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +99 -12
- data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
- data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
- 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 +453 -314
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
- 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 +420 -0
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +545 -498
- 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 +717 -113
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +103 -40
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +51 -29
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +7 -5
- data/lib/pg_query/fingerprint.rb +21 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +141 -50
- data/lib/pg_query/pg_query_pb.rb +175 -3031
- data/lib/pg_query/treewalker.rb +26 -2
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +443 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/rmgr.h +0 -35
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parser.h +0 -41
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pgstat.h +0 -1487
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- 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/regproc.h +0 -28
- 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_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- data/ext/pg_query/src_port_strnlen.c +0 -39
- data/lib/pg_query/json_field_names.rb +0 -1402
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
|
@@ -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
|
|
@@ -70,8 +60,12 @@ typedef struct
|
|
|
70
60
|
|
|
71
61
|
typedef enum CAC_state
|
|
72
62
|
{
|
|
73
|
-
CAC_OK,
|
|
74
|
-
|
|
63
|
+
CAC_OK,
|
|
64
|
+
CAC_STARTUP,
|
|
65
|
+
CAC_SHUTDOWN,
|
|
66
|
+
CAC_RECOVERY,
|
|
67
|
+
CAC_NOTCONSISTENT,
|
|
68
|
+
CAC_TOOMANY
|
|
75
69
|
} CAC_state;
|
|
76
70
|
|
|
77
71
|
|
|
@@ -90,10 +84,42 @@ typedef struct
|
|
|
90
84
|
* GSSAPI auth was not used */
|
|
91
85
|
bool auth; /* GSSAPI Authentication used */
|
|
92
86
|
bool enc; /* GSSAPI encryption in use */
|
|
87
|
+
bool delegated_creds; /* GSSAPI Delegated credentials */
|
|
93
88
|
#endif
|
|
94
89
|
} pg_gssinfo;
|
|
95
90
|
#endif
|
|
96
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
|
+
|
|
97
123
|
/*
|
|
98
124
|
* This is used by the postmaster in its communication with frontends. It
|
|
99
125
|
* contains all state information needed during this communication before the
|
|
@@ -190,11 +216,12 @@ typedef struct Port
|
|
|
190
216
|
*/
|
|
191
217
|
bool ssl_in_use;
|
|
192
218
|
char *peer_cn;
|
|
219
|
+
char *peer_dn;
|
|
193
220
|
bool peer_cert_valid;
|
|
194
221
|
|
|
195
222
|
/*
|
|
196
223
|
* OpenSSL structures. (Keep these last so that the locations of other
|
|
197
|
-
* fields are the same whether or not you build with
|
|
224
|
+
* fields are the same whether or not you build with SSL enabled.)
|
|
198
225
|
*/
|
|
199
226
|
#ifdef USE_OPENSSL
|
|
200
227
|
SSL *ssl;
|
|
@@ -266,7 +293,6 @@ extern ssize_t be_tls_write(Port *port, void *ptr, size_t len, int *waitfor);
|
|
|
266
293
|
* Return information about the SSL connection.
|
|
267
294
|
*/
|
|
268
295
|
extern int be_tls_get_cipher_bits(Port *port);
|
|
269
|
-
extern bool be_tls_get_compression(Port *port);
|
|
270
296
|
extern const char *be_tls_get_version(Port *port);
|
|
271
297
|
extern const char *be_tls_get_cipher(Port *port);
|
|
272
298
|
extern void be_tls_get_peer_subject_name(Port *port, char *ptr, size_t len);
|
|
@@ -283,7 +309,7 @@ extern void be_tls_get_peer_serial(Port *port, char *ptr, size_t len);
|
|
|
283
309
|
* This is not supported with old versions of OpenSSL that don't have
|
|
284
310
|
* the X509_get_signature_nid() function.
|
|
285
311
|
*/
|
|
286
|
-
#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))
|
|
287
313
|
#define HAVE_BE_TLS_GET_CERTIFICATE_HASH
|
|
288
314
|
extern char *be_tls_get_certificate_hash(Port *port, size_t *len);
|
|
289
315
|
#endif
|
|
@@ -303,13 +329,15 @@ extern PGDLLIMPORT openssl_tls_init_hook_typ openssl_tls_init_hook;
|
|
|
303
329
|
extern bool be_gssapi_get_auth(Port *port);
|
|
304
330
|
extern bool be_gssapi_get_enc(Port *port);
|
|
305
331
|
extern const char *be_gssapi_get_princ(Port *port);
|
|
332
|
+
extern bool be_gssapi_get_delegation(Port *port);
|
|
306
333
|
|
|
307
334
|
/* Read and write to a GSSAPI-encrypted connection. */
|
|
308
335
|
extern ssize_t be_gssapi_read(Port *port, void *ptr, size_t len);
|
|
309
336
|
extern ssize_t be_gssapi_write(Port *port, void *ptr, size_t len);
|
|
310
337
|
#endif /* ENABLE_GSS */
|
|
311
338
|
|
|
312
|
-
extern ProtocolVersion FrontendProtocol;
|
|
339
|
+
extern PGDLLIMPORT ProtocolVersion FrontendProtocol;
|
|
340
|
+
extern PGDLLIMPORT ClientConnectionInfo MyClientConnectionInfo;
|
|
313
341
|
|
|
314
342
|
/* TCP keepalives configuration. These are no-ops on an AF_UNIX socket. */
|
|
315
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
|
|
@@ -21,6 +21,15 @@
|
|
|
21
21
|
#include "storage/latch.h"
|
|
22
22
|
|
|
23
23
|
|
|
24
|
+
/*
|
|
25
|
+
* Callers of pq_getmessage() must supply a maximum expected message size.
|
|
26
|
+
* By convention, if there's not any specific reason to use another value,
|
|
27
|
+
* use PQ_SMALL_MESSAGE_LIMIT for messages that shouldn't be too long, and
|
|
28
|
+
* PQ_LARGE_MESSAGE_LIMIT for messages that can be long.
|
|
29
|
+
*/
|
|
30
|
+
#define PQ_SMALL_MESSAGE_LIMIT 10000
|
|
31
|
+
#define PQ_LARGE_MESSAGE_LIMIT (MaxAllocSize - 1)
|
|
32
|
+
|
|
24
33
|
typedef struct
|
|
25
34
|
{
|
|
26
35
|
void (*comm_reset) (void);
|
|
@@ -29,8 +38,6 @@ typedef struct
|
|
|
29
38
|
bool (*is_send_pending) (void);
|
|
30
39
|
int (*putmessage) (char msgtype, const char *s, size_t len);
|
|
31
40
|
void (*putmessage_noblock) (char msgtype, const char *s, size_t len);
|
|
32
|
-
void (*startcopyout) (void);
|
|
33
|
-
void (*endcopyout) (bool errorAbort);
|
|
34
41
|
} PQcommMethods;
|
|
35
42
|
|
|
36
43
|
extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
|
|
@@ -43,8 +50,6 @@ extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
|
|
|
43
50
|
(PqCommMethods->putmessage(msgtype, s, len))
|
|
44
51
|
#define pq_putmessage_noblock(msgtype, s, len) \
|
|
45
52
|
(PqCommMethods->putmessage_noblock(msgtype, s, len))
|
|
46
|
-
#define pq_startcopyout() (PqCommMethods->startcopyout())
|
|
47
|
-
#define pq_endcopyout(errorAbort) (PqCommMethods->endcopyout(errorAbort))
|
|
48
53
|
|
|
49
54
|
/*
|
|
50
55
|
* External functions.
|
|
@@ -53,7 +58,11 @@ extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
|
|
|
53
58
|
/*
|
|
54
59
|
* prototypes for functions in pqcomm.c
|
|
55
60
|
*/
|
|
56
|
-
extern WaitEventSet *FeBeWaitSet;
|
|
61
|
+
extern PGDLLIMPORT WaitEventSet *FeBeWaitSet;
|
|
62
|
+
|
|
63
|
+
#define FeBeWaitSetSocketPos 0
|
|
64
|
+
#define FeBeWaitSetLatchPos 1
|
|
65
|
+
#define FeBeWaitSetNEvents 3
|
|
57
66
|
|
|
58
67
|
extern int StreamServerPort(int family, const char *hostName,
|
|
59
68
|
unsigned short portNumber, const char *unixSocketDir,
|
|
@@ -64,7 +73,6 @@ extern void TouchSocketFiles(void);
|
|
|
64
73
|
extern void RemoveSocketFiles(void);
|
|
65
74
|
extern void pq_init(void);
|
|
66
75
|
extern int pq_getbytes(char *s, size_t len);
|
|
67
|
-
extern int pq_getstring(StringInfo s);
|
|
68
76
|
extern void pq_startmsgread(void);
|
|
69
77
|
extern void pq_endmsgread(void);
|
|
70
78
|
extern bool pq_is_reading_msg(void);
|
|
@@ -72,21 +80,24 @@ extern int pq_getmessage(StringInfo s, int maxlen);
|
|
|
72
80
|
extern int pq_getbyte(void);
|
|
73
81
|
extern int pq_peekbyte(void);
|
|
74
82
|
extern int pq_getbyte_if_available(unsigned char *c);
|
|
75
|
-
extern
|
|
83
|
+
extern bool pq_buffer_has_data(void);
|
|
84
|
+
extern int pq_putmessage_v2(char msgtype, const char *s, size_t len);
|
|
85
|
+
extern bool pq_check_connection(void);
|
|
76
86
|
|
|
77
87
|
/*
|
|
78
88
|
* prototypes for functions in be-secure.c
|
|
79
89
|
*/
|
|
80
|
-
extern char *ssl_library;
|
|
81
|
-
extern char *ssl_cert_file;
|
|
82
|
-
extern char *ssl_key_file;
|
|
83
|
-
extern char *ssl_ca_file;
|
|
84
|
-
extern char *ssl_crl_file;
|
|
85
|
-
extern char *
|
|
90
|
+
extern PGDLLIMPORT char *ssl_library;
|
|
91
|
+
extern PGDLLIMPORT char *ssl_cert_file;
|
|
92
|
+
extern PGDLLIMPORT char *ssl_key_file;
|
|
93
|
+
extern PGDLLIMPORT char *ssl_ca_file;
|
|
94
|
+
extern PGDLLIMPORT char *ssl_crl_file;
|
|
95
|
+
extern PGDLLIMPORT char *ssl_crl_dir;
|
|
96
|
+
extern PGDLLIMPORT char *ssl_dh_params_file;
|
|
86
97
|
extern PGDLLIMPORT char *ssl_passphrase_command;
|
|
87
98
|
extern PGDLLIMPORT bool ssl_passphrase_command_supports_reload;
|
|
88
99
|
#ifdef USE_SSL
|
|
89
|
-
extern bool ssl_loaded_verify_locations;
|
|
100
|
+
extern PGDLLIMPORT bool ssl_loaded_verify_locations;
|
|
90
101
|
#endif
|
|
91
102
|
|
|
92
103
|
extern int secure_initialize(bool isServerStart);
|
|
@@ -107,11 +118,11 @@ extern ssize_t secure_open_gssapi(Port *port);
|
|
|
107
118
|
#endif
|
|
108
119
|
|
|
109
120
|
/* GUCs */
|
|
110
|
-
extern char *SSLCipherSuites;
|
|
111
|
-
extern char *SSLECDHCurve;
|
|
112
|
-
extern bool SSLPreferServerCiphers;
|
|
113
|
-
extern int
|
|
114
|
-
extern int
|
|
121
|
+
extern PGDLLIMPORT char *SSLCipherSuites;
|
|
122
|
+
extern PGDLLIMPORT char *SSLECDHCurve;
|
|
123
|
+
extern PGDLLIMPORT bool SSLPreferServerCiphers;
|
|
124
|
+
extern PGDLLIMPORT int ssl_min_protocol_version;
|
|
125
|
+
extern PGDLLIMPORT int ssl_max_protocol_version;
|
|
115
126
|
|
|
116
127
|
enum ssl_protocol_versions
|
|
117
128
|
{
|
|
@@ -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) \
|
|
@@ -85,6 +53,15 @@ typedef struct
|
|
|
85
53
|
*/
|
|
86
54
|
#define UNIXSOCK_PATH_BUFLEN sizeof(((struct sockaddr_un *) NULL)->sun_path)
|
|
87
55
|
|
|
56
|
+
/*
|
|
57
|
+
* A host that looks either like an absolute path or starts with @ is
|
|
58
|
+
* interpreted as a Unix-domain socket address.
|
|
59
|
+
*/
|
|
60
|
+
static inline bool
|
|
61
|
+
is_unixsock_path(const char *path)
|
|
62
|
+
{
|
|
63
|
+
return is_absolute_path(path) || path[0] == '@';
|
|
64
|
+
}
|
|
88
65
|
|
|
89
66
|
/*
|
|
90
67
|
* These manipulate the frontend/backend protocol version number.
|
|
@@ -105,9 +82,12 @@ typedef struct
|
|
|
105
82
|
#define PG_PROTOCOL_MINOR(v) ((v) & 0x0000ffff)
|
|
106
83
|
#define PG_PROTOCOL(m,n) (((m) << 16) | (n))
|
|
107
84
|
|
|
108
|
-
/*
|
|
85
|
+
/*
|
|
86
|
+
* The earliest and latest frontend/backend protocol version supported.
|
|
87
|
+
* (Only protocol version 3 is currently supported)
|
|
88
|
+
*/
|
|
109
89
|
|
|
110
|
-
#define PG_PROTOCOL_EARLIEST PG_PROTOCOL(
|
|
90
|
+
#define PG_PROTOCOL_EARLIEST PG_PROTOCOL(3,0)
|
|
111
91
|
#define PG_PROTOCOL_LATEST PG_PROTOCOL(3,0)
|
|
112
92
|
|
|
113
93
|
typedef uint32 ProtocolVersion; /* FE/BE protocol version number */
|
|
@@ -123,33 +103,7 @@ typedef ProtocolVersion MsgType;
|
|
|
123
103
|
|
|
124
104
|
typedef uint32 PacketLen;
|
|
125
105
|
|
|
126
|
-
|
|
127
|
-
/*
|
|
128
|
-
* Old-style startup packet layout with fixed-width fields. This is used in
|
|
129
|
-
* protocol 1.0 and 2.0, but not in later versions. Note that the fields
|
|
130
|
-
* in this layout are '\0' terminated only if there is room.
|
|
131
|
-
*/
|
|
132
|
-
|
|
133
|
-
#define SM_DATABASE 64
|
|
134
|
-
#define SM_USER 32
|
|
135
|
-
/* We append database name if db_user_namespace true. */
|
|
136
|
-
#define SM_DATABASE_USER (SM_DATABASE+SM_USER+1) /* +1 for @ */
|
|
137
|
-
#define SM_OPTIONS 64
|
|
138
|
-
#define SM_UNUSED 64
|
|
139
|
-
#define SM_TTY 64
|
|
140
|
-
|
|
141
|
-
typedef struct StartupPacket
|
|
142
|
-
{
|
|
143
|
-
ProtocolVersion protoVersion; /* Protocol version */
|
|
144
|
-
char database[SM_DATABASE]; /* Database name */
|
|
145
|
-
/* Db_user_namespace appends dbname */
|
|
146
|
-
char user[SM_USER]; /* User name */
|
|
147
|
-
char options[SM_OPTIONS]; /* Optional additional args */
|
|
148
|
-
char unused[SM_UNUSED]; /* Unused */
|
|
149
|
-
char tty[SM_TTY]; /* Tty for debug output */
|
|
150
|
-
} StartupPacket;
|
|
151
|
-
|
|
152
|
-
extern bool Db_user_namespace;
|
|
106
|
+
extern PGDLLIMPORT bool Db_user_namespace;
|
|
153
107
|
|
|
154
108
|
/*
|
|
155
109
|
* In protocol 3.0 and later, the startup packet length is not fixed, but
|
|
@@ -168,13 +122,14 @@ extern bool Db_user_namespace;
|
|
|
168
122
|
#define AUTH_REQ_PASSWORD 3 /* Password */
|
|
169
123
|
#define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
|
|
170
124
|
#define AUTH_REQ_MD5 5 /* md5 password */
|
|
171
|
-
|
|
125
|
+
/* 6 is available. It was used for SCM creds, not supported any more. */
|
|
172
126
|
#define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
|
|
173
127
|
#define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
|
|
174
128
|
#define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
|
|
175
129
|
#define AUTH_REQ_SASL 10 /* Begin SASL authentication */
|
|
176
130
|
#define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */
|
|
177
131
|
#define AUTH_REQ_SASL_FIN 12 /* Final SASL message */
|
|
132
|
+
#define AUTH_REQ_MAX AUTH_REQ_SASL_FIN /* maximum AUTH_REQ_* value */
|
|
178
133
|
|
|
179
134
|
typedef uint32 AuthRequest;
|
|
180
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,28 +15,40 @@
|
|
|
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)))
|
|
30
45
|
#define sigdelset(set, signum) (*(set) &= ~(sigmask(signum)))
|
|
31
46
|
#endif /* WIN32 */
|
|
32
47
|
|
|
33
|
-
extern sigset_t UnBlockSig
|
|
34
|
-
|
|
35
|
-
|
|
48
|
+
extern PGDLLIMPORT sigset_t UnBlockSig;
|
|
49
|
+
extern PGDLLIMPORT sigset_t BlockSig;
|
|
50
|
+
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 */
|