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
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* See src/backend/utils/misc/README for design notes.
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 1996-
|
|
8
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/guc_tables.h
|
|
11
11
|
*
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#ifndef GUC_TABLES_H
|
|
15
15
|
#define GUC_TABLES_H 1
|
|
16
16
|
|
|
17
|
+
#include "lib/ilist.h"
|
|
17
18
|
#include "utils/guc.h"
|
|
18
19
|
|
|
19
20
|
/*
|
|
@@ -56,6 +57,7 @@ enum config_group
|
|
|
56
57
|
UNGROUPED, /* use for options not shown in pg_settings */
|
|
57
58
|
FILE_LOCATIONS,
|
|
58
59
|
CONN_AUTH_SETTINGS,
|
|
60
|
+
CONN_AUTH_TCP,
|
|
59
61
|
CONN_AUTH_AUTH,
|
|
60
62
|
CONN_AUTH_SSL,
|
|
61
63
|
RESOURCES_MEM,
|
|
@@ -137,6 +139,11 @@ typedef struct guc_stack
|
|
|
137
139
|
* if the value came from an internal source or the config file. Similarly
|
|
138
140
|
* for reset_srole (which is usually BOOTSTRAP_SUPERUSERID, but not always).
|
|
139
141
|
*
|
|
142
|
+
* Variables that are currently of active interest for maintenance
|
|
143
|
+
* operations are linked into various lists using the xxx_link fields.
|
|
144
|
+
* The link fields are unused/garbage in variables not currently having
|
|
145
|
+
* the specified properties.
|
|
146
|
+
*
|
|
140
147
|
* Note that sourcefile/sourceline are kept here, and not pushed into stacked
|
|
141
148
|
* values, although in principle they belong with some stacked value if the
|
|
142
149
|
* active value is session- or transaction-local. This is to avoid bloating
|
|
@@ -162,6 +169,12 @@ struct config_generic
|
|
|
162
169
|
Oid reset_srole; /* role that set the reset value */
|
|
163
170
|
GucStack *stack; /* stacked prior values */
|
|
164
171
|
void *extra; /* "extra" pointer for current actual value */
|
|
172
|
+
dlist_node nondef_link; /* list link for variables that have source
|
|
173
|
+
* different from PGC_S_DEFAULT */
|
|
174
|
+
slist_node stack_link; /* list link for variables that have non-NULL
|
|
175
|
+
* stack */
|
|
176
|
+
slist_node report_link; /* list link for variables that have the
|
|
177
|
+
* GUC_NEEDS_REPORT bit set in status */
|
|
165
178
|
char *last_reported; /* if variable is GUC_REPORT, value last sent
|
|
166
179
|
* to client (NULL if not yet sent) */
|
|
167
180
|
char *sourcefile; /* file current setting is from (NULL if not
|
|
@@ -227,6 +240,16 @@ struct config_real
|
|
|
227
240
|
void *reset_extra;
|
|
228
241
|
};
|
|
229
242
|
|
|
243
|
+
/*
|
|
244
|
+
* A note about string GUCs: the boot_val is allowed to be NULL, which leads
|
|
245
|
+
* to the reset_val and the actual variable value (*variable) also being NULL.
|
|
246
|
+
* However, there is no way to set a NULL value subsequently using
|
|
247
|
+
* set_config_option or any other GUC API. Also, GUC APIs such as SHOW will
|
|
248
|
+
* display a NULL value as an empty string. Callers that choose to use a NULL
|
|
249
|
+
* boot_val should overwrite the setting later in startup, or else be careful
|
|
250
|
+
* that NULL doesn't have semantics that are visibly different from an empty
|
|
251
|
+
* string.
|
|
252
|
+
*/
|
|
230
253
|
struct config_string
|
|
231
254
|
{
|
|
232
255
|
struct config_generic gen;
|
|
@@ -262,8 +285,28 @@ extern PGDLLIMPORT const char *const config_type_names[];
|
|
|
262
285
|
extern PGDLLIMPORT const char *const GucContext_Names[];
|
|
263
286
|
extern PGDLLIMPORT const char *const GucSource_Names[];
|
|
264
287
|
|
|
288
|
+
/* data arrays defining all the built-in GUC variables */
|
|
289
|
+
extern PGDLLIMPORT struct config_bool ConfigureNamesBool[];
|
|
290
|
+
extern PGDLLIMPORT struct config_int ConfigureNamesInt[];
|
|
291
|
+
extern PGDLLIMPORT struct config_real ConfigureNamesReal[];
|
|
292
|
+
extern PGDLLIMPORT struct config_string ConfigureNamesString[];
|
|
293
|
+
extern PGDLLIMPORT struct config_enum ConfigureNamesEnum[];
|
|
294
|
+
|
|
295
|
+
/* lookup GUC variables, returning config_generic pointers */
|
|
296
|
+
extern struct config_generic *find_option(const char *name,
|
|
297
|
+
bool create_placeholders,
|
|
298
|
+
bool skip_errors,
|
|
299
|
+
int elevel);
|
|
300
|
+
extern struct config_generic **get_explain_guc_options(int *num);
|
|
301
|
+
|
|
302
|
+
/* get string value of variable */
|
|
303
|
+
extern char *ShowGUCOption(struct config_generic *record, bool use_units);
|
|
304
|
+
|
|
305
|
+
/* get whether or not the GUC variable is visible to current user */
|
|
306
|
+
extern bool ConfigOptionIsVisible(struct config_generic *conf);
|
|
307
|
+
|
|
265
308
|
/* get the current set of variables */
|
|
266
|
-
extern struct config_generic **get_guc_variables(
|
|
309
|
+
extern struct config_generic **get_guc_variables(int *num_vars);
|
|
267
310
|
|
|
268
311
|
extern void build_guc_variables(void);
|
|
269
312
|
|
|
@@ -271,6 +314,9 @@ extern void build_guc_variables(void);
|
|
|
271
314
|
extern const char *config_enum_lookup_by_value(struct config_enum *record, int val);
|
|
272
315
|
extern bool config_enum_lookup_by_name(struct config_enum *record,
|
|
273
316
|
const char *value, int *retval);
|
|
274
|
-
extern struct
|
|
317
|
+
extern char *config_enum_get_options(struct config_enum *record,
|
|
318
|
+
const char *prefix,
|
|
319
|
+
const char *suffix,
|
|
320
|
+
const char *separator);
|
|
275
321
|
|
|
276
322
|
#endif /* GUC_TABLES_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* exported definitions for utils/hash/dynahash.c; see notes therein
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/hsearch.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES cache invalidation dispatcher definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/inval.h
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
#define INVAL_H
|
|
16
16
|
|
|
17
17
|
#include "access/htup.h"
|
|
18
|
-
#include "storage/
|
|
18
|
+
#include "storage/relfilelocator.h"
|
|
19
19
|
#include "utils/relcache.h"
|
|
20
20
|
|
|
21
21
|
extern PGDLLIMPORT int debug_discard_caches;
|
|
@@ -48,7 +48,7 @@ extern void CacheInvalidateRelcacheByTuple(HeapTuple classTuple);
|
|
|
48
48
|
|
|
49
49
|
extern void CacheInvalidateRelcacheByRelid(Oid relid);
|
|
50
50
|
|
|
51
|
-
extern void CacheInvalidateSmgr(
|
|
51
|
+
extern void CacheInvalidateSmgr(RelFileLocatorBackend rlocator);
|
|
52
52
|
|
|
53
53
|
extern void CacheInvalidateRelmap(Oid databaseId);
|
|
54
54
|
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* logtape.h
|
|
4
|
+
* Management of "logical tapes" within temporary files.
|
|
5
|
+
*
|
|
6
|
+
* See logtape.c for explanations.
|
|
7
|
+
*
|
|
8
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
9
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
|
+
*
|
|
11
|
+
* src/include/utils/logtape.h
|
|
12
|
+
*
|
|
13
|
+
*-------------------------------------------------------------------------
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
#ifndef LOGTAPE_H
|
|
17
|
+
#define LOGTAPE_H
|
|
18
|
+
|
|
19
|
+
#include "storage/sharedfileset.h"
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* LogicalTapeSet and LogicalTape are opaque types whose details are not
|
|
23
|
+
* known outside logtape.c.
|
|
24
|
+
*/
|
|
25
|
+
typedef struct LogicalTapeSet LogicalTapeSet;
|
|
26
|
+
typedef struct LogicalTape LogicalTape;
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
/*
|
|
30
|
+
* The approach tuplesort.c takes to parallel external sorts is that workers,
|
|
31
|
+
* whose state is almost the same as independent serial sorts, are made to
|
|
32
|
+
* produce a final materialized tape of sorted output in all cases. This is
|
|
33
|
+
* frozen, just like any case requiring a final materialized tape. However,
|
|
34
|
+
* there is one difference, which is that freezing will also export an
|
|
35
|
+
* underlying shared fileset BufFile for sharing. Freezing produces TapeShare
|
|
36
|
+
* metadata for the worker when this happens, which is passed along through
|
|
37
|
+
* shared memory to leader.
|
|
38
|
+
*
|
|
39
|
+
* The leader process can then pass an array of TapeShare metadata (one per
|
|
40
|
+
* worker participant) to LogicalTapeSetCreate(), alongside a handle to a
|
|
41
|
+
* shared fileset, which is sufficient to construct a new logical tapeset that
|
|
42
|
+
* consists of each of the tapes materialized by workers.
|
|
43
|
+
*
|
|
44
|
+
* Note that while logtape.c does create an empty leader tape at the end of the
|
|
45
|
+
* tapeset in the leader case, it can never be written to due to a restriction
|
|
46
|
+
* in the shared buffile infrastructure.
|
|
47
|
+
*/
|
|
48
|
+
typedef struct TapeShare
|
|
49
|
+
{
|
|
50
|
+
/*
|
|
51
|
+
* Currently, all the leader process needs is the location of the
|
|
52
|
+
* materialized tape's first block.
|
|
53
|
+
*/
|
|
54
|
+
long firstblocknumber;
|
|
55
|
+
} TapeShare;
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* prototypes for functions in logtape.c
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
extern LogicalTapeSet *LogicalTapeSetCreate(bool preallocate,
|
|
62
|
+
SharedFileSet *fileset, int worker);
|
|
63
|
+
extern void LogicalTapeClose(LogicalTape *lt);
|
|
64
|
+
extern void LogicalTapeSetClose(LogicalTapeSet *lts);
|
|
65
|
+
extern LogicalTape *LogicalTapeCreate(LogicalTapeSet *lts);
|
|
66
|
+
extern LogicalTape *LogicalTapeImport(LogicalTapeSet *lts, int worker, TapeShare *shared);
|
|
67
|
+
extern void LogicalTapeSetForgetFreeSpace(LogicalTapeSet *lts);
|
|
68
|
+
extern size_t LogicalTapeRead(LogicalTape *lt, void *ptr, size_t size);
|
|
69
|
+
extern void LogicalTapeWrite(LogicalTape *lt, const void *ptr, size_t size);
|
|
70
|
+
extern void LogicalTapeRewindForRead(LogicalTape *lt, size_t buffer_size);
|
|
71
|
+
extern void LogicalTapeFreeze(LogicalTape *lt, TapeShare *share);
|
|
72
|
+
extern size_t LogicalTapeBackspace(LogicalTape *lt, size_t size);
|
|
73
|
+
extern void LogicalTapeSeek(LogicalTape *lt, long blocknum, int offset);
|
|
74
|
+
extern void LogicalTapeTell(LogicalTape *lt, long *blocknum, int *offset);
|
|
75
|
+
extern long LogicalTapeSetBlocks(LogicalTapeSet *lts);
|
|
76
|
+
|
|
77
|
+
#endif /* LOGTAPE_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* lsyscache.h
|
|
4
4
|
* Convenience routines for common queries in the system catalog cache.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/utils/lsyscache.h
|
|
@@ -198,6 +198,10 @@ extern Oid get_index_column_opclass(Oid index_oid, int attno);
|
|
|
198
198
|
extern bool get_index_isreplident(Oid index_oid);
|
|
199
199
|
extern bool get_index_isvalid(Oid index_oid);
|
|
200
200
|
extern bool get_index_isclustered(Oid index_oid);
|
|
201
|
+
extern Oid get_publication_oid(const char *pubname, bool missing_ok);
|
|
202
|
+
extern char *get_publication_name(Oid pubid, bool missing_ok);
|
|
203
|
+
extern Oid get_subscription_oid(const char *subname, bool missing_ok);
|
|
204
|
+
extern char *get_subscription_name(Oid subid, bool missing_ok);
|
|
201
205
|
|
|
202
206
|
#define type_is_array(typid) (get_element_type(typid) != InvalidOid)
|
|
203
207
|
/* type_is_array_domain accepts both plain arrays and domains over arrays */
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* empty definitions for Valgrind client request macros we use.
|
|
8
8
|
*
|
|
9
9
|
*
|
|
10
|
-
* Portions Copyright (c) 1996-
|
|
10
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
11
11
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
12
12
|
*
|
|
13
13
|
* src/include/utils/memdebug.h
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* of the API of the memory management subsystem.
|
|
8
8
|
*
|
|
9
9
|
*
|
|
10
|
-
* Portions Copyright (c) 1996-
|
|
10
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
11
11
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
12
12
|
*
|
|
13
13
|
* src/include/utils/memutils.h
|
|
@@ -41,8 +41,11 @@
|
|
|
41
41
|
|
|
42
42
|
#define AllocSizeIsValid(size) ((Size) (size) <= MaxAllocSize)
|
|
43
43
|
|
|
44
|
+
/* Must be less than SIZE_MAX */
|
|
44
45
|
#define MaxAllocHugeSize (SIZE_MAX / 2)
|
|
45
46
|
|
|
47
|
+
#define InvalidAllocSize SIZE_MAX
|
|
48
|
+
|
|
46
49
|
#define AllocHugeSizeIsValid(size) ((Size) (size) <= MaxAllocHugeSize)
|
|
47
50
|
|
|
48
51
|
|
|
@@ -52,8 +55,8 @@
|
|
|
52
55
|
* Only TopMemoryContext and ErrorContext are initialized by
|
|
53
56
|
* MemoryContextInit() itself.
|
|
54
57
|
*/
|
|
55
|
-
extern PGDLLIMPORT __thread
|
|
56
|
-
extern PGDLLIMPORT __thread
|
|
58
|
+
extern PGDLLIMPORT __thread MemoryContext TopMemoryContext;
|
|
59
|
+
extern PGDLLIMPORT __thread MemoryContext ErrorContext;
|
|
57
60
|
extern PGDLLIMPORT MemoryContext PostmasterContext;
|
|
58
61
|
extern PGDLLIMPORT MemoryContext CacheMemoryContext;
|
|
59
62
|
extern PGDLLIMPORT MemoryContext MessageContext;
|
|
@@ -79,6 +82,7 @@ extern void MemoryContextDeleteChildren(MemoryContext context);
|
|
|
79
82
|
extern void MemoryContextSetIdentifier(MemoryContext context, const char *id);
|
|
80
83
|
extern void MemoryContextSetParent(MemoryContext context,
|
|
81
84
|
MemoryContext new_parent);
|
|
85
|
+
extern MemoryContext GetMemoryChunkContext(void *pointer);
|
|
82
86
|
extern Size GetMemoryChunkSpace(void *pointer);
|
|
83
87
|
extern MemoryContext MemoryContextGetParent(MemoryContext context);
|
|
84
88
|
extern bool MemoryContextIsEmpty(MemoryContext context);
|
|
@@ -92,59 +96,11 @@ extern void MemoryContextAllowInCriticalSection(MemoryContext context,
|
|
|
92
96
|
#ifdef MEMORY_CONTEXT_CHECKING
|
|
93
97
|
extern void MemoryContextCheck(MemoryContext context);
|
|
94
98
|
#endif
|
|
95
|
-
extern bool MemoryContextContains(MemoryContext context, void *pointer);
|
|
96
99
|
|
|
97
100
|
/* Handy macro for copying and assigning context ID ... but note double eval */
|
|
98
101
|
#define MemoryContextCopyAndSetIdentifier(cxt, id) \
|
|
99
102
|
MemoryContextSetIdentifier(cxt, MemoryContextStrdup(cxt, id))
|
|
100
103
|
|
|
101
|
-
/*
|
|
102
|
-
* GetMemoryChunkContext
|
|
103
|
-
* Given a currently-allocated chunk, determine the context
|
|
104
|
-
* it belongs to.
|
|
105
|
-
*
|
|
106
|
-
* All chunks allocated by any memory context manager are required to be
|
|
107
|
-
* preceded by the corresponding MemoryContext stored, without padding, in the
|
|
108
|
-
* preceding sizeof(void*) bytes. A currently-allocated chunk must contain a
|
|
109
|
-
* backpointer to its owning context. The backpointer is used by pfree() and
|
|
110
|
-
* repalloc() to find the context to call.
|
|
111
|
-
*/
|
|
112
|
-
#ifndef FRONTEND
|
|
113
|
-
static inline MemoryContext
|
|
114
|
-
GetMemoryChunkContext(void *pointer)
|
|
115
|
-
{
|
|
116
|
-
MemoryContext context;
|
|
117
|
-
|
|
118
|
-
/*
|
|
119
|
-
* Try to detect bogus pointers handed to us, poorly though we can.
|
|
120
|
-
* Presumably, a pointer that isn't MAXALIGNED isn't pointing at an
|
|
121
|
-
* allocated chunk.
|
|
122
|
-
*/
|
|
123
|
-
Assert(pointer != NULL);
|
|
124
|
-
Assert(pointer == (void *) MAXALIGN(pointer));
|
|
125
|
-
|
|
126
|
-
/*
|
|
127
|
-
* OK, it's probably safe to look at the context.
|
|
128
|
-
*/
|
|
129
|
-
context = *(MemoryContext *) (((char *) pointer) - sizeof(void *));
|
|
130
|
-
|
|
131
|
-
AssertArg(MemoryContextIsValid(context));
|
|
132
|
-
|
|
133
|
-
return context;
|
|
134
|
-
}
|
|
135
|
-
#endif
|
|
136
|
-
|
|
137
|
-
/*
|
|
138
|
-
* This routine handles the context-type-independent part of memory
|
|
139
|
-
* context creation. It's intended to be called from context-type-
|
|
140
|
-
* specific creation routines, and noplace else.
|
|
141
|
-
*/
|
|
142
|
-
extern void MemoryContextCreate(MemoryContext node,
|
|
143
|
-
NodeTag tag,
|
|
144
|
-
const MemoryContextMethods *methods,
|
|
145
|
-
MemoryContext parent,
|
|
146
|
-
const char *name);
|
|
147
|
-
|
|
148
104
|
extern void HandleLogMemoryContextInterrupt(void);
|
|
149
105
|
extern void ProcessLogMemoryContextInterrupt(void);
|
|
150
106
|
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* memutils_internal.h
|
|
4
|
+
* This file contains declarations for memory allocation utility
|
|
5
|
+
* functions for internal use.
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
|
|
9
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
|
+
*
|
|
11
|
+
* src/include/utils/memutils_internal.h
|
|
12
|
+
*
|
|
13
|
+
*-------------------------------------------------------------------------
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
#ifndef MEMUTILS_INTERNAL_H
|
|
17
|
+
#define MEMUTILS_INTERNAL_H
|
|
18
|
+
|
|
19
|
+
#include "utils/memutils.h"
|
|
20
|
+
|
|
21
|
+
/* These functions implement the MemoryContext API for AllocSet context. */
|
|
22
|
+
extern void *AllocSetAlloc(MemoryContext context, Size size);
|
|
23
|
+
extern void AllocSetFree(void *pointer);
|
|
24
|
+
extern void *AllocSetRealloc(void *pointer, Size size);
|
|
25
|
+
extern void AllocSetReset(MemoryContext context);
|
|
26
|
+
extern void AllocSetDelete(MemoryContext context);
|
|
27
|
+
extern MemoryContext AllocSetGetChunkContext(void *pointer);
|
|
28
|
+
extern Size AllocSetGetChunkSpace(void *pointer);
|
|
29
|
+
extern bool AllocSetIsEmpty(MemoryContext context);
|
|
30
|
+
extern void AllocSetStats(MemoryContext context,
|
|
31
|
+
MemoryStatsPrintFunc printfunc, void *passthru,
|
|
32
|
+
MemoryContextCounters *totals,
|
|
33
|
+
bool print_to_stderr);
|
|
34
|
+
#ifdef MEMORY_CONTEXT_CHECKING
|
|
35
|
+
extern void AllocSetCheck(MemoryContext context);
|
|
36
|
+
#endif
|
|
37
|
+
|
|
38
|
+
/* These functions implement the MemoryContext API for Generation context. */
|
|
39
|
+
extern void *GenerationAlloc(MemoryContext context, Size size);
|
|
40
|
+
extern void GenerationFree(void *pointer);
|
|
41
|
+
extern void *GenerationRealloc(void *pointer, Size size);
|
|
42
|
+
extern void GenerationReset(MemoryContext context);
|
|
43
|
+
extern void GenerationDelete(MemoryContext context);
|
|
44
|
+
extern MemoryContext GenerationGetChunkContext(void *pointer);
|
|
45
|
+
extern Size GenerationGetChunkSpace(void *pointer);
|
|
46
|
+
extern bool GenerationIsEmpty(MemoryContext context);
|
|
47
|
+
extern void GenerationStats(MemoryContext context,
|
|
48
|
+
MemoryStatsPrintFunc printfunc, void *passthru,
|
|
49
|
+
MemoryContextCounters *totals,
|
|
50
|
+
bool print_to_stderr);
|
|
51
|
+
#ifdef MEMORY_CONTEXT_CHECKING
|
|
52
|
+
extern void GenerationCheck(MemoryContext context);
|
|
53
|
+
#endif
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
/* These functions implement the MemoryContext API for Slab context. */
|
|
57
|
+
extern void *SlabAlloc(MemoryContext context, Size size);
|
|
58
|
+
extern void SlabFree(void *pointer);
|
|
59
|
+
extern void *SlabRealloc(void *pointer, Size size);
|
|
60
|
+
extern void SlabReset(MemoryContext context);
|
|
61
|
+
extern void SlabDelete(MemoryContext context);
|
|
62
|
+
extern MemoryContext SlabGetChunkContext(void *pointer);
|
|
63
|
+
extern Size SlabGetChunkSpace(void *pointer);
|
|
64
|
+
extern bool SlabIsEmpty(MemoryContext context);
|
|
65
|
+
extern void SlabStats(MemoryContext context,
|
|
66
|
+
MemoryStatsPrintFunc printfunc, void *passthru,
|
|
67
|
+
MemoryContextCounters *totals,
|
|
68
|
+
bool print_to_stderr);
|
|
69
|
+
#ifdef MEMORY_CONTEXT_CHECKING
|
|
70
|
+
extern void SlabCheck(MemoryContext context);
|
|
71
|
+
#endif
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
* These functions support the implementation of palloc_aligned() and are not
|
|
75
|
+
* part of a fully-fledged MemoryContext type.
|
|
76
|
+
*/
|
|
77
|
+
extern void AlignedAllocFree(void *pointer);
|
|
78
|
+
extern void *AlignedAllocRealloc(void *pointer, Size size);
|
|
79
|
+
extern MemoryContext AlignedAllocGetChunkContext(void *pointer);
|
|
80
|
+
extern Size AlignedAllocGetChunkSpace(void *pointer);
|
|
81
|
+
|
|
82
|
+
/*
|
|
83
|
+
* How many extra bytes do we need to request in order to ensure that we can
|
|
84
|
+
* align a pointer to 'alignto'. Since palloc'd pointers are already aligned
|
|
85
|
+
* to MAXIMUM_ALIGNOF we can subtract that amount. We also need to make sure
|
|
86
|
+
* there is enough space for the redirection MemoryChunk.
|
|
87
|
+
*/
|
|
88
|
+
#define PallocAlignedExtraBytes(alignto) \
|
|
89
|
+
((alignto) + (sizeof(MemoryChunk) - MAXIMUM_ALIGNOF))
|
|
90
|
+
|
|
91
|
+
/*
|
|
92
|
+
* MemoryContextMethodID
|
|
93
|
+
* A unique identifier for each MemoryContext implementation which
|
|
94
|
+
* indicates the index into the mcxt_methods[] array. See mcxt.c.
|
|
95
|
+
*
|
|
96
|
+
* For robust error detection, ensure that MemoryContextMethodID has a value
|
|
97
|
+
* for each possible bit-pattern of MEMORY_CONTEXT_METHODID_MASK, and make
|
|
98
|
+
* dummy entries for unused IDs in the mcxt_methods[] array. We also try
|
|
99
|
+
* to avoid using bit-patterns as valid IDs if they are likely to occur in
|
|
100
|
+
* garbage data, or if they could falsely match on chunks that are really from
|
|
101
|
+
* malloc not palloc. (We can't tell that for most malloc implementations,
|
|
102
|
+
* but it happens that glibc stores flag bits in the same place where we put
|
|
103
|
+
* the MemoryContextMethodID, so the possible values are predictable for it.)
|
|
104
|
+
*/
|
|
105
|
+
typedef enum MemoryContextMethodID
|
|
106
|
+
{
|
|
107
|
+
MCTX_UNUSED1_ID, /* 000 occurs in never-used memory */
|
|
108
|
+
MCTX_UNUSED2_ID, /* glibc malloc'd chunks usually match 001 */
|
|
109
|
+
MCTX_UNUSED3_ID, /* glibc malloc'd chunks > 128kB match 010 */
|
|
110
|
+
MCTX_ASET_ID,
|
|
111
|
+
MCTX_GENERATION_ID,
|
|
112
|
+
MCTX_SLAB_ID,
|
|
113
|
+
MCTX_ALIGNED_REDIRECT_ID,
|
|
114
|
+
MCTX_UNUSED4_ID /* 111 occurs in wipe_mem'd memory */
|
|
115
|
+
} MemoryContextMethodID;
|
|
116
|
+
|
|
117
|
+
/*
|
|
118
|
+
* The number of bits that 8-byte memory chunk headers can use to encode the
|
|
119
|
+
* MemoryContextMethodID.
|
|
120
|
+
*/
|
|
121
|
+
#define MEMORY_CONTEXT_METHODID_BITS 3
|
|
122
|
+
#define MEMORY_CONTEXT_METHODID_MASK \
|
|
123
|
+
((((uint64) 1) << MEMORY_CONTEXT_METHODID_BITS) - 1)
|
|
124
|
+
|
|
125
|
+
/*
|
|
126
|
+
* This routine handles the context-type-independent part of memory
|
|
127
|
+
* context creation. It's intended to be called from context-type-
|
|
128
|
+
* specific creation routines, and noplace else.
|
|
129
|
+
*/
|
|
130
|
+
extern void MemoryContextCreate(MemoryContext node,
|
|
131
|
+
NodeTag tag,
|
|
132
|
+
MemoryContextMethodID method_id,
|
|
133
|
+
MemoryContext parent,
|
|
134
|
+
const char *name);
|
|
135
|
+
|
|
136
|
+
#endif /* MEMUTILS_INTERNAL_H */
|