pg_query 2.0.3 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +165 -0
- data/README.md +67 -29
- data/Rakefile +8 -23
- data/ext/pg_query/extconf.rb +21 -3
- data/ext/pg_query/include/pg_query.h +29 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
- data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
- data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
- data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
- data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
- data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
- data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +778 -0
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
- data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
- data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
- data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
- data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
- data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
- data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
- data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +21026 -17002
- data/ext/pg_query/pg_query_deparse.c +1 -9896
- data/ext/pg_query/pg_query_fingerprint.c +162 -50
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
- data/ext/pg_query/pg_query_normalize.c +259 -64
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
- data/ext/pg_query/pg_query_ruby.c +6 -1
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +3 -2
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +99 -12
- data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
- data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +420 -0
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +545 -498
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +717 -113
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +103 -40
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +51 -29
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +7 -5
- data/lib/pg_query/fingerprint.rb +21 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +141 -50
- data/lib/pg_query/pg_query_pb.rb +175 -3031
- data/lib/pg_query/treewalker.rb +26 -2
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +443 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/rmgr.h +0 -35
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parser.h +0 -41
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pgstat.h +0 -1487
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/regproc.h +0 -28
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- data/ext/pg_query/src_port_strnlen.c +0 -39
- data/lib/pg_query/json_field_names.rb +0 -1402
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
* Symbols referenced in this file:
|
|
3
|
+
* - log_min_messages
|
|
4
|
+
* - backtrace_functions
|
|
5
|
+
* - check_function_bodies
|
|
6
|
+
*--------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/*--------------------------------------------------------------------
|
|
10
|
+
*
|
|
11
|
+
* guc_tables.c
|
|
12
|
+
*
|
|
13
|
+
* Static tables for the Grand Unified Configuration scheme.
|
|
14
|
+
*
|
|
15
|
+
* Many of these tables are const. However, ConfigureNamesBool[]
|
|
16
|
+
* and so on are not, because the structs in those arrays are actually
|
|
17
|
+
* the live per-variable state data that guc.c manipulates. While many of
|
|
18
|
+
* their fields are intended to be constant, some fields change at runtime.
|
|
19
|
+
*
|
|
20
|
+
*
|
|
21
|
+
* Copyright (c) 2000-2023, PostgreSQL Global Development Group
|
|
22
|
+
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
|
23
|
+
*
|
|
24
|
+
* IDENTIFICATION
|
|
25
|
+
* src/backend/utils/misc/guc_tables.c
|
|
26
|
+
*
|
|
27
|
+
*--------------------------------------------------------------------
|
|
28
|
+
*/
|
|
29
|
+
#include "postgres.h"
|
|
30
|
+
|
|
31
|
+
#include <float.h>
|
|
32
|
+
#include <limits.h>
|
|
33
|
+
#ifdef HAVE_SYSLOG
|
|
34
|
+
#include <syslog.h>
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
#include "access/commit_ts.h"
|
|
38
|
+
#include "access/gin.h"
|
|
39
|
+
#include "access/toast_compression.h"
|
|
40
|
+
#include "access/twophase.h"
|
|
41
|
+
#include "access/xlog_internal.h"
|
|
42
|
+
#include "access/xlogprefetcher.h"
|
|
43
|
+
#include "access/xlogrecovery.h"
|
|
44
|
+
#include "archive/archive_module.h"
|
|
45
|
+
#include "catalog/namespace.h"
|
|
46
|
+
#include "catalog/storage.h"
|
|
47
|
+
#include "commands/async.h"
|
|
48
|
+
#include "commands/tablespace.h"
|
|
49
|
+
#include "commands/trigger.h"
|
|
50
|
+
#include "commands/user.h"
|
|
51
|
+
#include "commands/vacuum.h"
|
|
52
|
+
#include "common/scram-common.h"
|
|
53
|
+
#include "jit/jit.h"
|
|
54
|
+
#include "libpq/auth.h"
|
|
55
|
+
#include "libpq/libpq.h"
|
|
56
|
+
#include "libpq/scram.h"
|
|
57
|
+
#include "nodes/queryjumble.h"
|
|
58
|
+
#include "optimizer/cost.h"
|
|
59
|
+
#include "optimizer/geqo.h"
|
|
60
|
+
#include "optimizer/optimizer.h"
|
|
61
|
+
#include "optimizer/paths.h"
|
|
62
|
+
#include "optimizer/planmain.h"
|
|
63
|
+
#include "parser/parse_expr.h"
|
|
64
|
+
#include "parser/parser.h"
|
|
65
|
+
#include "pgstat.h"
|
|
66
|
+
#include "postmaster/autovacuum.h"
|
|
67
|
+
#include "postmaster/bgworker_internals.h"
|
|
68
|
+
#include "postmaster/bgwriter.h"
|
|
69
|
+
#include "postmaster/postmaster.h"
|
|
70
|
+
#include "postmaster/startup.h"
|
|
71
|
+
#include "postmaster/syslogger.h"
|
|
72
|
+
#include "postmaster/walwriter.h"
|
|
73
|
+
#include "replication/logicallauncher.h"
|
|
74
|
+
#include "replication/slot.h"
|
|
75
|
+
#include "replication/syncrep.h"
|
|
76
|
+
#include "storage/bufmgr.h"
|
|
77
|
+
#include "storage/large_object.h"
|
|
78
|
+
#include "storage/pg_shmem.h"
|
|
79
|
+
#include "storage/predicate.h"
|
|
80
|
+
#include "storage/standby.h"
|
|
81
|
+
#include "tcop/tcopprot.h"
|
|
82
|
+
#include "tsearch/ts_cache.h"
|
|
83
|
+
#include "utils/builtins.h"
|
|
84
|
+
#include "utils/bytea.h"
|
|
85
|
+
#include "utils/float.h"
|
|
86
|
+
#include "utils/guc_hooks.h"
|
|
87
|
+
#include "utils/guc_tables.h"
|
|
88
|
+
#include "utils/memutils.h"
|
|
89
|
+
#include "utils/pg_locale.h"
|
|
90
|
+
#include "utils/portal.h"
|
|
91
|
+
#include "utils/ps_status.h"
|
|
92
|
+
#include "utils/inval.h"
|
|
93
|
+
#include "utils/xml.h"
|
|
94
|
+
|
|
95
|
+
/* This value is normally passed in from the Makefile */
|
|
96
|
+
#ifndef PG_KRB_SRVTAB
|
|
97
|
+
#define PG_KRB_SRVTAB ""
|
|
98
|
+
#endif
|
|
99
|
+
|
|
100
|
+
/* XXX these should appear in other modules' header files */
|
|
101
|
+
extern bool Log_disconnections;
|
|
102
|
+
extern int CommitDelay;
|
|
103
|
+
extern int CommitSiblings;
|
|
104
|
+
extern char *default_tablespace;
|
|
105
|
+
extern char *temp_tablespaces;
|
|
106
|
+
extern bool ignore_checksum_failure;
|
|
107
|
+
extern bool ignore_invalid_pages;
|
|
108
|
+
|
|
109
|
+
#ifdef TRACE_SYNCSCAN
|
|
110
|
+
extern bool trace_syncscan;
|
|
111
|
+
#endif
|
|
112
|
+
#ifdef DEBUG_BOUNDED_SORT
|
|
113
|
+
extern bool optimize_bounded_sort;
|
|
114
|
+
#endif
|
|
115
|
+
|
|
116
|
+
/*
|
|
117
|
+
* Options for enum values defined in this module.
|
|
118
|
+
*
|
|
119
|
+
* NOTE! Option values may not contain double quotes!
|
|
120
|
+
*/
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
StaticAssertDecl(lengthof(bytea_output_options) == (BYTEA_OUTPUT_HEX + 2),
|
|
125
|
+
"array length mismatch");
|
|
126
|
+
|
|
127
|
+
/*
|
|
128
|
+
* We have different sets for client and server message level options because
|
|
129
|
+
* they sort slightly different (see "log" level), and because "fatal"/"panic"
|
|
130
|
+
* aren't sensible for client_min_messages.
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
StaticAssertDecl(lengthof(intervalstyle_options) == (INTSTYLE_ISO_8601 + 2),
|
|
141
|
+
"array length mismatch");
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
StaticAssertDecl(lengthof(log_error_verbosity_options) == (PGERROR_VERBOSE + 2),
|
|
146
|
+
"array length mismatch");
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
StaticAssertDecl(lengthof(log_statement_options) == (LOGSTMT_ALL + 2),
|
|
151
|
+
"array length mismatch");
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
StaticAssertDecl(lengthof(session_replication_role_options) == (SESSION_REPLICATION_ROLE_LOCAL + 2),
|
|
158
|
+
"array length mismatch");
|
|
159
|
+
|
|
160
|
+
#ifdef HAVE_SYSLOG
|
|
161
|
+
#else
|
|
162
|
+
#endif
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
StaticAssertDecl(lengthof(track_function_options) == (TRACK_FUNC_ALL + 2),
|
|
167
|
+
"array length mismatch");
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
StaticAssertDecl(lengthof(stats_fetch_consistency) == (PGSTAT_FETCH_CONSISTENCY_SNAPSHOT + 2),
|
|
172
|
+
"array length mismatch");
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
StaticAssertDecl(lengthof(xmlbinary_options) == (XMLBINARY_HEX + 2),
|
|
177
|
+
"array length mismatch");
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
StaticAssertDecl(lengthof(xmloption_options) == (XMLOPTION_CONTENT + 2),
|
|
182
|
+
"array length mismatch");
|
|
183
|
+
|
|
184
|
+
/*
|
|
185
|
+
* Although only "on", "off", and "safe_encoding" are documented, we
|
|
186
|
+
* accept all the likely variants of "on" and "off".
|
|
187
|
+
*/
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
/*
|
|
191
|
+
* Although only "on", "off", and "auto" are documented, we accept
|
|
192
|
+
* all the likely variants of "on" and "off".
|
|
193
|
+
*/
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
/*
|
|
197
|
+
* Although only "on", "off", and "partition" are documented, we
|
|
198
|
+
* accept all the likely variants of "on" and "off".
|
|
199
|
+
*/
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
/*
|
|
203
|
+
* Although only "on", "off", "remote_apply", "remote_write", and "local" are
|
|
204
|
+
* documented, we accept all the likely variants of "on" and "off".
|
|
205
|
+
*/
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
/*
|
|
209
|
+
* Although only "on", "off", "try" are documented, we accept all the likely
|
|
210
|
+
* variants of "on" and "off".
|
|
211
|
+
*/
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2),
|
|
227
|
+
"array length mismatch");
|
|
228
|
+
|
|
229
|
+
#ifdef HAVE_SYNCFS
|
|
230
|
+
#endif
|
|
231
|
+
|
|
232
|
+
#ifndef WIN32
|
|
233
|
+
#endif
|
|
234
|
+
#ifndef EXEC_BACKEND
|
|
235
|
+
#endif
|
|
236
|
+
#ifdef WIN32
|
|
237
|
+
#endif
|
|
238
|
+
|
|
239
|
+
#ifdef USE_LZ4
|
|
240
|
+
#endif
|
|
241
|
+
|
|
242
|
+
#ifdef USE_LZ4
|
|
243
|
+
#endif
|
|
244
|
+
#ifdef USE_ZSTD
|
|
245
|
+
#endif
|
|
246
|
+
|
|
247
|
+
/*
|
|
248
|
+
* Options for enum values stored in other modules
|
|
249
|
+
*/
|
|
250
|
+
extern const struct config_enum_entry wal_level_options[];
|
|
251
|
+
extern const struct config_enum_entry archive_mode_options[];
|
|
252
|
+
extern const struct config_enum_entry recovery_target_action_options[];
|
|
253
|
+
extern const struct config_enum_entry sync_method_options[];
|
|
254
|
+
extern const struct config_enum_entry dynamic_shared_memory_options[];
|
|
255
|
+
|
|
256
|
+
/*
|
|
257
|
+
* GUC option variables that are exported from this module
|
|
258
|
+
*/
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
/* this is sort of all three above
|
|
269
|
+
* together */
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
__thread bool check_function_bodies = true;
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
/*
|
|
278
|
+
* This GUC exists solely for backward compatibility, check its definition for
|
|
279
|
+
* details.
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
__thread int log_min_messages = WARNING;
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
__thread char *backtrace_functions;
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
/*
|
|
317
|
+
* SSL renegotiation was been removed in PostgreSQL 9.5, but we tolerate it
|
|
318
|
+
* being set to zero (meaning never renegotiate) for backward compatibility.
|
|
319
|
+
* This avoids breaking compatibility with clients that have never supported
|
|
320
|
+
* renegotiation and therefore always try to zero it.
|
|
321
|
+
*/
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
/*
|
|
325
|
+
* This really belongs in pg_shmem.c, but is defined here so that it doesn't
|
|
326
|
+
* need to be duplicated in all the different implementations of pg_shmem.c.
|
|
327
|
+
*/
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
/*
|
|
332
|
+
* These variables are all dummies that don't do anything, except in some
|
|
333
|
+
* cases provide the value for SHOW to display. The real state is elsewhere
|
|
334
|
+
* and is kept in sync by assign_hooks.
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
#ifdef HAVE_SYSLOG
|
|
346
|
+
#define DEFAULT_SYSLOG_FACILITY LOG_LOCAL0
|
|
347
|
+
#else
|
|
348
|
+
#define DEFAULT_SYSLOG_FACILITY 0
|
|
349
|
+
#endif
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
#ifdef USE_ASSERT_CHECKING
|
|
369
|
+
#define DEFAULT_ASSERT_ENABLED true
|
|
370
|
+
#else
|
|
371
|
+
#define DEFAULT_ASSERT_ENABLED false
|
|
372
|
+
#endif
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
/* should be static, but commands/variable.c needs to get at this */
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
/* should be static, but guc.c needs to get at this */
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
/*
|
|
389
|
+
* Displayable names for context types (enum GucContext)
|
|
390
|
+
*
|
|
391
|
+
* Note: these strings are deliberately not localized.
|
|
392
|
+
*/
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
StaticAssertDecl(lengthof(GucContext_Names) == (PGC_USERSET + 1),
|
|
396
|
+
"array length mismatch");
|
|
397
|
+
|
|
398
|
+
/*
|
|
399
|
+
* Displayable names for source types (enum GucSource)
|
|
400
|
+
*
|
|
401
|
+
* Note: these strings are deliberately not localized.
|
|
402
|
+
*/
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
StaticAssertDecl(lengthof(GucSource_Names) == (PGC_S_SESSION + 1),
|
|
406
|
+
"array length mismatch");
|
|
407
|
+
|
|
408
|
+
/*
|
|
409
|
+
* Displayable names for the groupings defined in enum config_group
|
|
410
|
+
*/
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
StaticAssertDecl(lengthof(config_group_names) == (DEVELOPER_OPTIONS + 2),
|
|
414
|
+
"array length mismatch");
|
|
415
|
+
|
|
416
|
+
/*
|
|
417
|
+
* Displayable names for GUC variable types (enum config_type)
|
|
418
|
+
*
|
|
419
|
+
* Note: these strings are deliberately not localized.
|
|
420
|
+
*/
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
StaticAssertDecl(lengthof(config_type_names) == (PGC_ENUM + 1),
|
|
424
|
+
"array length mismatch");
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
/*
|
|
428
|
+
* Contents of GUC tables
|
|
429
|
+
*
|
|
430
|
+
* See src/backend/utils/misc/README for design notes.
|
|
431
|
+
*
|
|
432
|
+
* TO ADD AN OPTION:
|
|
433
|
+
*
|
|
434
|
+
* 1. Declare a global variable of type bool, int, double, or char*
|
|
435
|
+
* and make use of it.
|
|
436
|
+
*
|
|
437
|
+
* 2. Decide at what times it's safe to set the option. See guc.h for
|
|
438
|
+
* details.
|
|
439
|
+
*
|
|
440
|
+
* 3. Decide on a name, a default value, upper and lower bounds (if
|
|
441
|
+
* applicable), etc.
|
|
442
|
+
*
|
|
443
|
+
* 4. Add a record below.
|
|
444
|
+
*
|
|
445
|
+
* 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if
|
|
446
|
+
* appropriate.
|
|
447
|
+
*
|
|
448
|
+
* 6. Don't forget to document the option (at least in config.sgml).
|
|
449
|
+
*
|
|
450
|
+
* 7. If it's a new GUC_LIST_QUOTE option, you must add it to
|
|
451
|
+
* variable_is_guc_list_quote() in src/bin/pg_dump/dumputils.c.
|
|
452
|
+
*/
|
|
453
|
+
|
|
454
|
+
#ifdef BTREE_BUILD_STATS
|
|
455
|
+
#endif
|
|
456
|
+
#ifdef LOCK_DEBUG
|
|
457
|
+
#endif
|
|
458
|
+
#ifdef TRACE_SORT
|
|
459
|
+
#endif
|
|
460
|
+
#ifdef TRACE_SYNCSCAN
|
|
461
|
+
#endif
|
|
462
|
+
#ifdef DEBUG_BOUNDED_SORT
|
|
463
|
+
#endif
|
|
464
|
+
#ifdef WAL_DEBUG
|
|
465
|
+
#endif
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
#ifdef LOCK_DEBUG
|
|
469
|
+
#endif
|
|
470
|
+
#ifdef DISCARD_CACHES_ENABLED
|
|
471
|
+
#if defined(CLOBBER_CACHE_RECURSIVELY)
|
|
472
|
+
#else
|
|
473
|
+
#endif
|
|
474
|
+
#else /* not DISCARD_CACHES_ENABLED */
|
|
475
|
+
#endif /* not DISCARD_CACHES_ENABLED */
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
#ifdef USE_SSL
|
|
482
|
+
#else
|
|
483
|
+
#endif
|
|
484
|
+
#ifdef USE_OPENSSL
|
|
485
|
+
#else
|
|
486
|
+
#endif
|
|
487
|
+
#ifdef USE_SSL
|
|
488
|
+
#else
|
|
489
|
+
#endif
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
* Symbols referenced in this file:
|
|
3
|
+
* - AlignedAllocFree
|
|
4
|
+
* - AlignedAllocRealloc
|
|
5
|
+
* - AlignedAllocGetChunkContext
|
|
6
|
+
* - AlignedAllocGetChunkSpace
|
|
7
|
+
*--------------------------------------------------------------------
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/*-------------------------------------------------------------------------
|
|
11
|
+
*
|
|
12
|
+
* alignedalloc.c
|
|
13
|
+
* Allocator functions to implement palloc_aligned
|
|
14
|
+
*
|
|
15
|
+
* This is not a fully-fledged MemoryContext type as there is no means to
|
|
16
|
+
* create a MemoryContext of this type. The code here only serves to allow
|
|
17
|
+
* operations such as pfree() and repalloc() to work correctly on a memory
|
|
18
|
+
* chunk that was allocated by palloc_aligned().
|
|
19
|
+
*
|
|
20
|
+
* Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
|
|
21
|
+
*
|
|
22
|
+
* IDENTIFICATION
|
|
23
|
+
* src/backend/utils/mmgr/alignedalloc.c
|
|
24
|
+
*
|
|
25
|
+
*-------------------------------------------------------------------------
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
#include "postgres.h"
|
|
29
|
+
|
|
30
|
+
#include "utils/memdebug.h"
|
|
31
|
+
#include "utils/memutils_memorychunk.h"
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
* AlignedAllocFree
|
|
35
|
+
* Frees allocated memory; memory is removed from its owning context.
|
|
36
|
+
*/
|
|
37
|
+
void
|
|
38
|
+
AlignedAllocFree(void *pointer)
|
|
39
|
+
{
|
|
40
|
+
MemoryChunk *chunk = PointerGetMemoryChunk(pointer);
|
|
41
|
+
void *unaligned;
|
|
42
|
+
|
|
43
|
+
VALGRIND_MAKE_MEM_DEFINED(chunk, sizeof(MemoryChunk));
|
|
44
|
+
|
|
45
|
+
Assert(!MemoryChunkIsExternal(chunk));
|
|
46
|
+
|
|
47
|
+
/* obtain the original (unaligned) allocated pointer */
|
|
48
|
+
unaligned = MemoryChunkGetBlock(chunk);
|
|
49
|
+
|
|
50
|
+
#ifdef MEMORY_CONTEXT_CHECKING
|
|
51
|
+
/* Test for someone scribbling on unused space in chunk */
|
|
52
|
+
if (!sentinel_ok(pointer, chunk->requested_size))
|
|
53
|
+
elog(WARNING, "detected write past chunk end in %s %p",
|
|
54
|
+
GetMemoryChunkContext(unaligned)->name, chunk);
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
pfree(unaligned);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/*
|
|
61
|
+
* AlignedAllocRealloc
|
|
62
|
+
* Change the allocated size of a chunk and return possibly a different
|
|
63
|
+
* pointer to a memory address aligned to the same boundary as the
|
|
64
|
+
* originally requested alignment. The contents of 'pointer' will be
|
|
65
|
+
* copied into the returned pointer up until 'size'. Any additional
|
|
66
|
+
* memory will be uninitialized.
|
|
67
|
+
*/
|
|
68
|
+
void *
|
|
69
|
+
AlignedAllocRealloc(void *pointer, Size size)
|
|
70
|
+
{
|
|
71
|
+
MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer);
|
|
72
|
+
Size alignto;
|
|
73
|
+
void *unaligned;
|
|
74
|
+
MemoryContext ctx;
|
|
75
|
+
Size old_size;
|
|
76
|
+
void *newptr;
|
|
77
|
+
|
|
78
|
+
VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk));
|
|
79
|
+
|
|
80
|
+
alignto = MemoryChunkGetValue(redirchunk);
|
|
81
|
+
unaligned = MemoryChunkGetBlock(redirchunk);
|
|
82
|
+
|
|
83
|
+
/* sanity check this is a power of 2 value */
|
|
84
|
+
Assert((alignto & (alignto - 1)) == 0);
|
|
85
|
+
|
|
86
|
+
/*
|
|
87
|
+
* Determine the size of the original allocation. We can't determine this
|
|
88
|
+
* exactly as GetMemoryChunkSpace() returns the total space used for the
|
|
89
|
+
* allocation, which for contexts like aset includes rounding up to the
|
|
90
|
+
* next power of 2. However, this value is just used to memcpy() the old
|
|
91
|
+
* data into the new allocation, so we only need to concern ourselves with
|
|
92
|
+
* not reading beyond the end of the original allocation's memory. The
|
|
93
|
+
* drawback here is that we may copy more bytes than we need to, which
|
|
94
|
+
* only amounts to wasted effort. We can safely subtract the extra bytes
|
|
95
|
+
* that we requested to allow us to align the pointer. We must also
|
|
96
|
+
* subtract the space for the unaligned pointer's MemoryChunk since
|
|
97
|
+
* GetMemoryChunkSpace should have included that. This does assume that
|
|
98
|
+
* all context types use MemoryChunk as a chunk header.
|
|
99
|
+
*/
|
|
100
|
+
old_size = GetMemoryChunkSpace(unaligned) -
|
|
101
|
+
PallocAlignedExtraBytes(alignto) - sizeof(MemoryChunk);
|
|
102
|
+
|
|
103
|
+
#ifdef MEMORY_CONTEXT_CHECKING
|
|
104
|
+
/* check that GetMemoryChunkSpace returned something realistic */
|
|
105
|
+
Assert(old_size >= redirchunk->requested_size);
|
|
106
|
+
#endif
|
|
107
|
+
|
|
108
|
+
ctx = GetMemoryChunkContext(unaligned);
|
|
109
|
+
newptr = MemoryContextAllocAligned(ctx, size, alignto, 0);
|
|
110
|
+
|
|
111
|
+
/*
|
|
112
|
+
* We may memcpy beyond the end of the original allocation request size,
|
|
113
|
+
* so we must mark the entire allocation as defined.
|
|
114
|
+
*/
|
|
115
|
+
VALGRIND_MAKE_MEM_DEFINED(pointer, old_size);
|
|
116
|
+
memcpy(newptr, pointer, Min(size, old_size));
|
|
117
|
+
pfree(unaligned);
|
|
118
|
+
|
|
119
|
+
return newptr;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/*
|
|
123
|
+
* AlignedAllocGetChunkContext
|
|
124
|
+
* Return the MemoryContext that 'pointer' belongs to.
|
|
125
|
+
*/
|
|
126
|
+
MemoryContext
|
|
127
|
+
AlignedAllocGetChunkContext(void *pointer)
|
|
128
|
+
{
|
|
129
|
+
MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer);
|
|
130
|
+
MemoryContext cxt;
|
|
131
|
+
|
|
132
|
+
VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk));
|
|
133
|
+
|
|
134
|
+
Assert(!MemoryChunkIsExternal(redirchunk));
|
|
135
|
+
|
|
136
|
+
cxt = GetMemoryChunkContext(MemoryChunkGetBlock(redirchunk));
|
|
137
|
+
|
|
138
|
+
VALGRIND_MAKE_MEM_NOACCESS(redirchunk, sizeof(MemoryChunk));
|
|
139
|
+
|
|
140
|
+
return cxt;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/*
|
|
144
|
+
* AlignedAllocGetChunkSpace
|
|
145
|
+
* Given a currently-allocated chunk, determine the total space
|
|
146
|
+
* it occupies (including all memory-allocation overhead).
|
|
147
|
+
*/
|
|
148
|
+
Size
|
|
149
|
+
AlignedAllocGetChunkSpace(void *pointer)
|
|
150
|
+
{
|
|
151
|
+
MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer);
|
|
152
|
+
void *unaligned;
|
|
153
|
+
Size space;
|
|
154
|
+
|
|
155
|
+
VALGRIND_MAKE_MEM_DEFINED(redirchunk, sizeof(MemoryChunk));
|
|
156
|
+
|
|
157
|
+
unaligned = MemoryChunkGetBlock(redirchunk);
|
|
158
|
+
space = GetMemoryChunkSpace(unaligned);
|
|
159
|
+
|
|
160
|
+
VALGRIND_MAKE_MEM_NOACCESS(redirchunk, sizeof(MemoryChunk));
|
|
161
|
+
|
|
162
|
+
return space;
|
|
163
|
+
}
|