pg_query 4.2.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +6 -8
- data/Rakefile +5 -6
- data/ext/pg_query/extconf.rb +14 -4
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
- data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
- data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
- data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
- data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
- data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
- data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
- data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
- data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
- data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
- data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
- data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
- data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +534 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +79 -5
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +6 -10
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +23 -5
- data/lib/pg_query/version.rb +1 -1
- metadata +432 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
- /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES table access method 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/tableam.h
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
#include "access/relscan.h"
|
|
21
21
|
#include "access/sdir.h"
|
|
22
22
|
#include "access/xact.h"
|
|
23
|
-
#include "
|
|
23
|
+
#include "executor/tuptable.h"
|
|
24
24
|
#include "utils/rel.h"
|
|
25
25
|
#include "utils/snapshot.h"
|
|
26
26
|
|
|
@@ -102,6 +102,22 @@ typedef enum TM_Result
|
|
|
102
102
|
TM_WouldBlock
|
|
103
103
|
} TM_Result;
|
|
104
104
|
|
|
105
|
+
/*
|
|
106
|
+
* Result codes for table_update(..., update_indexes*..).
|
|
107
|
+
* Used to determine which indexes to update.
|
|
108
|
+
*/
|
|
109
|
+
typedef enum TU_UpdateIndexes
|
|
110
|
+
{
|
|
111
|
+
/* No indexed columns were updated (incl. TID addressing of tuple) */
|
|
112
|
+
TU_None,
|
|
113
|
+
|
|
114
|
+
/* A non-summarizing indexed column was updated, or the TID has changed */
|
|
115
|
+
TU_All,
|
|
116
|
+
|
|
117
|
+
/* Only summarized columns were updated, TID is unchanged */
|
|
118
|
+
TU_Summarizing
|
|
119
|
+
} TU_UpdateIndexes;
|
|
120
|
+
|
|
105
121
|
/*
|
|
106
122
|
* When table_tuple_update, table_tuple_delete, or table_tuple_lock fail
|
|
107
123
|
* because the target tuple is already outdated, they fill in this struct to
|
|
@@ -342,7 +358,7 @@ typedef struct TableAmRoutine
|
|
|
342
358
|
* allowed by the AM.
|
|
343
359
|
*
|
|
344
360
|
* Implementations can assume that scan_set_tidrange is always called
|
|
345
|
-
* before
|
|
361
|
+
* before scan_getnextslot_tidrange or after scan_rescan and before any
|
|
346
362
|
* further calls to scan_getnextslot_tidrange.
|
|
347
363
|
*/
|
|
348
364
|
void (*scan_set_tidrange) (TableScanDesc scan,
|
|
@@ -526,7 +542,7 @@ typedef struct TableAmRoutine
|
|
|
526
542
|
bool wait,
|
|
527
543
|
TM_FailureData *tmfd,
|
|
528
544
|
LockTupleMode *lockmode,
|
|
529
|
-
|
|
545
|
+
TU_UpdateIndexes *update_indexes);
|
|
530
546
|
|
|
531
547
|
/* see table_tuple_lock() for reference about parameters */
|
|
532
548
|
TM_Result (*tuple_lock) (Relation rel,
|
|
@@ -560,32 +576,32 @@ typedef struct TableAmRoutine
|
|
|
560
576
|
*/
|
|
561
577
|
|
|
562
578
|
/*
|
|
563
|
-
* This callback needs to create
|
|
579
|
+
* This callback needs to create new relation storage for `rel`, with
|
|
564
580
|
* appropriate durability behaviour for `persistence`.
|
|
565
581
|
*
|
|
566
582
|
* Note that only the subset of the relcache filled by
|
|
567
583
|
* RelationBuildLocalRelation() can be relied upon and that the relation's
|
|
568
584
|
* catalog entries will either not yet exist (new relation), or will still
|
|
569
|
-
* reference the old
|
|
585
|
+
* reference the old relfilelocator.
|
|
570
586
|
*
|
|
571
587
|
* As output *freezeXid, *minmulti must be set to the values appropriate
|
|
572
588
|
* for pg_class.{relfrozenxid, relminmxid}. For AMs that don't need those
|
|
573
589
|
* fields to be filled they can be set to InvalidTransactionId and
|
|
574
590
|
* InvalidMultiXactId, respectively.
|
|
575
591
|
*
|
|
576
|
-
* See also
|
|
592
|
+
* See also table_relation_set_new_filelocator().
|
|
577
593
|
*/
|
|
578
|
-
void (*
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
594
|
+
void (*relation_set_new_filelocator) (Relation rel,
|
|
595
|
+
const RelFileLocator *newrlocator,
|
|
596
|
+
char persistence,
|
|
597
|
+
TransactionId *freezeXid,
|
|
598
|
+
MultiXactId *minmulti);
|
|
583
599
|
|
|
584
600
|
/*
|
|
585
601
|
* This callback needs to remove all contents from `rel`'s current
|
|
586
|
-
*
|
|
587
|
-
* Often this can be implemented by truncating the underlying
|
|
588
|
-
* its minimal size.
|
|
602
|
+
* relfilelocator. No provisions for transactional behaviour need to be
|
|
603
|
+
* made. Often this can be implemented by truncating the underlying
|
|
604
|
+
* storage to its minimal size.
|
|
589
605
|
*
|
|
590
606
|
* See also table_relation_nontransactional_truncate().
|
|
591
607
|
*/
|
|
@@ -598,7 +614,7 @@ typedef struct TableAmRoutine
|
|
|
598
614
|
* storage, unless it contains references to the tablespace internally.
|
|
599
615
|
*/
|
|
600
616
|
void (*relation_copy_data) (Relation rel,
|
|
601
|
-
const
|
|
617
|
+
const RelFileLocator *newrlocator);
|
|
602
618
|
|
|
603
619
|
/* See table_relation_copy_for_cluster() */
|
|
604
620
|
void (*relation_copy_for_cluster) (Relation NewTable,
|
|
@@ -863,13 +879,13 @@ typedef struct TableAmRoutine
|
|
|
863
879
|
* for the relation. Works for tables, views, foreign tables and partitioned
|
|
864
880
|
* tables.
|
|
865
881
|
*/
|
|
866
|
-
extern const TupleTableSlotOps *table_slot_callbacks(Relation
|
|
882
|
+
extern const TupleTableSlotOps *table_slot_callbacks(Relation relation);
|
|
867
883
|
|
|
868
884
|
/*
|
|
869
885
|
* Returns slot using the callbacks returned by table_slot_callbacks(), and
|
|
870
886
|
* registers it on *reglist.
|
|
871
887
|
*/
|
|
872
|
-
extern TupleTableSlot *table_slot_create(Relation
|
|
888
|
+
extern TupleTableSlot *table_slot_create(Relation relation, List **reglist);
|
|
873
889
|
|
|
874
890
|
|
|
875
891
|
/* ----------------------------------------------------------------------------
|
|
@@ -886,7 +902,7 @@ table_beginscan(Relation rel, Snapshot snapshot,
|
|
|
886
902
|
int nkeys, struct ScanKeyData *key)
|
|
887
903
|
{
|
|
888
904
|
uint32 flags = SO_TYPE_SEQSCAN |
|
|
889
|
-
|
|
905
|
+
SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE;
|
|
890
906
|
|
|
891
907
|
return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags);
|
|
892
908
|
}
|
|
@@ -895,7 +911,7 @@ table_beginscan(Relation rel, Snapshot snapshot,
|
|
|
895
911
|
* Like table_beginscan(), but for scanning catalog. It'll automatically use a
|
|
896
912
|
* snapshot appropriate for scanning catalog relations.
|
|
897
913
|
*/
|
|
898
|
-
extern TableScanDesc table_beginscan_catalog(Relation
|
|
914
|
+
extern TableScanDesc table_beginscan_catalog(Relation relation, int nkeys,
|
|
899
915
|
struct ScanKeyData *key);
|
|
900
916
|
|
|
901
917
|
/*
|
|
@@ -1035,6 +1051,10 @@ table_scan_getnextslot(TableScanDesc sscan, ScanDirection direction, TupleTableS
|
|
|
1035
1051
|
{
|
|
1036
1052
|
slot->tts_tableOid = RelationGetRelid(sscan->rs_rd);
|
|
1037
1053
|
|
|
1054
|
+
/* We don't expect actual scans using NoMovementScanDirection */
|
|
1055
|
+
Assert(direction == ForwardScanDirection ||
|
|
1056
|
+
direction == BackwardScanDirection);
|
|
1057
|
+
|
|
1038
1058
|
/*
|
|
1039
1059
|
* We don't expect direct calls to table_scan_getnextslot with valid
|
|
1040
1060
|
* CheckXidAlive for catalog or regular tables. See detailed comments in
|
|
@@ -1099,6 +1119,10 @@ table_scan_getnextslot_tidrange(TableScanDesc sscan, ScanDirection direction,
|
|
|
1099
1119
|
/* Ensure table_beginscan_tidrange() was used. */
|
|
1100
1120
|
Assert((sscan->rs_flags & SO_TYPE_TIDRANGESCAN) != 0);
|
|
1101
1121
|
|
|
1122
|
+
/* We don't expect actual scans using NoMovementScanDirection */
|
|
1123
|
+
Assert(direction == ForwardScanDirection ||
|
|
1124
|
+
direction == BackwardScanDirection);
|
|
1125
|
+
|
|
1102
1126
|
return sscan->rs_rd->rd_tableam->scan_getnextslot_tidrange(sscan,
|
|
1103
1127
|
direction,
|
|
1104
1128
|
slot);
|
|
@@ -1133,7 +1157,7 @@ extern void table_parallelscan_initialize(Relation rel,
|
|
|
1133
1157
|
*
|
|
1134
1158
|
* Caller must hold a suitable lock on the relation.
|
|
1135
1159
|
*/
|
|
1136
|
-
extern TableScanDesc table_beginscan_parallel(Relation
|
|
1160
|
+
extern TableScanDesc table_beginscan_parallel(Relation relation,
|
|
1137
1161
|
ParallelTableScanDesc pscan);
|
|
1138
1162
|
|
|
1139
1163
|
/*
|
|
@@ -1318,7 +1342,7 @@ table_tuple_satisfies_snapshot(Relation rel, TupleTableSlot *slot,
|
|
|
1318
1342
|
* marked as deletable. See comments above TM_IndexDelete and comments above
|
|
1319
1343
|
* TM_IndexDeleteOp for full details.
|
|
1320
1344
|
*
|
|
1321
|
-
* Returns a
|
|
1345
|
+
* Returns a snapshotConflictHorizon transaction ID that caller places in
|
|
1322
1346
|
* its index deletion WAL record. This might be used during subsequent REDO
|
|
1323
1347
|
* of the WAL record when in Hot Standby mode -- a recovery conflict for the
|
|
1324
1348
|
* index deletion operation might be required on the standby.
|
|
@@ -1348,7 +1372,7 @@ table_index_delete_tuples(Relation rel, TM_IndexDeleteOp *delstate)
|
|
|
1348
1372
|
* RelationGetBufferForTuple. See that method for more information.
|
|
1349
1373
|
*
|
|
1350
1374
|
* TABLE_INSERT_FROZEN should only be specified for inserts into
|
|
1351
|
-
*
|
|
1375
|
+
* relation storage created during the current subtransaction and when
|
|
1352
1376
|
* there are no prior snapshots or pre-existing portals open.
|
|
1353
1377
|
* This causes rows to be frozen, which is an MVCC violation and
|
|
1354
1378
|
* requires explicit options chosen by user.
|
|
@@ -1506,7 +1530,7 @@ static inline TM_Result
|
|
|
1506
1530
|
table_tuple_update(Relation rel, ItemPointer otid, TupleTableSlot *slot,
|
|
1507
1531
|
CommandId cid, Snapshot snapshot, Snapshot crosscheck,
|
|
1508
1532
|
bool wait, TM_FailureData *tmfd, LockTupleMode *lockmode,
|
|
1509
|
-
|
|
1533
|
+
TU_UpdateIndexes *update_indexes)
|
|
1510
1534
|
{
|
|
1511
1535
|
return rel->rd_tableam->tuple_update(rel, otid, slot,
|
|
1512
1536
|
cid, snapshot, crosscheck,
|
|
@@ -1577,33 +1601,34 @@ table_finish_bulk_insert(Relation rel, int options)
|
|
|
1577
1601
|
*/
|
|
1578
1602
|
|
|
1579
1603
|
/*
|
|
1580
|
-
* Create storage for `rel` in `
|
|
1604
|
+
* Create storage for `rel` in `newrlocator`, with persistence set to
|
|
1581
1605
|
* `persistence`.
|
|
1582
1606
|
*
|
|
1583
1607
|
* This is used both during relation creation and various DDL operations to
|
|
1584
|
-
* create
|
|
1585
|
-
* new storage for an existing
|
|
1608
|
+
* create new rel storage that can be filled from scratch. When creating
|
|
1609
|
+
* new storage for an existing relfilelocator, this should be called before the
|
|
1586
1610
|
* relcache entry has been updated.
|
|
1587
1611
|
*
|
|
1588
1612
|
* *freezeXid, *minmulti are set to the xid / multixact horizon for the table
|
|
1589
1613
|
* that pg_class.{relfrozenxid, relminmxid} have to be set to.
|
|
1590
1614
|
*/
|
|
1591
1615
|
static inline void
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1616
|
+
table_relation_set_new_filelocator(Relation rel,
|
|
1617
|
+
const RelFileLocator *newrlocator,
|
|
1618
|
+
char persistence,
|
|
1619
|
+
TransactionId *freezeXid,
|
|
1620
|
+
MultiXactId *minmulti)
|
|
1597
1621
|
{
|
|
1598
|
-
rel->rd_tableam->
|
|
1599
|
-
|
|
1622
|
+
rel->rd_tableam->relation_set_new_filelocator(rel, newrlocator,
|
|
1623
|
+
persistence, freezeXid,
|
|
1624
|
+
minmulti);
|
|
1600
1625
|
}
|
|
1601
1626
|
|
|
1602
1627
|
/*
|
|
1603
1628
|
* Remove all table contents from `rel`, in a non-transactional manner.
|
|
1604
1629
|
* Non-transactional meaning that there's no need to support rollbacks. This
|
|
1605
|
-
* commonly only is used to perform truncations for
|
|
1606
|
-
* current transaction.
|
|
1630
|
+
* commonly only is used to perform truncations for relation storage created in
|
|
1631
|
+
* the current transaction.
|
|
1607
1632
|
*/
|
|
1608
1633
|
static inline void
|
|
1609
1634
|
table_relation_nontransactional_truncate(Relation rel)
|
|
@@ -1612,15 +1637,15 @@ table_relation_nontransactional_truncate(Relation rel)
|
|
|
1612
1637
|
}
|
|
1613
1638
|
|
|
1614
1639
|
/*
|
|
1615
|
-
* Copy data from `rel` into the new
|
|
1616
|
-
*
|
|
1640
|
+
* Copy data from `rel` into the new relfilelocator `newrlocator`. The new
|
|
1641
|
+
* relfilelocator may not have storage associated before this function is
|
|
1617
1642
|
* called. This is only supposed to be used for low level operations like
|
|
1618
1643
|
* changing a relation's tablespace.
|
|
1619
1644
|
*/
|
|
1620
1645
|
static inline void
|
|
1621
|
-
table_relation_copy_data(Relation rel, const
|
|
1646
|
+
table_relation_copy_data(Relation rel, const RelFileLocator *newrlocator)
|
|
1622
1647
|
{
|
|
1623
|
-
rel->rd_tableam->relation_copy_data(rel,
|
|
1648
|
+
rel->rd_tableam->relation_copy_data(rel, newrlocator);
|
|
1624
1649
|
}
|
|
1625
1650
|
|
|
1626
1651
|
/*
|
|
@@ -1633,7 +1658,7 @@ table_relation_copy_data(Relation rel, const RelFileNode *newrnode)
|
|
|
1633
1658
|
* in that index's order; if false and OldIndex is InvalidOid, no sorting is
|
|
1634
1659
|
* performed
|
|
1635
1660
|
* - OldIndex - see use_sort
|
|
1636
|
-
* - OldestXmin - computed by
|
|
1661
|
+
* - OldestXmin - computed by vacuum_get_cutoffs(), even when
|
|
1637
1662
|
* not needed for the relation's AM
|
|
1638
1663
|
* - *xid_cutoff - ditto
|
|
1639
1664
|
* - *multi_cutoff - ditto
|
|
@@ -1870,7 +1895,7 @@ table_relation_toast_am(Relation rel)
|
|
|
1870
1895
|
*
|
|
1871
1896
|
* toastrel is the relation in which the toasted value is stored.
|
|
1872
1897
|
*
|
|
1873
|
-
* valueid
|
|
1898
|
+
* valueid identifies which toast value is to be fetched. For the heap,
|
|
1874
1899
|
* this corresponds to the values stored in the chunk_id column.
|
|
1875
1900
|
*
|
|
1876
1901
|
* attrsize is the total size of the toast value to be fetched.
|
|
@@ -2029,7 +2054,7 @@ extern void simple_table_tuple_delete(Relation rel, ItemPointer tid,
|
|
|
2029
2054
|
Snapshot snapshot);
|
|
2030
2055
|
extern void simple_table_tuple_update(Relation rel, ItemPointer otid,
|
|
2031
2056
|
TupleTableSlot *slot, Snapshot snapshot,
|
|
2032
|
-
|
|
2057
|
+
TU_UpdateIndexes *update_indexes);
|
|
2033
2058
|
|
|
2034
2059
|
|
|
2035
2060
|
/* ----------------------------------------------------------------------------
|
|
@@ -2071,7 +2096,5 @@ extern void table_block_relation_estimate_size(Relation rel,
|
|
|
2071
2096
|
|
|
2072
2097
|
extern const TableAmRoutine *GetTableAmRoutine(Oid amhandler);
|
|
2073
2098
|
extern const TableAmRoutine *GetHeapamTableAmRoutine(void);
|
|
2074
|
-
extern bool check_default_table_access_method(char **newval, void **extra,
|
|
2075
|
-
GucSource source);
|
|
2076
2099
|
|
|
2077
2100
|
#endif /* TABLEAM_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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -60,6 +60,6 @@ extern void PrepareRedoAdd(char *buf, XLogRecPtr start_lsn,
|
|
|
60
60
|
XLogRecPtr end_lsn, RepOriginId origin_id);
|
|
61
61
|
extern void PrepareRedoRemove(TransactionId xid, bool giveWarning);
|
|
62
62
|
extern void restoreTwoPhaseData(void);
|
|
63
|
-
extern bool LookupGXact(const char *gid, XLogRecPtr
|
|
63
|
+
extern bool LookupGXact(const char *gid, XLogRecPtr prepare_end_lsn,
|
|
64
64
|
TimestampTz origin_prepare_timestamp);
|
|
65
65
|
#endif /* TWOPHASE_H */
|