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
|
@@ -1,61 +1,26 @@
|
|
|
1
1
|
/*-------------------------------------------------------------------------
|
|
2
2
|
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* varatt.h
|
|
4
|
+
* variable-length datatypes (TOAST support)
|
|
5
5
|
*
|
|
6
|
-
* This should be the first file included by PostgreSQL backend modules.
|
|
7
|
-
* Client-side code should include postgres_fe.h instead.
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
11
8
|
* Portions Copyright (c) 1995, Regents of the University of California
|
|
12
9
|
*
|
|
13
|
-
* src/include/
|
|
10
|
+
* src/include/varatt.h
|
|
14
11
|
*
|
|
15
12
|
*-------------------------------------------------------------------------
|
|
16
13
|
*/
|
|
17
|
-
/*
|
|
18
|
-
*----------------------------------------------------------------
|
|
19
|
-
* TABLE OF CONTENTS
|
|
20
|
-
*
|
|
21
|
-
* When adding stuff to this file, please try to put stuff
|
|
22
|
-
* into the relevant section, or add new sections as appropriate.
|
|
23
|
-
*
|
|
24
|
-
* section description
|
|
25
|
-
* ------- ------------------------------------------------
|
|
26
|
-
* 1) variable-length datatypes (TOAST support)
|
|
27
|
-
* 2) Datum type + support macros
|
|
28
|
-
*
|
|
29
|
-
* NOTES
|
|
30
|
-
*
|
|
31
|
-
* In general, this file should contain declarations that are widely needed
|
|
32
|
-
* in the backend environment, but are of no interest outside the backend.
|
|
33
|
-
*
|
|
34
|
-
* Simple type definitions live in c.h, where they are shared with
|
|
35
|
-
* postgres_fe.h. We do that since those type definitions are needed by
|
|
36
|
-
* frontend modules that want to deal with binary data transmission to or
|
|
37
|
-
* from the backend. Type definitions in this file should be for
|
|
38
|
-
* representations that never escape the backend, such as Datum or
|
|
39
|
-
* TOASTed varlena objects.
|
|
40
|
-
*
|
|
41
|
-
*----------------------------------------------------------------
|
|
42
|
-
*/
|
|
43
|
-
#ifndef POSTGRES_H
|
|
44
|
-
#define POSTGRES_H
|
|
45
|
-
|
|
46
|
-
#include "c.h"
|
|
47
|
-
#include "utils/elog.h"
|
|
48
|
-
#include "utils/palloc.h"
|
|
49
14
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* ----------------------------------------------------------------
|
|
53
|
-
*/
|
|
15
|
+
#ifndef VARATT_H
|
|
16
|
+
#define VARATT_H
|
|
54
17
|
|
|
55
18
|
/*
|
|
56
19
|
* struct varatt_external is a traditional "TOAST pointer", that is, the
|
|
57
20
|
* information needed to fetch a Datum stored out-of-line in a TOAST table.
|
|
58
|
-
* The data is compressed if and only if
|
|
21
|
+
* The data is compressed if and only if the external size stored in
|
|
22
|
+
* va_extinfo is less than va_rawsize - VARHDRSZ.
|
|
23
|
+
*
|
|
59
24
|
* This struct must not contain any padding, because we sometimes compare
|
|
60
25
|
* these pointers using memcmp.
|
|
61
26
|
*
|
|
@@ -67,11 +32,19 @@
|
|
|
67
32
|
typedef struct varatt_external
|
|
68
33
|
{
|
|
69
34
|
int32 va_rawsize; /* Original data size (includes header) */
|
|
70
|
-
|
|
35
|
+
uint32 va_extinfo; /* External saved size (without header) and
|
|
36
|
+
* compression method */
|
|
71
37
|
Oid va_valueid; /* Unique ID of value within TOAST table */
|
|
72
38
|
Oid va_toastrelid; /* RelID of TOAST table containing it */
|
|
73
39
|
} varatt_external;
|
|
74
40
|
|
|
41
|
+
/*
|
|
42
|
+
* These macros define the "saved size" portion of va_extinfo. Its remaining
|
|
43
|
+
* two high-order bits identify the compression method.
|
|
44
|
+
*/
|
|
45
|
+
#define VARLENA_EXTSIZE_BITS 30
|
|
46
|
+
#define VARLENA_EXTSIZE_MASK ((1U << VARLENA_EXTSIZE_BITS) - 1)
|
|
47
|
+
|
|
75
48
|
/*
|
|
76
49
|
* struct varatt_indirect is a "TOAST pointer" representing an out-of-line
|
|
77
50
|
* Datum that's stored in memory, not in an external toast relation.
|
|
@@ -124,7 +97,7 @@ typedef enum vartag_external
|
|
|
124
97
|
((tag) == VARTAG_INDIRECT ? sizeof(varatt_indirect) : \
|
|
125
98
|
VARTAG_IS_EXPANDED(tag) ? sizeof(varatt_expanded) : \
|
|
126
99
|
(tag) == VARTAG_ONDISK ? sizeof(varatt_external) : \
|
|
127
|
-
|
|
100
|
+
(AssertMacro(false), 0))
|
|
128
101
|
|
|
129
102
|
/*
|
|
130
103
|
* These structs describe the header of a varlena object that may have been
|
|
@@ -145,7 +118,8 @@ typedef union
|
|
|
145
118
|
struct /* Compressed-in-line format */
|
|
146
119
|
{
|
|
147
120
|
uint32 va_header;
|
|
148
|
-
uint32
|
|
121
|
+
uint32 va_tcinfo; /* Original data size (excludes header) and
|
|
122
|
+
* compression method; see va_extinfo */
|
|
149
123
|
char va_data[FLEXIBLE_ARRAY_MEMBER]; /* Compressed data */
|
|
150
124
|
} va_compressed;
|
|
151
125
|
} varattrib_4b;
|
|
@@ -231,6 +205,7 @@ typedef struct
|
|
|
231
205
|
#define SET_VARTAG_1B_E(PTR,tag) \
|
|
232
206
|
(((varattrib_1b_e *) (PTR))->va_header = 0x80, \
|
|
233
207
|
((varattrib_1b_e *) (PTR))->va_tag = (tag))
|
|
208
|
+
|
|
234
209
|
#else /* !WORDS_BIGENDIAN */
|
|
235
210
|
|
|
236
211
|
#define VARATT_IS_4B(PTR) \
|
|
@@ -263,9 +238,22 @@ typedef struct
|
|
|
263
238
|
#define SET_VARTAG_1B_E(PTR,tag) \
|
|
264
239
|
(((varattrib_1b_e *) (PTR))->va_header = 0x01, \
|
|
265
240
|
((varattrib_1b_e *) (PTR))->va_tag = (tag))
|
|
241
|
+
|
|
266
242
|
#endif /* WORDS_BIGENDIAN */
|
|
267
243
|
|
|
244
|
+
#define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data)
|
|
245
|
+
#define VARDATA_4B_C(PTR) (((varattrib_4b *) (PTR))->va_compressed.va_data)
|
|
246
|
+
#define VARDATA_1B(PTR) (((varattrib_1b *) (PTR))->va_data)
|
|
247
|
+
#define VARDATA_1B_E(PTR) (((varattrib_1b_e *) (PTR))->va_data)
|
|
248
|
+
|
|
249
|
+
/*
|
|
250
|
+
* Externally visible TOAST macros begin here.
|
|
251
|
+
*/
|
|
252
|
+
|
|
253
|
+
#define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data)
|
|
254
|
+
#define VARHDRSZ_COMPRESSED offsetof(varattrib_4b, va_compressed.va_data)
|
|
268
255
|
#define VARHDRSZ_SHORT offsetof(varattrib_1b, va_data)
|
|
256
|
+
|
|
269
257
|
#define VARATT_SHORT_MAX 0x7F
|
|
270
258
|
#define VARATT_CAN_MAKE_SHORT(PTR) \
|
|
271
259
|
(VARATT_IS_4B_U(PTR) && \
|
|
@@ -273,18 +261,6 @@ typedef struct
|
|
|
273
261
|
#define VARATT_CONVERTED_SHORT_SIZE(PTR) \
|
|
274
262
|
(VARSIZE(PTR) - VARHDRSZ + VARHDRSZ_SHORT)
|
|
275
263
|
|
|
276
|
-
#define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data)
|
|
277
|
-
|
|
278
|
-
#define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data)
|
|
279
|
-
#define VARDATA_4B_C(PTR) (((varattrib_4b *) (PTR))->va_compressed.va_data)
|
|
280
|
-
#define VARDATA_1B(PTR) (((varattrib_1b *) (PTR))->va_data)
|
|
281
|
-
#define VARDATA_1B_E(PTR) (((varattrib_1b_e *) (PTR))->va_data)
|
|
282
|
-
|
|
283
|
-
#define VARRAWSIZE_4B_C(PTR) \
|
|
284
|
-
(((varattrib_4b *) (PTR))->va_compressed.va_rawsize)
|
|
285
|
-
|
|
286
|
-
/* Externally visible macros */
|
|
287
|
-
|
|
288
264
|
/*
|
|
289
265
|
* In consumers oblivious to data alignment, call PG_DETOAST_DATUM_PACKED(),
|
|
290
266
|
* VARDATA_ANY(), VARSIZE_ANY() and VARSIZE_ANY_EXHDR(). Elsewhere, call
|
|
@@ -348,417 +324,35 @@ typedef struct
|
|
|
348
324
|
#define VARDATA_ANY(PTR) \
|
|
349
325
|
(VARATT_IS_1B(PTR) ? VARDATA_1B(PTR) : VARDATA_4B(PTR))
|
|
350
326
|
|
|
327
|
+
/* Decompressed size and compression method of a compressed-in-line Datum */
|
|
328
|
+
#define VARDATA_COMPRESSED_GET_EXTSIZE(PTR) \
|
|
329
|
+
(((varattrib_4b *) (PTR))->va_compressed.va_tcinfo & VARLENA_EXTSIZE_MASK)
|
|
330
|
+
#define VARDATA_COMPRESSED_GET_COMPRESS_METHOD(PTR) \
|
|
331
|
+
(((varattrib_4b *) (PTR))->va_compressed.va_tcinfo >> VARLENA_EXTSIZE_BITS)
|
|
332
|
+
|
|
333
|
+
/* Same for external Datums; but note argument is a struct varatt_external */
|
|
334
|
+
#define VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) \
|
|
335
|
+
((toast_pointer).va_extinfo & VARLENA_EXTSIZE_MASK)
|
|
336
|
+
#define VARATT_EXTERNAL_GET_COMPRESS_METHOD(toast_pointer) \
|
|
337
|
+
((toast_pointer).va_extinfo >> VARLENA_EXTSIZE_BITS)
|
|
338
|
+
|
|
339
|
+
#define VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD(toast_pointer, len, cm) \
|
|
340
|
+
do { \
|
|
341
|
+
Assert((cm) == TOAST_PGLZ_COMPRESSION_ID || \
|
|
342
|
+
(cm) == TOAST_LZ4_COMPRESSION_ID); \
|
|
343
|
+
((toast_pointer).va_extinfo = \
|
|
344
|
+
(len) | ((uint32) (cm) << VARLENA_EXTSIZE_BITS)); \
|
|
345
|
+
} while (0)
|
|
346
|
+
|
|
347
|
+
/*
|
|
348
|
+
* Testing whether an externally-stored value is compressed now requires
|
|
349
|
+
* comparing size stored in va_extinfo (the actual length of the external data)
|
|
350
|
+
* to rawsize (the original uncompressed datum's size). The latter includes
|
|
351
|
+
* VARHDRSZ overhead, the former doesn't. We never use compression unless it
|
|
352
|
+
* actually saves space, so we expect either equality or less-than.
|
|
353
|
+
*/
|
|
354
|
+
#define VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) \
|
|
355
|
+
(VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) < \
|
|
356
|
+
(toast_pointer).va_rawsize - VARHDRSZ)
|
|
351
357
|
|
|
352
|
-
/* ----------------------------------------------------------------
|
|
353
|
-
* Section 2: Datum type + support macros
|
|
354
|
-
* ----------------------------------------------------------------
|
|
355
|
-
*/
|
|
356
|
-
|
|
357
|
-
/*
|
|
358
|
-
* A Datum contains either a value of a pass-by-value type or a pointer to a
|
|
359
|
-
* value of a pass-by-reference type. Therefore, we require:
|
|
360
|
-
*
|
|
361
|
-
* sizeof(Datum) == sizeof(void *) == 4 or 8
|
|
362
|
-
*
|
|
363
|
-
* The macros below and the analogous macros for other types should be used to
|
|
364
|
-
* convert between a Datum and the appropriate C type.
|
|
365
|
-
*/
|
|
366
|
-
|
|
367
|
-
typedef uintptr_t Datum;
|
|
368
|
-
|
|
369
|
-
/*
|
|
370
|
-
* A NullableDatum is used in places where both a Datum and its nullness needs
|
|
371
|
-
* to be stored. This can be more efficient than storing datums and nullness
|
|
372
|
-
* in separate arrays, due to better spatial locality, even if more space may
|
|
373
|
-
* be wasted due to padding.
|
|
374
|
-
*/
|
|
375
|
-
typedef struct NullableDatum
|
|
376
|
-
{
|
|
377
|
-
#define FIELDNO_NULLABLE_DATUM_DATUM 0
|
|
378
|
-
Datum value;
|
|
379
|
-
#define FIELDNO_NULLABLE_DATUM_ISNULL 1
|
|
380
|
-
bool isnull;
|
|
381
|
-
/* due to alignment padding this could be used for flags for free */
|
|
382
|
-
} NullableDatum;
|
|
383
|
-
|
|
384
|
-
#define SIZEOF_DATUM SIZEOF_VOID_P
|
|
385
|
-
|
|
386
|
-
/*
|
|
387
|
-
* DatumGetBool
|
|
388
|
-
* Returns boolean value of a datum.
|
|
389
|
-
*
|
|
390
|
-
* Note: any nonzero value will be considered true.
|
|
391
|
-
*/
|
|
392
|
-
|
|
393
|
-
#define DatumGetBool(X) ((bool) ((X) != 0))
|
|
394
|
-
|
|
395
|
-
/*
|
|
396
|
-
* BoolGetDatum
|
|
397
|
-
* Returns datum representation for a boolean.
|
|
398
|
-
*
|
|
399
|
-
* Note: any nonzero value will be considered true.
|
|
400
|
-
*/
|
|
401
|
-
|
|
402
|
-
#define BoolGetDatum(X) ((Datum) ((X) ? 1 : 0))
|
|
403
|
-
|
|
404
|
-
/*
|
|
405
|
-
* DatumGetChar
|
|
406
|
-
* Returns character value of a datum.
|
|
407
|
-
*/
|
|
408
|
-
|
|
409
|
-
#define DatumGetChar(X) ((char) (X))
|
|
410
|
-
|
|
411
|
-
/*
|
|
412
|
-
* CharGetDatum
|
|
413
|
-
* Returns datum representation for a character.
|
|
414
|
-
*/
|
|
415
|
-
|
|
416
|
-
#define CharGetDatum(X) ((Datum) (X))
|
|
417
|
-
|
|
418
|
-
/*
|
|
419
|
-
* Int8GetDatum
|
|
420
|
-
* Returns datum representation for an 8-bit integer.
|
|
421
|
-
*/
|
|
422
|
-
|
|
423
|
-
#define Int8GetDatum(X) ((Datum) (X))
|
|
424
|
-
|
|
425
|
-
/*
|
|
426
|
-
* DatumGetUInt8
|
|
427
|
-
* Returns 8-bit unsigned integer value of a datum.
|
|
428
|
-
*/
|
|
429
|
-
|
|
430
|
-
#define DatumGetUInt8(X) ((uint8) (X))
|
|
431
|
-
|
|
432
|
-
/*
|
|
433
|
-
* UInt8GetDatum
|
|
434
|
-
* Returns datum representation for an 8-bit unsigned integer.
|
|
435
|
-
*/
|
|
436
|
-
|
|
437
|
-
#define UInt8GetDatum(X) ((Datum) (X))
|
|
438
|
-
|
|
439
|
-
/*
|
|
440
|
-
* DatumGetInt16
|
|
441
|
-
* Returns 16-bit integer value of a datum.
|
|
442
|
-
*/
|
|
443
|
-
|
|
444
|
-
#define DatumGetInt16(X) ((int16) (X))
|
|
445
|
-
|
|
446
|
-
/*
|
|
447
|
-
* Int16GetDatum
|
|
448
|
-
* Returns datum representation for a 16-bit integer.
|
|
449
|
-
*/
|
|
450
|
-
|
|
451
|
-
#define Int16GetDatum(X) ((Datum) (X))
|
|
452
|
-
|
|
453
|
-
/*
|
|
454
|
-
* DatumGetUInt16
|
|
455
|
-
* Returns 16-bit unsigned integer value of a datum.
|
|
456
|
-
*/
|
|
457
|
-
|
|
458
|
-
#define DatumGetUInt16(X) ((uint16) (X))
|
|
459
|
-
|
|
460
|
-
/*
|
|
461
|
-
* UInt16GetDatum
|
|
462
|
-
* Returns datum representation for a 16-bit unsigned integer.
|
|
463
|
-
*/
|
|
464
|
-
|
|
465
|
-
#define UInt16GetDatum(X) ((Datum) (X))
|
|
466
|
-
|
|
467
|
-
/*
|
|
468
|
-
* DatumGetInt32
|
|
469
|
-
* Returns 32-bit integer value of a datum.
|
|
470
|
-
*/
|
|
471
|
-
|
|
472
|
-
#define DatumGetInt32(X) ((int32) (X))
|
|
473
|
-
|
|
474
|
-
/*
|
|
475
|
-
* Int32GetDatum
|
|
476
|
-
* Returns datum representation for a 32-bit integer.
|
|
477
|
-
*/
|
|
478
|
-
|
|
479
|
-
#define Int32GetDatum(X) ((Datum) (X))
|
|
480
|
-
|
|
481
|
-
/*
|
|
482
|
-
* DatumGetUInt32
|
|
483
|
-
* Returns 32-bit unsigned integer value of a datum.
|
|
484
|
-
*/
|
|
485
|
-
|
|
486
|
-
#define DatumGetUInt32(X) ((uint32) (X))
|
|
487
|
-
|
|
488
|
-
/*
|
|
489
|
-
* UInt32GetDatum
|
|
490
|
-
* Returns datum representation for a 32-bit unsigned integer.
|
|
491
|
-
*/
|
|
492
|
-
|
|
493
|
-
#define UInt32GetDatum(X) ((Datum) (X))
|
|
494
|
-
|
|
495
|
-
/*
|
|
496
|
-
* DatumGetObjectId
|
|
497
|
-
* Returns object identifier value of a datum.
|
|
498
|
-
*/
|
|
499
|
-
|
|
500
|
-
#define DatumGetObjectId(X) ((Oid) (X))
|
|
501
|
-
|
|
502
|
-
/*
|
|
503
|
-
* ObjectIdGetDatum
|
|
504
|
-
* Returns datum representation for an object identifier.
|
|
505
|
-
*/
|
|
506
|
-
|
|
507
|
-
#define ObjectIdGetDatum(X) ((Datum) (X))
|
|
508
|
-
|
|
509
|
-
/*
|
|
510
|
-
* DatumGetTransactionId
|
|
511
|
-
* Returns transaction identifier value of a datum.
|
|
512
|
-
*/
|
|
513
|
-
|
|
514
|
-
#define DatumGetTransactionId(X) ((TransactionId) (X))
|
|
515
|
-
|
|
516
|
-
/*
|
|
517
|
-
* TransactionIdGetDatum
|
|
518
|
-
* Returns datum representation for a transaction identifier.
|
|
519
|
-
*/
|
|
520
|
-
|
|
521
|
-
#define TransactionIdGetDatum(X) ((Datum) (X))
|
|
522
|
-
|
|
523
|
-
/*
|
|
524
|
-
* MultiXactIdGetDatum
|
|
525
|
-
* Returns datum representation for a multixact identifier.
|
|
526
|
-
*/
|
|
527
|
-
|
|
528
|
-
#define MultiXactIdGetDatum(X) ((Datum) (X))
|
|
529
|
-
|
|
530
|
-
/*
|
|
531
|
-
* DatumGetCommandId
|
|
532
|
-
* Returns command identifier value of a datum.
|
|
533
|
-
*/
|
|
534
|
-
|
|
535
|
-
#define DatumGetCommandId(X) ((CommandId) (X))
|
|
536
|
-
|
|
537
|
-
/*
|
|
538
|
-
* CommandIdGetDatum
|
|
539
|
-
* Returns datum representation for a command identifier.
|
|
540
|
-
*/
|
|
541
|
-
|
|
542
|
-
#define CommandIdGetDatum(X) ((Datum) (X))
|
|
543
|
-
|
|
544
|
-
/*
|
|
545
|
-
* DatumGetPointer
|
|
546
|
-
* Returns pointer value of a datum.
|
|
547
|
-
*/
|
|
548
|
-
|
|
549
|
-
#define DatumGetPointer(X) ((Pointer) (X))
|
|
550
|
-
|
|
551
|
-
/*
|
|
552
|
-
* PointerGetDatum
|
|
553
|
-
* Returns datum representation for a pointer.
|
|
554
|
-
*/
|
|
555
|
-
|
|
556
|
-
#define PointerGetDatum(X) ((Datum) (X))
|
|
557
|
-
|
|
558
|
-
/*
|
|
559
|
-
* DatumGetCString
|
|
560
|
-
* Returns C string (null-terminated string) value of a datum.
|
|
561
|
-
*
|
|
562
|
-
* Note: C string is not a full-fledged Postgres type at present,
|
|
563
|
-
* but type input functions use this conversion for their inputs.
|
|
564
|
-
*/
|
|
565
|
-
|
|
566
|
-
#define DatumGetCString(X) ((char *) DatumGetPointer(X))
|
|
567
|
-
|
|
568
|
-
/*
|
|
569
|
-
* CStringGetDatum
|
|
570
|
-
* Returns datum representation for a C string (null-terminated string).
|
|
571
|
-
*
|
|
572
|
-
* Note: C string is not a full-fledged Postgres type at present,
|
|
573
|
-
* but type output functions use this conversion for their outputs.
|
|
574
|
-
* Note: CString is pass-by-reference; caller must ensure the pointed-to
|
|
575
|
-
* value has adequate lifetime.
|
|
576
|
-
*/
|
|
577
|
-
|
|
578
|
-
#define CStringGetDatum(X) PointerGetDatum(X)
|
|
579
|
-
|
|
580
|
-
/*
|
|
581
|
-
* DatumGetName
|
|
582
|
-
* Returns name value of a datum.
|
|
583
|
-
*/
|
|
584
|
-
|
|
585
|
-
#define DatumGetName(X) ((Name) DatumGetPointer(X))
|
|
586
|
-
|
|
587
|
-
/*
|
|
588
|
-
* NameGetDatum
|
|
589
|
-
* Returns datum representation for a name.
|
|
590
|
-
*
|
|
591
|
-
* Note: Name is pass-by-reference; caller must ensure the pointed-to
|
|
592
|
-
* value has adequate lifetime.
|
|
593
|
-
*/
|
|
594
|
-
|
|
595
|
-
#define NameGetDatum(X) CStringGetDatum(NameStr(*(X)))
|
|
596
|
-
|
|
597
|
-
/*
|
|
598
|
-
* DatumGetInt64
|
|
599
|
-
* Returns 64-bit integer value of a datum.
|
|
600
|
-
*
|
|
601
|
-
* Note: this macro hides whether int64 is pass by value or by reference.
|
|
602
|
-
*/
|
|
603
|
-
|
|
604
|
-
#ifdef USE_FLOAT8_BYVAL
|
|
605
|
-
#define DatumGetInt64(X) ((int64) (X))
|
|
606
|
-
#else
|
|
607
|
-
#define DatumGetInt64(X) (* ((int64 *) DatumGetPointer(X)))
|
|
608
|
-
#endif
|
|
609
|
-
|
|
610
|
-
/*
|
|
611
|
-
* Int64GetDatum
|
|
612
|
-
* Returns datum representation for a 64-bit integer.
|
|
613
|
-
*
|
|
614
|
-
* Note: if int64 is pass by reference, this function returns a reference
|
|
615
|
-
* to palloc'd space.
|
|
616
|
-
*/
|
|
617
|
-
|
|
618
|
-
#ifdef USE_FLOAT8_BYVAL
|
|
619
|
-
#define Int64GetDatum(X) ((Datum) (X))
|
|
620
|
-
#else
|
|
621
|
-
extern Datum Int64GetDatum(int64 X);
|
|
622
358
|
#endif
|
|
623
|
-
|
|
624
|
-
/*
|
|
625
|
-
* DatumGetUInt64
|
|
626
|
-
* Returns 64-bit unsigned integer value of a datum.
|
|
627
|
-
*
|
|
628
|
-
* Note: this macro hides whether int64 is pass by value or by reference.
|
|
629
|
-
*/
|
|
630
|
-
|
|
631
|
-
#ifdef USE_FLOAT8_BYVAL
|
|
632
|
-
#define DatumGetUInt64(X) ((uint64) (X))
|
|
633
|
-
#else
|
|
634
|
-
#define DatumGetUInt64(X) (* ((uint64 *) DatumGetPointer(X)))
|
|
635
|
-
#endif
|
|
636
|
-
|
|
637
|
-
/*
|
|
638
|
-
* UInt64GetDatum
|
|
639
|
-
* Returns datum representation for a 64-bit unsigned integer.
|
|
640
|
-
*
|
|
641
|
-
* Note: if int64 is pass by reference, this function returns a reference
|
|
642
|
-
* to palloc'd space.
|
|
643
|
-
*/
|
|
644
|
-
|
|
645
|
-
#ifdef USE_FLOAT8_BYVAL
|
|
646
|
-
#define UInt64GetDatum(X) ((Datum) (X))
|
|
647
|
-
#else
|
|
648
|
-
#define UInt64GetDatum(X) Int64GetDatum((int64) (X))
|
|
649
|
-
#endif
|
|
650
|
-
|
|
651
|
-
/*
|
|
652
|
-
* Float <-> Datum conversions
|
|
653
|
-
*
|
|
654
|
-
* These have to be implemented as inline functions rather than macros, when
|
|
655
|
-
* passing by value, because many machines pass int and float function
|
|
656
|
-
* parameters/results differently; so we need to play weird games with unions.
|
|
657
|
-
*/
|
|
658
|
-
|
|
659
|
-
/*
|
|
660
|
-
* DatumGetFloat4
|
|
661
|
-
* Returns 4-byte floating point value of a datum.
|
|
662
|
-
*/
|
|
663
|
-
static inline float4
|
|
664
|
-
DatumGetFloat4(Datum X)
|
|
665
|
-
{
|
|
666
|
-
union
|
|
667
|
-
{
|
|
668
|
-
int32 value;
|
|
669
|
-
float4 retval;
|
|
670
|
-
} myunion;
|
|
671
|
-
|
|
672
|
-
myunion.value = DatumGetInt32(X);
|
|
673
|
-
return myunion.retval;
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
/*
|
|
677
|
-
* Float4GetDatum
|
|
678
|
-
* Returns datum representation for a 4-byte floating point number.
|
|
679
|
-
*/
|
|
680
|
-
static inline Datum
|
|
681
|
-
Float4GetDatum(float4 X)
|
|
682
|
-
{
|
|
683
|
-
union
|
|
684
|
-
{
|
|
685
|
-
float4 value;
|
|
686
|
-
int32 retval;
|
|
687
|
-
} myunion;
|
|
688
|
-
|
|
689
|
-
myunion.value = X;
|
|
690
|
-
return Int32GetDatum(myunion.retval);
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
/*
|
|
694
|
-
* DatumGetFloat8
|
|
695
|
-
* Returns 8-byte floating point value of a datum.
|
|
696
|
-
*
|
|
697
|
-
* Note: this macro hides whether float8 is pass by value or by reference.
|
|
698
|
-
*/
|
|
699
|
-
|
|
700
|
-
#ifdef USE_FLOAT8_BYVAL
|
|
701
|
-
static inline float8
|
|
702
|
-
DatumGetFloat8(Datum X)
|
|
703
|
-
{
|
|
704
|
-
union
|
|
705
|
-
{
|
|
706
|
-
int64 value;
|
|
707
|
-
float8 retval;
|
|
708
|
-
} myunion;
|
|
709
|
-
|
|
710
|
-
myunion.value = DatumGetInt64(X);
|
|
711
|
-
return myunion.retval;
|
|
712
|
-
}
|
|
713
|
-
#else
|
|
714
|
-
#define DatumGetFloat8(X) (* ((float8 *) DatumGetPointer(X)))
|
|
715
|
-
#endif
|
|
716
|
-
|
|
717
|
-
/*
|
|
718
|
-
* Float8GetDatum
|
|
719
|
-
* Returns datum representation for an 8-byte floating point number.
|
|
720
|
-
*
|
|
721
|
-
* Note: if float8 is pass by reference, this function returns a reference
|
|
722
|
-
* to palloc'd space.
|
|
723
|
-
*/
|
|
724
|
-
|
|
725
|
-
#ifdef USE_FLOAT8_BYVAL
|
|
726
|
-
static inline Datum
|
|
727
|
-
Float8GetDatum(float8 X)
|
|
728
|
-
{
|
|
729
|
-
union
|
|
730
|
-
{
|
|
731
|
-
float8 value;
|
|
732
|
-
int64 retval;
|
|
733
|
-
} myunion;
|
|
734
|
-
|
|
735
|
-
myunion.value = X;
|
|
736
|
-
return Int64GetDatum(myunion.retval);
|
|
737
|
-
}
|
|
738
|
-
#else
|
|
739
|
-
extern Datum Float8GetDatum(float8 X);
|
|
740
|
-
#endif
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
/*
|
|
744
|
-
* Int64GetDatumFast
|
|
745
|
-
* Float8GetDatumFast
|
|
746
|
-
*
|
|
747
|
-
* These macros are intended to allow writing code that does not depend on
|
|
748
|
-
* whether int64 and float8 are pass-by-reference types, while not
|
|
749
|
-
* sacrificing performance when they are. The argument must be a variable
|
|
750
|
-
* that will exist and have the same value for as long as the Datum is needed.
|
|
751
|
-
* In the pass-by-ref case, the address of the variable is taken to use as
|
|
752
|
-
* the Datum. In the pass-by-val case, these will be the same as the non-Fast
|
|
753
|
-
* macros.
|
|
754
|
-
*/
|
|
755
|
-
|
|
756
|
-
#ifdef USE_FLOAT8_BYVAL
|
|
757
|
-
#define Int64GetDatumFast(X) Int64GetDatum(X)
|
|
758
|
-
#define Float8GetDatumFast(X) Float8GetDatum(X)
|
|
759
|
-
#else
|
|
760
|
-
#define Int64GetDatumFast(X) PointerGetDatum(&(X))
|
|
761
|
-
#define Float8GetDatumFast(X) PointerGetDatum(&(X))
|
|
762
|
-
#endif
|
|
763
|
-
|
|
764
|
-
#endif /* POSTGRES_H */
|