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
|
@@ -10,10 +10,9 @@
|
|
|
10
10
|
/*-------------------------------------------------------------------------
|
|
11
11
|
*
|
|
12
12
|
* scansup.c
|
|
13
|
-
* support routines
|
|
14
|
-
* backend as well as the bootstrap backend
|
|
13
|
+
* scanner support routines used by the core lexer
|
|
15
14
|
*
|
|
16
|
-
* Portions Copyright (c) 1996-
|
|
15
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
17
16
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
18
17
|
*
|
|
19
18
|
*
|
|
@@ -29,19 +28,6 @@
|
|
|
29
28
|
#include "mb/pg_wchar.h"
|
|
30
29
|
#include "parser/scansup.h"
|
|
31
30
|
|
|
32
|
-
/* ----------------
|
|
33
|
-
* scanstr
|
|
34
|
-
*
|
|
35
|
-
* if the string passed in has escaped codes, map the escape codes to actual
|
|
36
|
-
* chars
|
|
37
|
-
*
|
|
38
|
-
* the string returned is palloc'd and should eventually be pfree'd by the
|
|
39
|
-
* caller!
|
|
40
|
-
* ----------------
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
31
|
|
|
46
32
|
/*
|
|
47
33
|
* downcase_truncate_identifier() --- do appropriate downcasing and
|
|
@@ -119,20 +105,10 @@ truncate_identifier(char *ident, int len, bool warn)
|
|
|
119
105
|
{
|
|
120
106
|
len = pg_mbcliplen(ident, len, NAMEDATALEN - 1);
|
|
121
107
|
if (warn)
|
|
122
|
-
{
|
|
123
|
-
/*
|
|
124
|
-
* We avoid using %.*s here because it can misbehave if the data
|
|
125
|
-
* is not valid in what libc thinks is the prevailing encoding.
|
|
126
|
-
*/
|
|
127
|
-
char buf[NAMEDATALEN];
|
|
128
|
-
|
|
129
|
-
memcpy(buf, ident, len);
|
|
130
|
-
buf[len] = '\0';
|
|
131
108
|
ereport(NOTICE,
|
|
132
109
|
(errcode(ERRCODE_NAME_TOO_LONG),
|
|
133
|
-
errmsg("identifier \"%s\" will be truncated to \"
|
|
134
|
-
ident,
|
|
135
|
-
}
|
|
110
|
+
errmsg("identifier \"%s\" will be truncated to \"%.*s\"",
|
|
111
|
+
ident, len, ident)));
|
|
136
112
|
ident[len] = '\0';
|
|
137
113
|
}
|
|
138
114
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* exit-time cleanup for either a postmaster or a backend.
|
|
16
16
|
*
|
|
17
17
|
*
|
|
18
|
-
* Portions Copyright (c) 1996-
|
|
18
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
19
19
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
20
20
|
*
|
|
21
21
|
*
|
|
@@ -173,9 +173,9 @@ void proc_exit(int code) { printf("Terminating process due to FATAL error\n"); e
|
|
|
173
173
|
* cancel_before_shmem_exit
|
|
174
174
|
*
|
|
175
175
|
* this function removes a previously-registered before_shmem_exit
|
|
176
|
-
* callback.
|
|
177
|
-
*
|
|
178
|
-
*
|
|
176
|
+
* callback. We only look at the latest entry for removal, as we
|
|
177
|
+
* expect callers to add and remove temporary before_shmem_exit
|
|
178
|
+
* callbacks in strict LIFO order.
|
|
179
179
|
* ----------------------------------------------------------------
|
|
180
180
|
*/
|
|
181
181
|
|
|
@@ -190,3 +190,12 @@ void proc_exit(int code) { printf("Terminating process due to FATAL error\n"); e
|
|
|
190
190
|
* ----------------------------------------------------------------
|
|
191
191
|
*/
|
|
192
192
|
|
|
193
|
+
|
|
194
|
+
/* ----------------------------------------------------------------
|
|
195
|
+
* check_on_shmem_exit_lists_are_empty
|
|
196
|
+
*
|
|
197
|
+
* Debugging check that no shmem cleanup handlers have been registered
|
|
198
|
+
* prematurely in the current process.
|
|
199
|
+
* ----------------------------------------------------------------
|
|
200
|
+
*/
|
|
201
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*--------------------------------------------------------------------
|
|
2
2
|
* Symbols referenced in this file:
|
|
3
|
-
* - whereToSendOutput
|
|
4
3
|
* - debug_query_string
|
|
4
|
+
* - whereToSendOutput
|
|
5
5
|
* - ProcessInterrupts
|
|
6
6
|
* - check_stack_depth
|
|
7
7
|
* - stack_is_too_deep
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* postgres.c
|
|
17
17
|
* POSTGRES C Backend Interface
|
|
18
18
|
*
|
|
19
|
-
* Portions Copyright (c) 1996-
|
|
19
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
20
20
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
21
21
|
*
|
|
22
22
|
*
|
|
@@ -36,17 +36,12 @@
|
|
|
36
36
|
#include <limits.h>
|
|
37
37
|
#include <signal.h>
|
|
38
38
|
#include <unistd.h>
|
|
39
|
+
#include <sys/resource.h>
|
|
39
40
|
#include <sys/socket.h>
|
|
40
|
-
#ifdef HAVE_SYS_SELECT_H
|
|
41
|
-
#include <sys/select.h>
|
|
42
|
-
#endif
|
|
43
|
-
#ifdef HAVE_SYS_RESOURCE_H
|
|
44
41
|
#include <sys/time.h>
|
|
45
|
-
#include <sys/resource.h>
|
|
46
|
-
#endif
|
|
47
42
|
|
|
48
|
-
#
|
|
49
|
-
#include
|
|
43
|
+
#ifdef USE_VALGRIND
|
|
44
|
+
#include <valgrind/valgrind.h>
|
|
50
45
|
#endif
|
|
51
46
|
|
|
52
47
|
#include "access/parallel.h"
|
|
@@ -55,7 +50,7 @@
|
|
|
55
50
|
#include "catalog/pg_type.h"
|
|
56
51
|
#include "commands/async.h"
|
|
57
52
|
#include "commands/prepare.h"
|
|
58
|
-
#include "
|
|
53
|
+
#include "common/pg_prng.h"
|
|
59
54
|
#include "jit/jit.h"
|
|
60
55
|
#include "libpq/libpq.h"
|
|
61
56
|
#include "libpq/pqformat.h"
|
|
@@ -80,6 +75,7 @@
|
|
|
80
75
|
#include "rewrite/rewriteHandler.h"
|
|
81
76
|
#include "storage/bufmgr.h"
|
|
82
77
|
#include "storage/ipc.h"
|
|
78
|
+
#include "storage/pmsignal.h"
|
|
83
79
|
#include "storage/proc.h"
|
|
84
80
|
#include "storage/procsignal.h"
|
|
85
81
|
#include "storage/sinval.h"
|
|
@@ -87,6 +83,7 @@
|
|
|
87
83
|
#include "tcop/pquery.h"
|
|
88
84
|
#include "tcop/tcopprot.h"
|
|
89
85
|
#include "tcop/utility.h"
|
|
86
|
+
#include "utils/guc_hooks.h"
|
|
90
87
|
#include "utils/lsyscache.h"
|
|
91
88
|
#include "utils/memutils.h"
|
|
92
89
|
#include "utils/ps_status.h"
|
|
@@ -117,8 +114,22 @@ __thread int max_stack_depth = 100;
|
|
|
117
114
|
/* wait N seconds to allow attach from a debugger */
|
|
118
115
|
|
|
119
116
|
|
|
117
|
+
/* Time between checks that the client is still connected. */
|
|
120
118
|
|
|
121
119
|
|
|
120
|
+
/* ----------------
|
|
121
|
+
* private typedefs etc
|
|
122
|
+
* ----------------
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
/* type of argument for bind_param_error_callback */
|
|
126
|
+
typedef struct BindParamCbData
|
|
127
|
+
{
|
|
128
|
+
const char *portalName;
|
|
129
|
+
int paramno; /* zero-based param number, or -1 initially */
|
|
130
|
+
const char *paramval; /* textual input string, if available */
|
|
131
|
+
} BindParamCbData;
|
|
132
|
+
|
|
122
133
|
/* ----------------
|
|
123
134
|
* private variables
|
|
124
135
|
* ----------------
|
|
@@ -130,20 +141,11 @@ static __thread long max_stack_depth_bytes = 100 * 1024L;
|
|
|
130
141
|
|
|
131
142
|
/*
|
|
132
143
|
* Stack base pointer -- initialized by PostmasterMain and inherited by
|
|
133
|
-
* subprocesses
|
|
134
|
-
* it directly. Newer versions use set_stack_base(), but we want to stay
|
|
135
|
-
* binary-compatible for the time being.
|
|
144
|
+
* subprocesses (but see also InitPostmasterChild).
|
|
136
145
|
*/
|
|
137
|
-
__thread char
|
|
146
|
+
static __thread char *stack_base_ptr = NULL;
|
|
138
147
|
|
|
139
148
|
|
|
140
|
-
/*
|
|
141
|
-
* On IA64 we also have to remember the register stack base.
|
|
142
|
-
*/
|
|
143
|
-
#if defined(__ia64__) || defined(__ia64)
|
|
144
|
-
char *register_stack_base_ptr = NULL;
|
|
145
|
-
#endif
|
|
146
|
-
|
|
147
149
|
/*
|
|
148
150
|
* Flag to keep track of whether we have started a transaction.
|
|
149
151
|
* For extended query protocol this has to be remembered across messages.
|
|
@@ -194,12 +196,12 @@ static int interactive_getc(void);
|
|
|
194
196
|
static int SocketBackend(StringInfo inBuf);
|
|
195
197
|
static int ReadCommand(StringInfo inBuf);
|
|
196
198
|
static void forbidden_in_wal_sender(char firstchar);
|
|
197
|
-
static List *pg_rewrite_query(Query *query);
|
|
198
199
|
static bool check_log_statement(List *stmt_list);
|
|
199
200
|
static int errdetail_execute(List *raw_parsetree_list);
|
|
200
201
|
static int errdetail_params(ParamListInfo params);
|
|
201
202
|
static int errdetail_abort(void);
|
|
202
203
|
static int errdetail_recovery_conflict(void);
|
|
204
|
+
static void bind_param_error_callback(void *arg);
|
|
203
205
|
static void start_xact_command(void);
|
|
204
206
|
static void finish_xact_command(void);
|
|
205
207
|
static bool IsTransactionExitStmt(Node *parsetree);
|
|
@@ -211,6 +213,36 @@ static void enable_statement_timeout(void);
|
|
|
211
213
|
static void disable_statement_timeout(void);
|
|
212
214
|
|
|
213
215
|
|
|
216
|
+
/* ----------------------------------------------------------------
|
|
217
|
+
* infrastructure for valgrind debugging
|
|
218
|
+
* ----------------------------------------------------------------
|
|
219
|
+
*/
|
|
220
|
+
#ifdef USE_VALGRIND
|
|
221
|
+
/* This variable should be set at the top of the main loop. */
|
|
222
|
+
static unsigned int old_valgrind_error_count;
|
|
223
|
+
|
|
224
|
+
/*
|
|
225
|
+
* If Valgrind detected any errors since old_valgrind_error_count was updated,
|
|
226
|
+
* report the current query as the cause. This should be called at the end
|
|
227
|
+
* of message processing.
|
|
228
|
+
*/
|
|
229
|
+
static void
|
|
230
|
+
valgrind_report_error_query(const char *query)
|
|
231
|
+
{
|
|
232
|
+
unsigned int valgrind_error_count = VALGRIND_COUNT_ERRORS;
|
|
233
|
+
|
|
234
|
+
if (unlikely(valgrind_error_count != old_valgrind_error_count) &&
|
|
235
|
+
query != NULL)
|
|
236
|
+
VALGRIND_PRINTF("Valgrind detected %u error(s) during execution of \"%s\"\n",
|
|
237
|
+
valgrind_error_count - old_valgrind_error_count,
|
|
238
|
+
query);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
#else /* !USE_VALGRIND */
|
|
242
|
+
#define valgrind_report_error_query(query) ((void) 0)
|
|
243
|
+
#endif /* USE_VALGRIND */
|
|
244
|
+
|
|
245
|
+
|
|
214
246
|
/* ----------------------------------------------------------------
|
|
215
247
|
* routines to obtain user input
|
|
216
248
|
* ----------------------------------------------------------------
|
|
@@ -292,6 +324,8 @@ static void disable_statement_timeout(void);
|
|
|
292
324
|
*/
|
|
293
325
|
#ifdef COPY_PARSE_PLAN_TREES
|
|
294
326
|
#endif
|
|
327
|
+
#ifdef WRITE_READ_PARSE_PLAN_TREES
|
|
328
|
+
#endif
|
|
295
329
|
|
|
296
330
|
/*
|
|
297
331
|
* Given a raw parsetree (gram.y output), and optionally information about
|
|
@@ -305,9 +339,17 @@ static void disable_statement_timeout(void);
|
|
|
305
339
|
|
|
306
340
|
|
|
307
341
|
/*
|
|
308
|
-
* Do parse analysis and rewriting. This is the same as
|
|
309
|
-
* except that
|
|
310
|
-
*
|
|
342
|
+
* Do parse analysis and rewriting. This is the same as
|
|
343
|
+
* pg_analyze_and_rewrite_fixedparams except that it's okay to deduce
|
|
344
|
+
* information about $n symbol datatypes from context.
|
|
345
|
+
*/
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
/*
|
|
349
|
+
* Do parse analysis and rewriting. This is the same as
|
|
350
|
+
* pg_analyze_and_rewrite_fixedparams except that, instead of a fixed list of
|
|
351
|
+
* parameter datatypes, a parser callback is supplied that can do
|
|
352
|
+
* external-parameter resolution and possibly other things.
|
|
311
353
|
*/
|
|
312
354
|
|
|
313
355
|
|
|
@@ -434,6 +476,13 @@ static void disable_statement_timeout(void);
|
|
|
434
476
|
*/
|
|
435
477
|
|
|
436
478
|
|
|
479
|
+
/*
|
|
480
|
+
* bind_param_error_callback
|
|
481
|
+
*
|
|
482
|
+
* Error context callback used while parsing parameters in a Bind message
|
|
483
|
+
*/
|
|
484
|
+
|
|
485
|
+
|
|
437
486
|
/*
|
|
438
487
|
* exec_describe_statement_message
|
|
439
488
|
*
|
|
@@ -486,8 +535,8 @@ static void disable_statement_timeout(void);
|
|
|
486
535
|
/*
|
|
487
536
|
* quickdie() occurs when signaled SIGQUIT by the postmaster.
|
|
488
537
|
*
|
|
489
|
-
*
|
|
490
|
-
* so we need to stop what we're doing and exit.
|
|
538
|
+
* Either some backend has bought the farm, or we've been told to shut down
|
|
539
|
+
* "immediately"; so we need to stop what we're doing and exit.
|
|
491
540
|
*/
|
|
492
541
|
|
|
493
542
|
|
|
@@ -520,47 +569,14 @@ static void disable_statement_timeout(void);
|
|
|
520
569
|
* If an interrupt condition is pending, and it's safe to service it,
|
|
521
570
|
* then clear the flag and accept the interrupt. Called only when
|
|
522
571
|
* InterruptPending is true.
|
|
523
|
-
*/
|
|
524
|
-
void ProcessInterrupts(void) {}
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
/*
|
|
529
|
-
* IA64-specific code to fetch the AR.BSP register for stack depth checks.
|
|
530
572
|
*
|
|
531
|
-
*
|
|
532
|
-
*
|
|
533
|
-
*
|
|
534
|
-
*
|
|
535
|
-
*
|
|
573
|
+
* Note: if INTERRUPTS_CAN_BE_PROCESSED() is true, then ProcessInterrupts
|
|
574
|
+
* is guaranteed to clear the InterruptPending flag before returning.
|
|
575
|
+
* (This is not the same as guaranteeing that it's still clear when we
|
|
576
|
+
* return; another interrupt could have arrived. But we promise that
|
|
577
|
+
* any pre-existing one will have been serviced.)
|
|
536
578
|
*/
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
#if defined(__hpux) && !defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
|
540
|
-
/* Assume it's HP-UX native compiler */
|
|
541
|
-
#include <ia64/sys/inline.h>
|
|
542
|
-
#define ia64_get_bsp() ((char *) (_Asm_mov_from_ar(_AREG_BSP, _NO_FENCE)))
|
|
543
|
-
#elif defined(__INTEL_COMPILER)
|
|
544
|
-
/* icc */
|
|
545
|
-
#include <asm/ia64regs.h>
|
|
546
|
-
#define ia64_get_bsp() ((char *) __getReg(_IA64_REG_AR_BSP))
|
|
547
|
-
#else
|
|
548
|
-
/* gcc */
|
|
549
|
-
static __inline__ char *
|
|
550
|
-
ia64_get_bsp(void)
|
|
551
|
-
{
|
|
552
|
-
char *ret;
|
|
553
|
-
|
|
554
|
-
/* the ;; is a "stop", seems to be required before fetching BSP */
|
|
555
|
-
__asm__ __volatile__(
|
|
556
|
-
";;\n"
|
|
557
|
-
" mov %0=ar.bsp \n"
|
|
558
|
-
: "=r"(ret));
|
|
559
|
-
|
|
560
|
-
return ret;
|
|
561
|
-
}
|
|
562
|
-
#endif
|
|
563
|
-
#endif /* IA64 */
|
|
579
|
+
void ProcessInterrupts(void) {}
|
|
564
580
|
|
|
565
581
|
|
|
566
582
|
/*
|
|
@@ -568,10 +584,10 @@ ia64_get_bsp(void)
|
|
|
568
584
|
*
|
|
569
585
|
* Returns the old reference point, if any.
|
|
570
586
|
*/
|
|
571
|
-
#
|
|
572
|
-
#else
|
|
587
|
+
#ifndef HAVE__BUILTIN_FRAME_ADDRESS
|
|
573
588
|
#endif
|
|
574
|
-
#
|
|
589
|
+
#ifdef HAVE__BUILTIN_FRAME_ADDRESS
|
|
590
|
+
#else
|
|
575
591
|
#endif
|
|
576
592
|
|
|
577
593
|
/*
|
|
@@ -583,9 +599,7 @@ ia64_get_bsp(void)
|
|
|
583
599
|
* the main thread's stack, so it sets the base pointer before the call, and
|
|
584
600
|
* restores it afterwards.
|
|
585
601
|
*/
|
|
586
|
-
|
|
587
|
-
#else
|
|
588
|
-
#endif
|
|
602
|
+
|
|
589
603
|
|
|
590
604
|
/*
|
|
591
605
|
* check_stack_depth/stack_is_too_deep: check for excessively deep recursion
|
|
@@ -641,22 +655,6 @@ stack_is_too_deep(void)
|
|
|
641
655
|
stack_base_ptr != NULL)
|
|
642
656
|
return true;
|
|
643
657
|
|
|
644
|
-
/*
|
|
645
|
-
* On IA64 there is a separate "register" stack that requires its own
|
|
646
|
-
* independent check. For this, we have to measure the change in the
|
|
647
|
-
* "BSP" pointer from PostgresMain to here. Logic is just as above,
|
|
648
|
-
* except that we know IA64's register stack grows up.
|
|
649
|
-
*
|
|
650
|
-
* Note we assume that the same max_stack_depth applies to both stacks.
|
|
651
|
-
*/
|
|
652
|
-
#if defined(__ia64__) || defined(__ia64)
|
|
653
|
-
stack_depth = (long) (ia64_get_bsp() - register_stack_base_ptr);
|
|
654
|
-
|
|
655
|
-
if (stack_depth > max_stack_depth_bytes &&
|
|
656
|
-
register_stack_base_ptr != NULL)
|
|
657
|
-
return true;
|
|
658
|
-
#endif /* IA64 */
|
|
659
|
-
|
|
660
658
|
return false;
|
|
661
659
|
}
|
|
662
660
|
|
|
@@ -666,6 +664,28 @@ stack_is_too_deep(void)
|
|
|
666
664
|
/* GUC assign hook for max_stack_depth */
|
|
667
665
|
|
|
668
666
|
|
|
667
|
+
/*
|
|
668
|
+
* GUC check_hook for client_connection_check_interval
|
|
669
|
+
*/
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
/*
|
|
673
|
+
* GUC check_hook for log_parser_stats, log_planner_stats, log_executor_stats
|
|
674
|
+
*
|
|
675
|
+
* This function and check_log_stats interact to prevent their variables from
|
|
676
|
+
* being set in a disallowed combination. This is a hack that doesn't really
|
|
677
|
+
* work right; for example it might fail while applying pg_db_role_setting
|
|
678
|
+
* values even though the final state would have been acceptable. However,
|
|
679
|
+
* since these variables are legacy settings with little production usage,
|
|
680
|
+
* we tolerate that.
|
|
681
|
+
*/
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
/*
|
|
685
|
+
* GUC check_hook for log_statement_stats
|
|
686
|
+
*/
|
|
687
|
+
|
|
688
|
+
|
|
669
689
|
|
|
670
690
|
/*
|
|
671
691
|
* set_debug_options --- apply "-d N" command line option
|
|
@@ -684,7 +704,7 @@ stack_is_too_deep(void)
|
|
|
684
704
|
|
|
685
705
|
/* ----------------------------------------------------------------
|
|
686
706
|
* process_postgres_switches
|
|
687
|
-
* Parse command line arguments for
|
|
707
|
+
* Parse command line arguments for backends
|
|
688
708
|
*
|
|
689
709
|
* This is called twice, once for the "secure" options coming from the
|
|
690
710
|
* postmaster or command line, and once for the "insecure" options coming
|
|
@@ -707,19 +727,30 @@ stack_is_too_deep(void)
|
|
|
707
727
|
#endif
|
|
708
728
|
|
|
709
729
|
|
|
730
|
+
/*
|
|
731
|
+
* PostgresSingleUserMain
|
|
732
|
+
* Entry point for single user mode. argc/argv are the command line
|
|
733
|
+
* arguments to be used.
|
|
734
|
+
*
|
|
735
|
+
* Performs single user specific setup then calls PostgresMain() to actually
|
|
736
|
+
* process queries. Single user mode specific setup should go here, rather
|
|
737
|
+
* than PostgresMain() or InitPostgres() when reasonably possible.
|
|
738
|
+
*/
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
710
742
|
/* ----------------------------------------------------------------
|
|
711
743
|
* PostgresMain
|
|
712
|
-
* postgres main loop -- all backends, interactive or otherwise
|
|
744
|
+
* postgres main loop -- all backends, interactive or otherwise loop here
|
|
745
|
+
*
|
|
746
|
+
* dbname is the name of the database to connect to, username is the
|
|
747
|
+
* PostgreSQL user name to be used for the session.
|
|
713
748
|
*
|
|
714
|
-
*
|
|
715
|
-
*
|
|
716
|
-
* dbname is the name of the database to connect to, or NULL if the database
|
|
717
|
-
* name should be extracted from the command line arguments or defaulted.
|
|
718
|
-
* username is the PostgreSQL user name to be used for the session.
|
|
749
|
+
* NB: Single user mode specific setup should go to PostgresSingleUserMain()
|
|
750
|
+
* if reasonably possible.
|
|
719
751
|
* ----------------------------------------------------------------
|
|
720
752
|
*/
|
|
721
|
-
#ifdef
|
|
722
|
-
#else
|
|
753
|
+
#ifdef USE_VALGRIND
|
|
723
754
|
#endif
|
|
724
755
|
|
|
725
756
|
/*
|
|
@@ -737,11 +768,8 @@ stack_is_too_deep(void)
|
|
|
737
768
|
*
|
|
738
769
|
* Return -1 if unknown
|
|
739
770
|
*/
|
|
740
|
-
#if defined(HAVE_GETRLIMIT)
|
|
741
|
-
#else
|
|
742
|
-
#if defined(WIN32) || defined(__CYGWIN__)
|
|
743
|
-
#else /* not windows ... give up */
|
|
744
|
-
#endif
|
|
771
|
+
#if defined(HAVE_GETRLIMIT)
|
|
772
|
+
#else
|
|
745
773
|
#endif
|
|
746
774
|
|
|
747
775
|
|
|
@@ -750,11 +778,11 @@ stack_is_too_deep(void)
|
|
|
750
778
|
|
|
751
779
|
|
|
752
780
|
|
|
753
|
-
#
|
|
781
|
+
#ifndef WIN32
|
|
754
782
|
#if defined(__darwin__)
|
|
755
783
|
#else
|
|
756
784
|
#endif
|
|
757
|
-
#endif /*
|
|
785
|
+
#endif /* !WIN32 */
|
|
758
786
|
|
|
759
787
|
/*
|
|
760
788
|
* on_proc_exit handler to log end of session
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
* Symbols referenced in this file:
|
|
3
|
+
* - pgStatSessionEndCause
|
|
4
|
+
*--------------------------------------------------------------------
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* -------------------------------------------------------------------------
|
|
8
|
+
*
|
|
9
|
+
* pgstat_database.c
|
|
10
|
+
* Implementation of database statistics.
|
|
11
|
+
*
|
|
12
|
+
* This file contains the implementation of database statistics. It is kept
|
|
13
|
+
* separate from pgstat.c to enforce the line between the statistics access /
|
|
14
|
+
* storage implementation and the details about individual types of
|
|
15
|
+
* statistics.
|
|
16
|
+
*
|
|
17
|
+
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
|
|
18
|
+
*
|
|
19
|
+
* IDENTIFICATION
|
|
20
|
+
* src/backend/utils/activity/pgstat_database.c
|
|
21
|
+
* -------------------------------------------------------------------------
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#include "postgres.h"
|
|
25
|
+
|
|
26
|
+
#include "utils/pgstat_internal.h"
|
|
27
|
+
#include "utils/timestamp.h"
|
|
28
|
+
#include "storage/procsignal.h"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
static bool pgstat_should_report_connstat(void);
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
__thread SessionEndType pgStatSessionEndCause = DISCONNECT_NORMAL;
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* Remove entry for the database being dropped.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
* Called from autovacuum.c to report startup of an autovacuum process.
|
|
54
|
+
* We are called before InitPostgres is done, so can't rely on MyDatabaseId;
|
|
55
|
+
* the db OID must be passed in, instead.
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* Report a Hot Standby recovery conflict.
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
/*
|
|
65
|
+
* Report a detected deadlock.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* Report one or more checksum failures.
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
/*
|
|
75
|
+
* Report one checksum failure in the current database.
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
* Report creation of temporary file.
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* Notify stats system of a new connection.
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* Notify the stats system of a disconnect.
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/*
|
|
95
|
+
* Support function for the SQL-callable pgstat* functions. Returns
|
|
96
|
+
* the collected statistics for one database or NULL. NULL doesn't mean
|
|
97
|
+
* that the database doesn't exist, just that there are no statistics, so the
|
|
98
|
+
* caller is better off to report ZERO instead.
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
/*
|
|
105
|
+
* Subroutine for pgstat_report_stat(): Handle xact commit/rollback and I/O
|
|
106
|
+
* timings.
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
/*
|
|
111
|
+
* We report session statistics only for normal backend processes. Parallel
|
|
112
|
+
* workers run in parallel, so they don't contribute to session times, even
|
|
113
|
+
* though they use CPU time. Walsender processes could be considered here,
|
|
114
|
+
* but they have different session characteristics from normal backends (for
|
|
115
|
+
* example, they are always "active"), so they would skew session statistics.
|
|
116
|
+
*/
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/*
|
|
120
|
+
* Find or create a local PgStat_StatDBEntry entry for dboid.
|
|
121
|
+
*/
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
/*
|
|
125
|
+
* Reset the database's reset timestamp, without resetting the contents of the
|
|
126
|
+
* database stats.
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
/*
|
|
131
|
+
* Flush out pending stats for the entry
|
|
132
|
+
*
|
|
133
|
+
* If nowait is true, this function returns false if lock could not
|
|
134
|
+
* immediately acquired, otherwise true is returned.
|
|
135
|
+
*/
|
|
136
|
+
#define PGSTAT_ACCUM_DBCOUNT(item) \
|
|
137
|
+
(sharedent)->stats.item += (pendingent)->item
|
|
138
|
+
#undef PGSTAT_ACCUM_DBCOUNT
|
|
139
|
+
|
|
140
|
+
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* datum.c
|
|
12
12
|
* POSTGRES Datum (abstract data type) manipulation routines.
|
|
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
|
*
|
|
@@ -51,6 +51,8 @@
|
|
|
51
51
|
#include "postgres.h"
|
|
52
52
|
|
|
53
53
|
#include "access/detoast.h"
|
|
54
|
+
#include "catalog/pg_type_d.h"
|
|
55
|
+
#include "common/hashfn.h"
|
|
54
56
|
#include "fmgr.h"
|
|
55
57
|
#include "utils/builtins.h"
|
|
56
58
|
#include "utils/datum.h"
|
|
@@ -262,6 +264,17 @@ datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen)
|
|
|
262
264
|
*/
|
|
263
265
|
|
|
264
266
|
|
|
267
|
+
/*-------------------------------------------------------------------------
|
|
268
|
+
* datum_image_hash
|
|
269
|
+
*
|
|
270
|
+
* Generate a hash value based on the binary representation of 'value'. Most
|
|
271
|
+
* use cases will want to use the hash function specific to the Datum's type,
|
|
272
|
+
* however, some corner cases require generating a hash value based on the
|
|
273
|
+
* actual bits rather than the logical value.
|
|
274
|
+
*-------------------------------------------------------------------------
|
|
275
|
+
*/
|
|
276
|
+
|
|
277
|
+
|
|
265
278
|
/*-------------------------------------------------------------------------
|
|
266
279
|
* btequalimage
|
|
267
280
|
*
|
|
@@ -271,12 +284,9 @@ datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen)
|
|
|
271
284
|
* datum_image_eq() in all cases can use this as their "equalimage" support
|
|
272
285
|
* function.
|
|
273
286
|
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
* it ever proved necessary to rescind support for an operator class, we could
|
|
278
|
-
* do that in a targeted fashion by doing something with the opcintype
|
|
279
|
-
* argument.
|
|
287
|
+
* Earlier minor releases erroneously associated this function with
|
|
288
|
+
* interval_ops. Detect that case to rescind deduplication support, without
|
|
289
|
+
* requiring initdb.
|
|
280
290
|
*-------------------------------------------------------------------------
|
|
281
291
|
*/
|
|
282
292
|
|