pg_query 4.2.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +6 -8
- data/Rakefile +5 -6
- data/ext/pg_query/extconf.rb +14 -4
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
- data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
- data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
- data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
- data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
- data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
- data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
- data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
- data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
- data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
- data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
- data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
- data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +534 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +79 -5
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +6 -10
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +23 -5
- data/lib/pg_query/version.rb +1 -1
- metadata +432 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
- /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* memutils_memorychunk.h
|
|
4
|
+
* Here we define a struct named MemoryChunk which implementations of
|
|
5
|
+
* MemoryContexts may use as a header for chunks of memory they allocate.
|
|
6
|
+
*
|
|
7
|
+
* MemoryChunk provides a lightweight header that a MemoryContext can use to
|
|
8
|
+
* store a reference back to the block which the given chunk is allocated on
|
|
9
|
+
* and also an additional 30-bits to store another value such as the size of
|
|
10
|
+
* the allocated chunk.
|
|
11
|
+
*
|
|
12
|
+
* Although MemoryChunks are used by each of our MemoryContexts, future
|
|
13
|
+
* implementations may choose to implement their own method for storing chunk
|
|
14
|
+
* headers. The only requirement is that the header ends with an 8-byte value
|
|
15
|
+
* which the least significant 3-bits of are set to the MemoryContextMethodID
|
|
16
|
+
* of the given context.
|
|
17
|
+
*
|
|
18
|
+
* By default, a MemoryChunk is 8 bytes in size, however, when
|
|
19
|
+
* MEMORY_CONTEXT_CHECKING is defined the header becomes 16 bytes in size due
|
|
20
|
+
* to the additional requested_size field. The MemoryContext may use this
|
|
21
|
+
* field for whatever they wish, but it is intended to be used for additional
|
|
22
|
+
* checks which are only done in MEMORY_CONTEXT_CHECKING builds.
|
|
23
|
+
*
|
|
24
|
+
* The MemoryChunk contains a uint64 field named 'hdrmask'. This field is
|
|
25
|
+
* used to encode 4 separate pieces of information. Starting with the least
|
|
26
|
+
* significant bits of 'hdrmask', the bit space is reserved as follows:
|
|
27
|
+
*
|
|
28
|
+
* 1. 3-bits to indicate the MemoryContextMethodID as defined by
|
|
29
|
+
* MEMORY_CONTEXT_METHODID_MASK
|
|
30
|
+
* 2. 1-bit to denote an "external" chunk (see below)
|
|
31
|
+
* 3. 30-bits reserved for the MemoryContext to use for anything it
|
|
32
|
+
* requires. Most MemoryContext likely want to store the size of the
|
|
33
|
+
* chunk here.
|
|
34
|
+
* 4. 30-bits for the number of bytes that must be subtracted from the chunk
|
|
35
|
+
* to obtain the address of the block that the chunk is stored on.
|
|
36
|
+
*
|
|
37
|
+
* In some cases, for example when memory allocations become large, it's
|
|
38
|
+
* possible fields 3 and 4 above are not large enough to store the values
|
|
39
|
+
* required for the chunk. In this case, the MemoryContext can choose to mark
|
|
40
|
+
* the chunk as "external" by calling the MemoryChunkSetHdrMaskExternal()
|
|
41
|
+
* function. When this is done, fields 3 and 4 are unavailable for use by the
|
|
42
|
+
* MemoryContext and it's up to the MemoryContext itself to devise its own
|
|
43
|
+
* method for getting the reference to the block.
|
|
44
|
+
*
|
|
45
|
+
* Interface:
|
|
46
|
+
*
|
|
47
|
+
* MemoryChunkSetHdrMask:
|
|
48
|
+
* Used to set up a non-external MemoryChunk.
|
|
49
|
+
*
|
|
50
|
+
* MemoryChunkSetHdrMaskExternal:
|
|
51
|
+
* Used to set up an externally managed MemoryChunk.
|
|
52
|
+
*
|
|
53
|
+
* MemoryChunkIsExternal:
|
|
54
|
+
* Determine if the given MemoryChunk is externally managed, i.e.
|
|
55
|
+
* MemoryChunkSetHdrMaskExternal() was called on the chunk.
|
|
56
|
+
*
|
|
57
|
+
* MemoryChunkGetValue:
|
|
58
|
+
* For non-external chunks, return the stored 30-bit value as it was set
|
|
59
|
+
* in the call to MemoryChunkSetHdrMask().
|
|
60
|
+
*
|
|
61
|
+
* MemoryChunkGetBlock:
|
|
62
|
+
* For non-external chunks, return a pointer to the block as it was set
|
|
63
|
+
* in the call to MemoryChunkSetHdrMask().
|
|
64
|
+
*
|
|
65
|
+
* Also exports:
|
|
66
|
+
* MEMORYCHUNK_MAX_VALUE
|
|
67
|
+
* MEMORYCHUNK_MAX_BLOCKOFFSET
|
|
68
|
+
* PointerGetMemoryChunk
|
|
69
|
+
* MemoryChunkGetPointer
|
|
70
|
+
*
|
|
71
|
+
* Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
|
|
72
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
73
|
+
*
|
|
74
|
+
* src/include/utils/memutils_memorychunk.h
|
|
75
|
+
*
|
|
76
|
+
*-------------------------------------------------------------------------
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
#ifndef MEMUTILS_MEMORYCHUNK_H
|
|
80
|
+
#define MEMUTILS_MEMORYCHUNK_H
|
|
81
|
+
|
|
82
|
+
#include "utils/memutils_internal.h"
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* The maximum allowed value that MemoryContexts can store in the value
|
|
86
|
+
* field. Must be 1 less than a power of 2.
|
|
87
|
+
*/
|
|
88
|
+
#define MEMORYCHUNK_MAX_VALUE UINT64CONST(0x3FFFFFFF)
|
|
89
|
+
|
|
90
|
+
/*
|
|
91
|
+
* The maximum distance in bytes that a MemoryChunk can be offset from the
|
|
92
|
+
* block that is storing the chunk. Must be 1 less than a power of 2.
|
|
93
|
+
*/
|
|
94
|
+
#define MEMORYCHUNK_MAX_BLOCKOFFSET UINT64CONST(0x3FFFFFFF)
|
|
95
|
+
|
|
96
|
+
/* define the least significant base-0 bit of each portion of the hdrmask */
|
|
97
|
+
#define MEMORYCHUNK_EXTERNAL_BASEBIT MEMORY_CONTEXT_METHODID_BITS
|
|
98
|
+
#define MEMORYCHUNK_VALUE_BASEBIT (MEMORYCHUNK_EXTERNAL_BASEBIT + 1)
|
|
99
|
+
#define MEMORYCHUNK_BLOCKOFFSET_BASEBIT (MEMORYCHUNK_VALUE_BASEBIT + 30)
|
|
100
|
+
|
|
101
|
+
/*
|
|
102
|
+
* A magic number for storing in the free bits of an external chunk. This
|
|
103
|
+
* must mask out the bits used for storing the MemoryContextMethodID and the
|
|
104
|
+
* external bit.
|
|
105
|
+
*/
|
|
106
|
+
#define MEMORYCHUNK_MAGIC (UINT64CONST(0xB1A8DB858EB6EFBA) >> \
|
|
107
|
+
MEMORYCHUNK_VALUE_BASEBIT << \
|
|
108
|
+
MEMORYCHUNK_VALUE_BASEBIT)
|
|
109
|
+
|
|
110
|
+
typedef struct MemoryChunk
|
|
111
|
+
{
|
|
112
|
+
#ifdef MEMORY_CONTEXT_CHECKING
|
|
113
|
+
Size requested_size;
|
|
114
|
+
#endif
|
|
115
|
+
|
|
116
|
+
/* bitfield for storing details about the chunk */
|
|
117
|
+
uint64 hdrmask; /* must be last */
|
|
118
|
+
} MemoryChunk;
|
|
119
|
+
|
|
120
|
+
/* Get the MemoryChunk from the pointer */
|
|
121
|
+
#define PointerGetMemoryChunk(p) \
|
|
122
|
+
((MemoryChunk *) ((char *) (p) - sizeof(MemoryChunk)))
|
|
123
|
+
/* Get the pointer from the MemoryChunk */
|
|
124
|
+
#define MemoryChunkGetPointer(c) \
|
|
125
|
+
((void *) ((char *) (c) + sizeof(MemoryChunk)))
|
|
126
|
+
|
|
127
|
+
/* private macros for making the inline functions below more simple */
|
|
128
|
+
#define HdrMaskIsExternal(hdrmask) \
|
|
129
|
+
((hdrmask) & (((uint64) 1) << MEMORYCHUNK_EXTERNAL_BASEBIT))
|
|
130
|
+
#define HdrMaskGetValue(hdrmask) \
|
|
131
|
+
(((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT) & MEMORYCHUNK_MAX_VALUE)
|
|
132
|
+
|
|
133
|
+
/*
|
|
134
|
+
* We should have used up all the bits here, so the compiler is likely to
|
|
135
|
+
* optimize out the & MEMORYCHUNK_MAX_BLOCKOFFSET.
|
|
136
|
+
*/
|
|
137
|
+
#define HdrMaskBlockOffset(hdrmask) \
|
|
138
|
+
(((hdrmask) >> MEMORYCHUNK_BLOCKOFFSET_BASEBIT) & MEMORYCHUNK_MAX_BLOCKOFFSET)
|
|
139
|
+
|
|
140
|
+
/* For external chunks only, check the magic number matches */
|
|
141
|
+
#define HdrMaskCheckMagic(hdrmask) \
|
|
142
|
+
(MEMORYCHUNK_MAGIC == \
|
|
143
|
+
((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT << MEMORYCHUNK_VALUE_BASEBIT))
|
|
144
|
+
/*
|
|
145
|
+
* MemoryChunkSetHdrMask
|
|
146
|
+
* Store the given 'block', 'chunk_size' and 'methodid' in the given
|
|
147
|
+
* MemoryChunk.
|
|
148
|
+
*
|
|
149
|
+
* The number of bytes between 'block' and 'chunk' must be <=
|
|
150
|
+
* MEMORYCHUNK_MAX_BLOCKOFFSET.
|
|
151
|
+
* 'value' must be <= MEMORYCHUNK_MAX_VALUE.
|
|
152
|
+
*/
|
|
153
|
+
static inline void
|
|
154
|
+
MemoryChunkSetHdrMask(MemoryChunk *chunk, void *block,
|
|
155
|
+
Size value, MemoryContextMethodID methodid)
|
|
156
|
+
{
|
|
157
|
+
Size blockoffset = (char *) chunk - (char *) block;
|
|
158
|
+
|
|
159
|
+
Assert((char *) chunk >= (char *) block);
|
|
160
|
+
Assert(blockoffset <= MEMORYCHUNK_MAX_BLOCKOFFSET);
|
|
161
|
+
Assert(value <= MEMORYCHUNK_MAX_VALUE);
|
|
162
|
+
Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK);
|
|
163
|
+
|
|
164
|
+
chunk->hdrmask = (((uint64) blockoffset) << MEMORYCHUNK_BLOCKOFFSET_BASEBIT) |
|
|
165
|
+
(((uint64) value) << MEMORYCHUNK_VALUE_BASEBIT) |
|
|
166
|
+
methodid;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/*
|
|
170
|
+
* MemoryChunkSetHdrMaskExternal
|
|
171
|
+
* Set 'chunk' as an externally managed chunk. Here we only record the
|
|
172
|
+
* MemoryContextMethodID and set the external chunk bit.
|
|
173
|
+
*/
|
|
174
|
+
static inline void
|
|
175
|
+
MemoryChunkSetHdrMaskExternal(MemoryChunk *chunk,
|
|
176
|
+
MemoryContextMethodID methodid)
|
|
177
|
+
{
|
|
178
|
+
Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK);
|
|
179
|
+
|
|
180
|
+
chunk->hdrmask = MEMORYCHUNK_MAGIC | (((uint64) 1) << MEMORYCHUNK_EXTERNAL_BASEBIT) |
|
|
181
|
+
methodid;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/*
|
|
185
|
+
* MemoryChunkIsExternal
|
|
186
|
+
* Return true if 'chunk' is marked as external.
|
|
187
|
+
*/
|
|
188
|
+
static inline bool
|
|
189
|
+
MemoryChunkIsExternal(MemoryChunk *chunk)
|
|
190
|
+
{
|
|
191
|
+
/*
|
|
192
|
+
* External chunks should always store MEMORYCHUNK_MAGIC in the upper
|
|
193
|
+
* portion of the hdrmask, check that nothing has stomped on that.
|
|
194
|
+
*/
|
|
195
|
+
Assert(!HdrMaskIsExternal(chunk->hdrmask) ||
|
|
196
|
+
HdrMaskCheckMagic(chunk->hdrmask));
|
|
197
|
+
|
|
198
|
+
return HdrMaskIsExternal(chunk->hdrmask);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/*
|
|
202
|
+
* MemoryChunkGetValue
|
|
203
|
+
* For non-external chunks, returns the value field as it was set in
|
|
204
|
+
* MemoryChunkSetHdrMask.
|
|
205
|
+
*/
|
|
206
|
+
static inline Size
|
|
207
|
+
MemoryChunkGetValue(MemoryChunk *chunk)
|
|
208
|
+
{
|
|
209
|
+
Assert(!HdrMaskIsExternal(chunk->hdrmask));
|
|
210
|
+
|
|
211
|
+
return HdrMaskGetValue(chunk->hdrmask);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/*
|
|
215
|
+
* MemoryChunkGetBlock
|
|
216
|
+
* For non-external chunks, returns the pointer to the block as was set
|
|
217
|
+
* in MemoryChunkSetHdrMask.
|
|
218
|
+
*/
|
|
219
|
+
static inline void *
|
|
220
|
+
MemoryChunkGetBlock(MemoryChunk *chunk)
|
|
221
|
+
{
|
|
222
|
+
Assert(!HdrMaskIsExternal(chunk->hdrmask));
|
|
223
|
+
|
|
224
|
+
return (void *) ((char *) chunk - HdrMaskBlockOffset(chunk->hdrmask));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* cleanup all internal definitions */
|
|
228
|
+
#undef MEMORYCHUNK_EXTERNAL_BASEBIT
|
|
229
|
+
#undef MEMORYCHUNK_VALUE_BASEBIT
|
|
230
|
+
#undef MEMORYCHUNK_BLOCKOFFSET_BASEBIT
|
|
231
|
+
#undef MEMORYCHUNK_MAGIC
|
|
232
|
+
#undef HdrMaskIsExternal
|
|
233
|
+
#undef HdrMaskGetValue
|
|
234
|
+
#undef HdrMaskBlockOffset
|
|
235
|
+
#undef HdrMaskCheckMagic
|
|
236
|
+
|
|
237
|
+
#endif /* MEMUTILS_MEMORYCHUNK_H */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane.
|
|
7
7
|
*
|
|
8
|
-
* Copyright (c) 1998-
|
|
8
|
+
* Copyright (c) 1998-2023, PostgreSQL Global Development Group
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/numeric.h
|
|
11
11
|
*
|
|
@@ -56,9 +56,24 @@ typedef struct NumericData *Numeric;
|
|
|
56
56
|
* fmgr interface macros
|
|
57
57
|
*/
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
static inline Numeric
|
|
60
|
+
DatumGetNumeric(Datum X)
|
|
61
|
+
{
|
|
62
|
+
return (Numeric) PG_DETOAST_DATUM(X);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static inline Numeric
|
|
66
|
+
DatumGetNumericCopy(Datum X)
|
|
67
|
+
{
|
|
68
|
+
return (Numeric) PG_DETOAST_DATUM_COPY(X);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static inline Datum
|
|
72
|
+
NumericGetDatum(Numeric X)
|
|
73
|
+
{
|
|
74
|
+
return PointerGetDatum(X);
|
|
75
|
+
}
|
|
76
|
+
|
|
62
77
|
#define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n))
|
|
63
78
|
#define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n))
|
|
64
79
|
#define PG_RETURN_NUMERIC(x) return NumericGetDatum(x)
|
|
@@ -85,6 +100,6 @@ extern Numeric numeric_div_opt_error(Numeric num1, Numeric num2,
|
|
|
85
100
|
bool *have_error);
|
|
86
101
|
extern Numeric numeric_mod_opt_error(Numeric num1, Numeric num2,
|
|
87
102
|
bool *have_error);
|
|
88
|
-
extern int32 numeric_int4_opt_error(Numeric num, bool *
|
|
103
|
+
extern int32 numeric_int4_opt_error(Numeric num, bool *have_error);
|
|
89
104
|
|
|
90
105
|
#endif /* _PG_NUMERIC_H_ */
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* everything that should be freed. See utils/mmgr/README for more info.
|
|
19
19
|
*
|
|
20
20
|
*
|
|
21
|
-
* Portions Copyright (c) 1996-
|
|
21
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
22
22
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
23
23
|
*
|
|
24
24
|
* src/include/utils/palloc.h
|
|
@@ -56,7 +56,7 @@ typedef struct MemoryContextCallback
|
|
|
56
56
|
* Avoid accessing it directly! Instead, use MemoryContextSwitchTo()
|
|
57
57
|
* to change the setting.
|
|
58
58
|
*/
|
|
59
|
-
extern PGDLLIMPORT __thread
|
|
59
|
+
extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext;
|
|
60
60
|
|
|
61
61
|
/*
|
|
62
62
|
* Flags for MemoryContextAllocExtended.
|
|
@@ -73,11 +73,17 @@ extern void *MemoryContextAllocZero(MemoryContext context, Size size);
|
|
|
73
73
|
extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size);
|
|
74
74
|
extern void *MemoryContextAllocExtended(MemoryContext context,
|
|
75
75
|
Size size, int flags);
|
|
76
|
+
extern void *MemoryContextAllocAligned(MemoryContext context,
|
|
77
|
+
Size size, Size alignto, int flags);
|
|
76
78
|
|
|
77
79
|
extern void *palloc(Size size);
|
|
78
80
|
extern void *palloc0(Size size);
|
|
79
81
|
extern void *palloc_extended(Size size, int flags);
|
|
82
|
+
extern void *palloc_aligned(Size size, Size alignto, int flags);
|
|
80
83
|
extern pg_nodiscard void *repalloc(void *pointer, Size size);
|
|
84
|
+
extern pg_nodiscard void *repalloc_extended(void *pointer,
|
|
85
|
+
Size size, int flags);
|
|
86
|
+
extern pg_nodiscard void *repalloc0(void *pointer, Size oldsize, Size size);
|
|
81
87
|
extern void pfree(void *pointer);
|
|
82
88
|
|
|
83
89
|
/*
|
|
@@ -101,6 +107,7 @@ extern void pfree(void *pointer);
|
|
|
101
107
|
* objects of type "type"
|
|
102
108
|
*/
|
|
103
109
|
#define repalloc_array(pointer, type, count) ((type *) repalloc(pointer, sizeof(type) * (count)))
|
|
110
|
+
#define repalloc0_array(pointer, type, oldcount, count) ((type *) repalloc0(pointer, sizeof(type) * (oldcount), sizeof(type) * (count)))
|
|
104
111
|
|
|
105
112
|
/*
|
|
106
113
|
* The result of palloc() is always word-aligned, so we can skip testing
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* partcache.h
|
|
4
4
|
*
|
|
5
|
-
* Copyright (c) 1996-
|
|
5
|
+
* Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
6
6
|
*
|
|
7
7
|
* src/include/utils/partcache.h
|
|
8
8
|
*
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
#include "access/attnum.h"
|
|
15
15
|
#include "fmgr.h"
|
|
16
|
+
#include "nodes/parsenodes.h"
|
|
16
17
|
#include "nodes/pg_list.h"
|
|
17
18
|
#include "nodes/primnodes.h"
|
|
18
19
|
#include "partitioning/partdefs.h"
|
|
@@ -23,7 +24,7 @@
|
|
|
23
24
|
*/
|
|
24
25
|
typedef struct PartitionKeyData
|
|
25
26
|
{
|
|
26
|
-
|
|
27
|
+
PartitionStrategy strategy; /* partitioning strategy */
|
|
27
28
|
int16 partnatts; /* number of columns in the partition key */
|
|
28
29
|
AttrNumber *partattrs; /* attribute numbers of columns in the
|
|
29
30
|
* partition key or 0 if it's an expr */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* src/include/utils/pg_locale.h
|
|
6
6
|
*
|
|
7
|
-
* Copyright (c) 2002-
|
|
7
|
+
* Copyright (c) 2002-2023, PostgreSQL Global Development Group
|
|
8
8
|
*
|
|
9
9
|
*-----------------------------------------------------------------------
|
|
10
10
|
*/
|
|
@@ -19,8 +19,6 @@
|
|
|
19
19
|
#include <unicode/ucol.h>
|
|
20
20
|
#endif
|
|
21
21
|
|
|
22
|
-
#include "utils/guc.h"
|
|
23
|
-
|
|
24
22
|
#ifdef USE_ICU
|
|
25
23
|
/*
|
|
26
24
|
* ucol_strcollUTF8() was introduced in ICU 50, but it is buggy before ICU 53.
|
|
@@ -42,6 +40,7 @@ extern PGDLLIMPORT char *locale_messages;
|
|
|
42
40
|
extern PGDLLIMPORT char *locale_monetary;
|
|
43
41
|
extern PGDLLIMPORT char *locale_numeric;
|
|
44
42
|
extern PGDLLIMPORT char *locale_time;
|
|
43
|
+
extern PGDLLIMPORT int icu_validation_level;
|
|
45
44
|
|
|
46
45
|
/* lc_time localization cache */
|
|
47
46
|
extern PGDLLIMPORT char *localized_abbrev_days[];
|
|
@@ -49,19 +48,11 @@ extern PGDLLIMPORT char *localized_full_days[];
|
|
|
49
48
|
extern PGDLLIMPORT char *localized_abbrev_months[];
|
|
50
49
|
extern PGDLLIMPORT char *localized_full_months[];
|
|
51
50
|
|
|
52
|
-
|
|
53
|
-
extern bool
|
|
54
|
-
extern void assign_locale_messages(const char *newval, void *extra);
|
|
55
|
-
extern bool check_locale_monetary(char **newval, void **extra, GucSource source);
|
|
56
|
-
extern void assign_locale_monetary(const char *newval, void *extra);
|
|
57
|
-
extern bool check_locale_numeric(char **newval, void **extra, GucSource source);
|
|
58
|
-
extern void assign_locale_numeric(const char *newval, void *extra);
|
|
59
|
-
extern bool check_locale_time(char **newval, void **extra, GucSource source);
|
|
60
|
-
extern void assign_locale_time(const char *newval, void *extra);
|
|
51
|
+
/* is the databases's LC_CTYPE the C locale? */
|
|
52
|
+
extern PGDLLIMPORT bool database_ctype_is_c;
|
|
61
53
|
|
|
62
54
|
extern bool check_locale(int category, const char *locale, char **canonname);
|
|
63
55
|
extern char *pg_perm_setlocale(int category, const char *locale);
|
|
64
|
-
extern void check_strxfrm_bug(void);
|
|
65
56
|
|
|
66
57
|
extern bool lc_collate_is_c(Oid collation);
|
|
67
58
|
extern bool lc_ctype_is_c(Oid collation);
|
|
@@ -106,17 +97,34 @@ typedef struct pg_locale_struct *pg_locale_t;
|
|
|
106
97
|
extern PGDLLIMPORT struct pg_locale_struct default_locale;
|
|
107
98
|
|
|
108
99
|
extern void make_icu_collator(const char *iculocstr,
|
|
100
|
+
const char *icurules,
|
|
109
101
|
struct pg_locale_struct *resultp);
|
|
110
102
|
|
|
103
|
+
extern bool pg_locale_deterministic(pg_locale_t locale);
|
|
111
104
|
extern pg_locale_t pg_newlocale_from_collation(Oid collid);
|
|
112
105
|
|
|
113
106
|
extern char *get_collation_actual_version(char collprovider, const char *collcollate);
|
|
107
|
+
extern int pg_strcoll(const char *arg1, const char *arg2, pg_locale_t locale);
|
|
108
|
+
extern int pg_strncoll(const char *arg1, size_t len1,
|
|
109
|
+
const char *arg2, size_t len2, pg_locale_t locale);
|
|
110
|
+
extern bool pg_strxfrm_enabled(pg_locale_t locale);
|
|
111
|
+
extern size_t pg_strxfrm(char *dest, const char *src, size_t destsize,
|
|
112
|
+
pg_locale_t locale);
|
|
113
|
+
extern size_t pg_strnxfrm(char *dest, size_t destsize, const char *src,
|
|
114
|
+
size_t srclen, pg_locale_t locale);
|
|
115
|
+
extern bool pg_strxfrm_prefix_enabled(pg_locale_t locale);
|
|
116
|
+
extern size_t pg_strxfrm_prefix(char *dest, const char *src, size_t destsize,
|
|
117
|
+
pg_locale_t locale);
|
|
118
|
+
extern size_t pg_strnxfrm_prefix(char *dest, size_t destsize, const char *src,
|
|
119
|
+
size_t srclen, pg_locale_t locale);
|
|
120
|
+
|
|
121
|
+
extern void icu_validate_locale(const char *loc_str);
|
|
122
|
+
extern char *icu_language_tag(const char *loc_str, int elevel);
|
|
114
123
|
|
|
115
124
|
#ifdef USE_ICU
|
|
116
125
|
extern int32_t icu_to_uchar(UChar **buff_uchar, const char *buff, size_t nbytes);
|
|
117
126
|
extern int32_t icu_from_uchar(char **result, const UChar *buff_uchar, int32_t len_uchar);
|
|
118
127
|
#endif
|
|
119
|
-
extern void check_icu_locale(const char *icu_locale);
|
|
120
128
|
|
|
121
129
|
/* These functions convert from/to libc's wchar_t, *not* pg_wchar_t */
|
|
122
130
|
extern size_t wchar2char(char *to, const wchar_t *from, size_t tolen,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* only be needed by files implementing statistics support (rather than ones
|
|
6
6
|
* reporting / querying stats).
|
|
7
7
|
*
|
|
8
|
-
* Copyright (c) 2001-
|
|
8
|
+
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/pgstat_internal.h
|
|
11
11
|
* ----------
|
|
@@ -102,7 +102,7 @@ typedef struct PgStatShared_HashEntry
|
|
|
102
102
|
} PgStatShared_HashEntry;
|
|
103
103
|
|
|
104
104
|
/*
|
|
105
|
-
* Common header struct for
|
|
105
|
+
* Common header struct for PgStatShared_*.
|
|
106
106
|
*/
|
|
107
107
|
typedef struct PgStatShared_Common
|
|
108
108
|
{
|
|
@@ -162,8 +162,7 @@ typedef struct PgStat_SubXactStatus
|
|
|
162
162
|
* if the transaction commits/aborts. To handle replicas and crashes,
|
|
163
163
|
* stats drops are included in commit / abort records.
|
|
164
164
|
*/
|
|
165
|
-
|
|
166
|
-
int pending_drops_count;
|
|
165
|
+
dclist_head pending_drops;
|
|
167
166
|
|
|
168
167
|
/*
|
|
169
168
|
* Tuple insertion/deletion counts for an open transaction can't be
|
|
@@ -330,6 +329,17 @@ typedef struct PgStatShared_Checkpointer
|
|
|
330
329
|
PgStat_CheckpointerStats reset_offset;
|
|
331
330
|
} PgStatShared_Checkpointer;
|
|
332
331
|
|
|
332
|
+
/* Shared-memory ready PgStat_IO */
|
|
333
|
+
typedef struct PgStatShared_IO
|
|
334
|
+
{
|
|
335
|
+
/*
|
|
336
|
+
* locks[i] protects stats.stats[i]. locks[0] also protects
|
|
337
|
+
* stats.stat_reset_timestamp.
|
|
338
|
+
*/
|
|
339
|
+
LWLock locks[BACKEND_NUM_TYPES];
|
|
340
|
+
PgStat_IO stats;
|
|
341
|
+
} PgStatShared_IO;
|
|
342
|
+
|
|
333
343
|
typedef struct PgStatShared_SLRU
|
|
334
344
|
{
|
|
335
345
|
/* lock protects ->stats */
|
|
@@ -420,6 +430,7 @@ typedef struct PgStat_ShmemControl
|
|
|
420
430
|
PgStatShared_Archiver archiver;
|
|
421
431
|
PgStatShared_BgWriter bgwriter;
|
|
422
432
|
PgStatShared_Checkpointer checkpointer;
|
|
433
|
+
PgStatShared_IO io;
|
|
423
434
|
PgStatShared_SLRU slru;
|
|
424
435
|
PgStatShared_Wal wal;
|
|
425
436
|
} PgStat_ShmemControl;
|
|
@@ -443,6 +454,8 @@ typedef struct PgStat_Snapshot
|
|
|
443
454
|
|
|
444
455
|
PgStat_CheckpointerStats checkpointer;
|
|
445
456
|
|
|
457
|
+
PgStat_IO io;
|
|
458
|
+
|
|
446
459
|
PgStat_SLRUStats slru[SLRU_NUM_ELEMENTS];
|
|
447
460
|
|
|
448
461
|
PgStat_WalStats wal;
|
|
@@ -550,6 +563,15 @@ extern void pgstat_database_reset_timestamp_cb(PgStatShared_Common *header, Time
|
|
|
550
563
|
extern bool pgstat_function_flush_cb(PgStat_EntryRef *entry_ref, bool nowait);
|
|
551
564
|
|
|
552
565
|
|
|
566
|
+
/*
|
|
567
|
+
* Functions in pgstat_io.c
|
|
568
|
+
*/
|
|
569
|
+
|
|
570
|
+
extern bool pgstat_flush_io(bool nowait);
|
|
571
|
+
extern void pgstat_io_reset_all_cb(TimestampTz ts);
|
|
572
|
+
extern void pgstat_io_snapshot_cb(void);
|
|
573
|
+
|
|
574
|
+
|
|
553
575
|
/*
|
|
554
576
|
* Functions in pgstat_relation.c
|
|
555
577
|
*/
|
|
@@ -580,7 +602,7 @@ extern void pgstat_attach_shmem(void);
|
|
|
580
602
|
extern void pgstat_detach_shmem(void);
|
|
581
603
|
|
|
582
604
|
extern PgStat_EntryRef *pgstat_get_entry_ref(PgStat_Kind kind, Oid dboid, Oid objoid,
|
|
583
|
-
bool create, bool *
|
|
605
|
+
bool create, bool *created_entry);
|
|
584
606
|
extern bool pgstat_lock_entry(PgStat_EntryRef *entry_ref, bool nowait);
|
|
585
607
|
extern bool pgstat_lock_entry_shared(PgStat_EntryRef *entry_ref, bool nowait);
|
|
586
608
|
extern void pgstat_unlock_entry(PgStat_EntryRef *entry_ref);
|
|
@@ -627,6 +649,7 @@ extern void pgstat_wal_snapshot_cb(void);
|
|
|
627
649
|
extern bool pgstat_subscription_flush_cb(PgStat_EntryRef *entry_ref, bool nowait);
|
|
628
650
|
extern void pgstat_subscription_reset_timestamp_cb(PgStatShared_Common *header, TimestampTz ts);
|
|
629
651
|
|
|
652
|
+
|
|
630
653
|
/*
|
|
631
654
|
* Functions in pgstat_xact.c
|
|
632
655
|
*/
|
|
@@ -643,6 +666,13 @@ extern void pgstat_create_transactional(PgStat_Kind kind, Oid dboid, Oid objoid)
|
|
|
643
666
|
extern PGDLLIMPORT PgStat_LocalState pgStatLocal;
|
|
644
667
|
|
|
645
668
|
|
|
669
|
+
/*
|
|
670
|
+
* Variables in pgstat_io.c
|
|
671
|
+
*/
|
|
672
|
+
|
|
673
|
+
extern PGDLLIMPORT bool have_iostats;
|
|
674
|
+
|
|
675
|
+
|
|
646
676
|
/*
|
|
647
677
|
* Variables in pgstat_slru.c
|
|
648
678
|
*/
|
|
@@ -739,7 +769,7 @@ pgstat_copy_changecounted_stats(void *dst, void *src, size_t len,
|
|
|
739
769
|
static inline int
|
|
740
770
|
pgstat_cmp_hash_key(const void *a, const void *b, size_t size, void *arg)
|
|
741
771
|
{
|
|
742
|
-
|
|
772
|
+
Assert(size == sizeof(PgStat_HashKey) && arg == NULL);
|
|
743
773
|
return memcmp(a, b, sizeof(PgStat_HashKey));
|
|
744
774
|
}
|
|
745
775
|
|
|
@@ -749,7 +779,7 @@ pgstat_hash_hash_key(const void *d, size_t size, void *arg)
|
|
|
749
779
|
const PgStat_HashKey *key = (PgStat_HashKey *) d;
|
|
750
780
|
uint32 hash;
|
|
751
781
|
|
|
752
|
-
|
|
782
|
+
Assert(size == sizeof(PgStat_HashKey) && arg == NULL);
|
|
753
783
|
|
|
754
784
|
hash = murmurhash32(key->kind);
|
|
755
785
|
hash = hash_combine(hash, murmurhash32(key->dboid));
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* See plancache.c for comments.
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 1996-
|
|
8
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
10
|
*
|
|
11
11
|
* src/include/utils/plancache.h
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
* to look like NO SCROLL cursors.
|
|
37
37
|
*
|
|
38
38
|
*
|
|
39
|
-
* Portions Copyright (c) 1996-
|
|
39
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
40
40
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
41
41
|
*
|
|
42
42
|
* src/include/utils/portal.h
|
|
@@ -50,14 +50,18 @@
|
|
|
50
50
|
#define TRACE_POSTGRESQL_SORT_START_ENABLED() (0)
|
|
51
51
|
#define TRACE_POSTGRESQL_SORT_DONE(INT1, INT2) do {} while (0)
|
|
52
52
|
#define TRACE_POSTGRESQL_SORT_DONE_ENABLED() (0)
|
|
53
|
-
#define TRACE_POSTGRESQL_BUFFER_READ_START(INT1, INT2, INT3, INT4, INT5, INT6
|
|
53
|
+
#define TRACE_POSTGRESQL_BUFFER_READ_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0)
|
|
54
54
|
#define TRACE_POSTGRESQL_BUFFER_READ_START_ENABLED() (0)
|
|
55
|
-
#define TRACE_POSTGRESQL_BUFFER_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7
|
|
55
|
+
#define TRACE_POSTGRESQL_BUFFER_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7) do {} while (0)
|
|
56
56
|
#define TRACE_POSTGRESQL_BUFFER_READ_DONE_ENABLED() (0)
|
|
57
57
|
#define TRACE_POSTGRESQL_BUFFER_FLUSH_START(INT1, INT2, INT3, INT4, INT5) do {} while (0)
|
|
58
58
|
#define TRACE_POSTGRESQL_BUFFER_FLUSH_START_ENABLED() (0)
|
|
59
59
|
#define TRACE_POSTGRESQL_BUFFER_FLUSH_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0)
|
|
60
60
|
#define TRACE_POSTGRESQL_BUFFER_FLUSH_DONE_ENABLED() (0)
|
|
61
|
+
#define TRACE_POSTGRESQL_BUFFER_EXTEND_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0)
|
|
62
|
+
#define TRACE_POSTGRESQL_BUFFER_EXTEND_START_ENABLED() (0)
|
|
63
|
+
#define TRACE_POSTGRESQL_BUFFER_EXTEND_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7) do {} while (0)
|
|
64
|
+
#define TRACE_POSTGRESQL_BUFFER_EXTEND_DONE_ENABLED() (0)
|
|
61
65
|
#define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START(INT1) do {} while (0)
|
|
62
66
|
#define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START_ENABLED() (0)
|
|
63
67
|
#define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START() do {} while (0)
|
|
@@ -70,10 +74,6 @@
|
|
|
70
74
|
#define TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN_ENABLED() (0)
|
|
71
75
|
#define TRACE_POSTGRESQL_BUFFER_SYNC_DONE(INT1, INT2, INT3) do {} while (0)
|
|
72
76
|
#define TRACE_POSTGRESQL_BUFFER_SYNC_DONE_ENABLED() (0)
|
|
73
|
-
#define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(INT1, INT2, INT3, INT4, INT5) do {} while (0)
|
|
74
|
-
#define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START_ENABLED() (0)
|
|
75
|
-
#define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0)
|
|
76
|
-
#define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE_ENABLED() (0)
|
|
77
77
|
#define TRACE_POSTGRESQL_DEADLOCK_FOUND() do {} while (0)
|
|
78
78
|
#define TRACE_POSTGRESQL_DEADLOCK_FOUND_ENABLED() (0)
|
|
79
79
|
#define TRACE_POSTGRESQL_CHECKPOINT_START(INT1) do {} while (0)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* ps_status.h
|
|
4
|
+
*
|
|
5
|
+
* Declarations for backend/utils/misc/ps_status.c
|
|
6
|
+
*
|
|
7
|
+
* src/include/utils/ps_status.h
|
|
8
|
+
*
|
|
9
|
+
*-------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
#ifndef PS_STATUS_H
|
|
13
|
+
#define PS_STATUS_H
|
|
14
|
+
|
|
15
|
+
/* disabled on Windows as the performance overhead can be significant */
|
|
16
|
+
#ifdef WIN32
|
|
17
|
+
#define DEFAULT_UPDATE_PROCESS_TITLE false
|
|
18
|
+
#else
|
|
19
|
+
#define DEFAULT_UPDATE_PROCESS_TITLE true
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
extern PGDLLIMPORT bool update_process_title;
|
|
23
|
+
|
|
24
|
+
extern char **save_ps_display_args(int argc, char **argv);
|
|
25
|
+
|
|
26
|
+
extern void init_ps_display(const char *fixed_part);
|
|
27
|
+
|
|
28
|
+
extern void set_ps_display_suffix(const char *suffix);
|
|
29
|
+
|
|
30
|
+
extern void set_ps_display_remove_suffix(void);
|
|
31
|
+
|
|
32
|
+
extern void set_ps_display_with_len(const char *activity, size_t len);
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* set_ps_display
|
|
36
|
+
* inlined to allow strlen to be evaluated during compilation when
|
|
37
|
+
* passing string constants.
|
|
38
|
+
*/
|
|
39
|
+
static inline void
|
|
40
|
+
set_ps_display(const char *activity)
|
|
41
|
+
{
|
|
42
|
+
set_ps_display_with_len(activity, strlen(activity));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
extern const char *get_ps_display(int *displen);
|
|
46
|
+
|
|
47
|
+
#endif /* PS_STATUS_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Access to functions to mutate the query environment and retrieve the
|
|
5
5
|
* actual data related to entries (if any).
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/queryenvironment.h
|