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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* amapi.h
|
|
4
4
|
* API for Postgres index access methods.
|
|
5
5
|
*
|
|
6
|
-
* Copyright (c) 2015-
|
|
6
|
+
* Copyright (c) 2015-2023, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* src/include/access/amapi.h
|
|
9
9
|
*
|
|
@@ -54,6 +54,42 @@ typedef enum IndexAMProperty
|
|
|
54
54
|
AMPROP_CAN_INCLUDE
|
|
55
55
|
} IndexAMProperty;
|
|
56
56
|
|
|
57
|
+
/*
|
|
58
|
+
* We use lists of this struct type to keep track of both operators and
|
|
59
|
+
* support functions while building or adding to an opclass or opfamily.
|
|
60
|
+
* amadjustmembers functions receive lists of these structs, and are allowed
|
|
61
|
+
* to alter their "ref" fields.
|
|
62
|
+
*
|
|
63
|
+
* The "ref" fields define how the pg_amop or pg_amproc entry should depend
|
|
64
|
+
* on the associated objects (that is, which dependency type to use, and
|
|
65
|
+
* which opclass or opfamily it should depend on).
|
|
66
|
+
*
|
|
67
|
+
* If ref_is_hard is true, the entry will have a NORMAL dependency on the
|
|
68
|
+
* operator or support func, and an INTERNAL dependency on the opclass or
|
|
69
|
+
* opfamily. This forces the opclass or opfamily to be dropped if the
|
|
70
|
+
* operator or support func is dropped, and requires the CASCADE option
|
|
71
|
+
* to do so. Nor will ALTER OPERATOR FAMILY DROP be allowed. This is
|
|
72
|
+
* the right behavior for objects that are essential to an opclass.
|
|
73
|
+
*
|
|
74
|
+
* If ref_is_hard is false, the entry will have an AUTO dependency on the
|
|
75
|
+
* operator or support func, and also an AUTO dependency on the opclass or
|
|
76
|
+
* opfamily. This allows ALTER OPERATOR FAMILY DROP, and causes that to
|
|
77
|
+
* happen automatically if the operator or support func is dropped. This
|
|
78
|
+
* is the right behavior for inessential ("loose") objects.
|
|
79
|
+
*/
|
|
80
|
+
typedef struct OpFamilyMember
|
|
81
|
+
{
|
|
82
|
+
bool is_func; /* is this an operator, or support func? */
|
|
83
|
+
Oid object; /* operator or support func's OID */
|
|
84
|
+
int number; /* strategy or support func number */
|
|
85
|
+
Oid lefttype; /* lefttype */
|
|
86
|
+
Oid righttype; /* righttype */
|
|
87
|
+
Oid sortfamily; /* ordering operator's sort opfamily, or 0 */
|
|
88
|
+
bool ref_is_hard; /* hard or soft dependency? */
|
|
89
|
+
bool ref_is_family; /* is dependency on opclass or opfamily? */
|
|
90
|
+
Oid refobjid; /* OID of opclass or opfamily */
|
|
91
|
+
} OpFamilyMember;
|
|
92
|
+
|
|
57
93
|
|
|
58
94
|
/*
|
|
59
95
|
* Callback function signatures --- see indexam.sgml for more info.
|
|
@@ -74,6 +110,7 @@ typedef bool (*aminsert_function) (Relation indexRelation,
|
|
|
74
110
|
ItemPointer heap_tid,
|
|
75
111
|
Relation heapRelation,
|
|
76
112
|
IndexUniqueCheck checkUnique,
|
|
113
|
+
bool indexUnchanged,
|
|
77
114
|
struct IndexInfo *indexInfo);
|
|
78
115
|
|
|
79
116
|
/* bulk delete */
|
|
@@ -114,6 +151,12 @@ typedef char *(*ambuildphasename_function) (int64 phasenum);
|
|
|
114
151
|
/* validate definition of an opclass for this AM */
|
|
115
152
|
typedef bool (*amvalidate_function) (Oid opclassoid);
|
|
116
153
|
|
|
154
|
+
/* validate operators and support functions to be added to an opclass/family */
|
|
155
|
+
typedef void (*amadjustmembers_function) (Oid opfamilyoid,
|
|
156
|
+
Oid opclassoid,
|
|
157
|
+
List *operators,
|
|
158
|
+
List *functions);
|
|
159
|
+
|
|
117
160
|
/* prepare for index scan */
|
|
118
161
|
typedef IndexScanDesc (*ambeginscan_function) (Relation indexRelation,
|
|
119
162
|
int nkeys,
|
|
@@ -201,6 +244,8 @@ typedef struct IndexAmRoutine
|
|
|
201
244
|
bool amcaninclude;
|
|
202
245
|
/* does AM use maintenance_work_mem? */
|
|
203
246
|
bool amusemaintenanceworkmem;
|
|
247
|
+
/* does AM store tuple information only at block granularity? */
|
|
248
|
+
bool amsummarizing;
|
|
204
249
|
/* OR of parallel vacuum flags. See vacuum.h for flags. */
|
|
205
250
|
uint8 amparallelvacuumoptions;
|
|
206
251
|
/* type of data stored in index, or InvalidOid if variable */
|
|
@@ -224,6 +269,7 @@ typedef struct IndexAmRoutine
|
|
|
224
269
|
amproperty_function amproperty; /* can be NULL */
|
|
225
270
|
ambuildphasename_function ambuildphasename; /* can be NULL */
|
|
226
271
|
amvalidate_function amvalidate;
|
|
272
|
+
amadjustmembers_function amadjustmembers; /* can be NULL */
|
|
227
273
|
ambeginscan_function ambeginscan;
|
|
228
274
|
amrescan_function amrescan;
|
|
229
275
|
amgettuple_function amgettuple; /* can be NULL */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Definitions for PostgreSQL attribute mappings
|
|
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/attmap.h
|
|
@@ -42,9 +42,11 @@ extern void free_attrmap(AttrMap *map);
|
|
|
42
42
|
|
|
43
43
|
/* Conversion routines to build mappings */
|
|
44
44
|
extern AttrMap *build_attrmap_by_name(TupleDesc indesc,
|
|
45
|
-
TupleDesc outdesc
|
|
45
|
+
TupleDesc outdesc,
|
|
46
|
+
bool missing_ok);
|
|
46
47
|
extern AttrMap *build_attrmap_by_name_if_req(TupleDesc indesc,
|
|
47
|
-
TupleDesc outdesc
|
|
48
|
+
TupleDesc outdesc,
|
|
49
|
+
bool missing_ok);
|
|
48
50
|
extern AttrMap *build_attrmap_by_position(TupleDesc indesc,
|
|
49
51
|
TupleDesc outdesc,
|
|
50
52
|
const char *msg);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES attribute number 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/attnum.h
|
|
@@ -36,7 +36,7 @@ typedef int16 AttrNumber;
|
|
|
36
36
|
|
|
37
37
|
/*
|
|
38
38
|
* AttrNumberIsForUserDefinedAttr
|
|
39
|
-
* True iff the attribute number corresponds to
|
|
39
|
+
* True iff the attribute number corresponds to a user defined attribute.
|
|
40
40
|
*/
|
|
41
41
|
#define AttrNumberIsForUserDefinedAttr(attributeNumber) \
|
|
42
42
|
((bool) ((attributeNumber) > 0))
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* PostgreSQL transaction-commit-log manager
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/access/clog.h
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#define CLOG_H
|
|
13
13
|
|
|
14
14
|
#include "access/xlogreader.h"
|
|
15
|
+
#include "storage/sync.h"
|
|
15
16
|
#include "lib/stringinfo.h"
|
|
16
17
|
|
|
17
18
|
/*
|
|
@@ -45,11 +46,12 @@ extern void CLOGShmemInit(void);
|
|
|
45
46
|
extern void BootStrapCLOG(void);
|
|
46
47
|
extern void StartupCLOG(void);
|
|
47
48
|
extern void TrimCLOG(void);
|
|
48
|
-
extern void ShutdownCLOG(void);
|
|
49
49
|
extern void CheckPointCLOG(void);
|
|
50
50
|
extern void ExtendCLOG(TransactionId newestXact);
|
|
51
51
|
extern void TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid);
|
|
52
52
|
|
|
53
|
+
extern int clogsyncfiletag(const FileTag *ftag, char *path);
|
|
54
|
+
|
|
53
55
|
/* XLOG stuff */
|
|
54
56
|
#define CLOG_ZEROPAGE 0x00
|
|
55
57
|
#define CLOG_TRUNCATE 0x10
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* PostgreSQL commit timestamp manager
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/access/commit_ts.h
|
|
@@ -14,17 +14,14 @@
|
|
|
14
14
|
#include "access/xlog.h"
|
|
15
15
|
#include "datatype/timestamp.h"
|
|
16
16
|
#include "replication/origin.h"
|
|
17
|
-
#include "
|
|
17
|
+
#include "storage/sync.h"
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
extern PGDLLIMPORT bool track_commit_timestamp;
|
|
21
21
|
|
|
22
|
-
extern bool check_track_commit_timestamp(bool *newval, void **extra,
|
|
23
|
-
GucSource source);
|
|
24
|
-
|
|
25
22
|
extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids,
|
|
26
23
|
TransactionId *subxids, TimestampTz timestamp,
|
|
27
|
-
RepOriginId nodeid
|
|
24
|
+
RepOriginId nodeid);
|
|
28
25
|
extern bool TransactionIdGetCommitTsData(TransactionId xid,
|
|
29
26
|
TimestampTz *ts, RepOriginId *nodeid);
|
|
30
27
|
extern TransactionId GetLatestCommitTsData(TimestampTz *ts,
|
|
@@ -37,7 +34,6 @@ extern void BootStrapCommitTs(void);
|
|
|
37
34
|
extern void StartupCommitTs(void);
|
|
38
35
|
extern void CommitTsParameterChange(bool newvalue, bool oldvalue);
|
|
39
36
|
extern void CompleteCommitTsInitialization(void);
|
|
40
|
-
extern void ShutdownCommitTs(void);
|
|
41
37
|
extern void CheckPointCommitTs(void);
|
|
42
38
|
extern void ExtendCommitTs(TransactionId newestXact);
|
|
43
39
|
extern void TruncateCommitTs(TransactionId oldestXact);
|
|
@@ -45,10 +41,11 @@ extern void SetCommitTsLimit(TransactionId oldestXact,
|
|
|
45
41
|
TransactionId newestXact);
|
|
46
42
|
extern void AdvanceOldestCommitTsXid(TransactionId oldestXact);
|
|
47
43
|
|
|
44
|
+
extern int committssyncfiletag(const FileTag *ftag, char *path);
|
|
45
|
+
|
|
48
46
|
/* XLOG stuff */
|
|
49
47
|
#define COMMIT_TS_ZEROPAGE 0x00
|
|
50
48
|
#define COMMIT_TS_TRUNCATE 0x10
|
|
51
|
-
#define COMMIT_TS_SETTS 0x20
|
|
52
49
|
|
|
53
50
|
typedef struct xl_commit_ts_set
|
|
54
51
|
{
|
|
@@ -56,7 +53,7 @@ typedef struct xl_commit_ts_set
|
|
|
56
53
|
RepOriginId nodeid;
|
|
57
54
|
TransactionId mainxid;
|
|
58
55
|
/* subxact Xids follow */
|
|
59
|
-
}
|
|
56
|
+
} xl_commit_ts_set;
|
|
60
57
|
|
|
61
58
|
#define SizeOfCommitTsSet (offsetof(xl_commit_ts_set, mainxid) + \
|
|
62
59
|
sizeof(TransactionId))
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* detoast.h
|
|
4
4
|
* Access to compressed and external varlena values.
|
|
5
5
|
*
|
|
6
|
-
* Copyright (c) 2000-
|
|
6
|
+
* Copyright (c) 2000-2023, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* src/include/access/detoast.h
|
|
9
9
|
*
|
|
@@ -12,16 +12,6 @@
|
|
|
12
12
|
#ifndef DETOAST_H
|
|
13
13
|
#define DETOAST_H
|
|
14
14
|
|
|
15
|
-
/*
|
|
16
|
-
* Testing whether an externally-stored value is compressed now requires
|
|
17
|
-
* comparing extsize (the actual length of the external data) to rawsize
|
|
18
|
-
* (the original uncompressed datum's size). The latter includes VARHDRSZ
|
|
19
|
-
* overhead, the former doesn't. We never use compression unless it actually
|
|
20
|
-
* saves space, so we expect either equality or less-than.
|
|
21
|
-
*/
|
|
22
|
-
#define VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) \
|
|
23
|
-
((toast_pointer).va_extsize < (toast_pointer).va_rawsize - VARHDRSZ)
|
|
24
|
-
|
|
25
15
|
/*
|
|
26
16
|
* Macro to fetch the possibly-unaligned contents of an EXTERNAL datum
|
|
27
17
|
* into a local "struct varatt_external" toast pointer. This should be
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES generalized index 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/genam.h
|
|
@@ -38,12 +38,13 @@ typedef struct IndexBuildResult
|
|
|
38
38
|
*
|
|
39
39
|
* num_heap_tuples is accurate only when estimated_count is false;
|
|
40
40
|
* otherwise it's just an estimate (currently, the estimate is the
|
|
41
|
-
* prior value of the relation's pg_class.reltuples field
|
|
42
|
-
* always just be an estimate during ambulkdelete.
|
|
41
|
+
* prior value of the relation's pg_class.reltuples field, so it could
|
|
42
|
+
* even be -1). It will always just be an estimate during ambulkdelete.
|
|
43
43
|
*/
|
|
44
44
|
typedef struct IndexVacuumInfo
|
|
45
45
|
{
|
|
46
46
|
Relation index; /* the index being vacuumed */
|
|
47
|
+
Relation heaprel; /* the heap relation the index belongs to */
|
|
47
48
|
bool analyze_only; /* ANALYZE (without any actual vacuum) */
|
|
48
49
|
bool report_progress; /* emit progress.h status reports */
|
|
49
50
|
bool estimated_count; /* num_heap_tuples is an estimate */
|
|
@@ -63,20 +64,22 @@ typedef struct IndexVacuumInfo
|
|
|
63
64
|
* of which this is just the first field; this provides a way for ambulkdelete
|
|
64
65
|
* to communicate additional private data to amvacuumcleanup.
|
|
65
66
|
*
|
|
66
|
-
* Note:
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
67
|
+
* Note: pages_newly_deleted is the number of pages in the index that were
|
|
68
|
+
* deleted by the current vacuum operation. pages_deleted and pages_free
|
|
69
|
+
* refer to free space within the index file.
|
|
70
|
+
*
|
|
71
|
+
* Note: Some index AMs may compute num_index_tuples by reference to
|
|
72
|
+
* num_heap_tuples, in which case they should copy the estimated_count field
|
|
73
|
+
* from IndexVacuumInfo.
|
|
71
74
|
*/
|
|
72
75
|
typedef struct IndexBulkDeleteResult
|
|
73
76
|
{
|
|
74
77
|
BlockNumber num_pages; /* pages remaining in index */
|
|
75
|
-
BlockNumber pages_removed; /* # removed during vacuum operation */
|
|
76
78
|
bool estimated_count; /* num_index_tuples is an estimate */
|
|
77
79
|
double num_index_tuples; /* tuples remaining */
|
|
78
80
|
double tuples_removed; /* # removed during vacuum operation */
|
|
79
|
-
BlockNumber
|
|
81
|
+
BlockNumber pages_newly_deleted; /* # pages marked deleted by us */
|
|
82
|
+
BlockNumber pages_deleted; /* # pages marked deleted (could be by us) */
|
|
80
83
|
BlockNumber pages_free; /* # pages available for reuse */
|
|
81
84
|
} IndexBulkDeleteResult;
|
|
82
85
|
|
|
@@ -143,6 +146,7 @@ extern bool index_insert(Relation indexRelation,
|
|
|
143
146
|
ItemPointer heap_t_ctid,
|
|
144
147
|
Relation heapRelation,
|
|
145
148
|
IndexUniqueCheck checkUnique,
|
|
149
|
+
bool indexUnchanged,
|
|
146
150
|
struct IndexInfo *indexInfo);
|
|
147
151
|
|
|
148
152
|
extern IndexScanDesc index_beginscan(Relation heapRelation,
|
|
@@ -158,9 +162,10 @@ extern void index_rescan(IndexScanDesc scan,
|
|
|
158
162
|
extern void index_endscan(IndexScanDesc scan);
|
|
159
163
|
extern void index_markpos(IndexScanDesc scan);
|
|
160
164
|
extern void index_restrpos(IndexScanDesc scan);
|
|
161
|
-
extern Size index_parallelscan_estimate(Relation
|
|
162
|
-
extern void index_parallelscan_initialize(Relation
|
|
163
|
-
Snapshot snapshot,
|
|
165
|
+
extern Size index_parallelscan_estimate(Relation indexRelation, Snapshot snapshot);
|
|
166
|
+
extern void index_parallelscan_initialize(Relation heapRelation,
|
|
167
|
+
Relation indexRelation, Snapshot snapshot,
|
|
168
|
+
ParallelIndexScanDesc target);
|
|
164
169
|
extern void index_parallelrescan(IndexScanDesc scan);
|
|
165
170
|
extern IndexScanDesc index_beginscan_parallel(Relation heaprel,
|
|
166
171
|
Relation indexrel, int nkeys, int norderbys,
|
|
@@ -174,11 +179,11 @@ extern bool index_getnext_slot(IndexScanDesc scan, ScanDirection direction,
|
|
|
174
179
|
extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap);
|
|
175
180
|
|
|
176
181
|
extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info,
|
|
177
|
-
IndexBulkDeleteResult *
|
|
182
|
+
IndexBulkDeleteResult *istat,
|
|
178
183
|
IndexBulkDeleteCallback callback,
|
|
179
184
|
void *callback_state);
|
|
180
185
|
extern IndexBulkDeleteResult *index_vacuum_cleanup(IndexVacuumInfo *info,
|
|
181
|
-
IndexBulkDeleteResult *
|
|
186
|
+
IndexBulkDeleteResult *istat);
|
|
182
187
|
extern bool index_can_return(Relation indexRelation, int attno);
|
|
183
188
|
extern RegProcedure index_getprocid(Relation irel, AttrNumber attnum,
|
|
184
189
|
uint16 procnum);
|
|
@@ -188,7 +193,7 @@ extern void index_store_float8_orderby_distances(IndexScanDesc scan,
|
|
|
188
193
|
Oid *orderByTypes,
|
|
189
194
|
IndexOrderByDistance *distances,
|
|
190
195
|
bool recheckOrderBy);
|
|
191
|
-
extern bytea *index_opclass_options(Relation
|
|
196
|
+
extern bytea *index_opclass_options(Relation indrel, AttrNumber attnum,
|
|
192
197
|
Datum attoptions, bool validate);
|
|
193
198
|
|
|
194
199
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* gin.h
|
|
3
3
|
* Public header file for Generalized Inverted Index access method.
|
|
4
4
|
*
|
|
5
|
-
* Copyright (c) 2006-
|
|
5
|
+
* Copyright (c) 2006-2023, PostgreSQL Global Development Group
|
|
6
6
|
*
|
|
7
7
|
* src/include/access/gin.h
|
|
8
8
|
*--------------------------------------------------------------------------
|
|
@@ -57,18 +57,31 @@ typedef struct GinStatsData
|
|
|
57
57
|
*/
|
|
58
58
|
typedef char GinTernaryValue;
|
|
59
59
|
|
|
60
|
+
StaticAssertDecl(sizeof(GinTernaryValue) == sizeof(bool),
|
|
61
|
+
"sizes of GinTernaryValue and bool are not equal");
|
|
62
|
+
|
|
60
63
|
#define GIN_FALSE 0 /* item is not present / does not match */
|
|
61
64
|
#define GIN_TRUE 1 /* item is present / matches */
|
|
62
65
|
#define GIN_MAYBE 2 /* don't know if item is present / don't know
|
|
63
66
|
* if matches */
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
static inline GinTernaryValue
|
|
69
|
+
DatumGetGinTernaryValue(Datum X)
|
|
70
|
+
{
|
|
71
|
+
return (GinTernaryValue) X;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static inline Datum
|
|
75
|
+
GinTernaryValueGetDatum(GinTernaryValue X)
|
|
76
|
+
{
|
|
77
|
+
return (Datum) X;
|
|
78
|
+
}
|
|
79
|
+
|
|
67
80
|
#define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x)
|
|
68
81
|
|
|
69
82
|
/* GUC parameters */
|
|
70
83
|
extern PGDLLIMPORT int GinFuzzySearchLimit;
|
|
71
|
-
extern int
|
|
84
|
+
extern PGDLLIMPORT int gin_pending_list_limit;
|
|
72
85
|
|
|
73
86
|
/* ginutil.c */
|
|
74
87
|
extern void ginGetStats(Relation index, GinStatsData *stats);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES heap tuple 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/htup.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES heap tuple header 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/htup_details.h
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
#include "access/tupdesc.h"
|
|
20
20
|
#include "access/tupmacs.h"
|
|
21
21
|
#include "storage/bufpage.h"
|
|
22
|
+
#include "varatt.h"
|
|
22
23
|
|
|
23
24
|
/*
|
|
24
25
|
* MaxTupleAttributeNumber limits the number of (user) columns in a tuple.
|
|
@@ -191,7 +192,7 @@ struct HeapTupleHeaderData
|
|
|
191
192
|
#define HEAP_HASEXTERNAL 0x0004 /* has external stored attribute(s) */
|
|
192
193
|
#define HEAP_HASOID_OLD 0x0008 /* has an object-id field */
|
|
193
194
|
#define HEAP_XMAX_KEYSHR_LOCK 0x0010 /* xmax is a key-shared locker */
|
|
194
|
-
#define HEAP_COMBOCID 0x0020 /* t_cid is a combo
|
|
195
|
+
#define HEAP_COMBOCID 0x0020 /* t_cid is a combo CID */
|
|
195
196
|
#define HEAP_XMAX_EXCL_LOCK 0x0040 /* xmax is exclusive locker */
|
|
196
197
|
#define HEAP_XMAX_LOCK_ONLY 0x0080 /* xmax, if valid, is only a locker */
|
|
197
198
|
|
|
@@ -426,6 +427,9 @@ do { \
|
|
|
426
427
|
(tup)->t_choice.t_heap.t_field3.t_xvac = (xid); \
|
|
427
428
|
} while (0)
|
|
428
429
|
|
|
430
|
+
StaticAssertDecl(MaxOffsetNumber < SpecTokenOffsetNumber,
|
|
431
|
+
"invalid speculative token constant");
|
|
432
|
+
|
|
429
433
|
#define HeapTupleHeaderIsSpeculative(tup) \
|
|
430
434
|
( \
|
|
431
435
|
(ItemPointerGetOffsetNumberNoCheck(&(tup)->t_ctid) == SpecTokenOffsetNumber) \
|
|
@@ -443,11 +447,10 @@ do { \
|
|
|
443
447
|
)
|
|
444
448
|
|
|
445
449
|
#define HeapTupleHeaderIndicatesMovedPartitions(tup) \
|
|
446
|
-
(
|
|
447
|
-
ItemPointerGetBlockNumberNoCheck(&(tup)->t_ctid) == MovedPartitionsBlockNumber)
|
|
450
|
+
ItemPointerIndicatesMovedPartitions(&(tup)->t_ctid)
|
|
448
451
|
|
|
449
452
|
#define HeapTupleHeaderSetMovedPartitions(tup) \
|
|
450
|
-
|
|
453
|
+
ItemPointerSetMovedPartitions(&(tup)->t_ctid)
|
|
451
454
|
|
|
452
455
|
#define HeapTupleHeaderGetDatumLength(tup) \
|
|
453
456
|
VARSIZE(tup)
|
|
@@ -691,88 +694,6 @@ struct MinimalTupleData
|
|
|
691
694
|
#define HeapTupleClearHeapOnly(tuple) \
|
|
692
695
|
HeapTupleHeaderClearHeapOnly((tuple)->t_data)
|
|
693
696
|
|
|
694
|
-
|
|
695
|
-
/* ----------------
|
|
696
|
-
* fastgetattr
|
|
697
|
-
*
|
|
698
|
-
* Fetch a user attribute's value as a Datum (might be either a
|
|
699
|
-
* value, or a pointer into the data area of the tuple).
|
|
700
|
-
*
|
|
701
|
-
* This must not be used when a system attribute might be requested.
|
|
702
|
-
* Furthermore, the passed attnum MUST be valid. Use heap_getattr()
|
|
703
|
-
* instead, if in doubt.
|
|
704
|
-
*
|
|
705
|
-
* This gets called many times, so we macro the cacheable and NULL
|
|
706
|
-
* lookups, and call nocachegetattr() for the rest.
|
|
707
|
-
* ----------------
|
|
708
|
-
*/
|
|
709
|
-
|
|
710
|
-
#if !defined(DISABLE_COMPLEX_MACRO)
|
|
711
|
-
|
|
712
|
-
#define fastgetattr(tup, attnum, tupleDesc, isnull) \
|
|
713
|
-
( \
|
|
714
|
-
AssertMacro((attnum) > 0), \
|
|
715
|
-
(*(isnull) = false), \
|
|
716
|
-
HeapTupleNoNulls(tup) ? \
|
|
717
|
-
( \
|
|
718
|
-
TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \
|
|
719
|
-
( \
|
|
720
|
-
fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \
|
|
721
|
-
(char *) (tup)->t_data + (tup)->t_data->t_hoff + \
|
|
722
|
-
TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff)\
|
|
723
|
-
) \
|
|
724
|
-
: \
|
|
725
|
-
nocachegetattr((tup), (attnum), (tupleDesc)) \
|
|
726
|
-
) \
|
|
727
|
-
: \
|
|
728
|
-
( \
|
|
729
|
-
att_isnull((attnum)-1, (tup)->t_data->t_bits) ? \
|
|
730
|
-
( \
|
|
731
|
-
(*(isnull) = true), \
|
|
732
|
-
(Datum)NULL \
|
|
733
|
-
) \
|
|
734
|
-
: \
|
|
735
|
-
( \
|
|
736
|
-
nocachegetattr((tup), (attnum), (tupleDesc)) \
|
|
737
|
-
) \
|
|
738
|
-
) \
|
|
739
|
-
)
|
|
740
|
-
#else /* defined(DISABLE_COMPLEX_MACRO) */
|
|
741
|
-
|
|
742
|
-
extern Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
|
|
743
|
-
bool *isnull);
|
|
744
|
-
#endif /* defined(DISABLE_COMPLEX_MACRO) */
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
/* ----------------
|
|
748
|
-
* heap_getattr
|
|
749
|
-
*
|
|
750
|
-
* Extract an attribute of a heap tuple and return it as a Datum.
|
|
751
|
-
* This works for either system or user attributes. The given attnum
|
|
752
|
-
* is properly range-checked.
|
|
753
|
-
*
|
|
754
|
-
* If the field in question has a NULL value, we return a zero Datum
|
|
755
|
-
* and set *isnull == true. Otherwise, we set *isnull == false.
|
|
756
|
-
*
|
|
757
|
-
* <tup> is the pointer to the heap tuple. <attnum> is the attribute
|
|
758
|
-
* number of the column (field) caller wants. <tupleDesc> is a
|
|
759
|
-
* pointer to the structure describing the row and all its fields.
|
|
760
|
-
* ----------------
|
|
761
|
-
*/
|
|
762
|
-
#define heap_getattr(tup, attnum, tupleDesc, isnull) \
|
|
763
|
-
( \
|
|
764
|
-
((attnum) > 0) ? \
|
|
765
|
-
( \
|
|
766
|
-
((attnum) > (int) HeapTupleHeaderGetNatts((tup)->t_data)) ? \
|
|
767
|
-
getmissingattr((tupleDesc), (attnum), (isnull)) \
|
|
768
|
-
: \
|
|
769
|
-
fastgetattr((tup), (attnum), (tupleDesc), (isnull)) \
|
|
770
|
-
) \
|
|
771
|
-
: \
|
|
772
|
-
heap_getsysattr((tup), (attnum), (tupleDesc), (isnull)) \
|
|
773
|
-
)
|
|
774
|
-
|
|
775
|
-
|
|
776
697
|
/* prototypes for functions in common/heaptuple.c */
|
|
777
698
|
extern Size heap_compute_data_size(TupleDesc tupleDesc,
|
|
778
699
|
Datum *values, bool *isnull);
|
|
@@ -782,7 +703,7 @@ extern void heap_fill_tuple(TupleDesc tupleDesc,
|
|
|
782
703
|
uint16 *infomask, bits8 *bit);
|
|
783
704
|
extern bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc);
|
|
784
705
|
extern Datum nocachegetattr(HeapTuple tup, int attnum,
|
|
785
|
-
TupleDesc
|
|
706
|
+
TupleDesc tupleDesc);
|
|
786
707
|
extern Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
|
|
787
708
|
bool *isnull);
|
|
788
709
|
extern Datum getmissingattr(TupleDesc tupleDesc,
|
|
@@ -816,4 +737,75 @@ extern size_t varsize_any(void *p);
|
|
|
816
737
|
extern HeapTuple heap_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc);
|
|
817
738
|
extern MinimalTuple minimal_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc);
|
|
818
739
|
|
|
740
|
+
#ifndef FRONTEND
|
|
741
|
+
/*
|
|
742
|
+
* fastgetattr
|
|
743
|
+
* Fetch a user attribute's value as a Datum (might be either a
|
|
744
|
+
* value, or a pointer into the data area of the tuple).
|
|
745
|
+
*
|
|
746
|
+
* This must not be used when a system attribute might be requested.
|
|
747
|
+
* Furthermore, the passed attnum MUST be valid. Use heap_getattr()
|
|
748
|
+
* instead, if in doubt.
|
|
749
|
+
*
|
|
750
|
+
* This gets called many times, so we macro the cacheable and NULL
|
|
751
|
+
* lookups, and call nocachegetattr() for the rest.
|
|
752
|
+
*/
|
|
753
|
+
static inline Datum
|
|
754
|
+
fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
|
|
755
|
+
{
|
|
756
|
+
Assert(attnum > 0);
|
|
757
|
+
|
|
758
|
+
*isnull = false;
|
|
759
|
+
if (HeapTupleNoNulls(tup))
|
|
760
|
+
{
|
|
761
|
+
Form_pg_attribute att;
|
|
762
|
+
|
|
763
|
+
att = TupleDescAttr(tupleDesc, attnum - 1);
|
|
764
|
+
if (att->attcacheoff >= 0)
|
|
765
|
+
return fetchatt(att, (char *) tup->t_data + tup->t_data->t_hoff +
|
|
766
|
+
att->attcacheoff);
|
|
767
|
+
else
|
|
768
|
+
return nocachegetattr(tup, attnum, tupleDesc);
|
|
769
|
+
}
|
|
770
|
+
else
|
|
771
|
+
{
|
|
772
|
+
if (att_isnull(attnum - 1, tup->t_data->t_bits))
|
|
773
|
+
{
|
|
774
|
+
*isnull = true;
|
|
775
|
+
return (Datum) NULL;
|
|
776
|
+
}
|
|
777
|
+
else
|
|
778
|
+
return nocachegetattr(tup, attnum, tupleDesc);
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
/*
|
|
783
|
+
* heap_getattr
|
|
784
|
+
* Extract an attribute of a heap tuple and return it as a Datum.
|
|
785
|
+
* This works for either system or user attributes. The given attnum
|
|
786
|
+
* is properly range-checked.
|
|
787
|
+
*
|
|
788
|
+
* If the field in question has a NULL value, we return a zero Datum
|
|
789
|
+
* and set *isnull == true. Otherwise, we set *isnull == false.
|
|
790
|
+
*
|
|
791
|
+
* <tup> is the pointer to the heap tuple. <attnum> is the attribute
|
|
792
|
+
* number of the column (field) caller wants. <tupleDesc> is a
|
|
793
|
+
* pointer to the structure describing the row and all its fields.
|
|
794
|
+
*
|
|
795
|
+
*/
|
|
796
|
+
static inline Datum
|
|
797
|
+
heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
|
|
798
|
+
{
|
|
799
|
+
if (attnum > 0)
|
|
800
|
+
{
|
|
801
|
+
if (attnum > (int) HeapTupleHeaderGetNatts(tup->t_data))
|
|
802
|
+
return getmissingattr(tupleDesc, attnum, isnull);
|
|
803
|
+
else
|
|
804
|
+
return fastgetattr(tup, attnum, tupleDesc, isnull);
|
|
805
|
+
}
|
|
806
|
+
else
|
|
807
|
+
return heap_getsysattr(tup, attnum, tupleDesc, isnull);
|
|
808
|
+
}
|
|
809
|
+
#endif /* FRONTEND */
|
|
810
|
+
|
|
819
811
|
#endif /* HTUP_DETAILS_H */
|