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,73 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* toast_compression.h
|
|
4
|
+
* Functions for toast compression.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2021-2023, PostgreSQL Global Development Group
|
|
7
|
+
*
|
|
8
|
+
* src/include/access/toast_compression.h
|
|
9
|
+
*
|
|
10
|
+
*-------------------------------------------------------------------------
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
#ifndef TOAST_COMPRESSION_H
|
|
14
|
+
#define TOAST_COMPRESSION_H
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
* GUC support.
|
|
18
|
+
*
|
|
19
|
+
* default_toast_compression is an integer for purposes of the GUC machinery,
|
|
20
|
+
* but the value is one of the char values defined below, as they appear in
|
|
21
|
+
* pg_attribute.attcompression, e.g. TOAST_PGLZ_COMPRESSION.
|
|
22
|
+
*/
|
|
23
|
+
extern PGDLLIMPORT int default_toast_compression;
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
* Built-in compression method ID. The toast compression header will store
|
|
27
|
+
* this in the first 2 bits of the raw length. These built-in compression
|
|
28
|
+
* method IDs are directly mapped to the built-in compression methods.
|
|
29
|
+
*
|
|
30
|
+
* Don't use these values for anything other than understanding the meaning
|
|
31
|
+
* of the raw bits from a varlena; in particular, if the goal is to identify
|
|
32
|
+
* a compression method, use the constants TOAST_PGLZ_COMPRESSION, etc.
|
|
33
|
+
* below. We might someday support more than 4 compression methods, but
|
|
34
|
+
* we can never have more than 4 values in this enum, because there are
|
|
35
|
+
* only 2 bits available in the places where this is stored.
|
|
36
|
+
*/
|
|
37
|
+
typedef enum ToastCompressionId
|
|
38
|
+
{
|
|
39
|
+
TOAST_PGLZ_COMPRESSION_ID = 0,
|
|
40
|
+
TOAST_LZ4_COMPRESSION_ID = 1,
|
|
41
|
+
TOAST_INVALID_COMPRESSION_ID = 2
|
|
42
|
+
} ToastCompressionId;
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
* Built-in compression methods. pg_attribute will store these in the
|
|
46
|
+
* attcompression column. In attcompression, InvalidCompressionMethod
|
|
47
|
+
* denotes the default behavior.
|
|
48
|
+
*/
|
|
49
|
+
#define TOAST_PGLZ_COMPRESSION 'p'
|
|
50
|
+
#define TOAST_LZ4_COMPRESSION 'l'
|
|
51
|
+
#define InvalidCompressionMethod '\0'
|
|
52
|
+
|
|
53
|
+
#define CompressionMethodIsValid(cm) ((cm) != InvalidCompressionMethod)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
/* pglz compression/decompression routines */
|
|
57
|
+
extern struct varlena *pglz_compress_datum(const struct varlena *value);
|
|
58
|
+
extern struct varlena *pglz_decompress_datum(const struct varlena *value);
|
|
59
|
+
extern struct varlena *pglz_decompress_datum_slice(const struct varlena *value,
|
|
60
|
+
int32 slicelength);
|
|
61
|
+
|
|
62
|
+
/* lz4 compression/decompression routines */
|
|
63
|
+
extern struct varlena *lz4_compress_datum(const struct varlena *value);
|
|
64
|
+
extern struct varlena *lz4_decompress_datum(const struct varlena *value);
|
|
65
|
+
extern struct varlena *lz4_decompress_datum_slice(const struct varlena *value,
|
|
66
|
+
int32 slicelength);
|
|
67
|
+
|
|
68
|
+
/* other stuff */
|
|
69
|
+
extern ToastCompressionId toast_get_compression_id(struct varlena *attr);
|
|
70
|
+
extern char CompressionNameToMethod(const char *compression);
|
|
71
|
+
extern const char *GetCompressionMethodName(char method);
|
|
72
|
+
|
|
73
|
+
#endif /* TOAST_COMPRESSION_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* postgres transaction access method support code
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/access/transam.h
|
|
@@ -54,6 +54,8 @@
|
|
|
54
54
|
#define FullTransactionIdFollowsOrEquals(a, b) ((a).value >= (b).value)
|
|
55
55
|
#define FullTransactionIdIsValid(x) TransactionIdIsValid(XidFromFullTransactionId(x))
|
|
56
56
|
#define InvalidFullTransactionId FullTransactionIdFromEpochAndXid(0, InvalidTransactionId)
|
|
57
|
+
#define FirstNormalFullTransactionId FullTransactionIdFromEpochAndXid(0, FirstNormalTransactionId)
|
|
58
|
+
#define FullTransactionIdIsNormal(x) FullTransactionIdFollowsOrEquals(x, FirstNormalFullTransactionId)
|
|
57
59
|
|
|
58
60
|
/*
|
|
59
61
|
* A 64 bit value that contains an epoch and a TransactionId. This is
|
|
@@ -93,11 +95,44 @@ FullTransactionIdFromU64(uint64 value)
|
|
|
93
95
|
(dest) = FirstNormalTransactionId; \
|
|
94
96
|
} while(0)
|
|
95
97
|
|
|
96
|
-
/*
|
|
98
|
+
/*
|
|
99
|
+
* Retreat a FullTransactionId variable, stepping over xids that would appear
|
|
100
|
+
* to be special only when viewed as 32bit XIDs.
|
|
101
|
+
*/
|
|
102
|
+
static inline void
|
|
103
|
+
FullTransactionIdRetreat(FullTransactionId *dest)
|
|
104
|
+
{
|
|
105
|
+
dest->value--;
|
|
106
|
+
|
|
107
|
+
/*
|
|
108
|
+
* In contrast to 32bit XIDs don't step over the "actual" special xids.
|
|
109
|
+
* For 64bit xids these can't be reached as part of a wraparound as they
|
|
110
|
+
* can in the 32bit case.
|
|
111
|
+
*/
|
|
112
|
+
if (FullTransactionIdPrecedes(*dest, FirstNormalFullTransactionId))
|
|
113
|
+
return;
|
|
114
|
+
|
|
115
|
+
/*
|
|
116
|
+
* But we do need to step over XIDs that'd appear special only for 32bit
|
|
117
|
+
* XIDs.
|
|
118
|
+
*/
|
|
119
|
+
while (XidFromFullTransactionId(*dest) < FirstNormalTransactionId)
|
|
120
|
+
dest->value--;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/*
|
|
124
|
+
* Advance a FullTransactionId variable, stepping over xids that would appear
|
|
125
|
+
* to be special only when viewed as 32bit XIDs.
|
|
126
|
+
*/
|
|
97
127
|
static inline void
|
|
98
128
|
FullTransactionIdAdvance(FullTransactionId *dest)
|
|
99
129
|
{
|
|
100
130
|
dest->value++;
|
|
131
|
+
|
|
132
|
+
/* see FullTransactionIdAdvance() */
|
|
133
|
+
if (FullTransactionIdPrecedes(*dest, FirstNormalFullTransactionId))
|
|
134
|
+
return;
|
|
135
|
+
|
|
101
136
|
while (XidFromFullTransactionId(*dest) < FirstNormalTransactionId)
|
|
102
137
|
dest->value++;
|
|
103
138
|
}
|
|
@@ -128,10 +163,16 @@ FullTransactionIdAdvance(FullTransactionId *dest)
|
|
|
128
163
|
*
|
|
129
164
|
* OIDs 10000-11999 are reserved for assignment by genbki.pl, for use
|
|
130
165
|
* when the .dat files in src/include/catalog/ do not specify an OID
|
|
131
|
-
* for a catalog entry that requires one.
|
|
166
|
+
* for a catalog entry that requires one. Note that genbki.pl assigns
|
|
167
|
+
* these OIDs independently in each catalog, so they're not guaranteed
|
|
168
|
+
* to be globally unique. Furthermore, the bootstrap backend and
|
|
169
|
+
* initdb's post-bootstrap processing can also assign OIDs in this range.
|
|
170
|
+
* The normal OID-generation logic takes care of any OID conflicts that
|
|
171
|
+
* might arise from that.
|
|
132
172
|
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
173
|
+
* OIDs 12000-16383 are reserved for unpinned objects created by initdb's
|
|
174
|
+
* post-bootstrap processing. initdb forces the OID generator up to
|
|
175
|
+
* 12000 as soon as it's made the pinned objects it's responsible for.
|
|
135
176
|
*
|
|
136
177
|
* OIDs beginning at 16384 are assigned from the OID generator
|
|
137
178
|
* during normal multiuser operation. (We force the generator up to
|
|
@@ -147,11 +188,12 @@ FullTransactionIdAdvance(FullTransactionId *dest)
|
|
|
147
188
|
*
|
|
148
189
|
* NOTE: if the OID generator wraps around, we skip over OIDs 0-16383
|
|
149
190
|
* and resume with 16384. This minimizes the odds of OID conflict, by not
|
|
150
|
-
* reassigning OIDs that might have been assigned during initdb.
|
|
191
|
+
* reassigning OIDs that might have been assigned during initdb. Critically,
|
|
192
|
+
* it also ensures that no user-created object will be considered pinned.
|
|
151
193
|
* ----------
|
|
152
194
|
*/
|
|
153
195
|
#define FirstGenbkiObjectId 10000
|
|
154
|
-
#define
|
|
196
|
+
#define FirstUnpinnedObjectId 12000
|
|
155
197
|
#define FirstNormalObjectId 16384
|
|
156
198
|
|
|
157
199
|
/*
|
|
@@ -175,12 +217,12 @@ typedef struct VariableCacheData
|
|
|
175
217
|
/*
|
|
176
218
|
* These fields are protected by XidGenLock.
|
|
177
219
|
*/
|
|
178
|
-
FullTransactionId
|
|
220
|
+
FullTransactionId nextXid; /* next XID to assign */
|
|
179
221
|
|
|
180
222
|
TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */
|
|
181
223
|
TransactionId xidVacLimit; /* start forcing autovacuums here */
|
|
182
224
|
TransactionId xidWarnLimit; /* start complaining here */
|
|
183
|
-
TransactionId xidStopLimit; /* refuse to advance
|
|
225
|
+
TransactionId xidStopLimit; /* refuse to advance nextXid beyond here */
|
|
184
226
|
TransactionId xidWrapLimit; /* where the world ends */
|
|
185
227
|
Oid oldestXidDB; /* database with minimum datfrozenxid */
|
|
186
228
|
|
|
@@ -193,8 +235,17 @@ typedef struct VariableCacheData
|
|
|
193
235
|
/*
|
|
194
236
|
* These fields are protected by ProcArrayLock.
|
|
195
237
|
*/
|
|
196
|
-
|
|
197
|
-
|
|
238
|
+
FullTransactionId latestCompletedXid; /* newest full XID that has
|
|
239
|
+
* committed or aborted */
|
|
240
|
+
|
|
241
|
+
/*
|
|
242
|
+
* Number of top-level transactions with xids (i.e. which may have
|
|
243
|
+
* modified the database) that completed in some form since the start of
|
|
244
|
+
* the server. This currently is solely used to check whether
|
|
245
|
+
* GetSnapshotData() needs to recompute the contents of the snapshot, or
|
|
246
|
+
* not. There are likely other users of this. Always above 1.
|
|
247
|
+
*/
|
|
248
|
+
uint64 xactCompletionCount;
|
|
198
249
|
|
|
199
250
|
/*
|
|
200
251
|
* These fields are protected by XactTruncationLock
|
|
@@ -222,7 +273,6 @@ extern PGDLLIMPORT VariableCache ShmemVariableCache;
|
|
|
222
273
|
*/
|
|
223
274
|
extern bool TransactionIdDidCommit(TransactionId transactionId);
|
|
224
275
|
extern bool TransactionIdDidAbort(TransactionId transactionId);
|
|
225
|
-
extern bool TransactionIdIsKnownCompleted(TransactionId transactionId);
|
|
226
276
|
extern void TransactionIdCommitTree(TransactionId xid, int nxids, TransactionId *xids);
|
|
227
277
|
extern void TransactionIdAsyncCommitTree(TransactionId xid, int nxids, TransactionId *xids, XLogRecPtr lsn);
|
|
228
278
|
extern void TransactionIdAbortTree(TransactionId xid, int nxids, TransactionId *xids);
|
|
@@ -243,6 +293,13 @@ extern void SetTransactionIdLimit(TransactionId oldest_datfrozenxid,
|
|
|
243
293
|
extern void AdvanceOldestClogXid(TransactionId oldest_datfrozenxid);
|
|
244
294
|
extern bool ForceTransactionIdLimitUpdate(void);
|
|
245
295
|
extern Oid GetNewObjectId(void);
|
|
296
|
+
extern void StopGeneratingPinnedObjectIds(void);
|
|
297
|
+
|
|
298
|
+
#ifdef USE_ASSERT_CHECKING
|
|
299
|
+
extern void AssertTransactionIdInAllowableRange(TransactionId xid);
|
|
300
|
+
#else
|
|
301
|
+
#define AssertTransactionIdInAllowableRange(xid) ((void)true)
|
|
302
|
+
#endif
|
|
246
303
|
|
|
247
304
|
/*
|
|
248
305
|
* Some frontend programs include this header. For compilers that emit static
|
|
@@ -255,11 +312,64 @@ extern Oid GetNewObjectId(void);
|
|
|
255
312
|
* For callers that just need the XID part of the next transaction ID.
|
|
256
313
|
*/
|
|
257
314
|
static inline TransactionId
|
|
258
|
-
|
|
315
|
+
ReadNextTransactionId(void)
|
|
259
316
|
{
|
|
260
317
|
return XidFromFullTransactionId(ReadNextFullTransactionId());
|
|
261
318
|
}
|
|
262
319
|
|
|
320
|
+
/* return transaction ID backed up by amount, handling wraparound correctly */
|
|
321
|
+
static inline TransactionId
|
|
322
|
+
TransactionIdRetreatedBy(TransactionId xid, uint32 amount)
|
|
323
|
+
{
|
|
324
|
+
xid -= amount;
|
|
325
|
+
|
|
326
|
+
while (xid < FirstNormalTransactionId)
|
|
327
|
+
xid--;
|
|
328
|
+
|
|
329
|
+
return xid;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/* return the older of the two IDs */
|
|
333
|
+
static inline TransactionId
|
|
334
|
+
TransactionIdOlder(TransactionId a, TransactionId b)
|
|
335
|
+
{
|
|
336
|
+
if (!TransactionIdIsValid(a))
|
|
337
|
+
return b;
|
|
338
|
+
|
|
339
|
+
if (!TransactionIdIsValid(b))
|
|
340
|
+
return a;
|
|
341
|
+
|
|
342
|
+
if (TransactionIdPrecedes(a, b))
|
|
343
|
+
return a;
|
|
344
|
+
return b;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/* return the older of the two IDs, assuming they're both normal */
|
|
348
|
+
static inline TransactionId
|
|
349
|
+
NormalTransactionIdOlder(TransactionId a, TransactionId b)
|
|
350
|
+
{
|
|
351
|
+
Assert(TransactionIdIsNormal(a));
|
|
352
|
+
Assert(TransactionIdIsNormal(b));
|
|
353
|
+
if (NormalTransactionIdPrecedes(a, b))
|
|
354
|
+
return a;
|
|
355
|
+
return b;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/* return the newer of the two IDs */
|
|
359
|
+
static inline FullTransactionId
|
|
360
|
+
FullTransactionIdNewer(FullTransactionId a, FullTransactionId b)
|
|
361
|
+
{
|
|
362
|
+
if (!FullTransactionIdIsValid(a))
|
|
363
|
+
return b;
|
|
364
|
+
|
|
365
|
+
if (!FullTransactionIdIsValid(b))
|
|
366
|
+
return a;
|
|
367
|
+
|
|
368
|
+
if (FullTransactionIdFollows(a, b))
|
|
369
|
+
return a;
|
|
370
|
+
return b;
|
|
371
|
+
}
|
|
372
|
+
|
|
263
373
|
#endif /* FRONTEND */
|
|
264
374
|
|
|
265
375
|
#endif /* TRANSAM_H */
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* tsmapi.h
|
|
4
|
+
* API for tablesample methods
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2015-2023, PostgreSQL Global Development Group
|
|
7
|
+
*
|
|
8
|
+
* src/include/access/tsmapi.h
|
|
9
|
+
*
|
|
10
|
+
*-------------------------------------------------------------------------
|
|
11
|
+
*/
|
|
12
|
+
#ifndef TSMAPI_H
|
|
13
|
+
#define TSMAPI_H
|
|
14
|
+
|
|
15
|
+
#include "nodes/execnodes.h"
|
|
16
|
+
#include "nodes/pathnodes.h"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* Callback function signatures --- see tablesample-method.sgml for more info.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
typedef void (*SampleScanGetSampleSize_function) (PlannerInfo *root,
|
|
24
|
+
RelOptInfo *baserel,
|
|
25
|
+
List *paramexprs,
|
|
26
|
+
BlockNumber *pages,
|
|
27
|
+
double *tuples);
|
|
28
|
+
|
|
29
|
+
typedef void (*InitSampleScan_function) (SampleScanState *node,
|
|
30
|
+
int eflags);
|
|
31
|
+
|
|
32
|
+
typedef void (*BeginSampleScan_function) (SampleScanState *node,
|
|
33
|
+
Datum *params,
|
|
34
|
+
int nparams,
|
|
35
|
+
uint32 seed);
|
|
36
|
+
|
|
37
|
+
typedef BlockNumber (*NextSampleBlock_function) (SampleScanState *node,
|
|
38
|
+
BlockNumber nblocks);
|
|
39
|
+
|
|
40
|
+
typedef OffsetNumber (*NextSampleTuple_function) (SampleScanState *node,
|
|
41
|
+
BlockNumber blockno,
|
|
42
|
+
OffsetNumber maxoffset);
|
|
43
|
+
|
|
44
|
+
typedef void (*EndSampleScan_function) (SampleScanState *node);
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* TsmRoutine is the struct returned by a tablesample method's handler
|
|
48
|
+
* function. It provides pointers to the callback functions needed by the
|
|
49
|
+
* planner and executor, as well as additional information about the method.
|
|
50
|
+
*
|
|
51
|
+
* More function pointers are likely to be added in the future.
|
|
52
|
+
* Therefore it's recommended that the handler initialize the struct with
|
|
53
|
+
* makeNode(TsmRoutine) so that all fields are set to NULL. This will
|
|
54
|
+
* ensure that no fields are accidentally left undefined.
|
|
55
|
+
*/
|
|
56
|
+
typedef struct TsmRoutine
|
|
57
|
+
{
|
|
58
|
+
NodeTag type;
|
|
59
|
+
|
|
60
|
+
/* List of datatype OIDs for the arguments of the TABLESAMPLE clause */
|
|
61
|
+
List *parameterTypes;
|
|
62
|
+
|
|
63
|
+
/* Can method produce repeatable samples across, or even within, queries? */
|
|
64
|
+
bool repeatable_across_queries;
|
|
65
|
+
bool repeatable_across_scans;
|
|
66
|
+
|
|
67
|
+
/* Functions for planning a SampleScan on a physical table */
|
|
68
|
+
SampleScanGetSampleSize_function SampleScanGetSampleSize;
|
|
69
|
+
|
|
70
|
+
/* Functions for executing a SampleScan on a physical table */
|
|
71
|
+
InitSampleScan_function InitSampleScan; /* can be NULL */
|
|
72
|
+
BeginSampleScan_function BeginSampleScan;
|
|
73
|
+
NextSampleBlock_function NextSampleBlock; /* can be NULL */
|
|
74
|
+
NextSampleTuple_function NextSampleTuple;
|
|
75
|
+
EndSampleScan_function EndSampleScan; /* can be NULL */
|
|
76
|
+
} TsmRoutine;
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/* Functions in access/tablesample/tablesample.c */
|
|
80
|
+
extern TsmRoutine *GetTsmRoutine(Oid tsmhandler);
|
|
81
|
+
|
|
82
|
+
#endif /* TSMAPI_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Tuple conversion support.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/access/tupconvert.h
|
|
@@ -39,12 +39,15 @@ extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc,
|
|
|
39
39
|
|
|
40
40
|
extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc,
|
|
41
41
|
TupleDesc outdesc);
|
|
42
|
+
extern TupleConversionMap *convert_tuples_by_name_attrmap(TupleDesc indesc,
|
|
43
|
+
TupleDesc outdesc,
|
|
44
|
+
AttrMap *attrMap);
|
|
42
45
|
|
|
43
46
|
extern HeapTuple execute_attr_map_tuple(HeapTuple tuple, TupleConversionMap *map);
|
|
44
47
|
extern TupleTableSlot *execute_attr_map_slot(AttrMap *attrMap,
|
|
45
48
|
TupleTableSlot *in_slot,
|
|
46
49
|
TupleTableSlot *out_slot);
|
|
47
|
-
extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *
|
|
50
|
+
extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *in_cols);
|
|
48
51
|
|
|
49
52
|
extern void free_conversion_map(TupleConversionMap *map);
|
|
50
53
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES tuple descriptor definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/access/tupdesc.h
|
|
@@ -127,7 +127,7 @@ extern void DecrTupleDescRefCount(TupleDesc tupdesc);
|
|
|
127
127
|
|
|
128
128
|
extern bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
|
|
129
129
|
|
|
130
|
-
extern uint32 hashTupleDesc(TupleDesc
|
|
130
|
+
extern uint32 hashTupleDesc(TupleDesc desc);
|
|
131
131
|
|
|
132
132
|
extern void TupleDescInitEntry(TupleDesc desc,
|
|
133
133
|
AttrNumber attributeNumber,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Tuple macros used by both index tuples and heap tuples.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/access/tupmacs.h
|
|
@@ -22,8 +22,13 @@
|
|
|
22
22
|
* Note that a 0 in the null bitmap indicates a null, while 1 indicates
|
|
23
23
|
* non-null.
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
static inline bool
|
|
26
|
+
att_isnull(int ATT, const bits8 *BITS)
|
|
27
|
+
{
|
|
28
|
+
return !(BITS[ATT >> 3] & (1 << (ATT & 0x07)));
|
|
29
|
+
}
|
|
26
30
|
|
|
31
|
+
#ifndef FRONTEND
|
|
27
32
|
/*
|
|
28
33
|
* Given a Form_pg_attribute and a pointer into a tuple's data area,
|
|
29
34
|
* return the correct value or pointer.
|
|
@@ -43,56 +48,32 @@
|
|
|
43
48
|
/*
|
|
44
49
|
* Same, but work from byval/len parameters rather than Form_pg_attribute.
|
|
45
50
|
*/
|
|
51
|
+
static inline Datum
|
|
52
|
+
fetch_att(const void *T, bool attbyval, int attlen)
|
|
53
|
+
{
|
|
54
|
+
if (attbyval)
|
|
55
|
+
{
|
|
56
|
+
switch (attlen)
|
|
57
|
+
{
|
|
58
|
+
case sizeof(char):
|
|
59
|
+
return CharGetDatum(*((const char *) T));
|
|
60
|
+
case sizeof(int16):
|
|
61
|
+
return Int16GetDatum(*((const int16 *) T));
|
|
62
|
+
case sizeof(int32):
|
|
63
|
+
return Int32GetDatum(*((const int32 *) T));
|
|
46
64
|
#if SIZEOF_DATUM == 8
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
( \
|
|
60
|
-
(attlen) == (int) sizeof(int16) ? \
|
|
61
|
-
Int16GetDatum(*((int16 *)(T))) \
|
|
62
|
-
: \
|
|
63
|
-
( \
|
|
64
|
-
AssertMacro((attlen) == 1), \
|
|
65
|
-
CharGetDatum(*((char *)(T))) \
|
|
66
|
-
) \
|
|
67
|
-
) \
|
|
68
|
-
) \
|
|
69
|
-
) \
|
|
70
|
-
: \
|
|
71
|
-
PointerGetDatum((char *) (T)) \
|
|
72
|
-
)
|
|
73
|
-
#else /* SIZEOF_DATUM != 8 */
|
|
74
|
-
|
|
75
|
-
#define fetch_att(T,attbyval,attlen) \
|
|
76
|
-
( \
|
|
77
|
-
(attbyval) ? \
|
|
78
|
-
( \
|
|
79
|
-
(attlen) == (int) sizeof(int32) ? \
|
|
80
|
-
Int32GetDatum(*((int32 *)(T))) \
|
|
81
|
-
: \
|
|
82
|
-
( \
|
|
83
|
-
(attlen) == (int) sizeof(int16) ? \
|
|
84
|
-
Int16GetDatum(*((int16 *)(T))) \
|
|
85
|
-
: \
|
|
86
|
-
( \
|
|
87
|
-
AssertMacro((attlen) == 1), \
|
|
88
|
-
CharGetDatum(*((char *)(T))) \
|
|
89
|
-
) \
|
|
90
|
-
) \
|
|
91
|
-
) \
|
|
92
|
-
: \
|
|
93
|
-
PointerGetDatum((char *) (T)) \
|
|
94
|
-
)
|
|
95
|
-
#endif /* SIZEOF_DATUM == 8 */
|
|
65
|
+
case sizeof(Datum):
|
|
66
|
+
return *((const Datum *) T);
|
|
67
|
+
#endif
|
|
68
|
+
default:
|
|
69
|
+
elog(ERROR, "unsupported byval length: %d", attlen);
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else
|
|
74
|
+
return PointerGetDatum(T);
|
|
75
|
+
}
|
|
76
|
+
#endif /* FRONTEND */
|
|
96
77
|
|
|
97
78
|
/*
|
|
98
79
|
* att_align_datum aligns the given offset as needed for a datum of alignment
|
|
@@ -139,8 +120,8 @@
|
|
|
139
120
|
* * we need to estimate alignment padding cost abstractly, ie without
|
|
140
121
|
* reference to a real tuple. We must assume the worst case that
|
|
141
122
|
* all varlenas are aligned.
|
|
142
|
-
* * within arrays, we unconditionally align varlenas (XXX this
|
|
143
|
-
* revisited, probably).
|
|
123
|
+
* * within arrays and multiranges, we unconditionally align varlenas (XXX this
|
|
124
|
+
* should be revisited, probably).
|
|
144
125
|
*
|
|
145
126
|
* The attalign cases are tested in what is hopefully something like their
|
|
146
127
|
* frequency of occurrence.
|
|
@@ -190,58 +171,37 @@
|
|
|
190
171
|
)) \
|
|
191
172
|
)
|
|
192
173
|
|
|
174
|
+
#ifndef FRONTEND
|
|
193
175
|
/*
|
|
194
176
|
* store_att_byval is a partial inverse of fetch_att: store a given Datum
|
|
195
177
|
* value into a tuple data area at the specified address. However, it only
|
|
196
178
|
* handles the byval case, because in typical usage the caller needs to
|
|
197
|
-
* distinguish by-val and by-ref cases anyway, and so a do-it-all
|
|
179
|
+
* distinguish by-val and by-ref cases anyway, and so a do-it-all function
|
|
198
180
|
* wouldn't be convenient.
|
|
199
181
|
*/
|
|
182
|
+
static inline void
|
|
183
|
+
store_att_byval(void *T, Datum newdatum, int attlen)
|
|
184
|
+
{
|
|
185
|
+
switch (attlen)
|
|
186
|
+
{
|
|
187
|
+
case sizeof(char):
|
|
188
|
+
*(char *) T = DatumGetChar(newdatum);
|
|
189
|
+
break;
|
|
190
|
+
case sizeof(int16):
|
|
191
|
+
*(int16 *) T = DatumGetInt16(newdatum);
|
|
192
|
+
break;
|
|
193
|
+
case sizeof(int32):
|
|
194
|
+
*(int32 *) T = DatumGetInt32(newdatum);
|
|
195
|
+
break;
|
|
200
196
|
#if SIZEOF_DATUM == 8
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
switch (attlen) \
|
|
205
|
-
{ \
|
|
206
|
-
case sizeof(char): \
|
|
207
|
-
*(char *) (T) = DatumGetChar(newdatum); \
|
|
208
|
-
break; \
|
|
209
|
-
case sizeof(int16): \
|
|
210
|
-
*(int16 *) (T) = DatumGetInt16(newdatum); \
|
|
211
|
-
break; \
|
|
212
|
-
case sizeof(int32): \
|
|
213
|
-
*(int32 *) (T) = DatumGetInt32(newdatum); \
|
|
214
|
-
break; \
|
|
215
|
-
case sizeof(Datum): \
|
|
216
|
-
*(Datum *) (T) = (newdatum); \
|
|
217
|
-
break; \
|
|
218
|
-
default: \
|
|
219
|
-
elog(ERROR, "unsupported byval length: %d", \
|
|
220
|
-
(int) (attlen)); \
|
|
221
|
-
break; \
|
|
222
|
-
} \
|
|
223
|
-
} while (0)
|
|
224
|
-
#else /* SIZEOF_DATUM != 8 */
|
|
225
|
-
|
|
226
|
-
#define store_att_byval(T,newdatum,attlen) \
|
|
227
|
-
do { \
|
|
228
|
-
switch (attlen) \
|
|
229
|
-
{ \
|
|
230
|
-
case sizeof(char): \
|
|
231
|
-
*(char *) (T) = DatumGetChar(newdatum); \
|
|
232
|
-
break; \
|
|
233
|
-
case sizeof(int16): \
|
|
234
|
-
*(int16 *) (T) = DatumGetInt16(newdatum); \
|
|
235
|
-
break; \
|
|
236
|
-
case sizeof(int32): \
|
|
237
|
-
*(int32 *) (T) = DatumGetInt32(newdatum); \
|
|
238
|
-
break; \
|
|
239
|
-
default: \
|
|
240
|
-
elog(ERROR, "unsupported byval length: %d", \
|
|
241
|
-
(int) (attlen)); \
|
|
242
|
-
break; \
|
|
243
|
-
} \
|
|
244
|
-
} while (0)
|
|
245
|
-
#endif /* SIZEOF_DATUM == 8 */
|
|
246
|
-
|
|
197
|
+
case sizeof(Datum):
|
|
198
|
+
*(Datum *) T = newdatum;
|
|
199
|
+
break;
|
|
247
200
|
#endif
|
|
201
|
+
default:
|
|
202
|
+
elog(ERROR, "unsupported byval length: %d", attlen);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
#endif /* FRONTEND */
|
|
206
|
+
|
|
207
|
+
#endif /* TUPMACS_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Two-phase-commit related declarations.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/access/twophase.h
|
|
@@ -34,6 +34,8 @@ extern void TwoPhaseShmemInit(void);
|
|
|
34
34
|
extern void AtAbort_Twophase(void);
|
|
35
35
|
extern void PostPrepare_Twophase(void);
|
|
36
36
|
|
|
37
|
+
extern TransactionId TwoPhaseGetXidByVirtualXID(VirtualTransactionId vxid,
|
|
38
|
+
bool *have_more);
|
|
37
39
|
extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid, bool lock_held);
|
|
38
40
|
extern BackendId TwoPhaseGetDummyBackendId(TransactionId xid, bool lock_held);
|
|
39
41
|
|
|
@@ -58,4 +60,6 @@ extern void PrepareRedoAdd(char *buf, XLogRecPtr start_lsn,
|
|
|
58
60
|
XLogRecPtr end_lsn, RepOriginId origin_id);
|
|
59
61
|
extern void PrepareRedoRemove(TransactionId xid, bool giveWarning);
|
|
60
62
|
extern void restoreTwoPhaseData(void);
|
|
63
|
+
extern bool LookupGXact(const char *gid, XLogRecPtr prepare_end_lsn,
|
|
64
|
+
TimestampTz origin_prepare_timestamp);
|
|
61
65
|
#endif /* TWOPHASE_H */
|