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,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 */
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* memutils_memorychunk.h
|
|
4
|
+
* Here we define a struct named MemoryChunk which implementations of
|
|
5
|
+
* MemoryContexts may use as a header for chunks of memory they allocate.
|
|
6
|
+
*
|
|
7
|
+
* MemoryChunk provides a lightweight header that a MemoryContext can use to
|
|
8
|
+
* store a reference back to the block which the given chunk is allocated on
|
|
9
|
+
* and also an additional 30-bits to store another value such as the size of
|
|
10
|
+
* the allocated chunk.
|
|
11
|
+
*
|
|
12
|
+
* Although MemoryChunks are used by each of our MemoryContexts, future
|
|
13
|
+
* implementations may choose to implement their own method for storing chunk
|
|
14
|
+
* headers. The only requirement is that the header ends with an 8-byte value
|
|
15
|
+
* which the least significant 3-bits of are set to the MemoryContextMethodID
|
|
16
|
+
* of the given context.
|
|
17
|
+
*
|
|
18
|
+
* By default, a MemoryChunk is 8 bytes in size, however, when
|
|
19
|
+
* MEMORY_CONTEXT_CHECKING is defined the header becomes 16 bytes in size due
|
|
20
|
+
* to the additional requested_size field. The MemoryContext may use this
|
|
21
|
+
* field for whatever they wish, but it is intended to be used for additional
|
|
22
|
+
* checks which are only done in MEMORY_CONTEXT_CHECKING builds.
|
|
23
|
+
*
|
|
24
|
+
* The MemoryChunk contains a uint64 field named 'hdrmask'. This field is
|
|
25
|
+
* used to encode 4 separate pieces of information. Starting with the least
|
|
26
|
+
* significant bits of 'hdrmask', the bit space is reserved as follows:
|
|
27
|
+
*
|
|
28
|
+
* 1. 3-bits to indicate the MemoryContextMethodID as defined by
|
|
29
|
+
* MEMORY_CONTEXT_METHODID_MASK
|
|
30
|
+
* 2. 1-bit to denote an "external" chunk (see below)
|
|
31
|
+
* 3. 30-bits reserved for the MemoryContext to use for anything it
|
|
32
|
+
* requires. Most MemoryContext likely want to store the size of the
|
|
33
|
+
* chunk here.
|
|
34
|
+
* 4. 30-bits for the number of bytes that must be subtracted from the chunk
|
|
35
|
+
* to obtain the address of the block that the chunk is stored on.
|
|
36
|
+
*
|
|
37
|
+
* In some cases, for example when memory allocations become large, it's
|
|
38
|
+
* possible fields 3 and 4 above are not large enough to store the values
|
|
39
|
+
* required for the chunk. In this case, the MemoryContext can choose to mark
|
|
40
|
+
* the chunk as "external" by calling the MemoryChunkSetHdrMaskExternal()
|
|
41
|
+
* function. When this is done, fields 3 and 4 are unavailable for use by the
|
|
42
|
+
* MemoryContext and it's up to the MemoryContext itself to devise its own
|
|
43
|
+
* method for getting the reference to the block.
|
|
44
|
+
*
|
|
45
|
+
* Interface:
|
|
46
|
+
*
|
|
47
|
+
* MemoryChunkSetHdrMask:
|
|
48
|
+
* Used to set up a non-external MemoryChunk.
|
|
49
|
+
*
|
|
50
|
+
* MemoryChunkSetHdrMaskExternal:
|
|
51
|
+
* Used to set up an externally managed MemoryChunk.
|
|
52
|
+
*
|
|
53
|
+
* MemoryChunkIsExternal:
|
|
54
|
+
* Determine if the given MemoryChunk is externally managed, i.e.
|
|
55
|
+
* MemoryChunkSetHdrMaskExternal() was called on the chunk.
|
|
56
|
+
*
|
|
57
|
+
* MemoryChunkGetValue:
|
|
58
|
+
* For non-external chunks, return the stored 30-bit value as it was set
|
|
59
|
+
* in the call to MemoryChunkSetHdrMask().
|
|
60
|
+
*
|
|
61
|
+
* MemoryChunkGetBlock:
|
|
62
|
+
* For non-external chunks, return a pointer to the block as it was set
|
|
63
|
+
* in the call to MemoryChunkSetHdrMask().
|
|
64
|
+
*
|
|
65
|
+
* Also exports:
|
|
66
|
+
* MEMORYCHUNK_MAX_VALUE
|
|
67
|
+
* MEMORYCHUNK_MAX_BLOCKOFFSET
|
|
68
|
+
* PointerGetMemoryChunk
|
|
69
|
+
* MemoryChunkGetPointer
|
|
70
|
+
*
|
|
71
|
+
* Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
|
|
72
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
73
|
+
*
|
|
74
|
+
* src/include/utils/memutils_memorychunk.h
|
|
75
|
+
*
|
|
76
|
+
*-------------------------------------------------------------------------
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
#ifndef MEMUTILS_MEMORYCHUNK_H
|
|
80
|
+
#define MEMUTILS_MEMORYCHUNK_H
|
|
81
|
+
|
|
82
|
+
#include "utils/memutils_internal.h"
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* The maximum allowed value that MemoryContexts can store in the value
|
|
86
|
+
* field. Must be 1 less than a power of 2.
|
|
87
|
+
*/
|
|
88
|
+
#define MEMORYCHUNK_MAX_VALUE UINT64CONST(0x3FFFFFFF)
|
|
89
|
+
|
|
90
|
+
/*
|
|
91
|
+
* The maximum distance in bytes that a MemoryChunk can be offset from the
|
|
92
|
+
* block that is storing the chunk. Must be 1 less than a power of 2.
|
|
93
|
+
*/
|
|
94
|
+
#define MEMORYCHUNK_MAX_BLOCKOFFSET UINT64CONST(0x3FFFFFFF)
|
|
95
|
+
|
|
96
|
+
/* define the least significant base-0 bit of each portion of the hdrmask */
|
|
97
|
+
#define MEMORYCHUNK_EXTERNAL_BASEBIT MEMORY_CONTEXT_METHODID_BITS
|
|
98
|
+
#define MEMORYCHUNK_VALUE_BASEBIT (MEMORYCHUNK_EXTERNAL_BASEBIT + 1)
|
|
99
|
+
#define MEMORYCHUNK_BLOCKOFFSET_BASEBIT (MEMORYCHUNK_VALUE_BASEBIT + 30)
|
|
100
|
+
|
|
101
|
+
/*
|
|
102
|
+
* A magic number for storing in the free bits of an external chunk. This
|
|
103
|
+
* must mask out the bits used for storing the MemoryContextMethodID and the
|
|
104
|
+
* external bit.
|
|
105
|
+
*/
|
|
106
|
+
#define MEMORYCHUNK_MAGIC (UINT64CONST(0xB1A8DB858EB6EFBA) >> \
|
|
107
|
+
MEMORYCHUNK_VALUE_BASEBIT << \
|
|
108
|
+
MEMORYCHUNK_VALUE_BASEBIT)
|
|
109
|
+
|
|
110
|
+
typedef struct MemoryChunk
|
|
111
|
+
{
|
|
112
|
+
#ifdef MEMORY_CONTEXT_CHECKING
|
|
113
|
+
Size requested_size;
|
|
114
|
+
#endif
|
|
115
|
+
|
|
116
|
+
/* bitfield for storing details about the chunk */
|
|
117
|
+
uint64 hdrmask; /* must be last */
|
|
118
|
+
} MemoryChunk;
|
|
119
|
+
|
|
120
|
+
/* Get the MemoryChunk from the pointer */
|
|
121
|
+
#define PointerGetMemoryChunk(p) \
|
|
122
|
+
((MemoryChunk *) ((char *) (p) - sizeof(MemoryChunk)))
|
|
123
|
+
/* Get the pointer from the MemoryChunk */
|
|
124
|
+
#define MemoryChunkGetPointer(c) \
|
|
125
|
+
((void *) ((char *) (c) + sizeof(MemoryChunk)))
|
|
126
|
+
|
|
127
|
+
/* private macros for making the inline functions below more simple */
|
|
128
|
+
#define HdrMaskIsExternal(hdrmask) \
|
|
129
|
+
((hdrmask) & (((uint64) 1) << MEMORYCHUNK_EXTERNAL_BASEBIT))
|
|
130
|
+
#define HdrMaskGetValue(hdrmask) \
|
|
131
|
+
(((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT) & MEMORYCHUNK_MAX_VALUE)
|
|
132
|
+
|
|
133
|
+
/*
|
|
134
|
+
* We should have used up all the bits here, so the compiler is likely to
|
|
135
|
+
* optimize out the & MEMORYCHUNK_MAX_BLOCKOFFSET.
|
|
136
|
+
*/
|
|
137
|
+
#define HdrMaskBlockOffset(hdrmask) \
|
|
138
|
+
(((hdrmask) >> MEMORYCHUNK_BLOCKOFFSET_BASEBIT) & MEMORYCHUNK_MAX_BLOCKOFFSET)
|
|
139
|
+
|
|
140
|
+
/* For external chunks only, check the magic number matches */
|
|
141
|
+
#define HdrMaskCheckMagic(hdrmask) \
|
|
142
|
+
(MEMORYCHUNK_MAGIC == \
|
|
143
|
+
((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT << MEMORYCHUNK_VALUE_BASEBIT))
|
|
144
|
+
/*
|
|
145
|
+
* MemoryChunkSetHdrMask
|
|
146
|
+
* Store the given 'block', 'chunk_size' and 'methodid' in the given
|
|
147
|
+
* MemoryChunk.
|
|
148
|
+
*
|
|
149
|
+
* The number of bytes between 'block' and 'chunk' must be <=
|
|
150
|
+
* MEMORYCHUNK_MAX_BLOCKOFFSET.
|
|
151
|
+
* 'value' must be <= MEMORYCHUNK_MAX_VALUE.
|
|
152
|
+
*/
|
|
153
|
+
static inline void
|
|
154
|
+
MemoryChunkSetHdrMask(MemoryChunk *chunk, void *block,
|
|
155
|
+
Size value, MemoryContextMethodID methodid)
|
|
156
|
+
{
|
|
157
|
+
Size blockoffset = (char *) chunk - (char *) block;
|
|
158
|
+
|
|
159
|
+
Assert((char *) chunk >= (char *) block);
|
|
160
|
+
Assert(blockoffset <= MEMORYCHUNK_MAX_BLOCKOFFSET);
|
|
161
|
+
Assert(value <= MEMORYCHUNK_MAX_VALUE);
|
|
162
|
+
Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK);
|
|
163
|
+
|
|
164
|
+
chunk->hdrmask = (((uint64) blockoffset) << MEMORYCHUNK_BLOCKOFFSET_BASEBIT) |
|
|
165
|
+
(((uint64) value) << MEMORYCHUNK_VALUE_BASEBIT) |
|
|
166
|
+
methodid;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/*
|
|
170
|
+
* MemoryChunkSetHdrMaskExternal
|
|
171
|
+
* Set 'chunk' as an externally managed chunk. Here we only record the
|
|
172
|
+
* MemoryContextMethodID and set the external chunk bit.
|
|
173
|
+
*/
|
|
174
|
+
static inline void
|
|
175
|
+
MemoryChunkSetHdrMaskExternal(MemoryChunk *chunk,
|
|
176
|
+
MemoryContextMethodID methodid)
|
|
177
|
+
{
|
|
178
|
+
Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK);
|
|
179
|
+
|
|
180
|
+
chunk->hdrmask = MEMORYCHUNK_MAGIC | (((uint64) 1) << MEMORYCHUNK_EXTERNAL_BASEBIT) |
|
|
181
|
+
methodid;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/*
|
|
185
|
+
* MemoryChunkIsExternal
|
|
186
|
+
* Return true if 'chunk' is marked as external.
|
|
187
|
+
*/
|
|
188
|
+
static inline bool
|
|
189
|
+
MemoryChunkIsExternal(MemoryChunk *chunk)
|
|
190
|
+
{
|
|
191
|
+
/*
|
|
192
|
+
* External chunks should always store MEMORYCHUNK_MAGIC in the upper
|
|
193
|
+
* portion of the hdrmask, check that nothing has stomped on that.
|
|
194
|
+
*/
|
|
195
|
+
Assert(!HdrMaskIsExternal(chunk->hdrmask) ||
|
|
196
|
+
HdrMaskCheckMagic(chunk->hdrmask));
|
|
197
|
+
|
|
198
|
+
return HdrMaskIsExternal(chunk->hdrmask);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/*
|
|
202
|
+
* MemoryChunkGetValue
|
|
203
|
+
* For non-external chunks, returns the value field as it was set in
|
|
204
|
+
* MemoryChunkSetHdrMask.
|
|
205
|
+
*/
|
|
206
|
+
static inline Size
|
|
207
|
+
MemoryChunkGetValue(MemoryChunk *chunk)
|
|
208
|
+
{
|
|
209
|
+
Assert(!HdrMaskIsExternal(chunk->hdrmask));
|
|
210
|
+
|
|
211
|
+
return HdrMaskGetValue(chunk->hdrmask);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/*
|
|
215
|
+
* MemoryChunkGetBlock
|
|
216
|
+
* For non-external chunks, returns the pointer to the block as was set
|
|
217
|
+
* in MemoryChunkSetHdrMask.
|
|
218
|
+
*/
|
|
219
|
+
static inline void *
|
|
220
|
+
MemoryChunkGetBlock(MemoryChunk *chunk)
|
|
221
|
+
{
|
|
222
|
+
Assert(!HdrMaskIsExternal(chunk->hdrmask));
|
|
223
|
+
|
|
224
|
+
return (void *) ((char *) chunk - HdrMaskBlockOffset(chunk->hdrmask));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* cleanup all internal definitions */
|
|
228
|
+
#undef MEMORYCHUNK_EXTERNAL_BASEBIT
|
|
229
|
+
#undef MEMORYCHUNK_VALUE_BASEBIT
|
|
230
|
+
#undef MEMORYCHUNK_BLOCKOFFSET_BASEBIT
|
|
231
|
+
#undef MEMORYCHUNK_MAGIC
|
|
232
|
+
#undef HdrMaskIsExternal
|
|
233
|
+
#undef HdrMaskGetValue
|
|
234
|
+
#undef HdrMaskBlockOffset
|
|
235
|
+
#undef HdrMaskCheckMagic
|
|
236
|
+
|
|
237
|
+
#endif /* MEMUTILS_MEMORYCHUNK_H */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane.
|
|
7
7
|
*
|
|
8
|
-
* Copyright (c) 1998-
|
|
8
|
+
* Copyright (c) 1998-2023, PostgreSQL Global Development Group
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/numeric.h
|
|
11
11
|
*
|
|
@@ -17,12 +17,22 @@
|
|
|
17
17
|
#include "fmgr.h"
|
|
18
18
|
|
|
19
19
|
/*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Limits on the precision and scale specifiable in a NUMERIC typmod. The
|
|
21
|
+
* precision is strictly positive, but the scale may be positive or negative.
|
|
22
|
+
* A negative scale implies rounding before the decimal point.
|
|
23
|
+
*
|
|
24
|
+
* Note that the minimum display scale defined below is zero --- we always
|
|
25
|
+
* display all digits before the decimal point, even when the scale is
|
|
26
|
+
* negative.
|
|
27
|
+
*
|
|
28
|
+
* Note that the implementation limits on the precision and display scale of a
|
|
29
|
+
* numeric value are much larger --- beware of what you use these for!
|
|
23
30
|
*/
|
|
24
31
|
#define NUMERIC_MAX_PRECISION 1000
|
|
25
32
|
|
|
33
|
+
#define NUMERIC_MIN_SCALE (-1000)
|
|
34
|
+
#define NUMERIC_MAX_SCALE 1000
|
|
35
|
+
|
|
26
36
|
/*
|
|
27
37
|
* Internal limits on the scales chosen for calculation results
|
|
28
38
|
*/
|
|
@@ -46,9 +56,24 @@ typedef struct NumericData *Numeric;
|
|
|
46
56
|
* fmgr interface macros
|
|
47
57
|
*/
|
|
48
58
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
59
|
+
static inline Numeric
|
|
60
|
+
DatumGetNumeric(Datum X)
|
|
61
|
+
{
|
|
62
|
+
return (Numeric) PG_DETOAST_DATUM(X);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static inline Numeric
|
|
66
|
+
DatumGetNumericCopy(Datum X)
|
|
67
|
+
{
|
|
68
|
+
return (Numeric) PG_DETOAST_DATUM_COPY(X);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static inline Datum
|
|
72
|
+
NumericGetDatum(Numeric X)
|
|
73
|
+
{
|
|
74
|
+
return PointerGetDatum(X);
|
|
75
|
+
}
|
|
76
|
+
|
|
52
77
|
#define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n))
|
|
53
78
|
#define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n))
|
|
54
79
|
#define PG_RETURN_NUMERIC(x) return NumericGetDatum(x)
|
|
@@ -57,10 +82,14 @@ typedef struct NumericData *Numeric;
|
|
|
57
82
|
* Utility functions in numeric.c
|
|
58
83
|
*/
|
|
59
84
|
extern bool numeric_is_nan(Numeric num);
|
|
60
|
-
|
|
85
|
+
extern bool numeric_is_inf(Numeric num);
|
|
86
|
+
extern int32 numeric_maximum_size(int32 typmod);
|
|
61
87
|
extern char *numeric_out_sci(Numeric num, int scale);
|
|
62
88
|
extern char *numeric_normalize(Numeric num);
|
|
63
89
|
|
|
90
|
+
extern Numeric int64_to_numeric(int64 val);
|
|
91
|
+
extern Numeric int64_div_fast_to_numeric(int64 val1, int log10val2);
|
|
92
|
+
|
|
64
93
|
extern Numeric numeric_add_opt_error(Numeric num1, Numeric num2,
|
|
65
94
|
bool *have_error);
|
|
66
95
|
extern Numeric numeric_sub_opt_error(Numeric num1, Numeric num2,
|
|
@@ -71,6 +100,6 @@ extern Numeric numeric_div_opt_error(Numeric num1, Numeric num2,
|
|
|
71
100
|
bool *have_error);
|
|
72
101
|
extern Numeric numeric_mod_opt_error(Numeric num1, Numeric num2,
|
|
73
102
|
bool *have_error);
|
|
74
|
-
extern int32 numeric_int4_opt_error(Numeric num, bool *
|
|
103
|
+
extern int32 numeric_int4_opt_error(Numeric num, bool *have_error);
|
|
75
104
|
|
|
76
105
|
#endif /* _PG_NUMERIC_H_ */
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* everything that should be freed. See utils/mmgr/README for more info.
|
|
19
19
|
*
|
|
20
20
|
*
|
|
21
|
-
* Portions Copyright (c) 1996-
|
|
21
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
22
22
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
23
23
|
*
|
|
24
24
|
* src/include/utils/palloc.h
|
|
@@ -56,7 +56,7 @@ typedef struct MemoryContextCallback
|
|
|
56
56
|
* Avoid accessing it directly! Instead, use MemoryContextSwitchTo()
|
|
57
57
|
* to change the setting.
|
|
58
58
|
*/
|
|
59
|
-
extern PGDLLIMPORT __thread
|
|
59
|
+
extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext;
|
|
60
60
|
|
|
61
61
|
/*
|
|
62
62
|
* Flags for MemoryContextAllocExtended.
|
|
@@ -73,13 +73,42 @@ extern void *MemoryContextAllocZero(MemoryContext context, Size size);
|
|
|
73
73
|
extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size);
|
|
74
74
|
extern void *MemoryContextAllocExtended(MemoryContext context,
|
|
75
75
|
Size size, int flags);
|
|
76
|
+
extern void *MemoryContextAllocAligned(MemoryContext context,
|
|
77
|
+
Size size, Size alignto, int flags);
|
|
76
78
|
|
|
77
79
|
extern void *palloc(Size size);
|
|
78
80
|
extern void *palloc0(Size size);
|
|
79
81
|
extern void *palloc_extended(Size size, int flags);
|
|
80
|
-
extern void *
|
|
82
|
+
extern void *palloc_aligned(Size size, Size alignto, int flags);
|
|
83
|
+
extern pg_nodiscard void *repalloc(void *pointer, Size size);
|
|
84
|
+
extern pg_nodiscard void *repalloc_extended(void *pointer,
|
|
85
|
+
Size size, int flags);
|
|
86
|
+
extern pg_nodiscard void *repalloc0(void *pointer, Size oldsize, Size size);
|
|
81
87
|
extern void pfree(void *pointer);
|
|
82
88
|
|
|
89
|
+
/*
|
|
90
|
+
* Variants with easier notation and more type safety
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
/*
|
|
94
|
+
* Allocate space for one object of type "type"
|
|
95
|
+
*/
|
|
96
|
+
#define palloc_object(type) ((type *) palloc(sizeof(type)))
|
|
97
|
+
#define palloc0_object(type) ((type *) palloc0(sizeof(type)))
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
* Allocate space for "count" objects of type "type"
|
|
101
|
+
*/
|
|
102
|
+
#define palloc_array(type, count) ((type *) palloc(sizeof(type) * (count)))
|
|
103
|
+
#define palloc0_array(type, count) ((type *) palloc0(sizeof(type) * (count)))
|
|
104
|
+
|
|
105
|
+
/*
|
|
106
|
+
* Change size of allocation pointed to by "pointer" to have space for "count"
|
|
107
|
+
* objects of type "type"
|
|
108
|
+
*/
|
|
109
|
+
#define repalloc_array(pointer, type, count) ((type *) repalloc(pointer, sizeof(type) * (count)))
|
|
110
|
+
#define repalloc0_array(pointer, type, oldcount, count) ((type *) repalloc0(pointer, sizeof(type) * (oldcount), sizeof(type) * (count)))
|
|
111
|
+
|
|
83
112
|
/*
|
|
84
113
|
* The result of palloc() is always word-aligned, so we can skip testing
|
|
85
114
|
* alignment of the pointer when deciding which MemSet variant to use.
|
|
@@ -95,7 +124,7 @@ extern void pfree(void *pointer);
|
|
|
95
124
|
|
|
96
125
|
/* Higher-limit allocators. */
|
|
97
126
|
extern void *MemoryContextAllocHuge(MemoryContext context, Size size);
|
|
98
|
-
extern void *repalloc_huge(void *pointer, Size size);
|
|
127
|
+
extern pg_nodiscard void *repalloc_huge(void *pointer, Size size);
|
|
99
128
|
|
|
100
129
|
/*
|
|
101
130
|
* Although this header file is nominally backend-only, certain frontend
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* partcache.h
|
|
4
4
|
*
|
|
5
|
-
* Copyright (c) 1996-
|
|
5
|
+
* Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
6
6
|
*
|
|
7
7
|
* src/include/utils/partcache.h
|
|
8
8
|
*
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
#include "access/attnum.h"
|
|
15
15
|
#include "fmgr.h"
|
|
16
|
+
#include "nodes/parsenodes.h"
|
|
16
17
|
#include "nodes/pg_list.h"
|
|
17
18
|
#include "nodes/primnodes.h"
|
|
18
19
|
#include "partitioning/partdefs.h"
|
|
@@ -23,7 +24,7 @@
|
|
|
23
24
|
*/
|
|
24
25
|
typedef struct PartitionKeyData
|
|
25
26
|
{
|
|
26
|
-
|
|
27
|
+
PartitionStrategy strategy; /* partitioning strategy */
|
|
27
28
|
int16 partnatts; /* number of columns in the partition key */
|
|
28
29
|
AttrNumber *partattrs; /* attribute numbers of columns in the
|
|
29
30
|
* partition key or 0 if it's an expr */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* src/include/utils/pg_locale.h
|
|
6
6
|
*
|
|
7
|
-
* Copyright (c) 2002-
|
|
7
|
+
* Copyright (c) 2002-2023, PostgreSQL Global Development Group
|
|
8
8
|
*
|
|
9
9
|
*-----------------------------------------------------------------------
|
|
10
10
|
*/
|
|
@@ -19,8 +19,6 @@
|
|
|
19
19
|
#include <unicode/ucol.h>
|
|
20
20
|
#endif
|
|
21
21
|
|
|
22
|
-
#include "utils/guc.h"
|
|
23
|
-
|
|
24
22
|
#ifdef USE_ICU
|
|
25
23
|
/*
|
|
26
24
|
* ucol_strcollUTF8() was introduced in ICU 50, but it is buggy before ICU 53.
|
|
@@ -34,32 +32,27 @@
|
|
|
34
32
|
#endif
|
|
35
33
|
#endif
|
|
36
34
|
|
|
35
|
+
/* use for libc locale names */
|
|
36
|
+
#define LOCALE_NAME_BUFLEN 128
|
|
37
37
|
|
|
38
38
|
/* GUC settings */
|
|
39
|
-
extern char *locale_messages;
|
|
40
|
-
extern char *locale_monetary;
|
|
41
|
-
extern char *locale_numeric;
|
|
42
|
-
extern char *locale_time;
|
|
39
|
+
extern PGDLLIMPORT char *locale_messages;
|
|
40
|
+
extern PGDLLIMPORT char *locale_monetary;
|
|
41
|
+
extern PGDLLIMPORT char *locale_numeric;
|
|
42
|
+
extern PGDLLIMPORT char *locale_time;
|
|
43
|
+
extern PGDLLIMPORT int icu_validation_level;
|
|
43
44
|
|
|
44
45
|
/* lc_time localization cache */
|
|
45
|
-
extern char *localized_abbrev_days[];
|
|
46
|
-
extern char *localized_full_days[];
|
|
47
|
-
extern char *localized_abbrev_months[];
|
|
48
|
-
extern char *localized_full_months[];
|
|
49
|
-
|
|
46
|
+
extern PGDLLIMPORT char *localized_abbrev_days[];
|
|
47
|
+
extern PGDLLIMPORT char *localized_full_days[];
|
|
48
|
+
extern PGDLLIMPORT char *localized_abbrev_months[];
|
|
49
|
+
extern PGDLLIMPORT char *localized_full_months[];
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
extern
|
|
53
|
-
extern bool check_locale_monetary(char **newval, void **extra, GucSource source);
|
|
54
|
-
extern void assign_locale_monetary(const char *newval, void *extra);
|
|
55
|
-
extern bool check_locale_numeric(char **newval, void **extra, GucSource source);
|
|
56
|
-
extern void assign_locale_numeric(const char *newval, void *extra);
|
|
57
|
-
extern bool check_locale_time(char **newval, void **extra, GucSource source);
|
|
58
|
-
extern void assign_locale_time(const char *newval, void *extra);
|
|
51
|
+
/* is the databases's LC_CTYPE the C locale? */
|
|
52
|
+
extern PGDLLIMPORT bool database_ctype_is_c;
|
|
59
53
|
|
|
60
54
|
extern bool check_locale(int category, const char *locale, char **canonname);
|
|
61
55
|
extern char *pg_perm_setlocale(int category, const char *locale);
|
|
62
|
-
extern void check_strxfrm_bug(void);
|
|
63
56
|
|
|
64
57
|
extern bool lc_collate_is_c(Oid collation);
|
|
65
58
|
extern bool lc_ctype_is_c(Oid collation);
|
|
@@ -101,9 +94,32 @@ struct pg_locale_struct
|
|
|
101
94
|
|
|
102
95
|
typedef struct pg_locale_struct *pg_locale_t;
|
|
103
96
|
|
|
97
|
+
extern PGDLLIMPORT struct pg_locale_struct default_locale;
|
|
98
|
+
|
|
99
|
+
extern void make_icu_collator(const char *iculocstr,
|
|
100
|
+
const char *icurules,
|
|
101
|
+
struct pg_locale_struct *resultp);
|
|
102
|
+
|
|
103
|
+
extern bool pg_locale_deterministic(pg_locale_t locale);
|
|
104
104
|
extern pg_locale_t pg_newlocale_from_collation(Oid collid);
|
|
105
105
|
|
|
106
106
|
extern char *get_collation_actual_version(char collprovider, const char *collcollate);
|
|
107
|
+
extern int pg_strcoll(const char *arg1, const char *arg2, pg_locale_t locale);
|
|
108
|
+
extern int pg_strncoll(const char *arg1, size_t len1,
|
|
109
|
+
const char *arg2, size_t len2, pg_locale_t locale);
|
|
110
|
+
extern bool pg_strxfrm_enabled(pg_locale_t locale);
|
|
111
|
+
extern size_t pg_strxfrm(char *dest, const char *src, size_t destsize,
|
|
112
|
+
pg_locale_t locale);
|
|
113
|
+
extern size_t pg_strnxfrm(char *dest, size_t destsize, const char *src,
|
|
114
|
+
size_t srclen, pg_locale_t locale);
|
|
115
|
+
extern bool pg_strxfrm_prefix_enabled(pg_locale_t locale);
|
|
116
|
+
extern size_t pg_strxfrm_prefix(char *dest, const char *src, size_t destsize,
|
|
117
|
+
pg_locale_t locale);
|
|
118
|
+
extern size_t pg_strnxfrm_prefix(char *dest, size_t destsize, const char *src,
|
|
119
|
+
size_t srclen, pg_locale_t locale);
|
|
120
|
+
|
|
121
|
+
extern void icu_validate_locale(const char *loc_str);
|
|
122
|
+
extern char *icu_language_tag(const char *loc_str, int elevel);
|
|
107
123
|
|
|
108
124
|
#ifdef USE_ICU
|
|
109
125
|
extern int32_t icu_to_uchar(UChar **buff_uchar, const char *buff, size_t nbytes);
|