pg_query 4.2.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +6 -8
- data/Rakefile +5 -6
- data/ext/pg_query/extconf.rb +14 -4
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
- data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
- data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
- data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
- data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
- data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
- data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
- data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
- data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
- data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
- data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
- data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
- data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +534 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +79 -5
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +6 -10
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +23 -5
- data/lib/pg_query/version.rb +1 -1
- metadata +432 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
- /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
|
@@ -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
|
|
|
@@ -196,7 +208,8 @@ extern void standard_ExecutorFinish(QueryDesc *queryDesc);
|
|
|
196
208
|
extern void ExecutorEnd(QueryDesc *queryDesc);
|
|
197
209
|
extern void standard_ExecutorEnd(QueryDesc *queryDesc);
|
|
198
210
|
extern void ExecutorRewind(QueryDesc *queryDesc);
|
|
199
|
-
extern bool
|
|
211
|
+
extern bool ExecCheckPermissions(List *rangeTable,
|
|
212
|
+
List *rteperminfos, bool ereport_on_violation);
|
|
200
213
|
extern void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation);
|
|
201
214
|
extern void InitResultRelInfo(ResultRelInfo *resultRelInfo,
|
|
202
215
|
Relation resultRelationDesc,
|
|
@@ -218,9 +231,10 @@ extern LockTupleMode ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo);
|
|
|
218
231
|
extern ExecRowMark *ExecFindRowMark(EState *estate, Index rti, bool missing_ok);
|
|
219
232
|
extern ExecAuxRowMark *ExecBuildAuxRowMark(ExecRowMark *erm, List *targetlist);
|
|
220
233
|
extern TupleTableSlot *EvalPlanQual(EPQState *epqstate, Relation relation,
|
|
221
|
-
Index rti, TupleTableSlot *
|
|
234
|
+
Index rti, TupleTableSlot *inputslot);
|
|
222
235
|
extern void EvalPlanQualInit(EPQState *epqstate, EState *parentestate,
|
|
223
|
-
Plan *subplan, List *auxrowmarks,
|
|
236
|
+
Plan *subplan, List *auxrowmarks,
|
|
237
|
+
int epqParam, List *resultRelations);
|
|
224
238
|
extern void EvalPlanQualSetPlan(EPQState *epqstate,
|
|
225
239
|
Plan *subplan, List *auxrowmarks);
|
|
226
240
|
extern TupleTableSlot *EvalPlanQualSlot(EPQState *epqstate,
|
|
@@ -239,7 +253,7 @@ extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags);
|
|
|
239
253
|
extern void ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function);
|
|
240
254
|
extern Node *MultiExecProcNode(PlanState *node);
|
|
241
255
|
extern void ExecEndNode(PlanState *node);
|
|
242
|
-
extern
|
|
256
|
+
extern void ExecShutdownNode(PlanState *node);
|
|
243
257
|
extern void ExecSetTupleBound(int64 tuples_needed, PlanState *child_node);
|
|
244
258
|
|
|
245
259
|
|
|
@@ -432,7 +446,7 @@ ExecQualAndReset(ExprState *state, ExprContext *econtext)
|
|
|
432
446
|
}
|
|
433
447
|
#endif
|
|
434
448
|
|
|
435
|
-
extern bool ExecCheck(ExprState *state, ExprContext *
|
|
449
|
+
extern bool ExecCheck(ExprState *state, ExprContext *econtext);
|
|
436
450
|
|
|
437
451
|
/*
|
|
438
452
|
* prototypes from functions in execSRF.c
|
|
@@ -473,7 +487,7 @@ extern void ExecInitResultSlot(PlanState *planstate,
|
|
|
473
487
|
extern void ExecInitResultTupleSlotTL(PlanState *planstate,
|
|
474
488
|
const TupleTableSlotOps *tts_ops);
|
|
475
489
|
extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate,
|
|
476
|
-
TupleDesc
|
|
490
|
+
TupleDesc tupledesc,
|
|
477
491
|
const TupleTableSlotOps *tts_ops);
|
|
478
492
|
extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate,
|
|
479
493
|
TupleDesc tupledesc,
|
|
@@ -565,7 +579,7 @@ extern bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid);
|
|
|
565
579
|
|
|
566
580
|
extern Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags);
|
|
567
581
|
|
|
568
|
-
extern void ExecInitRangeTable(EState *estate, List *rangeTable);
|
|
582
|
+
extern void ExecInitRangeTable(EState *estate, List *rangeTable, List *permInfos);
|
|
569
583
|
extern void ExecCloseRangeTableRelations(EState *estate);
|
|
570
584
|
extern void ExecCloseResultRelations(EState *estate);
|
|
571
585
|
|
|
@@ -600,7 +614,9 @@ extern TupleTableSlot *ExecGetTriggerOldSlot(EState *estate, ResultRelInfo *relI
|
|
|
600
614
|
extern TupleTableSlot *ExecGetTriggerNewSlot(EState *estate, ResultRelInfo *relInfo);
|
|
601
615
|
extern TupleTableSlot *ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo);
|
|
602
616
|
extern TupleConversionMap *ExecGetChildToRootMap(ResultRelInfo *resultRelInfo);
|
|
617
|
+
extern TupleConversionMap *ExecGetRootToChildMap(ResultRelInfo *resultRelInfo, EState *estate);
|
|
603
618
|
|
|
619
|
+
extern Oid ExecGetResultRelCheckAsUser(ResultRelInfo *relInfo, EState *estate);
|
|
604
620
|
extern Bitmapset *ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate);
|
|
605
621
|
extern Bitmapset *ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate);
|
|
606
622
|
extern Bitmapset *ExecGetExtraUpdatedCols(ResultRelInfo *relinfo, EState *estate);
|
|
@@ -615,7 +631,8 @@ extern List *ExecInsertIndexTuples(ResultRelInfo *resultRelInfo,
|
|
|
615
631
|
TupleTableSlot *slot, EState *estate,
|
|
616
632
|
bool update,
|
|
617
633
|
bool noDupErr,
|
|
618
|
-
bool *specConflict, List *arbiterIndexes
|
|
634
|
+
bool *specConflict, List *arbiterIndexes,
|
|
635
|
+
bool onlySummarizing);
|
|
619
636
|
extern bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo,
|
|
620
637
|
TupleTableSlot *slot,
|
|
621
638
|
EState *estate, ItemPointer conflictTid,
|
|
@@ -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
|
|
@@ -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
|
|
@@ -174,7 +174,7 @@ extern void *SPI_palloc(Size size);
|
|
|
174
174
|
extern void *SPI_repalloc(void *pointer, Size size);
|
|
175
175
|
extern void SPI_pfree(void *pointer);
|
|
176
176
|
extern Datum SPI_datumTransfer(Datum value, bool typByVal, int typLen);
|
|
177
|
-
extern void SPI_freetuple(HeapTuple
|
|
177
|
+
extern void SPI_freetuple(HeapTuple tuple);
|
|
178
178
|
extern void SPI_freetuptable(SPITupleTable *tuptable);
|
|
179
179
|
|
|
180
180
|
extern Portal SPI_cursor_open(const char *name, SPIPlanPtr plan,
|
|
@@ -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
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* or call fmgr-callable functions.
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
|
-
* Portions Copyright (c) 1996-
|
|
11
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
13
13
|
*
|
|
14
14
|
* src/include/fmgr.h
|
|
@@ -413,7 +413,7 @@ typedef const Pg_finfo_record *(*PGFInfoFunction) (void);
|
|
|
413
413
|
* info function, since authors shouldn't need to be explicitly aware of it.
|
|
414
414
|
*/
|
|
415
415
|
#define PG_FUNCTION_INFO_V1(funcname) \
|
|
416
|
-
extern Datum funcname(PG_FUNCTION_ARGS); \
|
|
416
|
+
extern PGDLLEXPORT Datum funcname(PG_FUNCTION_ARGS); \
|
|
417
417
|
extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
|
|
418
418
|
const Pg_finfo_record * \
|
|
419
419
|
CppConcat(pg_finfo_,funcname) (void) \
|
|
@@ -424,6 +424,17 @@ CppConcat(pg_finfo_,funcname) (void) \
|
|
|
424
424
|
extern int no_such_variable
|
|
425
425
|
|
|
426
426
|
|
|
427
|
+
/*
|
|
428
|
+
* Declare _PG_init/_PG_fini centrally. Historically each shared library had
|
|
429
|
+
* its own declaration; but now that we want to mark these PGDLLEXPORT, using
|
|
430
|
+
* central declarations avoids each extension having to add that. Any
|
|
431
|
+
* existing declarations in extensions will continue to work if fmgr.h is
|
|
432
|
+
* included before them, otherwise compilation for Windows will fail.
|
|
433
|
+
*/
|
|
434
|
+
extern PGDLLEXPORT void _PG_init(void);
|
|
435
|
+
extern PGDLLEXPORT void _PG_fini(void);
|
|
436
|
+
|
|
437
|
+
|
|
427
438
|
/*-------------------------------------------------------------------------
|
|
428
439
|
* Support for verifying backend compatibility of loaded modules
|
|
429
440
|
*
|
|
@@ -689,6 +700,14 @@ extern Datum OidFunctionCall9Coll(Oid functionId, Oid collation,
|
|
|
689
700
|
/* Special cases for convenient invocation of datatype I/O functions. */
|
|
690
701
|
extern Datum InputFunctionCall(FmgrInfo *flinfo, char *str,
|
|
691
702
|
Oid typioparam, int32 typmod);
|
|
703
|
+
extern bool InputFunctionCallSafe(FmgrInfo *flinfo, char *str,
|
|
704
|
+
Oid typioparam, int32 typmod,
|
|
705
|
+
fmNodePtr escontext,
|
|
706
|
+
Datum *result);
|
|
707
|
+
extern bool DirectInputFunctionCallSafe(PGFunction func, char *str,
|
|
708
|
+
Oid typioparam, int32 typmod,
|
|
709
|
+
fmNodePtr escontext,
|
|
710
|
+
Datum *result);
|
|
692
711
|
extern Datum OidInputFunctionCall(Oid functionId, char *str,
|
|
693
712
|
Oid typioparam, int32 typmod);
|
|
694
713
|
extern char *OutputFunctionCall(FmgrInfo *flinfo, Datum val);
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* fdwapi.h
|
|
4
|
+
* API for foreign-data wrappers
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2010-2023, PostgreSQL Global Development Group
|
|
7
|
+
*
|
|
8
|
+
* src/include/foreign/fdwapi.h
|
|
9
|
+
*
|
|
10
|
+
*-------------------------------------------------------------------------
|
|
11
|
+
*/
|
|
12
|
+
#ifndef FDWAPI_H
|
|
13
|
+
#define FDWAPI_H
|
|
14
|
+
|
|
15
|
+
#include "access/parallel.h"
|
|
16
|
+
#include "nodes/execnodes.h"
|
|
17
|
+
#include "nodes/pathnodes.h"
|
|
18
|
+
|
|
19
|
+
/* To avoid including explain.h here, reference ExplainState thus: */
|
|
20
|
+
struct ExplainState;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* Callback function signatures --- see fdwhandler.sgml for more info.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
typedef void (*GetForeignRelSize_function) (PlannerInfo *root,
|
|
28
|
+
RelOptInfo *baserel,
|
|
29
|
+
Oid foreigntableid);
|
|
30
|
+
|
|
31
|
+
typedef void (*GetForeignPaths_function) (PlannerInfo *root,
|
|
32
|
+
RelOptInfo *baserel,
|
|
33
|
+
Oid foreigntableid);
|
|
34
|
+
|
|
35
|
+
typedef ForeignScan *(*GetForeignPlan_function) (PlannerInfo *root,
|
|
36
|
+
RelOptInfo *baserel,
|
|
37
|
+
Oid foreigntableid,
|
|
38
|
+
ForeignPath *best_path,
|
|
39
|
+
List *tlist,
|
|
40
|
+
List *scan_clauses,
|
|
41
|
+
Plan *outer_plan);
|
|
42
|
+
|
|
43
|
+
typedef void (*BeginForeignScan_function) (ForeignScanState *node,
|
|
44
|
+
int eflags);
|
|
45
|
+
|
|
46
|
+
typedef TupleTableSlot *(*IterateForeignScan_function) (ForeignScanState *node);
|
|
47
|
+
|
|
48
|
+
typedef bool (*RecheckForeignScan_function) (ForeignScanState *node,
|
|
49
|
+
TupleTableSlot *slot);
|
|
50
|
+
|
|
51
|
+
typedef void (*ReScanForeignScan_function) (ForeignScanState *node);
|
|
52
|
+
|
|
53
|
+
typedef void (*EndForeignScan_function) (ForeignScanState *node);
|
|
54
|
+
|
|
55
|
+
typedef void (*GetForeignJoinPaths_function) (PlannerInfo *root,
|
|
56
|
+
RelOptInfo *joinrel,
|
|
57
|
+
RelOptInfo *outerrel,
|
|
58
|
+
RelOptInfo *innerrel,
|
|
59
|
+
JoinType jointype,
|
|
60
|
+
JoinPathExtraData *extra);
|
|
61
|
+
|
|
62
|
+
typedef void (*GetForeignUpperPaths_function) (PlannerInfo *root,
|
|
63
|
+
UpperRelationKind stage,
|
|
64
|
+
RelOptInfo *input_rel,
|
|
65
|
+
RelOptInfo *output_rel,
|
|
66
|
+
void *extra);
|
|
67
|
+
|
|
68
|
+
typedef void (*AddForeignUpdateTargets_function) (PlannerInfo *root,
|
|
69
|
+
Index rtindex,
|
|
70
|
+
RangeTblEntry *target_rte,
|
|
71
|
+
Relation target_relation);
|
|
72
|
+
|
|
73
|
+
typedef List *(*PlanForeignModify_function) (PlannerInfo *root,
|
|
74
|
+
ModifyTable *plan,
|
|
75
|
+
Index resultRelation,
|
|
76
|
+
int subplan_index);
|
|
77
|
+
|
|
78
|
+
typedef void (*BeginForeignModify_function) (ModifyTableState *mtstate,
|
|
79
|
+
ResultRelInfo *rinfo,
|
|
80
|
+
List *fdw_private,
|
|
81
|
+
int subplan_index,
|
|
82
|
+
int eflags);
|
|
83
|
+
|
|
84
|
+
typedef TupleTableSlot *(*ExecForeignInsert_function) (EState *estate,
|
|
85
|
+
ResultRelInfo *rinfo,
|
|
86
|
+
TupleTableSlot *slot,
|
|
87
|
+
TupleTableSlot *planSlot);
|
|
88
|
+
|
|
89
|
+
typedef TupleTableSlot **(*ExecForeignBatchInsert_function) (EState *estate,
|
|
90
|
+
ResultRelInfo *rinfo,
|
|
91
|
+
TupleTableSlot **slots,
|
|
92
|
+
TupleTableSlot **planSlots,
|
|
93
|
+
int *numSlots);
|
|
94
|
+
|
|
95
|
+
typedef int (*GetForeignModifyBatchSize_function) (ResultRelInfo *rinfo);
|
|
96
|
+
|
|
97
|
+
typedef TupleTableSlot *(*ExecForeignUpdate_function) (EState *estate,
|
|
98
|
+
ResultRelInfo *rinfo,
|
|
99
|
+
TupleTableSlot *slot,
|
|
100
|
+
TupleTableSlot *planSlot);
|
|
101
|
+
|
|
102
|
+
typedef TupleTableSlot *(*ExecForeignDelete_function) (EState *estate,
|
|
103
|
+
ResultRelInfo *rinfo,
|
|
104
|
+
TupleTableSlot *slot,
|
|
105
|
+
TupleTableSlot *planSlot);
|
|
106
|
+
|
|
107
|
+
typedef void (*EndForeignModify_function) (EState *estate,
|
|
108
|
+
ResultRelInfo *rinfo);
|
|
109
|
+
|
|
110
|
+
typedef void (*BeginForeignInsert_function) (ModifyTableState *mtstate,
|
|
111
|
+
ResultRelInfo *rinfo);
|
|
112
|
+
|
|
113
|
+
typedef void (*EndForeignInsert_function) (EState *estate,
|
|
114
|
+
ResultRelInfo *rinfo);
|
|
115
|
+
|
|
116
|
+
typedef int (*IsForeignRelUpdatable_function) (Relation rel);
|
|
117
|
+
|
|
118
|
+
typedef bool (*PlanDirectModify_function) (PlannerInfo *root,
|
|
119
|
+
ModifyTable *plan,
|
|
120
|
+
Index resultRelation,
|
|
121
|
+
int subplan_index);
|
|
122
|
+
|
|
123
|
+
typedef void (*BeginDirectModify_function) (ForeignScanState *node,
|
|
124
|
+
int eflags);
|
|
125
|
+
|
|
126
|
+
typedef TupleTableSlot *(*IterateDirectModify_function) (ForeignScanState *node);
|
|
127
|
+
|
|
128
|
+
typedef void (*EndDirectModify_function) (ForeignScanState *node);
|
|
129
|
+
|
|
130
|
+
typedef RowMarkType (*GetForeignRowMarkType_function) (RangeTblEntry *rte,
|
|
131
|
+
LockClauseStrength strength);
|
|
132
|
+
|
|
133
|
+
typedef void (*RefetchForeignRow_function) (EState *estate,
|
|
134
|
+
ExecRowMark *erm,
|
|
135
|
+
Datum rowid,
|
|
136
|
+
TupleTableSlot *slot,
|
|
137
|
+
bool *updated);
|
|
138
|
+
|
|
139
|
+
typedef void (*ExplainForeignScan_function) (ForeignScanState *node,
|
|
140
|
+
struct ExplainState *es);
|
|
141
|
+
|
|
142
|
+
typedef void (*ExplainForeignModify_function) (ModifyTableState *mtstate,
|
|
143
|
+
ResultRelInfo *rinfo,
|
|
144
|
+
List *fdw_private,
|
|
145
|
+
int subplan_index,
|
|
146
|
+
struct ExplainState *es);
|
|
147
|
+
|
|
148
|
+
typedef void (*ExplainDirectModify_function) (ForeignScanState *node,
|
|
149
|
+
struct ExplainState *es);
|
|
150
|
+
|
|
151
|
+
typedef int (*AcquireSampleRowsFunc) (Relation relation, int elevel,
|
|
152
|
+
HeapTuple *rows, int targrows,
|
|
153
|
+
double *totalrows,
|
|
154
|
+
double *totaldeadrows);
|
|
155
|
+
|
|
156
|
+
typedef bool (*AnalyzeForeignTable_function) (Relation relation,
|
|
157
|
+
AcquireSampleRowsFunc *func,
|
|
158
|
+
BlockNumber *totalpages);
|
|
159
|
+
|
|
160
|
+
typedef List *(*ImportForeignSchema_function) (ImportForeignSchemaStmt *stmt,
|
|
161
|
+
Oid serverOid);
|
|
162
|
+
|
|
163
|
+
typedef void (*ExecForeignTruncate_function) (List *rels,
|
|
164
|
+
DropBehavior behavior,
|
|
165
|
+
bool restart_seqs);
|
|
166
|
+
|
|
167
|
+
typedef Size (*EstimateDSMForeignScan_function) (ForeignScanState *node,
|
|
168
|
+
ParallelContext *pcxt);
|
|
169
|
+
typedef void (*InitializeDSMForeignScan_function) (ForeignScanState *node,
|
|
170
|
+
ParallelContext *pcxt,
|
|
171
|
+
void *coordinate);
|
|
172
|
+
typedef void (*ReInitializeDSMForeignScan_function) (ForeignScanState *node,
|
|
173
|
+
ParallelContext *pcxt,
|
|
174
|
+
void *coordinate);
|
|
175
|
+
typedef void (*InitializeWorkerForeignScan_function) (ForeignScanState *node,
|
|
176
|
+
shm_toc *toc,
|
|
177
|
+
void *coordinate);
|
|
178
|
+
typedef void (*ShutdownForeignScan_function) (ForeignScanState *node);
|
|
179
|
+
typedef bool (*IsForeignScanParallelSafe_function) (PlannerInfo *root,
|
|
180
|
+
RelOptInfo *rel,
|
|
181
|
+
RangeTblEntry *rte);
|
|
182
|
+
typedef List *(*ReparameterizeForeignPathByChild_function) (PlannerInfo *root,
|
|
183
|
+
List *fdw_private,
|
|
184
|
+
RelOptInfo *child_rel);
|
|
185
|
+
|
|
186
|
+
typedef bool (*IsForeignPathAsyncCapable_function) (ForeignPath *path);
|
|
187
|
+
|
|
188
|
+
typedef void (*ForeignAsyncRequest_function) (AsyncRequest *areq);
|
|
189
|
+
|
|
190
|
+
typedef void (*ForeignAsyncConfigureWait_function) (AsyncRequest *areq);
|
|
191
|
+
|
|
192
|
+
typedef void (*ForeignAsyncNotify_function) (AsyncRequest *areq);
|
|
193
|
+
|
|
194
|
+
/*
|
|
195
|
+
* FdwRoutine is the struct returned by a foreign-data wrapper's handler
|
|
196
|
+
* function. It provides pointers to the callback functions needed by the
|
|
197
|
+
* planner and executor.
|
|
198
|
+
*
|
|
199
|
+
* More function pointers are likely to be added in the future. Therefore
|
|
200
|
+
* it's recommended that the handler initialize the struct with
|
|
201
|
+
* makeNode(FdwRoutine) so that all fields are set to NULL. This will
|
|
202
|
+
* ensure that no fields are accidentally left undefined.
|
|
203
|
+
*/
|
|
204
|
+
typedef struct FdwRoutine
|
|
205
|
+
{
|
|
206
|
+
NodeTag type;
|
|
207
|
+
|
|
208
|
+
/* Functions for scanning foreign tables */
|
|
209
|
+
GetForeignRelSize_function GetForeignRelSize;
|
|
210
|
+
GetForeignPaths_function GetForeignPaths;
|
|
211
|
+
GetForeignPlan_function GetForeignPlan;
|
|
212
|
+
BeginForeignScan_function BeginForeignScan;
|
|
213
|
+
IterateForeignScan_function IterateForeignScan;
|
|
214
|
+
ReScanForeignScan_function ReScanForeignScan;
|
|
215
|
+
EndForeignScan_function EndForeignScan;
|
|
216
|
+
|
|
217
|
+
/*
|
|
218
|
+
* Remaining functions are optional. Set the pointer to NULL for any that
|
|
219
|
+
* are not provided.
|
|
220
|
+
*/
|
|
221
|
+
|
|
222
|
+
/* Functions for remote-join planning */
|
|
223
|
+
GetForeignJoinPaths_function GetForeignJoinPaths;
|
|
224
|
+
|
|
225
|
+
/* Functions for remote upper-relation (post scan/join) planning */
|
|
226
|
+
GetForeignUpperPaths_function GetForeignUpperPaths;
|
|
227
|
+
|
|
228
|
+
/* Functions for updating foreign tables */
|
|
229
|
+
AddForeignUpdateTargets_function AddForeignUpdateTargets;
|
|
230
|
+
PlanForeignModify_function PlanForeignModify;
|
|
231
|
+
BeginForeignModify_function BeginForeignModify;
|
|
232
|
+
ExecForeignInsert_function ExecForeignInsert;
|
|
233
|
+
ExecForeignBatchInsert_function ExecForeignBatchInsert;
|
|
234
|
+
GetForeignModifyBatchSize_function GetForeignModifyBatchSize;
|
|
235
|
+
ExecForeignUpdate_function ExecForeignUpdate;
|
|
236
|
+
ExecForeignDelete_function ExecForeignDelete;
|
|
237
|
+
EndForeignModify_function EndForeignModify;
|
|
238
|
+
BeginForeignInsert_function BeginForeignInsert;
|
|
239
|
+
EndForeignInsert_function EndForeignInsert;
|
|
240
|
+
IsForeignRelUpdatable_function IsForeignRelUpdatable;
|
|
241
|
+
PlanDirectModify_function PlanDirectModify;
|
|
242
|
+
BeginDirectModify_function BeginDirectModify;
|
|
243
|
+
IterateDirectModify_function IterateDirectModify;
|
|
244
|
+
EndDirectModify_function EndDirectModify;
|
|
245
|
+
|
|
246
|
+
/* Functions for SELECT FOR UPDATE/SHARE row locking */
|
|
247
|
+
GetForeignRowMarkType_function GetForeignRowMarkType;
|
|
248
|
+
RefetchForeignRow_function RefetchForeignRow;
|
|
249
|
+
RecheckForeignScan_function RecheckForeignScan;
|
|
250
|
+
|
|
251
|
+
/* Support functions for EXPLAIN */
|
|
252
|
+
ExplainForeignScan_function ExplainForeignScan;
|
|
253
|
+
ExplainForeignModify_function ExplainForeignModify;
|
|
254
|
+
ExplainDirectModify_function ExplainDirectModify;
|
|
255
|
+
|
|
256
|
+
/* Support functions for ANALYZE */
|
|
257
|
+
AnalyzeForeignTable_function AnalyzeForeignTable;
|
|
258
|
+
|
|
259
|
+
/* Support functions for IMPORT FOREIGN SCHEMA */
|
|
260
|
+
ImportForeignSchema_function ImportForeignSchema;
|
|
261
|
+
|
|
262
|
+
/* Support functions for TRUNCATE */
|
|
263
|
+
ExecForeignTruncate_function ExecForeignTruncate;
|
|
264
|
+
|
|
265
|
+
/* Support functions for parallelism under Gather node */
|
|
266
|
+
IsForeignScanParallelSafe_function IsForeignScanParallelSafe;
|
|
267
|
+
EstimateDSMForeignScan_function EstimateDSMForeignScan;
|
|
268
|
+
InitializeDSMForeignScan_function InitializeDSMForeignScan;
|
|
269
|
+
ReInitializeDSMForeignScan_function ReInitializeDSMForeignScan;
|
|
270
|
+
InitializeWorkerForeignScan_function InitializeWorkerForeignScan;
|
|
271
|
+
ShutdownForeignScan_function ShutdownForeignScan;
|
|
272
|
+
|
|
273
|
+
/* Support functions for path reparameterization. */
|
|
274
|
+
ReparameterizeForeignPathByChild_function ReparameterizeForeignPathByChild;
|
|
275
|
+
|
|
276
|
+
/* Support functions for asynchronous execution */
|
|
277
|
+
IsForeignPathAsyncCapable_function IsForeignPathAsyncCapable;
|
|
278
|
+
ForeignAsyncRequest_function ForeignAsyncRequest;
|
|
279
|
+
ForeignAsyncConfigureWait_function ForeignAsyncConfigureWait;
|
|
280
|
+
ForeignAsyncNotify_function ForeignAsyncNotify;
|
|
281
|
+
} FdwRoutine;
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
/* Functions in foreign/foreign.c */
|
|
285
|
+
extern FdwRoutine *GetFdwRoutine(Oid fdwhandler);
|
|
286
|
+
extern Oid GetForeignServerIdByRelId(Oid relid);
|
|
287
|
+
extern FdwRoutine *GetFdwRoutineByServerId(Oid serverid);
|
|
288
|
+
extern FdwRoutine *GetFdwRoutineByRelId(Oid relid);
|
|
289
|
+
extern FdwRoutine *GetFdwRoutineForRelation(Relation relation, bool makecopy);
|
|
290
|
+
extern bool IsImportableForeignTable(const char *tablename,
|
|
291
|
+
ImportForeignSchemaStmt *stmt);
|
|
292
|
+
extern Path *GetExistingLocalJoinPath(RelOptInfo *joinrel);
|
|
293
|
+
|
|
294
|
+
#endif /* FDWAPI_H */
|