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
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* int.h
|
|
4
|
+
* Routines to perform integer math, while checking for overflows.
|
|
5
|
+
*
|
|
6
|
+
* The routines in this file are intended to be well defined C, without
|
|
7
|
+
* relying on compiler flags like -fwrapv.
|
|
8
|
+
*
|
|
9
|
+
* To reduce the overhead of these routines try to use compiler intrinsics
|
|
10
|
+
* where available. That's not that important for the 16, 32 bit cases, but
|
|
11
|
+
* the 64 bit cases can be considerably faster with intrinsics. In case no
|
|
12
|
+
* intrinsics are available 128 bit math is used where available.
|
|
13
|
+
*
|
|
14
|
+
* Copyright (c) 2017-2023, PostgreSQL Global Development Group
|
|
15
|
+
*
|
|
16
|
+
* src/include/common/int.h
|
|
17
|
+
*
|
|
18
|
+
*-------------------------------------------------------------------------
|
|
19
|
+
*/
|
|
20
|
+
#ifndef COMMON_INT_H
|
|
21
|
+
#define COMMON_INT_H
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/*---------
|
|
25
|
+
* The following guidelines apply to all the routines:
|
|
26
|
+
* - If a + b overflows, return true, otherwise store the result of a + b
|
|
27
|
+
* into *result. The content of *result is implementation defined in case of
|
|
28
|
+
* overflow.
|
|
29
|
+
* - If a - b overflows, return true, otherwise store the result of a - b
|
|
30
|
+
* into *result. The content of *result is implementation defined in case of
|
|
31
|
+
* overflow.
|
|
32
|
+
* - If a * b overflows, return true, otherwise store the result of a * b
|
|
33
|
+
* into *result. The content of *result is implementation defined in case of
|
|
34
|
+
* overflow.
|
|
35
|
+
*---------
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/*------------------------------------------------------------------------
|
|
39
|
+
* Overflow routines for signed integers
|
|
40
|
+
*------------------------------------------------------------------------
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
* INT16
|
|
45
|
+
*/
|
|
46
|
+
static inline bool
|
|
47
|
+
pg_add_s16_overflow(int16 a, int16 b, int16 *result)
|
|
48
|
+
{
|
|
49
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
50
|
+
return __builtin_add_overflow(a, b, result);
|
|
51
|
+
#else
|
|
52
|
+
int32 res = (int32) a + (int32) b;
|
|
53
|
+
|
|
54
|
+
if (res > PG_INT16_MAX || res < PG_INT16_MIN)
|
|
55
|
+
{
|
|
56
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
*result = (int16) res;
|
|
60
|
+
return false;
|
|
61
|
+
#endif
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static inline bool
|
|
65
|
+
pg_sub_s16_overflow(int16 a, int16 b, int16 *result)
|
|
66
|
+
{
|
|
67
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
68
|
+
return __builtin_sub_overflow(a, b, result);
|
|
69
|
+
#else
|
|
70
|
+
int32 res = (int32) a - (int32) b;
|
|
71
|
+
|
|
72
|
+
if (res > PG_INT16_MAX || res < PG_INT16_MIN)
|
|
73
|
+
{
|
|
74
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
*result = (int16) res;
|
|
78
|
+
return false;
|
|
79
|
+
#endif
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
static inline bool
|
|
83
|
+
pg_mul_s16_overflow(int16 a, int16 b, int16 *result)
|
|
84
|
+
{
|
|
85
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
86
|
+
return __builtin_mul_overflow(a, b, result);
|
|
87
|
+
#else
|
|
88
|
+
int32 res = (int32) a * (int32) b;
|
|
89
|
+
|
|
90
|
+
if (res > PG_INT16_MAX || res < PG_INT16_MIN)
|
|
91
|
+
{
|
|
92
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
*result = (int16) res;
|
|
96
|
+
return false;
|
|
97
|
+
#endif
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/*
|
|
101
|
+
* INT32
|
|
102
|
+
*/
|
|
103
|
+
static inline bool
|
|
104
|
+
pg_add_s32_overflow(int32 a, int32 b, int32 *result)
|
|
105
|
+
{
|
|
106
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
107
|
+
return __builtin_add_overflow(a, b, result);
|
|
108
|
+
#else
|
|
109
|
+
int64 res = (int64) a + (int64) b;
|
|
110
|
+
|
|
111
|
+
if (res > PG_INT32_MAX || res < PG_INT32_MIN)
|
|
112
|
+
{
|
|
113
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
*result = (int32) res;
|
|
117
|
+
return false;
|
|
118
|
+
#endif
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
static inline bool
|
|
122
|
+
pg_sub_s32_overflow(int32 a, int32 b, int32 *result)
|
|
123
|
+
{
|
|
124
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
125
|
+
return __builtin_sub_overflow(a, b, result);
|
|
126
|
+
#else
|
|
127
|
+
int64 res = (int64) a - (int64) b;
|
|
128
|
+
|
|
129
|
+
if (res > PG_INT32_MAX || res < PG_INT32_MIN)
|
|
130
|
+
{
|
|
131
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
*result = (int32) res;
|
|
135
|
+
return false;
|
|
136
|
+
#endif
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
static inline bool
|
|
140
|
+
pg_mul_s32_overflow(int32 a, int32 b, int32 *result)
|
|
141
|
+
{
|
|
142
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
143
|
+
return __builtin_mul_overflow(a, b, result);
|
|
144
|
+
#else
|
|
145
|
+
int64 res = (int64) a * (int64) b;
|
|
146
|
+
|
|
147
|
+
if (res > PG_INT32_MAX || res < PG_INT32_MIN)
|
|
148
|
+
{
|
|
149
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
*result = (int32) res;
|
|
153
|
+
return false;
|
|
154
|
+
#endif
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/*
|
|
158
|
+
* INT64
|
|
159
|
+
*/
|
|
160
|
+
static inline bool
|
|
161
|
+
pg_add_s64_overflow(int64 a, int64 b, int64 *result)
|
|
162
|
+
{
|
|
163
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
164
|
+
return __builtin_add_overflow(a, b, result);
|
|
165
|
+
#elif defined(HAVE_INT128)
|
|
166
|
+
int128 res = (int128) a + (int128) b;
|
|
167
|
+
|
|
168
|
+
if (res > PG_INT64_MAX || res < PG_INT64_MIN)
|
|
169
|
+
{
|
|
170
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
*result = (int64) res;
|
|
174
|
+
return false;
|
|
175
|
+
#else
|
|
176
|
+
if ((a > 0 && b > 0 && a > PG_INT64_MAX - b) ||
|
|
177
|
+
(a < 0 && b < 0 && a < PG_INT64_MIN - b))
|
|
178
|
+
{
|
|
179
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
*result = a + b;
|
|
183
|
+
return false;
|
|
184
|
+
#endif
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
static inline bool
|
|
188
|
+
pg_sub_s64_overflow(int64 a, int64 b, int64 *result)
|
|
189
|
+
{
|
|
190
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
191
|
+
return __builtin_sub_overflow(a, b, result);
|
|
192
|
+
#elif defined(HAVE_INT128)
|
|
193
|
+
int128 res = (int128) a - (int128) b;
|
|
194
|
+
|
|
195
|
+
if (res > PG_INT64_MAX || res < PG_INT64_MIN)
|
|
196
|
+
{
|
|
197
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
*result = (int64) res;
|
|
201
|
+
return false;
|
|
202
|
+
#else
|
|
203
|
+
if ((a < 0 && b > 0 && a < PG_INT64_MIN + b) ||
|
|
204
|
+
(a > 0 && b < 0 && a > PG_INT64_MAX + b))
|
|
205
|
+
{
|
|
206
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
*result = a - b;
|
|
210
|
+
return false;
|
|
211
|
+
#endif
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
static inline bool
|
|
215
|
+
pg_mul_s64_overflow(int64 a, int64 b, int64 *result)
|
|
216
|
+
{
|
|
217
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
218
|
+
return __builtin_mul_overflow(a, b, result);
|
|
219
|
+
#elif defined(HAVE_INT128)
|
|
220
|
+
int128 res = (int128) a * (int128) b;
|
|
221
|
+
|
|
222
|
+
if (res > PG_INT64_MAX || res < PG_INT64_MIN)
|
|
223
|
+
{
|
|
224
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
*result = (int64) res;
|
|
228
|
+
return false;
|
|
229
|
+
#else
|
|
230
|
+
/*
|
|
231
|
+
* Overflow can only happen if at least one value is outside the range
|
|
232
|
+
* sqrt(min)..sqrt(max) so check that first as the division can be quite a
|
|
233
|
+
* bit more expensive than the multiplication.
|
|
234
|
+
*
|
|
235
|
+
* Multiplying by 0 or 1 can't overflow of course and checking for 0
|
|
236
|
+
* separately avoids any risk of dividing by 0. Be careful about dividing
|
|
237
|
+
* INT_MIN by -1 also, note reversing the a and b to ensure we're always
|
|
238
|
+
* dividing it by a positive value.
|
|
239
|
+
*
|
|
240
|
+
*/
|
|
241
|
+
if ((a > PG_INT32_MAX || a < PG_INT32_MIN ||
|
|
242
|
+
b > PG_INT32_MAX || b < PG_INT32_MIN) &&
|
|
243
|
+
a != 0 && a != 1 && b != 0 && b != 1 &&
|
|
244
|
+
((a > 0 && b > 0 && a > PG_INT64_MAX / b) ||
|
|
245
|
+
(a > 0 && b < 0 && b < PG_INT64_MIN / a) ||
|
|
246
|
+
(a < 0 && b > 0 && a < PG_INT64_MIN / b) ||
|
|
247
|
+
(a < 0 && b < 0 && a < PG_INT64_MAX / b)))
|
|
248
|
+
{
|
|
249
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
*result = a * b;
|
|
253
|
+
return false;
|
|
254
|
+
#endif
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/*------------------------------------------------------------------------
|
|
258
|
+
* Overflow routines for unsigned integers
|
|
259
|
+
*------------------------------------------------------------------------
|
|
260
|
+
*/
|
|
261
|
+
|
|
262
|
+
/*
|
|
263
|
+
* UINT16
|
|
264
|
+
*/
|
|
265
|
+
static inline bool
|
|
266
|
+
pg_add_u16_overflow(uint16 a, uint16 b, uint16 *result)
|
|
267
|
+
{
|
|
268
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
269
|
+
return __builtin_add_overflow(a, b, result);
|
|
270
|
+
#else
|
|
271
|
+
uint16 res = a + b;
|
|
272
|
+
|
|
273
|
+
if (res < a)
|
|
274
|
+
{
|
|
275
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
*result = res;
|
|
279
|
+
return false;
|
|
280
|
+
#endif
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
static inline bool
|
|
284
|
+
pg_sub_u16_overflow(uint16 a, uint16 b, uint16 *result)
|
|
285
|
+
{
|
|
286
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
287
|
+
return __builtin_sub_overflow(a, b, result);
|
|
288
|
+
#else
|
|
289
|
+
if (b > a)
|
|
290
|
+
{
|
|
291
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
294
|
+
*result = a - b;
|
|
295
|
+
return false;
|
|
296
|
+
#endif
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
static inline bool
|
|
300
|
+
pg_mul_u16_overflow(uint16 a, uint16 b, uint16 *result)
|
|
301
|
+
{
|
|
302
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
303
|
+
return __builtin_mul_overflow(a, b, result);
|
|
304
|
+
#else
|
|
305
|
+
uint32 res = (uint32) a * (uint32) b;
|
|
306
|
+
|
|
307
|
+
if (res > PG_UINT16_MAX)
|
|
308
|
+
{
|
|
309
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
310
|
+
return true;
|
|
311
|
+
}
|
|
312
|
+
*result = (uint16) res;
|
|
313
|
+
return false;
|
|
314
|
+
#endif
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/*
|
|
318
|
+
* INT32
|
|
319
|
+
*/
|
|
320
|
+
static inline bool
|
|
321
|
+
pg_add_u32_overflow(uint32 a, uint32 b, uint32 *result)
|
|
322
|
+
{
|
|
323
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
324
|
+
return __builtin_add_overflow(a, b, result);
|
|
325
|
+
#else
|
|
326
|
+
uint32 res = a + b;
|
|
327
|
+
|
|
328
|
+
if (res < a)
|
|
329
|
+
{
|
|
330
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
*result = res;
|
|
334
|
+
return false;
|
|
335
|
+
#endif
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
static inline bool
|
|
339
|
+
pg_sub_u32_overflow(uint32 a, uint32 b, uint32 *result)
|
|
340
|
+
{
|
|
341
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
342
|
+
return __builtin_sub_overflow(a, b, result);
|
|
343
|
+
#else
|
|
344
|
+
if (b > a)
|
|
345
|
+
{
|
|
346
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
349
|
+
*result = a - b;
|
|
350
|
+
return false;
|
|
351
|
+
#endif
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
static inline bool
|
|
355
|
+
pg_mul_u32_overflow(uint32 a, uint32 b, uint32 *result)
|
|
356
|
+
{
|
|
357
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
358
|
+
return __builtin_mul_overflow(a, b, result);
|
|
359
|
+
#else
|
|
360
|
+
uint64 res = (uint64) a * (uint64) b;
|
|
361
|
+
|
|
362
|
+
if (res > PG_UINT32_MAX)
|
|
363
|
+
{
|
|
364
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
367
|
+
*result = (uint32) res;
|
|
368
|
+
return false;
|
|
369
|
+
#endif
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/*
|
|
373
|
+
* UINT64
|
|
374
|
+
*/
|
|
375
|
+
static inline bool
|
|
376
|
+
pg_add_u64_overflow(uint64 a, uint64 b, uint64 *result)
|
|
377
|
+
{
|
|
378
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
379
|
+
return __builtin_add_overflow(a, b, result);
|
|
380
|
+
#else
|
|
381
|
+
uint64 res = a + b;
|
|
382
|
+
|
|
383
|
+
if (res < a)
|
|
384
|
+
{
|
|
385
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
386
|
+
return true;
|
|
387
|
+
}
|
|
388
|
+
*result = res;
|
|
389
|
+
return false;
|
|
390
|
+
#endif
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
static inline bool
|
|
394
|
+
pg_sub_u64_overflow(uint64 a, uint64 b, uint64 *result)
|
|
395
|
+
{
|
|
396
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
397
|
+
return __builtin_sub_overflow(a, b, result);
|
|
398
|
+
#else
|
|
399
|
+
if (b > a)
|
|
400
|
+
{
|
|
401
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
402
|
+
return true;
|
|
403
|
+
}
|
|
404
|
+
*result = a - b;
|
|
405
|
+
return false;
|
|
406
|
+
#endif
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
static inline bool
|
|
410
|
+
pg_mul_u64_overflow(uint64 a, uint64 b, uint64 *result)
|
|
411
|
+
{
|
|
412
|
+
#if defined(HAVE__BUILTIN_OP_OVERFLOW)
|
|
413
|
+
return __builtin_mul_overflow(a, b, result);
|
|
414
|
+
#elif defined(HAVE_INT128)
|
|
415
|
+
uint128 res = (uint128) a * (uint128) b;
|
|
416
|
+
|
|
417
|
+
if (res > PG_UINT64_MAX)
|
|
418
|
+
{
|
|
419
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
420
|
+
return true;
|
|
421
|
+
}
|
|
422
|
+
*result = (uint64) res;
|
|
423
|
+
return false;
|
|
424
|
+
#else
|
|
425
|
+
uint64 res = a * b;
|
|
426
|
+
|
|
427
|
+
if (a != 0 && b != res / a)
|
|
428
|
+
{
|
|
429
|
+
*result = 0x5EED; /* to avoid spurious warnings */
|
|
430
|
+
return true;
|
|
431
|
+
}
|
|
432
|
+
*result = res;
|
|
433
|
+
return false;
|
|
434
|
+
#endif
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
#endif /* COMMON_INT_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* PostgreSQL's list of SQL keywords
|
|
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/common/keywords.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Key word lookup for PostgreSQL
|
|
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/common/kwlookup.h
|
|
@@ -32,7 +32,7 @@ typedef struct ScanKeywordList
|
|
|
32
32
|
} ScanKeywordList;
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
extern int ScanKeywordLookup(const char *
|
|
35
|
+
extern int ScanKeywordLookup(const char *str, const ScanKeywordList *keywords);
|
|
36
36
|
|
|
37
37
|
/* Code that wants to retrieve the text of the N'th keyword should use this. */
|
|
38
38
|
static inline const char *
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* Pseudo-Random Number Generator
|
|
4
4
|
*
|
|
5
|
-
* Copyright (c) 2021-
|
|
5
|
+
* Copyright (c) 2021-2023, PostgreSQL Global Development Group
|
|
6
6
|
*
|
|
7
7
|
* src/include/common/pg_prng.h
|
|
8
8
|
*
|
|
@@ -26,7 +26,7 @@ typedef struct pg_prng_state
|
|
|
26
26
|
* Callers not needing local PRNG series may use this global state vector,
|
|
27
27
|
* after initializing it with one of the pg_prng_...seed functions.
|
|
28
28
|
*/
|
|
29
|
-
extern PGDLLIMPORT
|
|
29
|
+
extern PGDLLIMPORT pg_prng_state pg_global_prng_state;
|
|
30
30
|
|
|
31
31
|
extern void pg_prng_seed(pg_prng_state *state, uint64 seed);
|
|
32
32
|
extern void pg_prng_fseed(pg_prng_state *state, double fseed);
|
|
@@ -55,6 +55,7 @@ extern uint32 pg_prng_uint32(pg_prng_state *state);
|
|
|
55
55
|
extern int32 pg_prng_int32(pg_prng_state *state);
|
|
56
56
|
extern int32 pg_prng_int32p(pg_prng_state *state);
|
|
57
57
|
extern double pg_prng_double(pg_prng_state *state);
|
|
58
|
+
extern double pg_prng_double_normal(pg_prng_state *state);
|
|
58
59
|
extern bool pg_prng_bool(pg_prng_state *state);
|
|
59
60
|
|
|
60
61
|
#endif /* PG_PRNG_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* relpath.h
|
|
4
4
|
* Declarations for GetRelationPath() and friends
|
|
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/common/relpath.h
|
|
@@ -19,6 +19,13 @@
|
|
|
19
19
|
*/
|
|
20
20
|
#include "catalog/catversion.h" /* pgrminclude ignore */
|
|
21
21
|
|
|
22
|
+
/*
|
|
23
|
+
* RelFileNumber data type identifies the specific relation file name.
|
|
24
|
+
*/
|
|
25
|
+
typedef Oid RelFileNumber;
|
|
26
|
+
#define InvalidRelFileNumber ((RelFileNumber) InvalidOid)
|
|
27
|
+
#define RelFileNumberIsValid(relnumber) \
|
|
28
|
+
((bool) ((relnumber) != InvalidRelFileNumber))
|
|
22
29
|
|
|
23
30
|
/*
|
|
24
31
|
* Name of major-version-specific tablespace subdirectories
|
|
@@ -64,27 +71,27 @@ extern int forkname_chars(const char *str, ForkNumber *fork);
|
|
|
64
71
|
/*
|
|
65
72
|
* Stuff for computing filesystem pathnames for relations.
|
|
66
73
|
*/
|
|
67
|
-
extern char *GetDatabasePath(Oid
|
|
74
|
+
extern char *GetDatabasePath(Oid dbOid, Oid spcOid);
|
|
68
75
|
|
|
69
|
-
extern char *GetRelationPath(Oid
|
|
76
|
+
extern char *GetRelationPath(Oid dbOid, Oid spcOid, RelFileNumber relNumber,
|
|
70
77
|
int backendId, ForkNumber forkNumber);
|
|
71
78
|
|
|
72
79
|
/*
|
|
73
80
|
* Wrapper macros for GetRelationPath. Beware of multiple
|
|
74
|
-
* evaluation of the
|
|
81
|
+
* evaluation of the RelFileLocator or RelFileLocatorBackend argument!
|
|
75
82
|
*/
|
|
76
83
|
|
|
77
|
-
/* First argument is a
|
|
78
|
-
#define relpathbackend(
|
|
79
|
-
GetRelationPath((
|
|
84
|
+
/* First argument is a RelFileLocator */
|
|
85
|
+
#define relpathbackend(rlocator, backend, forknum) \
|
|
86
|
+
GetRelationPath((rlocator).dbOid, (rlocator).spcOid, (rlocator).relNumber, \
|
|
80
87
|
backend, forknum)
|
|
81
88
|
|
|
82
|
-
/* First argument is a
|
|
83
|
-
#define relpathperm(
|
|
84
|
-
relpathbackend(
|
|
89
|
+
/* First argument is a RelFileLocator */
|
|
90
|
+
#define relpathperm(rlocator, forknum) \
|
|
91
|
+
relpathbackend(rlocator, InvalidBackendId, forknum)
|
|
85
92
|
|
|
86
|
-
/* First argument is a
|
|
87
|
-
#define relpath(
|
|
88
|
-
relpathbackend((
|
|
93
|
+
/* First argument is a RelFileLocatorBackend */
|
|
94
|
+
#define relpath(rlocator, forknum) \
|
|
95
|
+
relpathbackend((rlocator).locator, (rlocator).backend, forknum)
|
|
89
96
|
|
|
90
97
|
#endif /* RELPATH_H */
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* scram-common.h
|
|
4
|
+
* Declarations for helper functions used for SCRAM authentication
|
|
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/common/scram-common.h
|
|
10
|
+
*
|
|
11
|
+
*-------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
#ifndef SCRAM_COMMON_H
|
|
14
|
+
#define SCRAM_COMMON_H
|
|
15
|
+
|
|
16
|
+
#include "common/cryptohash.h"
|
|
17
|
+
#include "common/sha2.h"
|
|
18
|
+
|
|
19
|
+
/* Name of SCRAM mechanisms per IANA */
|
|
20
|
+
#define SCRAM_SHA_256_NAME "SCRAM-SHA-256"
|
|
21
|
+
#define SCRAM_SHA_256_PLUS_NAME "SCRAM-SHA-256-PLUS" /* with channel binding */
|
|
22
|
+
|
|
23
|
+
/* Length of SCRAM keys (client and server) */
|
|
24
|
+
#define SCRAM_SHA_256_KEY_LEN PG_SHA256_DIGEST_LENGTH
|
|
25
|
+
|
|
26
|
+
/*
|
|
27
|
+
* Size of buffers used internally by SCRAM routines, that should be the
|
|
28
|
+
* maximum of SCRAM_SHA_*_KEY_LEN among the hash methods supported.
|
|
29
|
+
*/
|
|
30
|
+
#define SCRAM_MAX_KEY_LEN SCRAM_SHA_256_KEY_LEN
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* Size of random nonce generated in the authentication exchange. This
|
|
34
|
+
* is in "raw" number of bytes, the actual nonces sent over the wire are
|
|
35
|
+
* encoded using only ASCII-printable characters.
|
|
36
|
+
*/
|
|
37
|
+
#define SCRAM_RAW_NONCE_LEN 18
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* Length of salt when generating new secrets, in bytes. (It will be stored
|
|
41
|
+
* and sent over the wire encoded in Base64.) 16 bytes is what the example in
|
|
42
|
+
* RFC 7677 uses.
|
|
43
|
+
*/
|
|
44
|
+
#define SCRAM_DEFAULT_SALT_LEN 16
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* Default number of iterations when generating secret. Should be at least
|
|
48
|
+
* 4096 per RFC 7677.
|
|
49
|
+
*/
|
|
50
|
+
#define SCRAM_SHA_256_DEFAULT_ITERATIONS 4096
|
|
51
|
+
|
|
52
|
+
extern int scram_SaltedPassword(const char *password,
|
|
53
|
+
pg_cryptohash_type hash_type, int key_length,
|
|
54
|
+
const char *salt, int saltlen, int iterations,
|
|
55
|
+
uint8 *result, const char **errstr);
|
|
56
|
+
extern int scram_H(const uint8 *input, pg_cryptohash_type hash_type,
|
|
57
|
+
int key_length, uint8 *result,
|
|
58
|
+
const char **errstr);
|
|
59
|
+
extern int scram_ClientKey(const uint8 *salted_password,
|
|
60
|
+
pg_cryptohash_type hash_type, int key_length,
|
|
61
|
+
uint8 *result, const char **errstr);
|
|
62
|
+
extern int scram_ServerKey(const uint8 *salted_password,
|
|
63
|
+
pg_cryptohash_type hash_type, int key_length,
|
|
64
|
+
uint8 *result, const char **errstr);
|
|
65
|
+
|
|
66
|
+
extern char *scram_build_secret(pg_cryptohash_type hash_type, int key_length,
|
|
67
|
+
const char *salt, int saltlen, int iterations,
|
|
68
|
+
const char *password, const char **errstr);
|
|
69
|
+
|
|
70
|
+
#endif /* SCRAM_COMMON_H */
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* sha2.h
|
|
4
|
+
* Constants related to SHA224, 256, 384 AND 512.
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* IDENTIFICATION
|
|
10
|
+
* src/include/common/sha2.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
#ifndef _PG_SHA2_H_
|
|
16
|
+
#define _PG_SHA2_H_
|
|
17
|
+
|
|
18
|
+
/*** SHA224/256/384/512 Various Length Definitions ***********************/
|
|
19
|
+
#define PG_SHA224_BLOCK_LENGTH 64
|
|
20
|
+
#define PG_SHA224_DIGEST_LENGTH 28
|
|
21
|
+
#define PG_SHA224_DIGEST_STRING_LENGTH (PG_SHA224_DIGEST_LENGTH * 2 + 1)
|
|
22
|
+
#define PG_SHA256_BLOCK_LENGTH 64
|
|
23
|
+
#define PG_SHA256_DIGEST_LENGTH 32
|
|
24
|
+
#define PG_SHA256_DIGEST_STRING_LENGTH (PG_SHA256_DIGEST_LENGTH * 2 + 1)
|
|
25
|
+
#define PG_SHA384_BLOCK_LENGTH 128
|
|
26
|
+
#define PG_SHA384_DIGEST_LENGTH 48
|
|
27
|
+
#define PG_SHA384_DIGEST_STRING_LENGTH (PG_SHA384_DIGEST_LENGTH * 2 + 1)
|
|
28
|
+
#define PG_SHA512_BLOCK_LENGTH 128
|
|
29
|
+
#define PG_SHA512_DIGEST_LENGTH 64
|
|
30
|
+
#define PG_SHA512_DIGEST_STRING_LENGTH (PG_SHA512_DIGEST_LENGTH * 2 + 1)
|
|
31
|
+
|
|
32
|
+
#endif /* _PG_SHA2_H_ */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* string.h
|
|
3
3
|
* string handling helpers
|
|
4
4
|
*
|
|
5
|
-
* Portions Copyright (c) 1996-
|
|
5
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
6
6
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
7
7
|
*
|
|
8
8
|
* src/include/common/string.h
|
|
@@ -10,13 +10,15 @@
|
|
|
10
10
|
#ifndef COMMON_STRING_H
|
|
11
11
|
#define COMMON_STRING_H
|
|
12
12
|
|
|
13
|
+
#include <signal.h>
|
|
14
|
+
|
|
13
15
|
struct StringInfoData; /* avoid including stringinfo.h here */
|
|
14
16
|
|
|
15
17
|
typedef struct PromptInterruptContext
|
|
16
18
|
{
|
|
17
19
|
/* To avoid including <setjmp.h> here, jmpbuf is declared "void *" */
|
|
18
20
|
void *jmpbuf; /* existing longjmp buffer */
|
|
19
|
-
volatile
|
|
21
|
+
volatile sig_atomic_t *enabled; /* flag that enables longjmp-on-interrupt */
|
|
20
22
|
bool canceled; /* indicates whether cancellation occurred */
|
|
21
23
|
} PromptInterruptContext;
|
|
22
24
|
|
|
@@ -24,7 +26,7 @@ typedef struct PromptInterruptContext
|
|
|
24
26
|
extern bool pg_str_endswith(const char *str, const char *end);
|
|
25
27
|
extern int strtoint(const char *pg_restrict str, char **pg_restrict endptr,
|
|
26
28
|
int base);
|
|
27
|
-
extern
|
|
29
|
+
extern char *pg_clean_ascii(const char *str, int alloc_flags);
|
|
28
30
|
extern int pg_strip_crlf(char *str);
|
|
29
31
|
extern bool pg_is_ascii(const char *str);
|
|
30
32
|
|