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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Functions to convert stored expressions/querytrees back to
|
|
12
12
|
* source text
|
|
13
13
|
*
|
|
14
|
-
* Portions Copyright (c) 1996-
|
|
14
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
16
16
|
*
|
|
17
17
|
*
|
|
@@ -31,8 +31,6 @@
|
|
|
31
31
|
#include "access/relation.h"
|
|
32
32
|
#include "access/sysattr.h"
|
|
33
33
|
#include "access/table.h"
|
|
34
|
-
#include "catalog/dependency.h"
|
|
35
|
-
#include "catalog/indexing.h"
|
|
36
34
|
#include "catalog/pg_aggregate.h"
|
|
37
35
|
#include "catalog/pg_am.h"
|
|
38
36
|
#include "catalog/pg_authid.h"
|
|
@@ -62,6 +60,7 @@
|
|
|
62
60
|
#include "parser/parse_func.h"
|
|
63
61
|
#include "parser/parse_node.h"
|
|
64
62
|
#include "parser/parse_oper.h"
|
|
63
|
+
#include "parser/parse_relation.h"
|
|
65
64
|
#include "parser/parser.h"
|
|
66
65
|
#include "parser/parsetree.h"
|
|
67
66
|
#include "rewrite/rewriteHandler.h"
|
|
@@ -99,6 +98,11 @@
|
|
|
99
98
|
#define PRETTYFLAG_INDENT 0x0002
|
|
100
99
|
#define PRETTYFLAG_SCHEMA 0x0004
|
|
101
100
|
|
|
101
|
+
/* Standard conversion of a "bool pretty" option to detailed flags */
|
|
102
|
+
#define GET_PRETTY_FLAGS(pretty) \
|
|
103
|
+
((pretty) ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) \
|
|
104
|
+
: PRETTYFLAG_INDENT)
|
|
105
|
+
|
|
102
106
|
/* Default line length for pretty-print wrapping: 0 means wrap always */
|
|
103
107
|
#define WRAP_COLUMN_DEFAULT 0
|
|
104
108
|
|
|
@@ -181,6 +185,10 @@ typedef struct
|
|
|
181
185
|
List *outer_tlist; /* referent for OUTER_VAR Vars */
|
|
182
186
|
List *inner_tlist; /* referent for INNER_VAR Vars */
|
|
183
187
|
List *index_tlist; /* referent for INDEX_VAR Vars */
|
|
188
|
+
/* Special namespace representing a function signature: */
|
|
189
|
+
char *funcname;
|
|
190
|
+
int numargs;
|
|
191
|
+
char **argnames;
|
|
184
192
|
} deparse_namespace;
|
|
185
193
|
|
|
186
194
|
/*
|
|
@@ -346,7 +354,8 @@ static char *pg_get_indexdef_worker(Oid indexrelid, int colno,
|
|
|
346
354
|
bool attrsOnly, bool keysOnly,
|
|
347
355
|
bool showTblSpc, bool inherits,
|
|
348
356
|
int prettyFlags, bool missing_ok);
|
|
349
|
-
static char *pg_get_statisticsobj_worker(Oid statextid, bool
|
|
357
|
+
static char *pg_get_statisticsobj_worker(Oid statextid, bool columns_only,
|
|
358
|
+
bool missing_ok);
|
|
350
359
|
static char *pg_get_partkeydef_worker(Oid relid, int prettyFlags,
|
|
351
360
|
bool attrsOnly, bool missing_ok);
|
|
352
361
|
static char *pg_get_constraintdef_worker(Oid constraintId, bool fullCommand,
|
|
@@ -357,6 +366,7 @@ static int print_function_arguments(StringInfo buf, HeapTuple proctup,
|
|
|
357
366
|
bool print_table_args, bool print_defaults);
|
|
358
367
|
static void print_function_rettype(StringInfo buf, HeapTuple proctup);
|
|
359
368
|
static void print_function_trftypes(StringInfo buf, HeapTuple proctup);
|
|
369
|
+
static void print_function_sqlbody(StringInfo buf, HeapTuple proctup);
|
|
360
370
|
static void set_rtable_names(deparse_namespace *dpns, List *parent_namespaces,
|
|
361
371
|
Bitmapset *rels_used);
|
|
362
372
|
static void set_deparse_for_query(deparse_namespace *dpns, Query *query,
|
|
@@ -379,6 +389,8 @@ static void identify_join_columns(JoinExpr *j, RangeTblEntry *jrte,
|
|
|
379
389
|
deparse_columns *colinfo);
|
|
380
390
|
static char *get_rtable_name(int rtindex, deparse_context *context);
|
|
381
391
|
static void set_deparse_plan(deparse_namespace *dpns, Plan *plan);
|
|
392
|
+
static Plan *find_recursive_union(deparse_namespace *dpns,
|
|
393
|
+
WorkTableScan *wtscan);
|
|
382
394
|
static void push_child_plan(deparse_namespace *dpns, Plan *plan,
|
|
383
395
|
deparse_namespace *save_dpns);
|
|
384
396
|
static void pop_child_plan(deparse_namespace *dpns,
|
|
@@ -392,26 +404,31 @@ static void make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
|
|
392
404
|
static void make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
|
393
405
|
int prettyFlags, int wrapColumn);
|
|
394
406
|
static void get_query_def(Query *query, StringInfo buf, List *parentnamespace,
|
|
395
|
-
TupleDesc resultDesc,
|
|
407
|
+
TupleDesc resultDesc, bool colNamesVisible,
|
|
396
408
|
int prettyFlags, int wrapColumn, int startIndent);
|
|
397
409
|
static void get_values_def(List *values_lists, deparse_context *context);
|
|
398
410
|
static void get_with_clause(Query *query, deparse_context *context);
|
|
399
411
|
static void get_select_query_def(Query *query, deparse_context *context,
|
|
400
|
-
TupleDesc resultDesc);
|
|
401
|
-
static void get_insert_query_def(Query *query, deparse_context *context
|
|
402
|
-
|
|
412
|
+
TupleDesc resultDesc, bool colNamesVisible);
|
|
413
|
+
static void get_insert_query_def(Query *query, deparse_context *context,
|
|
414
|
+
bool colNamesVisible);
|
|
415
|
+
static void get_update_query_def(Query *query, deparse_context *context,
|
|
416
|
+
bool colNamesVisible);
|
|
403
417
|
static void get_update_query_targetlist_def(Query *query, List *targetList,
|
|
404
418
|
deparse_context *context,
|
|
405
419
|
RangeTblEntry *rte);
|
|
406
|
-
static void get_delete_query_def(Query *query, deparse_context *context
|
|
420
|
+
static void get_delete_query_def(Query *query, deparse_context *context,
|
|
421
|
+
bool colNamesVisible);
|
|
422
|
+
static void get_merge_query_def(Query *query, deparse_context *context,
|
|
423
|
+
bool colNamesVisible);
|
|
407
424
|
static void get_utility_query_def(Query *query, deparse_context *context);
|
|
408
425
|
static void get_basic_select_query(Query *query, deparse_context *context,
|
|
409
|
-
TupleDesc resultDesc);
|
|
426
|
+
TupleDesc resultDesc, bool colNamesVisible);
|
|
410
427
|
static void get_target_list(List *targetList, deparse_context *context,
|
|
411
|
-
TupleDesc resultDesc);
|
|
428
|
+
TupleDesc resultDesc, bool colNamesVisible);
|
|
412
429
|
static void get_setop_query(Node *setOp, Query *query,
|
|
413
430
|
deparse_context *context,
|
|
414
|
-
TupleDesc resultDesc);
|
|
431
|
+
TupleDesc resultDesc, bool colNamesVisible);
|
|
415
432
|
static Node *get_rule_sortgroupclause(Index ref, List *tlist,
|
|
416
433
|
bool force_colno,
|
|
417
434
|
deparse_context *context);
|
|
@@ -440,6 +457,8 @@ static void get_rule_expr(Node *node, deparse_context *context,
|
|
|
440
457
|
bool showimplicit);
|
|
441
458
|
static void get_rule_expr_toplevel(Node *node, deparse_context *context,
|
|
442
459
|
bool showimplicit);
|
|
460
|
+
static void get_rule_list_toplevel(List *lst, deparse_context *context,
|
|
461
|
+
bool showimplicit);
|
|
443
462
|
static void get_rule_expr_funccall(Node *node, deparse_context *context,
|
|
444
463
|
bool showimplicit);
|
|
445
464
|
static bool looks_like_function(Node *node);
|
|
@@ -448,15 +467,31 @@ static void get_func_expr(FuncExpr *expr, deparse_context *context,
|
|
|
448
467
|
bool showimplicit);
|
|
449
468
|
static void get_agg_expr(Aggref *aggref, deparse_context *context,
|
|
450
469
|
Aggref *original_aggref);
|
|
470
|
+
static void get_agg_expr_helper(Aggref *aggref, deparse_context *context,
|
|
471
|
+
Aggref *original_aggref, const char *funcname,
|
|
472
|
+
const char *options, bool is_json_objectagg);
|
|
451
473
|
static void get_agg_combine_expr(Node *node, deparse_context *context,
|
|
452
474
|
void *callback_arg);
|
|
453
475
|
static void get_windowfunc_expr(WindowFunc *wfunc, deparse_context *context);
|
|
476
|
+
static void get_windowfunc_expr_helper(WindowFunc *wfunc, deparse_context *context,
|
|
477
|
+
const char *funcname, const char *options,
|
|
478
|
+
bool is_json_objectagg);
|
|
479
|
+
static bool get_func_sql_syntax(FuncExpr *expr, deparse_context *context);
|
|
454
480
|
static void get_coercion_expr(Node *arg, deparse_context *context,
|
|
455
481
|
Oid resulttype, int32 resulttypmod,
|
|
456
482
|
Node *parentNode);
|
|
457
483
|
static void get_const_expr(Const *constval, deparse_context *context,
|
|
458
484
|
int showtype);
|
|
459
485
|
static void get_const_collation(Const *constval, deparse_context *context);
|
|
486
|
+
static void get_json_format(JsonFormat *format, StringInfo buf);
|
|
487
|
+
static void get_json_constructor(JsonConstructorExpr *ctor,
|
|
488
|
+
deparse_context *context, bool showimplicit);
|
|
489
|
+
static void get_json_constructor_options(JsonConstructorExpr *ctor,
|
|
490
|
+
StringInfo buf);
|
|
491
|
+
static void get_json_agg_constructor(JsonConstructorExpr *ctor,
|
|
492
|
+
deparse_context *context,
|
|
493
|
+
const char *funcname,
|
|
494
|
+
bool is_json_objectagg);
|
|
460
495
|
static void simple_quote_literal(StringInfo buf, const char *val);
|
|
461
496
|
static void get_sublink_expr(SubLink *sublink, deparse_context *context);
|
|
462
497
|
static void get_tablefunc(TableFunc *tf, deparse_context *context,
|
|
@@ -465,6 +500,8 @@ static void get_from_clause(Query *query, const char *prefix,
|
|
|
465
500
|
deparse_context *context);
|
|
466
501
|
static void get_from_clause_item(Node *jtnode, Query *query,
|
|
467
502
|
deparse_context *context);
|
|
503
|
+
static void get_rte_alias(RangeTblEntry *rte, int varno, bool use_as,
|
|
504
|
+
deparse_context *context);
|
|
468
505
|
static void get_column_alias_list(deparse_columns *colinfo,
|
|
469
506
|
deparse_context *context);
|
|
470
507
|
static void get_from_clause_coldeflist(RangeTblFunction *rtfunc,
|
|
@@ -566,6 +603,9 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
566
603
|
/* Internal version that just reports the key-column definitions */
|
|
567
604
|
|
|
568
605
|
|
|
606
|
+
/* Internal version, extensible with flags to control its behavior */
|
|
607
|
+
|
|
608
|
+
|
|
569
609
|
/*
|
|
570
610
|
* Internal workhorse to decompile an index definition.
|
|
571
611
|
*
|
|
@@ -574,23 +614,52 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
574
614
|
*/
|
|
575
615
|
|
|
576
616
|
|
|
617
|
+
/* ----------
|
|
618
|
+
* pg_get_querydef
|
|
619
|
+
*
|
|
620
|
+
* Public entry point to deparse one query parsetree.
|
|
621
|
+
* The pretty flags are determined by GET_PRETTY_FLAGS(pretty).
|
|
622
|
+
*
|
|
623
|
+
* The result is a palloc'd C string.
|
|
624
|
+
* ----------
|
|
625
|
+
*/
|
|
626
|
+
|
|
627
|
+
|
|
577
628
|
/*
|
|
578
629
|
* pg_get_statisticsobjdef
|
|
579
630
|
* Get the definition of an extended statistics object
|
|
580
631
|
*/
|
|
581
632
|
|
|
582
633
|
|
|
634
|
+
/*
|
|
635
|
+
* Internal version for use by ALTER TABLE.
|
|
636
|
+
* Includes a tablespace clause in the result.
|
|
637
|
+
* Returns a palloc'd C string; no pretty-printing.
|
|
638
|
+
*/
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
/*
|
|
642
|
+
* pg_get_statisticsobjdef_columns
|
|
643
|
+
* Get columns and expressions for an extended statistics object
|
|
644
|
+
*/
|
|
645
|
+
|
|
646
|
+
|
|
583
647
|
/*
|
|
584
648
|
* Internal workhorse to decompile an extended statistics object.
|
|
585
649
|
*/
|
|
586
650
|
|
|
587
651
|
|
|
652
|
+
/*
|
|
653
|
+
* Generate text array of expressions for statistics object.
|
|
654
|
+
*/
|
|
655
|
+
|
|
656
|
+
|
|
588
657
|
/*
|
|
589
658
|
* pg_get_partkeydef
|
|
590
659
|
*
|
|
591
660
|
* Returns the partition key specification, ie, the following:
|
|
592
661
|
*
|
|
593
|
-
*
|
|
662
|
+
* { RANGE | LIST | HASH } (column opt_collation opt_opclass [, ...])
|
|
594
663
|
*/
|
|
595
664
|
|
|
596
665
|
|
|
@@ -657,6 +726,12 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
657
726
|
* the one specified by the second parameter. This is sufficient for
|
|
658
727
|
* partial indexes, column default expressions, etc. We also support
|
|
659
728
|
* Var-free expressions, for which the OID can be InvalidOid.
|
|
729
|
+
*
|
|
730
|
+
* We expect this function to work, or throw a reasonably clean error,
|
|
731
|
+
* for any node tree that can appear in a catalog pg_node_tree column.
|
|
732
|
+
* Query trees, such as those appearing in pg_rewrite.ev_action, are
|
|
733
|
+
* not supported. Nor are expressions in more than one relation, which
|
|
734
|
+
* can appear in places like pg_rewrite.ev_qual.
|
|
660
735
|
* ----------
|
|
661
736
|
*/
|
|
662
737
|
|
|
@@ -691,8 +766,8 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
691
766
|
*
|
|
692
767
|
* Note: if you change the output format of this function, be careful not
|
|
693
768
|
* to break psql's rules (in \ef and \sf) for identifying the start of the
|
|
694
|
-
* function body. To wit: the function body starts on a line that begins
|
|
695
|
-
*
|
|
769
|
+
* function body. To wit: the function body starts on a line that begins with
|
|
770
|
+
* "AS ", "BEGIN ", or "RETURN ", and no preceding line will look like that.
|
|
696
771
|
*/
|
|
697
772
|
|
|
698
773
|
|
|
@@ -750,6 +825,10 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
750
825
|
|
|
751
826
|
|
|
752
827
|
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
|
|
753
832
|
/*
|
|
754
833
|
* deparse_expression - General utility for deparsing expressions
|
|
755
834
|
*
|
|
@@ -969,13 +1048,20 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
969
1048
|
* of a given Plan node
|
|
970
1049
|
*
|
|
971
1050
|
* This sets the plan, outer_plan, inner_plan, outer_tlist, inner_tlist,
|
|
972
|
-
* and index_tlist fields. Caller
|
|
1051
|
+
* and index_tlist fields. Caller must already have adjusted the ancestors
|
|
973
1052
|
* list if necessary. Note that the rtable, subplans, and ctes fields do
|
|
974
1053
|
* not need to change when shifting attention to different plan nodes in a
|
|
975
1054
|
* single plan tree.
|
|
976
1055
|
*/
|
|
977
1056
|
|
|
978
1057
|
|
|
1058
|
+
/*
|
|
1059
|
+
* Locate the ancestor plan node that is the RecursiveUnion generating
|
|
1060
|
+
* the WorkTableScan's work table. We can match on wtParam, since that
|
|
1061
|
+
* should be unique within the plan tree.
|
|
1062
|
+
*/
|
|
1063
|
+
|
|
1064
|
+
|
|
979
1065
|
/*
|
|
980
1066
|
* push_child_plan: temporarily transfer deparsing attention to a child plan
|
|
981
1067
|
*
|
|
@@ -1037,8 +1123,18 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1037
1123
|
/* ----------
|
|
1038
1124
|
* get_query_def - Parse back one query parsetree
|
|
1039
1125
|
*
|
|
1040
|
-
*
|
|
1041
|
-
*
|
|
1126
|
+
* query: parsetree to be displayed
|
|
1127
|
+
* buf: output text is appended to buf
|
|
1128
|
+
* parentnamespace: list (initially empty) of outer-level deparse_namespace's
|
|
1129
|
+
* resultDesc: if not NULL, the output tuple descriptor for the view
|
|
1130
|
+
* represented by a SELECT query. We use the column names from it
|
|
1131
|
+
* to label SELECT output columns, in preference to names in the query
|
|
1132
|
+
* colNamesVisible: true if the surrounding context cares about the output
|
|
1133
|
+
* column names at all (as, for example, an EXISTS() context does not);
|
|
1134
|
+
* when false, we can suppress dummy column labels such as "?column?"
|
|
1135
|
+
* prettyFlags: bitmask of PRETTYFLAG_XXX options
|
|
1136
|
+
* wrapColumn: maximum line length, or -1 to disable wrapping
|
|
1137
|
+
* startIndent: initial indentation amount
|
|
1042
1138
|
* ----------
|
|
1043
1139
|
*/
|
|
1044
1140
|
|
|
@@ -1074,6 +1170,8 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1074
1170
|
* get_target_list - Parse back a SELECT target list
|
|
1075
1171
|
*
|
|
1076
1172
|
* This is also used for RETURNING lists in INSERT/UPDATE/DELETE.
|
|
1173
|
+
*
|
|
1174
|
+
* resultDesc and colNamesVisible are as for get_query_def()
|
|
1077
1175
|
* ----------
|
|
1078
1176
|
*/
|
|
1079
1177
|
|
|
@@ -1138,6 +1236,13 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1138
1236
|
|
|
1139
1237
|
|
|
1140
1238
|
|
|
1239
|
+
/* ----------
|
|
1240
|
+
* get_merge_query_def - Parse back a MERGE parsetree
|
|
1241
|
+
* ----------
|
|
1242
|
+
*/
|
|
1243
|
+
|
|
1244
|
+
|
|
1245
|
+
|
|
1141
1246
|
/* ----------
|
|
1142
1247
|
* get_utility_query_def - Parse back a UTILITY parsetree
|
|
1143
1248
|
* ----------
|
|
@@ -1291,6 +1396,16 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1291
1396
|
*/
|
|
1292
1397
|
|
|
1293
1398
|
|
|
1399
|
+
/*
|
|
1400
|
+
* get_rule_list_toplevel - Parse back a list of toplevel expressions
|
|
1401
|
+
*
|
|
1402
|
+
* Apply get_rule_expr_toplevel() to each element of a List.
|
|
1403
|
+
*
|
|
1404
|
+
* This adds commas between the expressions, but caller is responsible
|
|
1405
|
+
* for printing surrounding decoration.
|
|
1406
|
+
*/
|
|
1407
|
+
|
|
1408
|
+
|
|
1294
1409
|
/*
|
|
1295
1410
|
* get_rule_expr_funccall - Parse back a function-call expression
|
|
1296
1411
|
*
|
|
@@ -1327,6 +1442,12 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1327
1442
|
*/
|
|
1328
1443
|
|
|
1329
1444
|
|
|
1445
|
+
/*
|
|
1446
|
+
* get_agg_expr_helper - subroutine for get_agg_expr and
|
|
1447
|
+
* get_json_agg_constructor
|
|
1448
|
+
*/
|
|
1449
|
+
|
|
1450
|
+
|
|
1330
1451
|
/*
|
|
1331
1452
|
* This is a helper function for get_agg_expr(). It's used when we deparse
|
|
1332
1453
|
* a combining Aggref; resolve_special_varno locates the corresponding partial
|
|
@@ -1339,6 +1460,21 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1339
1460
|
*/
|
|
1340
1461
|
|
|
1341
1462
|
|
|
1463
|
+
|
|
1464
|
+
/*
|
|
1465
|
+
* get_windowfunc_expr_helper - subroutine for get_windowfunc_expr and
|
|
1466
|
+
* get_json_agg_constructor
|
|
1467
|
+
*/
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
/*
|
|
1471
|
+
* get_func_sql_syntax - Parse back a SQL-syntax function call
|
|
1472
|
+
*
|
|
1473
|
+
* Returns true if we successfully deparsed, false if we did not
|
|
1474
|
+
* recognize the function.
|
|
1475
|
+
*/
|
|
1476
|
+
|
|
1477
|
+
|
|
1342
1478
|
/* ----------
|
|
1343
1479
|
* get_coercion_expr
|
|
1344
1480
|
*
|
|
@@ -1369,6 +1505,31 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1369
1505
|
*/
|
|
1370
1506
|
|
|
1371
1507
|
|
|
1508
|
+
/*
|
|
1509
|
+
* get_json_format - Parse back a JsonFormat node
|
|
1510
|
+
*/
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
/*
|
|
1514
|
+
* get_json_returning - Parse back a JsonReturning structure
|
|
1515
|
+
*/
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
/*
|
|
1519
|
+
* get_json_constructor - Parse back a JsonConstructorExpr node
|
|
1520
|
+
*/
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
/*
|
|
1524
|
+
* Append options, if any, to the JSON constructor being deparsed
|
|
1525
|
+
*/
|
|
1526
|
+
|
|
1527
|
+
|
|
1528
|
+
/*
|
|
1529
|
+
* get_json_agg_constructor - Parse back an aggregate JsonConstructorExpr node
|
|
1530
|
+
*/
|
|
1531
|
+
|
|
1532
|
+
|
|
1372
1533
|
/*
|
|
1373
1534
|
* simple_quote_literal - Format a string as a SQL literal, append to buf
|
|
1374
1535
|
*/
|
|
@@ -1400,6 +1561,13 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1400
1561
|
|
|
1401
1562
|
|
|
1402
1563
|
|
|
1564
|
+
/*
|
|
1565
|
+
* get_rte_alias - print the relation's alias, if needed
|
|
1566
|
+
*
|
|
1567
|
+
* If printed, the alias is preceded by a space, or by " AS " if use_as is true.
|
|
1568
|
+
*/
|
|
1569
|
+
|
|
1570
|
+
|
|
1403
1571
|
/*
|
|
1404
1572
|
* get_column_alias_list - print column alias list for an RTE
|
|
1405
1573
|
*
|
|
@@ -1439,7 +1607,7 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1439
1607
|
|
|
1440
1608
|
/*
|
|
1441
1609
|
* generate_opclass_name
|
|
1442
|
-
* Compute the name to display for
|
|
1610
|
+
* Compute the name to display for an opclass specified by OID
|
|
1443
1611
|
*
|
|
1444
1612
|
* The result includes all necessary quoting and schema-prefixing.
|
|
1445
1613
|
*/
|
|
@@ -7,18 +7,15 @@
|
|
|
7
7
|
/*-------------------------------------------------------------------------
|
|
8
8
|
*
|
|
9
9
|
* assert.c
|
|
10
|
-
* Assert code.
|
|
10
|
+
* Assert support code.
|
|
11
11
|
*
|
|
12
|
-
* Portions Copyright (c) 1996-
|
|
12
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
14
14
|
*
|
|
15
15
|
*
|
|
16
16
|
* IDENTIFICATION
|
|
17
17
|
* src/backend/utils/error/assert.c
|
|
18
18
|
*
|
|
19
|
-
* NOTE
|
|
20
|
-
* This should eventually work with elog()
|
|
21
|
-
*
|
|
22
19
|
*-------------------------------------------------------------------------
|
|
23
20
|
*/
|
|
24
21
|
#include "postgres.h"
|
|
@@ -30,27 +27,29 @@
|
|
|
30
27
|
|
|
31
28
|
/*
|
|
32
29
|
* ExceptionalCondition - Handles the failure of an Assert()
|
|
30
|
+
*
|
|
31
|
+
* We intentionally do not go through elog() here, on the grounds of
|
|
32
|
+
* wanting to minimize the amount of infrastructure that has to be
|
|
33
|
+
* working to report an assertion failure.
|
|
33
34
|
*/
|
|
34
35
|
void
|
|
35
36
|
ExceptionalCondition(const char *conditionName,
|
|
36
|
-
const char *errorType,
|
|
37
37
|
const char *fileName,
|
|
38
38
|
int lineNumber)
|
|
39
39
|
{
|
|
40
|
+
/* Report the failure on stderr (or local equivalent) */
|
|
40
41
|
if (!PointerIsValid(conditionName)
|
|
41
|
-
|| !PointerIsValid(fileName)
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
|| !PointerIsValid(fileName))
|
|
43
|
+
write_stderr("TRAP: ExceptionalCondition: bad arguments in PID %d\n",
|
|
44
|
+
(int) getpid());
|
|
44
45
|
else
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
errorType, conditionName,
|
|
48
|
-
fileName, lineNumber);
|
|
49
|
-
}
|
|
46
|
+
write_stderr("TRAP: failed Assert(\"%s\"), File: \"%s\", Line: %d, PID: %d\n",
|
|
47
|
+
conditionName, fileName, lineNumber, (int) getpid());
|
|
50
48
|
|
|
51
49
|
/* Usually this shouldn't be needed, but make sure the msg went out */
|
|
52
50
|
fflush(stderr);
|
|
53
51
|
|
|
52
|
+
/* If we have support for it, dump a simple backtrace */
|
|
54
53
|
#ifdef HAVE_BACKTRACE_SYMBOLS
|
|
55
54
|
{
|
|
56
55
|
void *buf[100];
|
|
@@ -61,12 +60,12 @@ ExceptionalCondition(const char *conditionName,
|
|
|
61
60
|
}
|
|
62
61
|
#endif
|
|
63
62
|
|
|
64
|
-
#ifdef SLEEP_ON_ASSERT
|
|
65
|
-
|
|
66
63
|
/*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
64
|
+
* If configured to do so, sleep indefinitely to allow user to attach a
|
|
65
|
+
* debugger. It would be nice to use pg_usleep() here, but that can sleep
|
|
66
|
+
* at most 2G usec or ~33 minutes, which seems too short.
|
|
69
67
|
*/
|
|
68
|
+
#ifdef SLEEP_ON_ASSERT
|
|
70
69
|
sleep(1000000);
|
|
71
70
|
#endif
|
|
72
71
|
|