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
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES error reporting/logging 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/utils/elog.h
|
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
#include <setjmp.h>
|
|
18
18
|
|
|
19
|
+
#include "lib/stringinfo.h"
|
|
20
|
+
|
|
21
|
+
/* We cannot include nodes.h yet, so forward-declare struct Node */
|
|
22
|
+
struct Node;
|
|
23
|
+
|
|
24
|
+
|
|
19
25
|
/* Error level codes */
|
|
20
26
|
#define DEBUG5 10 /* Debugging messages, in categories of
|
|
21
27
|
* decreasing detail. */
|
|
@@ -40,19 +46,21 @@
|
|
|
40
46
|
#define WARNING 19 /* Warnings. NOTICE is for expected messages
|
|
41
47
|
* like implicit sequence creation by SERIAL.
|
|
42
48
|
* WARNING is for unexpected messages. */
|
|
43
|
-
#define
|
|
49
|
+
#define PGWARNING 19 /* Must equal WARNING; see NOTE below. */
|
|
50
|
+
#define WARNING_CLIENT_ONLY 20 /* Warnings to be sent to client as usual, but
|
|
51
|
+
* never to the server log. */
|
|
52
|
+
#define ERROR 21 /* user error - abort transaction; return to
|
|
44
53
|
* known state */
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*/
|
|
49
|
-
#ifdef WIN32
|
|
50
|
-
#define PGERROR 20
|
|
51
|
-
#endif
|
|
52
|
-
#define FATAL 21 /* fatal error - abort process */
|
|
53
|
-
#define PANIC 22 /* take down the other backends with me */
|
|
54
|
+
#define PGERROR 21 /* Must equal ERROR; see NOTE below. */
|
|
55
|
+
#define FATAL 22 /* fatal error - abort process */
|
|
56
|
+
#define PANIC 23 /* take down the other backends with me */
|
|
54
57
|
|
|
55
|
-
|
|
58
|
+
/*
|
|
59
|
+
* NOTE: the alternate names PGWARNING and PGERROR are useful for dealing
|
|
60
|
+
* with third-party headers that make other definitions of WARNING and/or
|
|
61
|
+
* ERROR. One can, for example, re-define ERROR as PGERROR after including
|
|
62
|
+
* such a header.
|
|
63
|
+
*/
|
|
56
64
|
|
|
57
65
|
|
|
58
66
|
/* macros for representing SQLSTATE strings compactly */
|
|
@@ -81,7 +89,7 @@
|
|
|
81
89
|
*/
|
|
82
90
|
#if defined(errno) && defined(__linux__)
|
|
83
91
|
#define pg_prevent_errno_in_scope() int __errno_location pg_attribute_unused()
|
|
84
|
-
#elif defined(errno) && (defined(__darwin__) || defined(
|
|
92
|
+
#elif defined(errno) && (defined(__darwin__) || defined(__FreeBSD__))
|
|
85
93
|
#define pg_prevent_errno_in_scope() int __error pg_attribute_unused()
|
|
86
94
|
#else
|
|
87
95
|
#define pg_prevent_errno_in_scope()
|
|
@@ -111,6 +119,15 @@
|
|
|
111
119
|
* ereport_domain() directly, or preferably they can override the TEXTDOMAIN
|
|
112
120
|
* macro.
|
|
113
121
|
*
|
|
122
|
+
* When __builtin_constant_p is available and elevel >= ERROR we make a call
|
|
123
|
+
* to errstart_cold() instead of errstart(). This version of the function is
|
|
124
|
+
* marked with pg_attribute_cold which will coax supporting compilers into
|
|
125
|
+
* generating code which is more optimized towards non-ERROR cases. Because
|
|
126
|
+
* we use __builtin_constant_p() in the condition, when elevel is not a
|
|
127
|
+
* compile-time constant, or if it is, but it's < ERROR, the compiler has no
|
|
128
|
+
* need to generate any code for this branch. It can simply call errstart()
|
|
129
|
+
* unconditionally.
|
|
130
|
+
*
|
|
114
131
|
* If elevel >= ERROR, the call will not return; we try to inform the compiler
|
|
115
132
|
* of that via pg_unreachable(). However, no useful optimization effect is
|
|
116
133
|
* obtained unless the compiler sees elevel as a compile-time constant, else
|
|
@@ -124,8 +141,10 @@
|
|
|
124
141
|
#define ereport_domain(elevel, domain, ...) \
|
|
125
142
|
do { \
|
|
126
143
|
pg_prevent_errno_in_scope(); \
|
|
127
|
-
if (
|
|
128
|
-
|
|
144
|
+
if (__builtin_constant_p(elevel) && (elevel) >= ERROR ? \
|
|
145
|
+
errstart_cold(elevel, domain) : \
|
|
146
|
+
errstart(elevel, domain)) \
|
|
147
|
+
__VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \
|
|
129
148
|
if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \
|
|
130
149
|
pg_unreachable(); \
|
|
131
150
|
} while(0)
|
|
@@ -135,7 +154,7 @@
|
|
|
135
154
|
const int elevel_ = (elevel); \
|
|
136
155
|
pg_prevent_errno_in_scope(); \
|
|
137
156
|
if (errstart(elevel_, domain)) \
|
|
138
|
-
__VA_ARGS__, errfinish(__FILE__, __LINE__,
|
|
157
|
+
__VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \
|
|
139
158
|
if (elevel_ >= ERROR) \
|
|
140
159
|
pg_unreachable(); \
|
|
141
160
|
} while(0)
|
|
@@ -146,7 +165,10 @@
|
|
|
146
165
|
|
|
147
166
|
#define TEXTDOMAIN NULL
|
|
148
167
|
|
|
168
|
+
extern bool message_level_is_interesting(int elevel);
|
|
169
|
+
|
|
149
170
|
extern bool errstart(int elevel, const char *domain);
|
|
171
|
+
extern pg_attribute_cold bool errstart_cold(int elevel, const char *domain);
|
|
150
172
|
extern void errfinish(const char *filename, int lineno, const char *funcname);
|
|
151
173
|
|
|
152
174
|
extern int errcode(int sqlerrcode);
|
|
@@ -174,6 +196,9 @@ extern int errdetail_plural(const char *fmt_singular, const char *fmt_plural,
|
|
|
174
196
|
|
|
175
197
|
extern int errhint(const char *fmt,...) pg_attribute_printf(1, 2);
|
|
176
198
|
|
|
199
|
+
extern int errhint_plural(const char *fmt_singular, const char *fmt_plural,
|
|
200
|
+
unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4);
|
|
201
|
+
|
|
177
202
|
/*
|
|
178
203
|
* errcontext() is typically called in error context callback functions, not
|
|
179
204
|
* within an ereport() invocation. The callback function can be in a different
|
|
@@ -193,7 +218,6 @@ extern int errhidecontext(bool hide_ctx);
|
|
|
193
218
|
|
|
194
219
|
extern int errbacktrace(void);
|
|
195
220
|
|
|
196
|
-
extern int errfunction(const char *funcname);
|
|
197
221
|
extern int errposition(int cursorpos);
|
|
198
222
|
|
|
199
223
|
extern int internalerrposition(int cursorpos);
|
|
@@ -215,6 +239,63 @@ extern int getinternalerrposition(void);
|
|
|
215
239
|
ereport(elevel, errmsg_internal(__VA_ARGS__))
|
|
216
240
|
|
|
217
241
|
|
|
242
|
+
/*----------
|
|
243
|
+
* Support for reporting "soft" errors that don't require a full transaction
|
|
244
|
+
* abort to clean up. This is to be used in this way:
|
|
245
|
+
* errsave(context,
|
|
246
|
+
* errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
|
|
247
|
+
* errmsg("invalid input syntax for type %s: \"%s\"",
|
|
248
|
+
* "boolean", in_str),
|
|
249
|
+
* ... other errxxx() fields as needed ...);
|
|
250
|
+
*
|
|
251
|
+
* "context" is a node pointer or NULL, and the remaining auxiliary calls
|
|
252
|
+
* provide the same error details as in ereport(). If context is not a
|
|
253
|
+
* pointer to an ErrorSaveContext node, then errsave(context, ...)
|
|
254
|
+
* behaves identically to ereport(ERROR, ...). If context is a pointer
|
|
255
|
+
* to an ErrorSaveContext node, then the information provided by the
|
|
256
|
+
* auxiliary calls is stored in the context node and control returns
|
|
257
|
+
* normally. The caller of errsave() must then do any required cleanup
|
|
258
|
+
* and return control back to its caller. That caller must check the
|
|
259
|
+
* ErrorSaveContext node to see whether an error occurred before
|
|
260
|
+
* it can trust the function's result to be meaningful.
|
|
261
|
+
*
|
|
262
|
+
* errsave_domain() allows a message domain to be specified; it is
|
|
263
|
+
* precisely analogous to ereport_domain().
|
|
264
|
+
*----------
|
|
265
|
+
*/
|
|
266
|
+
#define errsave_domain(context, domain, ...) \
|
|
267
|
+
do { \
|
|
268
|
+
struct Node *context_ = (context); \
|
|
269
|
+
pg_prevent_errno_in_scope(); \
|
|
270
|
+
if (errsave_start(context_, domain)) \
|
|
271
|
+
__VA_ARGS__, errsave_finish(context_, __FILE__, __LINE__, __func__); \
|
|
272
|
+
} while(0)
|
|
273
|
+
|
|
274
|
+
#define errsave(context, ...) \
|
|
275
|
+
errsave_domain(context, TEXTDOMAIN, __VA_ARGS__)
|
|
276
|
+
|
|
277
|
+
/*
|
|
278
|
+
* "ereturn(context, dummy_value, ...);" is exactly the same as
|
|
279
|
+
* "errsave(context, ...); return dummy_value;". This saves a bit
|
|
280
|
+
* of typing in the common case where a function has no cleanup
|
|
281
|
+
* actions to take after reporting a soft error. "dummy_value"
|
|
282
|
+
* can be empty if the function returns void.
|
|
283
|
+
*/
|
|
284
|
+
#define ereturn_domain(context, dummy_value, domain, ...) \
|
|
285
|
+
do { \
|
|
286
|
+
errsave_domain(context, domain, __VA_ARGS__); \
|
|
287
|
+
return dummy_value; \
|
|
288
|
+
} while(0)
|
|
289
|
+
|
|
290
|
+
#define ereturn(context, dummy_value, ...) \
|
|
291
|
+
ereturn_domain(context, dummy_value, TEXTDOMAIN, __VA_ARGS__)
|
|
292
|
+
|
|
293
|
+
extern bool errsave_start(struct Node *context, const char *domain);
|
|
294
|
+
extern void errsave_finish(struct Node *context,
|
|
295
|
+
const char *filename, int lineno,
|
|
296
|
+
const char *funcname);
|
|
297
|
+
|
|
298
|
+
|
|
218
299
|
/* Support for constructing error strings separately from ereport() calls */
|
|
219
300
|
|
|
220
301
|
extern void pre_format_elog_string(int errnumber, const char *domain);
|
|
@@ -230,7 +311,7 @@ typedef struct ErrorContextCallback
|
|
|
230
311
|
void *arg;
|
|
231
312
|
} ErrorContextCallback;
|
|
232
313
|
|
|
233
|
-
extern PGDLLIMPORT __thread
|
|
314
|
+
extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
|
|
234
315
|
|
|
235
316
|
|
|
236
317
|
/*----------
|
|
@@ -290,39 +371,47 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
|
|
|
290
371
|
* pedantry; we have seen bugs from compilers improperly optimizing code
|
|
291
372
|
* away when such a variable was not marked. Beware that gcc's -Wclobbered
|
|
292
373
|
* warnings are just about entirely useless for catching such oversights.
|
|
374
|
+
*
|
|
375
|
+
* Each of these macros accepts an optional argument which can be specified
|
|
376
|
+
* to apply a suffix to the variables declared within the macros. This suffix
|
|
377
|
+
* can be used to avoid the compiler emitting warnings about shadowed
|
|
378
|
+
* variables when compiling with -Wshadow in situations where nested PG_TRY()
|
|
379
|
+
* statements are required. The optional suffix may contain any character
|
|
380
|
+
* that's allowed in a variable name. The suffix, if specified, must be the
|
|
381
|
+
* same within each component macro of the given PG_TRY() statement.
|
|
293
382
|
*----------
|
|
294
383
|
*/
|
|
295
|
-
#define PG_TRY() \
|
|
384
|
+
#define PG_TRY(...) \
|
|
296
385
|
do { \
|
|
297
|
-
sigjmp_buf *_save_exception_stack = PG_exception_stack; \
|
|
298
|
-
ErrorContextCallback *_save_context_stack = error_context_stack; \
|
|
299
|
-
sigjmp_buf _local_sigjmp_buf; \
|
|
300
|
-
bool _do_rethrow = false; \
|
|
301
|
-
if (sigsetjmp(_local_sigjmp_buf, 0) == 0) \
|
|
386
|
+
sigjmp_buf *_save_exception_stack##__VA_ARGS__ = PG_exception_stack; \
|
|
387
|
+
ErrorContextCallback *_save_context_stack##__VA_ARGS__ = error_context_stack; \
|
|
388
|
+
sigjmp_buf _local_sigjmp_buf##__VA_ARGS__; \
|
|
389
|
+
bool _do_rethrow##__VA_ARGS__ = false; \
|
|
390
|
+
if (sigsetjmp(_local_sigjmp_buf##__VA_ARGS__, 0) == 0) \
|
|
302
391
|
{ \
|
|
303
|
-
PG_exception_stack = &_local_sigjmp_buf
|
|
392
|
+
PG_exception_stack = &_local_sigjmp_buf##__VA_ARGS__
|
|
304
393
|
|
|
305
|
-
#define PG_CATCH() \
|
|
394
|
+
#define PG_CATCH(...) \
|
|
306
395
|
} \
|
|
307
396
|
else \
|
|
308
397
|
{ \
|
|
309
|
-
PG_exception_stack = _save_exception_stack; \
|
|
310
|
-
error_context_stack = _save_context_stack
|
|
398
|
+
PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
|
|
399
|
+
error_context_stack = _save_context_stack##__VA_ARGS__
|
|
311
400
|
|
|
312
|
-
#define PG_FINALLY() \
|
|
401
|
+
#define PG_FINALLY(...) \
|
|
313
402
|
} \
|
|
314
403
|
else \
|
|
315
|
-
_do_rethrow = true; \
|
|
404
|
+
_do_rethrow##__VA_ARGS__ = true; \
|
|
316
405
|
{ \
|
|
317
|
-
PG_exception_stack = _save_exception_stack; \
|
|
318
|
-
error_context_stack = _save_context_stack
|
|
406
|
+
PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
|
|
407
|
+
error_context_stack = _save_context_stack##__VA_ARGS__
|
|
319
408
|
|
|
320
|
-
#define PG_END_TRY() \
|
|
409
|
+
#define PG_END_TRY(...) \
|
|
321
410
|
} \
|
|
322
|
-
if (_do_rethrow) \
|
|
411
|
+
if (_do_rethrow##__VA_ARGS__) \
|
|
323
412
|
PG_RE_THROW(); \
|
|
324
|
-
PG_exception_stack = _save_exception_stack; \
|
|
325
|
-
error_context_stack = _save_context_stack; \
|
|
413
|
+
PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
|
|
414
|
+
error_context_stack = _save_context_stack##__VA_ARGS__; \
|
|
326
415
|
} while (0)
|
|
327
416
|
|
|
328
417
|
/*
|
|
@@ -337,7 +426,7 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
|
|
|
337
426
|
(pg_re_throw(), pg_unreachable())
|
|
338
427
|
#endif
|
|
339
428
|
|
|
340
|
-
extern PGDLLIMPORT __thread
|
|
429
|
+
extern PGDLLIMPORT __thread sigjmp_buf *PG_exception_stack;
|
|
341
430
|
|
|
342
431
|
|
|
343
432
|
/* Stuff that error handlers might want to use */
|
|
@@ -353,7 +442,6 @@ typedef struct ErrorData
|
|
|
353
442
|
int elevel; /* error level */
|
|
354
443
|
bool output_to_server; /* will report to server log? */
|
|
355
444
|
bool output_to_client; /* will report to client? */
|
|
356
|
-
bool show_funcname; /* true to force funcname inclusion */
|
|
357
445
|
bool hide_stmt; /* true to prevent STATEMENT: inclusion */
|
|
358
446
|
bool hide_ctx; /* true to prevent CONTEXT: inclusion */
|
|
359
447
|
const char *filename; /* __FILE__ of ereport() call */
|
|
@@ -395,7 +483,7 @@ extern char *GetErrorContextStack(void);
|
|
|
395
483
|
|
|
396
484
|
/* Hook for intercepting messages before they are sent to the server log */
|
|
397
485
|
typedef void (*emit_log_hook_type) (ErrorData *edata);
|
|
398
|
-
extern PGDLLIMPORT __thread
|
|
486
|
+
extern PGDLLIMPORT __thread emit_log_hook_type emit_log_hook;
|
|
399
487
|
|
|
400
488
|
|
|
401
489
|
/* GUC-configurable parameters */
|
|
@@ -407,27 +495,39 @@ typedef enum
|
|
|
407
495
|
PGERROR_VERBOSE /* all the facts, ma'am */
|
|
408
496
|
} PGErrorVerbosity;
|
|
409
497
|
|
|
410
|
-
extern int
|
|
411
|
-
extern char *Log_line_prefix;
|
|
412
|
-
extern int
|
|
413
|
-
extern char *Log_destination_string;
|
|
414
|
-
extern bool syslog_sequence_numbers;
|
|
415
|
-
extern bool syslog_split_messages;
|
|
498
|
+
extern PGDLLIMPORT int Log_error_verbosity;
|
|
499
|
+
extern PGDLLIMPORT char *Log_line_prefix;
|
|
500
|
+
extern PGDLLIMPORT int Log_destination;
|
|
501
|
+
extern PGDLLIMPORT char *Log_destination_string;
|
|
502
|
+
extern PGDLLIMPORT bool syslog_sequence_numbers;
|
|
503
|
+
extern PGDLLIMPORT bool syslog_split_messages;
|
|
416
504
|
|
|
417
505
|
/* Log destination bitmap */
|
|
418
506
|
#define LOG_DESTINATION_STDERR 1
|
|
419
507
|
#define LOG_DESTINATION_SYSLOG 2
|
|
420
508
|
#define LOG_DESTINATION_EVENTLOG 4
|
|
421
509
|
#define LOG_DESTINATION_CSVLOG 8
|
|
510
|
+
#define LOG_DESTINATION_JSONLOG 16
|
|
422
511
|
|
|
423
512
|
/* Other exported functions */
|
|
513
|
+
extern void log_status_format(StringInfo buf, const char *format,
|
|
514
|
+
ErrorData *edata);
|
|
424
515
|
extern void DebugFileOpen(void);
|
|
425
516
|
extern char *unpack_sql_state(int sql_state);
|
|
426
517
|
extern bool in_error_recursion_trouble(void);
|
|
427
518
|
|
|
428
|
-
|
|
429
|
-
extern void
|
|
430
|
-
|
|
519
|
+
/* Common functions shared across destinations */
|
|
520
|
+
extern void reset_formatted_start_time(void);
|
|
521
|
+
extern char *get_formatted_start_time(void);
|
|
522
|
+
extern char *get_formatted_log_time(void);
|
|
523
|
+
extern const char *get_backend_type_for_log(void);
|
|
524
|
+
extern bool check_log_of_query(ErrorData *edata);
|
|
525
|
+
extern const char *error_severity(int elevel);
|
|
526
|
+
extern void write_pipe_chunks(char *data, int len, int dest);
|
|
527
|
+
|
|
528
|
+
/* Destination-specific functions */
|
|
529
|
+
extern void write_csvlog(ErrorData *edata);
|
|
530
|
+
extern void write_jsonlog(ErrorData *edata);
|
|
431
531
|
|
|
432
532
|
/*
|
|
433
533
|
* Write errors to stderr (or by equal means when stderr is
|
|
@@ -436,4 +536,10 @@ extern void set_syslog_parameters(const char *ident, int facility);
|
|
|
436
536
|
*/
|
|
437
537
|
extern void write_stderr(const char *fmt,...) pg_attribute_printf(1, 2);
|
|
438
538
|
|
|
539
|
+
/*
|
|
540
|
+
* Write a message to STDERR using only async-signal-safe functions. This can
|
|
541
|
+
* be used to safely emit a message from a signal handler.
|
|
542
|
+
*/
|
|
543
|
+
extern void write_stderr_signal_safe(const char *fmt);
|
|
544
|
+
|
|
439
545
|
#endif /* ELOG_H */
|
|
@@ -130,6 +130,7 @@
|
|
|
130
130
|
#define ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS MAKE_SQLSTATE('2','2','0','3','D')
|
|
131
131
|
#define ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS MAKE_SQLSTATE('2','2','0','3','E')
|
|
132
132
|
#define ERRCODE_SQL_JSON_SCALAR_REQUIRED MAKE_SQLSTATE('2','2','0','3','F')
|
|
133
|
+
#define ERRCODE_SQL_JSON_ITEM_CANNOT_BE_CAST_TO_TARGET_TYPE MAKE_SQLSTATE('2','2','0','3','G')
|
|
133
134
|
|
|
134
135
|
/* Class 23 - Integrity Constraint Violation */
|
|
135
136
|
#define ERRCODE_INTEGRITY_CONSTRAINT_VIOLATION MAKE_SQLSTATE('2','3','0','0','0')
|
|
@@ -296,6 +297,7 @@
|
|
|
296
297
|
#define ERRCODE_CRASH_SHUTDOWN MAKE_SQLSTATE('5','7','P','0','2')
|
|
297
298
|
#define ERRCODE_CANNOT_CONNECT_NOW MAKE_SQLSTATE('5','7','P','0','3')
|
|
298
299
|
#define ERRCODE_DATABASE_DROPPED MAKE_SQLSTATE('5','7','P','0','4')
|
|
300
|
+
#define ERRCODE_IDLE_SESSION_TIMEOUT MAKE_SQLSTATE('5','7','P','0','5')
|
|
299
301
|
|
|
300
302
|
/* Class 58 - System Error (errors external to PostgreSQL itself) */
|
|
301
303
|
#define ERRCODE_SYSTEM_ERROR MAKE_SQLSTATE('5','8','0','0','0')
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* value if they fail partway through.
|
|
35
35
|
*
|
|
36
36
|
*
|
|
37
|
-
* Portions Copyright (c) 1996-
|
|
37
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
38
38
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
39
39
|
*
|
|
40
40
|
* src/include/utils/expandeddatum.h
|
|
@@ -44,6 +44,8 @@
|
|
|
44
44
|
#ifndef EXPANDEDDATUM_H
|
|
45
45
|
#define EXPANDEDDATUM_H
|
|
46
46
|
|
|
47
|
+
#include "varatt.h"
|
|
48
|
+
|
|
47
49
|
/* Size of an EXTERNAL datum that contains a pointer to an expanded object */
|
|
48
50
|
#define EXPANDED_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_expanded))
|
|
49
51
|
|
|
@@ -133,8 +135,17 @@ struct ExpandedObjectHeader
|
|
|
133
135
|
* (More of these might be worth inlining later.)
|
|
134
136
|
*/
|
|
135
137
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
static inline Datum
|
|
139
|
+
EOHPGetRWDatum(const struct ExpandedObjectHeader *eohptr)
|
|
140
|
+
{
|
|
141
|
+
return PointerGetDatum(eohptr->eoh_rw_ptr);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
static inline Datum
|
|
145
|
+
EOHPGetRODatum(const struct ExpandedObjectHeader *eohptr)
|
|
146
|
+
{
|
|
147
|
+
return PointerGetDatum(eohptr->eoh_ro_ptr);
|
|
148
|
+
}
|
|
138
149
|
|
|
139
150
|
/* Does the Datum represent a writable expanded object? */
|
|
140
151
|
#define DatumIsReadWriteExpandedObject(d, isnull, typlen) \
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* expandedrecord.h
|
|
4
4
|
* Declarations for composite expanded objects.
|
|
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/utils/expandedrecord.h
|
|
@@ -138,10 +138,20 @@ typedef struct ExpandedRecordHeader
|
|
|
138
138
|
MemoryContextCallback er_mcb;
|
|
139
139
|
} ExpandedRecordHeader;
|
|
140
140
|
|
|
141
|
-
/* fmgr macros for expanded record objects */
|
|
141
|
+
/* fmgr functions and macros for expanded record objects */
|
|
142
|
+
static inline Datum
|
|
143
|
+
ExpandedRecordGetDatum(const ExpandedRecordHeader *erh)
|
|
144
|
+
{
|
|
145
|
+
return EOHPGetRWDatum(&erh->hdr);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static inline Datum
|
|
149
|
+
ExpandedRecordGetRODatum(const ExpandedRecordHeader *erh)
|
|
150
|
+
{
|
|
151
|
+
return EOHPGetRODatum(&erh->hdr);
|
|
152
|
+
}
|
|
153
|
+
|
|
142
154
|
#define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n))
|
|
143
|
-
#define ExpandedRecordGetDatum(erh) EOHPGetRWDatum(&(erh)->hdr)
|
|
144
|
-
#define ExpandedRecordGetRODatum(erh) EOHPGetRODatum(&(erh)->hdr)
|
|
145
155
|
#define PG_RETURN_EXPANDED_RECORD(x) PG_RETURN_DATUM(ExpandedRecordGetDatum(x))
|
|
146
156
|
|
|
147
157
|
/* assorted other macros */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* float.h
|
|
4
4
|
* Definitions for the built-in floating-point types
|
|
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
|
*
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
|
|
18
18
|
#include <math.h>
|
|
19
19
|
|
|
20
|
+
/* X/Open (XSI) requires <math.h> to provide M_PI, but core POSIX does not */
|
|
20
21
|
#ifndef M_PI
|
|
21
|
-
/* From my RH5.2 gcc math.h file - thomas 2000-04-03 */
|
|
22
22
|
#define M_PI 3.14159265358979323846
|
|
23
23
|
#endif
|
|
24
24
|
|
|
@@ -42,10 +42,11 @@ extern void float_underflow_error(void) pg_attribute_noreturn();
|
|
|
42
42
|
extern void float_zero_divide_error(void) pg_attribute_noreturn();
|
|
43
43
|
extern int is_infinite(float8 val);
|
|
44
44
|
extern float8 float8in_internal(char *num, char **endptr_p,
|
|
45
|
-
const char *type_name, const char *orig_string
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const char *type_name, const char *orig_string,
|
|
46
|
+
struct Node *escontext);
|
|
47
|
+
extern float4 float4in_internal(char *num, char **endptr_p,
|
|
48
|
+
const char *type_name, const char *orig_string,
|
|
49
|
+
struct Node *escontext);
|
|
49
50
|
extern char *float8out_internal(float8 num);
|
|
50
51
|
extern int float4_cmp_internal(float4 a, float4 b);
|
|
51
52
|
extern int float8_cmp_internal(float8 a, float8 b);
|
|
@@ -222,12 +223,12 @@ float4_div(const float4 val1, const float4 val2)
|
|
|
222
223
|
{
|
|
223
224
|
float4 result;
|
|
224
225
|
|
|
225
|
-
if (unlikely(val2 == 0.0f))
|
|
226
|
+
if (unlikely(val2 == 0.0f) && !isnan(val1))
|
|
226
227
|
float_zero_divide_error();
|
|
227
228
|
result = val1 / val2;
|
|
228
|
-
if (unlikely(isinf(result)) && !isinf(val1)
|
|
229
|
+
if (unlikely(isinf(result)) && !isinf(val1))
|
|
229
230
|
float_overflow_error();
|
|
230
|
-
if (unlikely(result == 0.0f) && val1 != 0.0f)
|
|
231
|
+
if (unlikely(result == 0.0f) && val1 != 0.0f && !isinf(val2))
|
|
231
232
|
float_underflow_error();
|
|
232
233
|
|
|
233
234
|
return result;
|
|
@@ -238,12 +239,12 @@ float8_div(const float8 val1, const float8 val2)
|
|
|
238
239
|
{
|
|
239
240
|
float8 result;
|
|
240
241
|
|
|
241
|
-
if (unlikely(val2 == 0.0))
|
|
242
|
+
if (unlikely(val2 == 0.0) && !isnan(val1))
|
|
242
243
|
float_zero_divide_error();
|
|
243
244
|
result = val1 / val2;
|
|
244
|
-
if (unlikely(isinf(result)) && !isinf(val1)
|
|
245
|
+
if (unlikely(isinf(result)) && !isinf(val1))
|
|
245
246
|
float_overflow_error();
|
|
246
|
-
if (unlikely(result == 0.0) && val1 != 0.0)
|
|
247
|
+
if (unlikely(result == 0.0) && val1 != 0.0 && !isinf(val2))
|
|
247
248
|
float_underflow_error();
|
|
248
249
|
|
|
249
250
|
return result;
|