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
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* and related modules.
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 1996-
|
|
8
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
10
|
*
|
|
11
11
|
* src/include/executor/execdesc.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* support for the POSTGRES executor module
|
|
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/executor/executor.h
|
|
@@ -36,6 +36,11 @@
|
|
|
36
36
|
* of startup should occur. However, error checks (such as permission checks)
|
|
37
37
|
* should be performed.
|
|
38
38
|
*
|
|
39
|
+
* EXPLAIN_GENERIC can only be used together with EXPLAIN_ONLY. It indicates
|
|
40
|
+
* that a generic plan is being shown using EXPLAIN (GENERIC_PLAN), which
|
|
41
|
+
* means that missing parameter values must be tolerated. Currently, the only
|
|
42
|
+
* effect is to suppress execution-time partition pruning.
|
|
43
|
+
*
|
|
39
44
|
* REWIND indicates that the plan node should try to efficiently support
|
|
40
45
|
* rescans without parameter changes. (Nodes must support ExecReScan calls
|
|
41
46
|
* in any case, but if this flag was not given, they are at liberty to do it
|
|
@@ -52,13 +57,18 @@
|
|
|
52
57
|
* AfterTriggerBeginQuery/AfterTriggerEndQuery. This does not necessarily
|
|
53
58
|
* mean that the plan can't queue any AFTER triggers; just that the caller
|
|
54
59
|
* is responsible for there being a trigger context for them to be queued in.
|
|
60
|
+
*
|
|
61
|
+
* WITH_NO_DATA indicates that we are performing REFRESH MATERIALIZED VIEW
|
|
62
|
+
* ... WITH NO DATA. Currently, the only effect is to suppress errors about
|
|
63
|
+
* scanning unpopulated materialized views.
|
|
55
64
|
*/
|
|
56
|
-
#define EXEC_FLAG_EXPLAIN_ONLY
|
|
57
|
-
#define
|
|
58
|
-
#define
|
|
59
|
-
#define
|
|
60
|
-
#define
|
|
61
|
-
#define
|
|
65
|
+
#define EXEC_FLAG_EXPLAIN_ONLY 0x0001 /* EXPLAIN, no ANALYZE */
|
|
66
|
+
#define EXEC_FLAG_EXPLAIN_GENERIC 0x0002 /* EXPLAIN (GENERIC_PLAN) */
|
|
67
|
+
#define EXEC_FLAG_REWIND 0x0004 /* need efficient rescan */
|
|
68
|
+
#define EXEC_FLAG_BACKWARD 0x0008 /* need backward scan */
|
|
69
|
+
#define EXEC_FLAG_MARK 0x0010 /* need mark/restore */
|
|
70
|
+
#define EXEC_FLAG_SKIP_TRIGGERS 0x0020 /* skip AfterTrigger setup */
|
|
71
|
+
#define EXEC_FLAG_WITH_NO_DATA 0x0040 /* REFRESH ... WITH NO DATA */
|
|
62
72
|
|
|
63
73
|
|
|
64
74
|
/* Hook for plugins to get control in ExecutorStart() */
|
|
@@ -80,8 +90,10 @@ extern PGDLLIMPORT ExecutorFinish_hook_type ExecutorFinish_hook;
|
|
|
80
90
|
typedef void (*ExecutorEnd_hook_type) (QueryDesc *queryDesc);
|
|
81
91
|
extern PGDLLIMPORT ExecutorEnd_hook_type ExecutorEnd_hook;
|
|
82
92
|
|
|
83
|
-
/* Hook for plugins to get control in
|
|
84
|
-
typedef bool (*ExecutorCheckPerms_hook_type) (List
|
|
93
|
+
/* Hook for plugins to get control in ExecCheckPermissions() */
|
|
94
|
+
typedef bool (*ExecutorCheckPerms_hook_type) (List *rangeTable,
|
|
95
|
+
List *rtePermInfos,
|
|
96
|
+
bool ereport_on_violation);
|
|
85
97
|
extern PGDLLIMPORT ExecutorCheckPerms_hook_type ExecutorCheckPerms_hook;
|
|
86
98
|
|
|
87
99
|
|
|
@@ -156,9 +168,6 @@ extern void ResetTupleHashTable(TupleHashTable hashtable);
|
|
|
156
168
|
*/
|
|
157
169
|
extern JunkFilter *ExecInitJunkFilter(List *targetList,
|
|
158
170
|
TupleTableSlot *slot);
|
|
159
|
-
extern JunkFilter *ExecInitJunkFilterInsertion(List *targetList,
|
|
160
|
-
TupleDesc cleanTupType,
|
|
161
|
-
TupleTableSlot *slot);
|
|
162
171
|
extern JunkFilter *ExecInitJunkFilterConversion(List *targetList,
|
|
163
172
|
TupleDesc cleanTupType,
|
|
164
173
|
TupleTableSlot *slot);
|
|
@@ -166,11 +175,24 @@ extern AttrNumber ExecFindJunkAttribute(JunkFilter *junkfilter,
|
|
|
166
175
|
const char *attrName);
|
|
167
176
|
extern AttrNumber ExecFindJunkAttributeInTlist(List *targetlist,
|
|
168
177
|
const char *attrName);
|
|
169
|
-
extern Datum ExecGetJunkAttribute(TupleTableSlot *slot, AttrNumber attno,
|
|
170
|
-
bool *isNull);
|
|
171
178
|
extern TupleTableSlot *ExecFilterJunk(JunkFilter *junkfilter,
|
|
172
179
|
TupleTableSlot *slot);
|
|
173
180
|
|
|
181
|
+
/*
|
|
182
|
+
* ExecGetJunkAttribute
|
|
183
|
+
*
|
|
184
|
+
* Given a junk filter's input tuple (slot) and a junk attribute's number
|
|
185
|
+
* previously found by ExecFindJunkAttribute, extract & return the value and
|
|
186
|
+
* isNull flag of the attribute.
|
|
187
|
+
*/
|
|
188
|
+
#ifndef FRONTEND
|
|
189
|
+
static inline Datum
|
|
190
|
+
ExecGetJunkAttribute(TupleTableSlot *slot, AttrNumber attno, bool *isNull)
|
|
191
|
+
{
|
|
192
|
+
Assert(attno > 0);
|
|
193
|
+
return slot_getattr(slot, attno, isNull);
|
|
194
|
+
}
|
|
195
|
+
#endif
|
|
174
196
|
|
|
175
197
|
/*
|
|
176
198
|
* prototypes from functions in execMain.c
|
|
@@ -186,15 +208,17 @@ extern void standard_ExecutorFinish(QueryDesc *queryDesc);
|
|
|
186
208
|
extern void ExecutorEnd(QueryDesc *queryDesc);
|
|
187
209
|
extern void standard_ExecutorEnd(QueryDesc *queryDesc);
|
|
188
210
|
extern void ExecutorRewind(QueryDesc *queryDesc);
|
|
189
|
-
extern bool
|
|
211
|
+
extern bool ExecCheckPermissions(List *rangeTable,
|
|
212
|
+
List *rteperminfos, bool ereport_on_violation);
|
|
190
213
|
extern void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation);
|
|
191
214
|
extern void InitResultRelInfo(ResultRelInfo *resultRelInfo,
|
|
192
215
|
Relation resultRelationDesc,
|
|
193
216
|
Index resultRelationIndex,
|
|
194
217
|
ResultRelInfo *partition_root_rri,
|
|
195
218
|
int instrument_options);
|
|
196
|
-
extern ResultRelInfo *ExecGetTriggerResultRel(EState *estate, Oid relid
|
|
197
|
-
|
|
219
|
+
extern ResultRelInfo *ExecGetTriggerResultRel(EState *estate, Oid relid,
|
|
220
|
+
ResultRelInfo *rootRelInfo);
|
|
221
|
+
extern List *ExecGetAncestorResultRels(EState *estate, ResultRelInfo *resultRelInfo);
|
|
198
222
|
extern void ExecConstraints(ResultRelInfo *resultRelInfo,
|
|
199
223
|
TupleTableSlot *slot, EState *estate);
|
|
200
224
|
extern bool ExecPartitionCheck(ResultRelInfo *resultRelInfo,
|
|
@@ -207,9 +231,10 @@ extern LockTupleMode ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo);
|
|
|
207
231
|
extern ExecRowMark *ExecFindRowMark(EState *estate, Index rti, bool missing_ok);
|
|
208
232
|
extern ExecAuxRowMark *ExecBuildAuxRowMark(ExecRowMark *erm, List *targetlist);
|
|
209
233
|
extern TupleTableSlot *EvalPlanQual(EPQState *epqstate, Relation relation,
|
|
210
|
-
Index rti, TupleTableSlot *
|
|
234
|
+
Index rti, TupleTableSlot *inputslot);
|
|
211
235
|
extern void EvalPlanQualInit(EPQState *epqstate, EState *parentestate,
|
|
212
|
-
Plan *subplan, List *auxrowmarks,
|
|
236
|
+
Plan *subplan, List *auxrowmarks,
|
|
237
|
+
int epqParam, List *resultRelations);
|
|
213
238
|
extern void EvalPlanQualSetPlan(EPQState *epqstate,
|
|
214
239
|
Plan *subplan, List *auxrowmarks);
|
|
215
240
|
extern TupleTableSlot *EvalPlanQualSlot(EPQState *epqstate,
|
|
@@ -228,7 +253,7 @@ extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags);
|
|
|
228
253
|
extern void ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function);
|
|
229
254
|
extern Node *MultiExecProcNode(PlanState *node);
|
|
230
255
|
extern void ExecEndNode(PlanState *node);
|
|
231
|
-
extern
|
|
256
|
+
extern void ExecShutdownNode(PlanState *node);
|
|
232
257
|
extern void ExecSetTupleBound(int64 tuples_needed, PlanState *child_node);
|
|
233
258
|
|
|
234
259
|
|
|
@@ -266,11 +291,25 @@ extern ExprState *ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc,
|
|
|
266
291
|
const Oid *eqfunctions,
|
|
267
292
|
const Oid *collations,
|
|
268
293
|
PlanState *parent);
|
|
294
|
+
extern ExprState *ExecBuildParamSetEqual(TupleDesc desc,
|
|
295
|
+
const TupleTableSlotOps *lops,
|
|
296
|
+
const TupleTableSlotOps *rops,
|
|
297
|
+
const Oid *eqfunctions,
|
|
298
|
+
const Oid *collations,
|
|
299
|
+
const List *param_exprs,
|
|
300
|
+
PlanState *parent);
|
|
269
301
|
extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList,
|
|
270
302
|
ExprContext *econtext,
|
|
271
303
|
TupleTableSlot *slot,
|
|
272
304
|
PlanState *parent,
|
|
273
305
|
TupleDesc inputDesc);
|
|
306
|
+
extern ProjectionInfo *ExecBuildUpdateProjection(List *targetList,
|
|
307
|
+
bool evalTargetList,
|
|
308
|
+
List *targetColnos,
|
|
309
|
+
TupleDesc relDesc,
|
|
310
|
+
ExprContext *econtext,
|
|
311
|
+
TupleTableSlot *slot,
|
|
312
|
+
PlanState *parent);
|
|
274
313
|
extern ExprState *ExecPrepareExpr(Expr *node, EState *estate);
|
|
275
314
|
extern ExprState *ExecPrepareQual(List *qual, EState *estate);
|
|
276
315
|
extern ExprState *ExecPrepareCheck(List *qual, EState *estate);
|
|
@@ -407,7 +446,7 @@ ExecQualAndReset(ExprState *state, ExprContext *econtext)
|
|
|
407
446
|
}
|
|
408
447
|
#endif
|
|
409
448
|
|
|
410
|
-
extern bool ExecCheck(ExprState *state, ExprContext *
|
|
449
|
+
extern bool ExecCheck(ExprState *state, ExprContext *econtext);
|
|
411
450
|
|
|
412
451
|
/*
|
|
413
452
|
* prototypes from functions in execSRF.c
|
|
@@ -436,7 +475,7 @@ typedef bool (*ExecScanRecheckMtd) (ScanState *node, TupleTableSlot *slot);
|
|
|
436
475
|
extern TupleTableSlot *ExecScan(ScanState *node, ExecScanAccessMtd accessMtd,
|
|
437
476
|
ExecScanRecheckMtd recheckMtd);
|
|
438
477
|
extern void ExecAssignScanProjectionInfo(ScanState *node);
|
|
439
|
-
extern void ExecAssignScanProjectionInfoWithVarno(ScanState *node,
|
|
478
|
+
extern void ExecAssignScanProjectionInfoWithVarno(ScanState *node, int varno);
|
|
440
479
|
extern void ExecScanReScan(ScanState *node);
|
|
441
480
|
|
|
442
481
|
/*
|
|
@@ -448,7 +487,7 @@ extern void ExecInitResultSlot(PlanState *planstate,
|
|
|
448
487
|
extern void ExecInitResultTupleSlotTL(PlanState *planstate,
|
|
449
488
|
const TupleTableSlotOps *tts_ops);
|
|
450
489
|
extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate,
|
|
451
|
-
TupleDesc
|
|
490
|
+
TupleDesc tupledesc,
|
|
452
491
|
const TupleTableSlotOps *tts_ops);
|
|
453
492
|
extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate,
|
|
454
493
|
TupleDesc tupledesc,
|
|
@@ -529,7 +568,7 @@ extern const TupleTableSlotOps *ExecGetResultSlotOps(PlanState *planstate,
|
|
|
529
568
|
extern void ExecAssignProjectionInfo(PlanState *planstate,
|
|
530
569
|
TupleDesc inputDesc);
|
|
531
570
|
extern void ExecConditionalAssignProjectionInfo(PlanState *planstate,
|
|
532
|
-
TupleDesc inputDesc,
|
|
571
|
+
TupleDesc inputDesc, int varno);
|
|
533
572
|
extern void ExecFreeExprContext(PlanState *planstate);
|
|
534
573
|
extern void ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc);
|
|
535
574
|
extern void ExecCreateScanSlotFromOuterPlan(EState *estate,
|
|
@@ -540,7 +579,9 @@ extern bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid);
|
|
|
540
579
|
|
|
541
580
|
extern Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags);
|
|
542
581
|
|
|
543
|
-
extern void ExecInitRangeTable(EState *estate, List *rangeTable);
|
|
582
|
+
extern void ExecInitRangeTable(EState *estate, List *rangeTable, List *permInfos);
|
|
583
|
+
extern void ExecCloseRangeTableRelations(EState *estate);
|
|
584
|
+
extern void ExecCloseResultRelations(EState *estate);
|
|
544
585
|
|
|
545
586
|
static inline RangeTblEntry *
|
|
546
587
|
exec_rt_fetch(Index rti, EState *estate)
|
|
@@ -549,6 +590,8 @@ exec_rt_fetch(Index rti, EState *estate)
|
|
|
549
590
|
}
|
|
550
591
|
|
|
551
592
|
extern Relation ExecGetRangeTableRelation(EState *estate, Index rti);
|
|
593
|
+
extern void ExecInitResultRelation(EState *estate, ResultRelInfo *resultRelInfo,
|
|
594
|
+
Index rti);
|
|
552
595
|
|
|
553
596
|
extern int executor_errposition(EState *estate, int location);
|
|
554
597
|
|
|
@@ -570,7 +613,10 @@ extern int ExecCleanTargetListLength(List *targetlist);
|
|
|
570
613
|
extern TupleTableSlot *ExecGetTriggerOldSlot(EState *estate, ResultRelInfo *relInfo);
|
|
571
614
|
extern TupleTableSlot *ExecGetTriggerNewSlot(EState *estate, ResultRelInfo *relInfo);
|
|
572
615
|
extern TupleTableSlot *ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo);
|
|
616
|
+
extern TupleConversionMap *ExecGetChildToRootMap(ResultRelInfo *resultRelInfo);
|
|
617
|
+
extern TupleConversionMap *ExecGetRootToChildMap(ResultRelInfo *resultRelInfo, EState *estate);
|
|
573
618
|
|
|
619
|
+
extern Oid ExecGetResultRelCheckAsUser(ResultRelInfo *relInfo, EState *estate);
|
|
574
620
|
extern Bitmapset *ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate);
|
|
575
621
|
extern Bitmapset *ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate);
|
|
576
622
|
extern Bitmapset *ExecGetExtraUpdatedCols(ResultRelInfo *relinfo, EState *estate);
|
|
@@ -581,10 +627,16 @@ extern Bitmapset *ExecGetAllUpdatedCols(ResultRelInfo *relinfo, EState *estate);
|
|
|
581
627
|
*/
|
|
582
628
|
extern void ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative);
|
|
583
629
|
extern void ExecCloseIndices(ResultRelInfo *resultRelInfo);
|
|
584
|
-
extern List *ExecInsertIndexTuples(
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
630
|
+
extern List *ExecInsertIndexTuples(ResultRelInfo *resultRelInfo,
|
|
631
|
+
TupleTableSlot *slot, EState *estate,
|
|
632
|
+
bool update,
|
|
633
|
+
bool noDupErr,
|
|
634
|
+
bool *specConflict, List *arbiterIndexes,
|
|
635
|
+
bool onlySummarizing);
|
|
636
|
+
extern bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo,
|
|
637
|
+
TupleTableSlot *slot,
|
|
638
|
+
EState *estate, ItemPointer conflictTid,
|
|
639
|
+
List *arbiterIndexes);
|
|
588
640
|
extern void check_exclusion_constraint(Relation heap, Relation index,
|
|
589
641
|
IndexInfo *indexInfo,
|
|
590
642
|
ItemPointer tupleid,
|
|
@@ -601,14 +653,28 @@ extern bool RelationFindReplTupleByIndex(Relation rel, Oid idxoid,
|
|
|
601
653
|
extern bool RelationFindReplTupleSeq(Relation rel, LockTupleMode lockmode,
|
|
602
654
|
TupleTableSlot *searchslot, TupleTableSlot *outslot);
|
|
603
655
|
|
|
604
|
-
extern void ExecSimpleRelationInsert(
|
|
605
|
-
|
|
656
|
+
extern void ExecSimpleRelationInsert(ResultRelInfo *resultRelInfo,
|
|
657
|
+
EState *estate, TupleTableSlot *slot);
|
|
658
|
+
extern void ExecSimpleRelationUpdate(ResultRelInfo *resultRelInfo,
|
|
659
|
+
EState *estate, EPQState *epqstate,
|
|
606
660
|
TupleTableSlot *searchslot, TupleTableSlot *slot);
|
|
607
|
-
extern void ExecSimpleRelationDelete(
|
|
661
|
+
extern void ExecSimpleRelationDelete(ResultRelInfo *resultRelInfo,
|
|
662
|
+
EState *estate, EPQState *epqstate,
|
|
608
663
|
TupleTableSlot *searchslot);
|
|
609
664
|
extern void CheckCmdReplicaIdentity(Relation rel, CmdType cmd);
|
|
610
665
|
|
|
611
666
|
extern void CheckSubscriptionRelkind(char relkind, const char *nspname,
|
|
612
667
|
const char *relname);
|
|
613
668
|
|
|
669
|
+
/*
|
|
670
|
+
* prototypes from functions in nodeModifyTable.c
|
|
671
|
+
*/
|
|
672
|
+
extern TupleTableSlot *ExecGetUpdateNewTuple(ResultRelInfo *relinfo,
|
|
673
|
+
TupleTableSlot *planSlot,
|
|
674
|
+
TupleTableSlot *oldSlot);
|
|
675
|
+
extern ResultRelInfo *ExecLookupResultRelByOid(ModifyTableState *node,
|
|
676
|
+
Oid resultoid,
|
|
677
|
+
bool missing_ok,
|
|
678
|
+
bool update_cache);
|
|
679
|
+
|
|
614
680
|
#endif /* EXECUTOR_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Declarations for execution of SQL-language functions.
|
|
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/executor/functions.h
|
|
@@ -17,8 +17,22 @@
|
|
|
17
17
|
#include "nodes/execnodes.h"
|
|
18
18
|
#include "tcop/dest.h"
|
|
19
19
|
|
|
20
|
-
/*
|
|
21
|
-
|
|
20
|
+
/*
|
|
21
|
+
* Data structure needed by the parser callback hooks to resolve parameter
|
|
22
|
+
* references during parsing of a SQL function's body. This is separate from
|
|
23
|
+
* SQLFunctionCache since we sometimes do parsing separately from execution.
|
|
24
|
+
*/
|
|
25
|
+
typedef struct SQLFunctionParseInfo
|
|
26
|
+
{
|
|
27
|
+
char *fname; /* function's name */
|
|
28
|
+
int nargs; /* number of input arguments */
|
|
29
|
+
Oid *argtypes; /* resolved types of input arguments */
|
|
30
|
+
char **argnames; /* names of input arguments; NULL if none */
|
|
31
|
+
/* Note that argnames[i] can be NULL, if some args are unnamed */
|
|
32
|
+
Oid collation; /* function's input collation, if known */
|
|
33
|
+
} SQLFunctionParseInfo;
|
|
34
|
+
|
|
35
|
+
typedef SQLFunctionParseInfo *SQLFunctionParseInfoPtr;
|
|
22
36
|
|
|
23
37
|
extern Datum fmgr_sql(PG_FUNCTION_ARGS);
|
|
24
38
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* definitions for run-time statistics collection
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Copyright (c) 2001-
|
|
7
|
+
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
|
|
8
8
|
*
|
|
9
9
|
* src/include/executor/instrument.h
|
|
10
10
|
*
|
|
@@ -16,26 +16,40 @@
|
|
|
16
16
|
#include "portability/instr_time.h"
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
/*
|
|
20
|
+
* BufferUsage and WalUsage counters keep being incremented infinitely,
|
|
21
|
+
* i.e., must never be reset to zero, so that we can calculate how much
|
|
22
|
+
* the counters are incremented in an arbitrary period.
|
|
23
|
+
*/
|
|
19
24
|
typedef struct BufferUsage
|
|
20
25
|
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
instr_time blk_read_time; /* time spent reading */
|
|
32
|
-
instr_time blk_write_time; /* time spent writing */
|
|
26
|
+
int64 shared_blks_hit; /* # of shared buffer hits */
|
|
27
|
+
int64 shared_blks_read; /* # of shared disk blocks read */
|
|
28
|
+
int64 shared_blks_dirtied; /* # of shared blocks dirtied */
|
|
29
|
+
int64 shared_blks_written; /* # of shared disk blocks written */
|
|
30
|
+
int64 local_blks_hit; /* # of local buffer hits */
|
|
31
|
+
int64 local_blks_read; /* # of local disk blocks read */
|
|
32
|
+
int64 local_blks_dirtied; /* # of local blocks dirtied */
|
|
33
|
+
int64 local_blks_written; /* # of local disk blocks written */
|
|
34
|
+
int64 temp_blks_read; /* # of temp blocks read */
|
|
35
|
+
int64 temp_blks_written; /* # of temp blocks written */
|
|
36
|
+
instr_time blk_read_time; /* time spent reading blocks */
|
|
37
|
+
instr_time blk_write_time; /* time spent writing blocks */
|
|
38
|
+
instr_time temp_blk_read_time; /* time spent reading temp blocks */
|
|
39
|
+
instr_time temp_blk_write_time; /* time spent writing temp blocks */
|
|
33
40
|
} BufferUsage;
|
|
34
41
|
|
|
42
|
+
/*
|
|
43
|
+
* WalUsage tracks only WAL activity like WAL records generation that
|
|
44
|
+
* can be measured per query and is displayed by EXPLAIN command,
|
|
45
|
+
* pg_stat_statements extension, etc. It does not track other WAL activity
|
|
46
|
+
* like WAL writes that it's not worth measuring per query. That's tracked
|
|
47
|
+
* by WAL global statistics counters in WalStats, instead.
|
|
48
|
+
*/
|
|
35
49
|
typedef struct WalUsage
|
|
36
50
|
{
|
|
37
|
-
|
|
38
|
-
|
|
51
|
+
int64 wal_records; /* # of WAL records produced */
|
|
52
|
+
int64 wal_fpi; /* # of WAL full page images produced */
|
|
39
53
|
uint64 wal_bytes; /* size of WAL records produced */
|
|
40
54
|
} WalUsage;
|
|
41
55
|
|
|
@@ -55,6 +69,7 @@ typedef struct Instrumentation
|
|
|
55
69
|
bool need_timer; /* true if we need timer data */
|
|
56
70
|
bool need_bufusage; /* true if we need buffer usage data */
|
|
57
71
|
bool need_walusage; /* true if we need WAL usage data */
|
|
72
|
+
bool async_mode; /* true if node is in async mode */
|
|
58
73
|
/* Info about current plan cycle: */
|
|
59
74
|
bool running; /* true if we've completed first tuple */
|
|
60
75
|
instr_time starttime; /* start time of current iteration of node */
|
|
@@ -84,10 +99,12 @@ typedef struct WorkerInstrumentation
|
|
|
84
99
|
extern PGDLLIMPORT BufferUsage pgBufferUsage;
|
|
85
100
|
extern PGDLLIMPORT WalUsage pgWalUsage;
|
|
86
101
|
|
|
87
|
-
extern Instrumentation *InstrAlloc(int n, int instrument_options
|
|
102
|
+
extern Instrumentation *InstrAlloc(int n, int instrument_options,
|
|
103
|
+
bool async_mode);
|
|
88
104
|
extern void InstrInit(Instrumentation *instr, int instrument_options);
|
|
89
105
|
extern void InstrStartNode(Instrumentation *instr);
|
|
90
106
|
extern void InstrStopNode(Instrumentation *instr, double nTuples);
|
|
107
|
+
extern void InstrUpdateTupleCount(Instrumentation *instr, double nTuples);
|
|
91
108
|
extern void InstrEndLoop(Instrumentation *instr);
|
|
92
109
|
extern void InstrAggNode(Instrumentation *dst, Instrumentation *add);
|
|
93
110
|
extern void InstrStartParallelQuery(void);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* spi.h
|
|
4
4
|
* Server Programming Interface public declarations
|
|
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/executor/spi.h
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
#include "commands/trigger.h"
|
|
17
17
|
#include "lib/ilist.h"
|
|
18
|
-
#include "
|
|
18
|
+
#include "parser/parser.h"
|
|
19
19
|
#include "utils/portal.h"
|
|
20
20
|
|
|
21
21
|
|
|
@@ -33,6 +33,35 @@ typedef struct SPITupleTable
|
|
|
33
33
|
SubTransactionId subid; /* subxact in which tuptable was created */
|
|
34
34
|
} SPITupleTable;
|
|
35
35
|
|
|
36
|
+
/* Optional arguments for SPI_prepare_extended */
|
|
37
|
+
typedef struct SPIPrepareOptions
|
|
38
|
+
{
|
|
39
|
+
ParserSetupHook parserSetup;
|
|
40
|
+
void *parserSetupArg;
|
|
41
|
+
RawParseMode parseMode;
|
|
42
|
+
int cursorOptions;
|
|
43
|
+
} SPIPrepareOptions;
|
|
44
|
+
|
|
45
|
+
/* Optional arguments for SPI_execute[_plan]_extended */
|
|
46
|
+
typedef struct SPIExecuteOptions
|
|
47
|
+
{
|
|
48
|
+
ParamListInfo params;
|
|
49
|
+
bool read_only;
|
|
50
|
+
bool allow_nonatomic;
|
|
51
|
+
bool must_return_tuples;
|
|
52
|
+
uint64 tcount;
|
|
53
|
+
DestReceiver *dest;
|
|
54
|
+
ResourceOwner owner;
|
|
55
|
+
} SPIExecuteOptions;
|
|
56
|
+
|
|
57
|
+
/* Optional arguments for SPI_cursor_parse_open */
|
|
58
|
+
typedef struct SPIParseOpenOptions
|
|
59
|
+
{
|
|
60
|
+
ParamListInfo params;
|
|
61
|
+
int cursorOptions;
|
|
62
|
+
bool read_only;
|
|
63
|
+
} SPIParseOpenOptions;
|
|
64
|
+
|
|
36
65
|
/* Plans are opaque structs for standard users of SPI */
|
|
37
66
|
typedef struct _SPI_plan *SPIPlanPtr;
|
|
38
67
|
|
|
@@ -67,6 +96,7 @@ typedef struct _SPI_plan *SPIPlanPtr;
|
|
|
67
96
|
#define SPI_OK_REL_REGISTER 15
|
|
68
97
|
#define SPI_OK_REL_UNREGISTER 16
|
|
69
98
|
#define SPI_OK_TD_REGISTER 17
|
|
99
|
+
#define SPI_OK_MERGE 18
|
|
70
100
|
|
|
71
101
|
#define SPI_OPT_NONATOMIC (1 << 0)
|
|
72
102
|
|
|
@@ -85,8 +115,12 @@ extern int SPI_connect(void);
|
|
|
85
115
|
extern int SPI_connect_ext(int options);
|
|
86
116
|
extern int SPI_finish(void);
|
|
87
117
|
extern int SPI_execute(const char *src, bool read_only, long tcount);
|
|
118
|
+
extern int SPI_execute_extended(const char *src,
|
|
119
|
+
const SPIExecuteOptions *options);
|
|
88
120
|
extern int SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls,
|
|
89
121
|
bool read_only, long tcount);
|
|
122
|
+
extern int SPI_execute_plan_extended(SPIPlanPtr plan,
|
|
123
|
+
const SPIExecuteOptions *options);
|
|
90
124
|
extern int SPI_execute_plan_with_paramlist(SPIPlanPtr plan,
|
|
91
125
|
ParamListInfo params,
|
|
92
126
|
bool read_only, long tcount);
|
|
@@ -105,6 +139,8 @@ extern int SPI_execute_with_args(const char *src,
|
|
|
105
139
|
extern SPIPlanPtr SPI_prepare(const char *src, int nargs, Oid *argtypes);
|
|
106
140
|
extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes,
|
|
107
141
|
int cursorOptions);
|
|
142
|
+
extern SPIPlanPtr SPI_prepare_extended(const char *src,
|
|
143
|
+
const SPIPrepareOptions *options);
|
|
108
144
|
extern SPIPlanPtr SPI_prepare_params(const char *src,
|
|
109
145
|
ParserSetupHook parserSetup,
|
|
110
146
|
void *parserSetupArg,
|
|
@@ -138,7 +174,7 @@ extern void *SPI_palloc(Size size);
|
|
|
138
174
|
extern void *SPI_repalloc(void *pointer, Size size);
|
|
139
175
|
extern void SPI_pfree(void *pointer);
|
|
140
176
|
extern Datum SPI_datumTransfer(Datum value, bool typByVal, int typLen);
|
|
141
|
-
extern void SPI_freetuple(HeapTuple
|
|
177
|
+
extern void SPI_freetuple(HeapTuple tuple);
|
|
142
178
|
extern void SPI_freetuptable(SPITupleTable *tuptable);
|
|
143
179
|
|
|
144
180
|
extern Portal SPI_cursor_open(const char *name, SPIPlanPtr plan,
|
|
@@ -150,6 +186,9 @@ extern Portal SPI_cursor_open_with_args(const char *name,
|
|
|
150
186
|
bool read_only, int cursorOptions);
|
|
151
187
|
extern Portal SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr plan,
|
|
152
188
|
ParamListInfo params, bool read_only);
|
|
189
|
+
extern Portal SPI_cursor_parse_open(const char *name,
|
|
190
|
+
const char *src,
|
|
191
|
+
const SPIParseOpenOptions *options);
|
|
153
192
|
extern Portal SPI_cursor_find(const char *name);
|
|
154
193
|
extern void SPI_cursor_fetch(Portal portal, bool forward, long count);
|
|
155
194
|
extern void SPI_cursor_move(Portal portal, bool forward, long count);
|
|
@@ -167,7 +206,6 @@ extern void SPI_commit_and_chain(void);
|
|
|
167
206
|
extern void SPI_rollback(void);
|
|
168
207
|
extern void SPI_rollback_and_chain(void);
|
|
169
208
|
|
|
170
|
-
extern void SPICleanup(void);
|
|
171
209
|
extern void AtEOXact_SPI(bool isCommit);
|
|
172
210
|
extern void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid);
|
|
173
211
|
extern bool SPI_inside_nonatomic_context(void);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* tablefunc.h
|
|
4
4
|
* interface for TableFunc executor node
|
|
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/executor/tablefunc.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* tuple table support stuff
|
|
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/executor/tuptable.h
|
|
@@ -46,7 +46,6 @@
|
|
|
46
46
|
* A "minimal" tuple is handled similarly to a palloc'd regular tuple.
|
|
47
47
|
* At present, minimal tuples never are stored in buffers, so there is no
|
|
48
48
|
* parallel to case 1. Note that a minimal tuple has no "system columns".
|
|
49
|
-
* (Actually, it could have an OID, but we have no need to access the OID.)
|
|
50
49
|
*
|
|
51
50
|
* A "virtual" tuple is an optimization used to minimize physical data copying
|
|
52
51
|
* in a nest of plan nodes. Until materialized pass-by-reference Datums in
|
|
@@ -68,8 +67,8 @@
|
|
|
68
67
|
* A TupleTableSlot can also be "empty", indicated by flag TTS_FLAG_EMPTY set
|
|
69
68
|
* in tts_flags, holding no valid data. This is the only valid state for a
|
|
70
69
|
* freshly-created slot that has not yet had a tuple descriptor assigned to
|
|
71
|
-
* it. In this state,
|
|
72
|
-
*
|
|
70
|
+
* it. In this state, TTS_FLAG_SHOULDFREE should not be set in tts_flags and
|
|
71
|
+
* tts_nvalid should be set to zero.
|
|
73
72
|
*
|
|
74
73
|
* The tupleDescriptor is simply referenced, not copied, by the TupleTableSlot
|
|
75
74
|
* code. The caller of ExecSetSlotDescriptor() is responsible for providing
|
|
@@ -79,8 +78,8 @@
|
|
|
79
78
|
* mechanism to do more. However, the slot will increment the tupdesc
|
|
80
79
|
* reference count if a reference-counted tupdesc is supplied.)
|
|
81
80
|
*
|
|
82
|
-
* When
|
|
83
|
-
* the slot and should be freed when the slot's reference to the tuple is
|
|
81
|
+
* When TTS_FLAG_SHOULDFREE is set in tts_flags, the physical tuple is "owned"
|
|
82
|
+
* by the slot and should be freed when the slot's reference to the tuple is
|
|
84
83
|
* dropped.
|
|
85
84
|
*
|
|
86
85
|
* tts_values/tts_isnull are allocated either when the slot is created (when
|
|
@@ -237,6 +236,8 @@ extern PGDLLIMPORT const TupleTableSlotOps TTSOpsBufferHeapTuple;
|
|
|
237
236
|
|
|
238
237
|
typedef struct VirtualTupleTableSlot
|
|
239
238
|
{
|
|
239
|
+
pg_node_attr(abstract)
|
|
240
|
+
|
|
240
241
|
TupleTableSlot base;
|
|
241
242
|
|
|
242
243
|
char *data; /* data for materialized slots */
|
|
@@ -244,6 +245,8 @@ typedef struct VirtualTupleTableSlot
|
|
|
244
245
|
|
|
245
246
|
typedef struct HeapTupleTableSlot
|
|
246
247
|
{
|
|
248
|
+
pg_node_attr(abstract)
|
|
249
|
+
|
|
247
250
|
TupleTableSlot base;
|
|
248
251
|
|
|
249
252
|
#define FIELDNO_HEAPTUPLETABLESLOT_TUPLE 1
|
|
@@ -256,19 +259,23 @@ typedef struct HeapTupleTableSlot
|
|
|
256
259
|
/* heap tuple residing in a buffer */
|
|
257
260
|
typedef struct BufferHeapTupleTableSlot
|
|
258
261
|
{
|
|
262
|
+
pg_node_attr(abstract)
|
|
263
|
+
|
|
259
264
|
HeapTupleTableSlot base;
|
|
260
265
|
|
|
261
266
|
/*
|
|
262
267
|
* If buffer is not InvalidBuffer, then the slot is holding a pin on the
|
|
263
268
|
* indicated buffer page; drop the pin when we release the slot's
|
|
264
269
|
* reference to that buffer. (TTS_FLAG_SHOULDFREE should not be set in
|
|
265
|
-
* such a case, since presumably
|
|
270
|
+
* such a case, since presumably base.tuple is pointing into the buffer.)
|
|
266
271
|
*/
|
|
267
272
|
Buffer buffer; /* tuple's buffer, or InvalidBuffer */
|
|
268
273
|
} BufferHeapTupleTableSlot;
|
|
269
274
|
|
|
270
275
|
typedef struct MinimalTupleTableSlot
|
|
271
276
|
{
|
|
277
|
+
pg_node_attr(abstract)
|
|
278
|
+
|
|
272
279
|
TupleTableSlot base;
|
|
273
280
|
|
|
274
281
|
/*
|
|
@@ -366,7 +373,7 @@ slot_getallattrs(TupleTableSlot *slot)
|
|
|
366
373
|
static inline bool
|
|
367
374
|
slot_attisnull(TupleTableSlot *slot, int attnum)
|
|
368
375
|
{
|
|
369
|
-
|
|
376
|
+
Assert(attnum > 0);
|
|
370
377
|
|
|
371
378
|
if (attnum > slot->tts_nvalid)
|
|
372
379
|
slot_getsomeattrs(slot, attnum);
|
|
@@ -381,7 +388,7 @@ static inline Datum
|
|
|
381
388
|
slot_getattr(TupleTableSlot *slot, int attnum,
|
|
382
389
|
bool *isnull)
|
|
383
390
|
{
|
|
384
|
-
|
|
391
|
+
Assert(attnum > 0);
|
|
385
392
|
|
|
386
393
|
if (attnum > slot->tts_nvalid)
|
|
387
394
|
slot_getsomeattrs(slot, attnum);
|
|
@@ -401,7 +408,7 @@ slot_getattr(TupleTableSlot *slot, int attnum,
|
|
|
401
408
|
static inline Datum
|
|
402
409
|
slot_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull)
|
|
403
410
|
{
|
|
404
|
-
|
|
411
|
+
Assert(attnum < 0); /* caller error */
|
|
405
412
|
|
|
406
413
|
if (attnum == TableOidAttributeNumber)
|
|
407
414
|
{
|
|
@@ -475,7 +482,7 @@ static inline TupleTableSlot *
|
|
|
475
482
|
ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
|
|
476
483
|
{
|
|
477
484
|
Assert(!TTS_EMPTY(srcslot));
|
|
478
|
-
|
|
485
|
+
Assert(srcslot != dstslot);
|
|
479
486
|
|
|
480
487
|
dstslot->tts_ops->copyslot(dstslot, srcslot);
|
|
481
488
|
|