pg_query 2.2.0 → 6.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 +86 -0
- data/README.md +57 -31
- data/Rakefile +5 -6
- data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
- data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
- data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/extconf.rb +33 -9
- data/ext/pg_query/include/pg_query.h +30 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +839 -290
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +638 -481
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +6786 -4193
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +450 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1489 -1044
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +157 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1933 -1410
- data/ext/pg_query/include/postgres/access/amapi.h +303 -0
- data/ext/pg_query/include/postgres/access/attmap.h +54 -0
- data/ext/pg_query/include/postgres/access/attnum.h +64 -0
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +62 -0
- data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
- data/ext/pg_query/include/postgres/access/detoast.h +82 -0
- data/ext/pg_query/include/postgres/access/genam.h +246 -0
- data/ext/pg_query/include/postgres/access/gin.h +91 -0
- data/ext/pg_query/include/postgres/access/htup.h +89 -0
- data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
- data/ext/pg_query/include/postgres/access/itup.h +170 -0
- data/ext/pg_query/include/postgres/access/parallel.h +81 -0
- data/ext/pg_query/include/postgres/access/printtup.h +35 -0
- data/ext/pg_query/include/postgres/access/relation.h +28 -0
- data/ext/pg_query/include/postgres/access/relscan.h +191 -0
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
- data/ext/pg_query/include/postgres/access/sdir.h +67 -0
- data/ext/pg_query/include/postgres/access/skey.h +151 -0
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
- data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
- data/ext/pg_query/include/postgres/access/table.h +28 -0
- data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/postgres/access/transam.h +418 -0
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
- data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
- data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
- data/ext/pg_query/include/postgres/access/twophase.h +65 -0
- data/ext/pg_query/include/postgres/access/xact.h +530 -0
- data/ext/pg_query/include/postgres/access/xlog.h +310 -0
- data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
- data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
- data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
- data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
- data/ext/pg_query/include/postgres/c.h +1374 -0
- data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
- data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
- data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
- data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
- data/ext/pg_query/include/postgres/catalog/index.h +218 -0
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
- data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
- data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
- data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
- data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +49 -0
- data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
- data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
- data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
- data/ext/pg_query/include/postgres/commands/explain.h +145 -0
- data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
- data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
- data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
- data/ext/pg_query/include/postgres/commands/user.h +43 -0
- data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +512 -0
- data/ext/pg_query/include/postgres/common/keywords.h +29 -0
- data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
- data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
- data/ext/pg_query/include/postgres/common/relpath.h +97 -0
- 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 +124 -0
- data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
- data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
- data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
- data/ext/pg_query/include/postgres/executor/executor.h +681 -0
- data/ext/pg_query/include/postgres/executor/functions.h +56 -0
- data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
- data/ext/pg_query/include/postgres/executor/spi.h +207 -0
- data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
- data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
- data/ext/pg_query/include/postgres/fmgr.h +800 -0
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/postgres/funcapi.h +360 -0
- data/ext/pg_query/include/postgres/gram.h +1168 -0
- data/ext/pg_query/include/postgres/gramparse.h +75 -0
- data/ext/pg_query/include/postgres/jit/jit.h +106 -0
- data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
- data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
- data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
- data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
- data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
- data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
- data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
- data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
- data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
- data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
- data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- 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/postgres/mb/pg_wchar.h +793 -0
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
- data/ext/pg_query/include/postgres/miscadmin.h +527 -0
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
- data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
- data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
- data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
- data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
- data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
- data/ext/pg_query/include/postgres/nodes/params.h +170 -0
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
- data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
- data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
- data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
- data/ext/pg_query/include/postgres/nodes/print.h +34 -0
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
- data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
- data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
- data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
- data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
- data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
- data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
- data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
- data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
- data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
- data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
- data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
- data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
- data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
- data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
- data/ext/pg_query/include/postgres/pg_config.h +985 -0
- data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
- data/ext/pg_query/include/postgres/pg_trace.h +17 -0
- data/ext/pg_query/include/postgres/pgstat.h +780 -0
- data/ext/pg_query/include/postgres/pgtime.h +94 -0
- data/ext/pg_query/include/postgres/pl_gram.h +385 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
- data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
- data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
- data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
- data/ext/pg_query/include/postgres/port/atomics.h +606 -0
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
- data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +422 -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 +34 -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 +582 -0
- data/ext/pg_query/include/postgres/port.h +555 -0
- 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/postgres_ext.h +73 -0
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
- data/ext/pg_query/include/postgres/regex/regex.h +272 -0
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
- data/ext/pg_query/include/postgres/replication/origin.h +73 -0
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
- data/ext/pg_query/include/postgres/replication/slot.h +289 -0
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
- data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
- data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
- data/ext/pg_query/include/postgres/storage/block.h +108 -0
- data/ext/pg_query/include/postgres/storage/buf.h +46 -0
- data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
- data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
- data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
- data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
- data/ext/pg_query/include/postgres/storage/fd.h +219 -0
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
- data/ext/pg_query/include/postgres/storage/item.h +19 -0
- data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
- data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
- data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
- data/ext/pg_query/include/postgres/storage/latch.h +196 -0
- data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
- data/ext/pg_query/include/postgres/storage/lock.h +624 -0
- data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
- data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
- data/ext/pg_query/include/postgres/storage/off.h +57 -0
- data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
- data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
- data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
- data/ext/pg_query/include/postgres/storage/proc.h +488 -0
- data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
- data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
- data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
- data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
- data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
- data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
- data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
- data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
- data/ext/pg_query/include/postgres/storage/spin.h +77 -0
- data/ext/pg_query/include/postgres/storage/standby.h +109 -0
- data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
- data/ext/pg_query/include/postgres/storage/sync.h +66 -0
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
- data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
- data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
- data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
- data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
- data/ext/pg_query/include/postgres/utils/acl.h +290 -0
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
- data/ext/pg_query/include/postgres/utils/array.h +481 -0
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
- data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
- data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
- data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
- data/ext/pg_query/include/postgres/utils/date.h +118 -0
- data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
- data/ext/pg_query/include/postgres/utils/datum.h +76 -0
- data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
- data/ext/pg_query/include/postgres/utils/elog.h +540 -0
- data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
- data/ext/pg_query/include/postgres/utils/float.h +357 -0
- data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
- data/ext/pg_query/include/postgres/utils/guc.h +456 -0
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
- data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
- data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +68 -0
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
- data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
- data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
- data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
- data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
- data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
- data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
- data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
- data/ext/pg_query/include/postgres/utils/portal.h +252 -0
- data/ext/pg_query/include/postgres/utils/probes.h +114 -0
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/postgres/utils/rel.h +711 -0
- data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
- data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
- data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
- data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
- data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
- data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
- data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
- data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
- data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
- data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
- data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
- data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
- data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
- data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
- data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +94 -0
- data/ext/pg_query/include/postgres/varatt.h +358 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +8077 -6217
- data/ext/pg_query/include/protobuf/pg_query.pb.h +132024 -88124
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +24028 -17173
- data/ext/pg_query/pg_query_deparse.c +1 -9902
- data/ext/pg_query/pg_query_fingerprint.c +42 -18
- 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 -25
- data/ext/pg_query/pg_query_normalize.c +44 -3
- data/ext/pg_query/pg_query_outfuncs_json.c +62 -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 +19 -18
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +45 -10
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_scan.c +4 -3
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11496 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +262 -71
- data/ext/pg_query/src_backend_catalog_pg_proc.c +3 -2
- data/ext/pg_query/src_backend_commands_define.c +12 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +142 -156
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +100 -5881
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3831
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +89 -18
- data/ext/pg_query/src_backend_nodes_makefuncs.c +138 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +433 -132
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +45255 -38885
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +6999 -3438
- data/ext/pg_query/src_backend_parser_scansup.c +5 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +156 -114
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +14 -2
- 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 +488 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +247 -34
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +543 -343
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +47 -18
- data/ext/pg_query/src_backend_utils_init_globals.c +22 -7
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +84 -148
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +708 -499
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +710 -218
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
- data/ext/pg_query/src_common_encnames.c +46 -44
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +602 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +21 -4
- data/ext/pg_query/src_common_wchar.c +754 -178
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +143 -24
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1295 -1255
- 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 +20 -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 +283 -54
- data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +56 -39
- data/ext/pg_query/src_port_strerror.c +9 -21
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +10 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +3 -3
- data/lib/pg_query/parse.rb +25 -15
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +181 -3038
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +55 -8
- data/lib/pg_query/truncate.rb +19 -21
- data/lib/pg_query/version.rb +1 -1
- metadata +447 -436
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +0 -246
- data/ext/pg_query/include/access/attmap.h +0 -52
- data/ext/pg_query/include/access/attnum.h +0 -64
- data/ext/pg_query/include/access/clog.h +0 -61
- data/ext/pg_query/include/access/commit_ts.h +0 -77
- data/ext/pg_query/include/access/detoast.h +0 -92
- data/ext/pg_query/include/access/genam.h +0 -228
- data/ext/pg_query/include/access/gin.h +0 -78
- data/ext/pg_query/include/access/htup.h +0 -89
- data/ext/pg_query/include/access/htup_details.h +0 -819
- data/ext/pg_query/include/access/itup.h +0 -161
- data/ext/pg_query/include/access/parallel.h +0 -82
- data/ext/pg_query/include/access/printtup.h +0 -35
- data/ext/pg_query/include/access/relation.h +0 -28
- data/ext/pg_query/include/access/relscan.h +0 -176
- data/ext/pg_query/include/access/rmgr.h +0 -35
- data/ext/pg_query/include/access/rmgrlist.h +0 -49
- data/ext/pg_query/include/access/sdir.h +0 -58
- data/ext/pg_query/include/access/skey.h +0 -151
- data/ext/pg_query/include/access/stratnum.h +0 -83
- data/ext/pg_query/include/access/sysattr.h +0 -29
- data/ext/pg_query/include/access/table.h +0 -27
- data/ext/pg_query/include/access/tableam.h +0 -1825
- data/ext/pg_query/include/access/transam.h +0 -265
- data/ext/pg_query/include/access/tupconvert.h +0 -51
- data/ext/pg_query/include/access/tupdesc.h +0 -154
- data/ext/pg_query/include/access/tupmacs.h +0 -247
- data/ext/pg_query/include/access/twophase.h +0 -63
- data/ext/pg_query/include/access/xact.h +0 -469
- data/ext/pg_query/include/access/xlog.h +0 -398
- data/ext/pg_query/include/access/xlog_internal.h +0 -339
- data/ext/pg_query/include/access/xlogdefs.h +0 -109
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/access/xlogreader.h +0 -337
- data/ext/pg_query/include/access/xlogrecord.h +0 -227
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/c.h +0 -1334
- data/ext/pg_query/include/catalog/catalog.h +0 -42
- data/ext/pg_query/include/catalog/catversion.h +0 -58
- data/ext/pg_query/include/catalog/dependency.h +0 -277
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/index.h +0 -199
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/catalog/namespace.h +0 -188
- data/ext/pg_query/include/catalog/objectaccess.h +0 -197
- data/ext/pg_query/include/catalog/objectaddress.h +0 -84
- data/ext/pg_query/include/catalog/pg_aggregate.h +0 -176
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -77
- data/ext/pg_query/include/catalog/pg_am.h +0 -60
- data/ext/pg_query/include/catalog/pg_am_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_attribute.h +0 -204
- data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -59
- data/ext/pg_query/include/catalog/pg_authid.h +0 -58
- data/ext/pg_query/include/catalog/pg_authid_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_class.h +0 -200
- data/ext/pg_query/include/catalog/pg_class_d.h +0 -103
- data/ext/pg_query/include/catalog/pg_collation.h +0 -73
- data/ext/pg_query/include/catalog/pg_collation_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_constraint.h +0 -247
- data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -67
- data/ext/pg_query/include/catalog/pg_control.h +0 -252
- data/ext/pg_query/include/catalog/pg_conversion.h +0 -72
- data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_depend.h +0 -73
- data/ext/pg_query/include/catalog/pg_depend_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -51
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_index.h +0 -80
- data/ext/pg_query/include/catalog/pg_index_d.h +0 -56
- data/ext/pg_query/include/catalog/pg_language.h +0 -67
- data/ext/pg_query/include/catalog/pg_language_d.h +0 -39
- data/ext/pg_query/include/catalog/pg_namespace.h +0 -59
- data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_opclass.h +0 -85
- data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_operator.h +0 -104
- data/ext/pg_query/include/catalog/pg_operator_d.h +0 -106
- data/ext/pg_query/include/catalog/pg_opfamily.h +0 -60
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -47
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -63
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_proc.h +0 -211
- data/ext/pg_query/include/catalog/pg_proc_d.h +0 -99
- data/ext/pg_query/include/catalog/pg_publication.h +0 -118
- data/ext/pg_query/include/catalog/pg_publication_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -57
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -29
- data/ext/pg_query/include/catalog/pg_statistic.h +0 -275
- data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -194
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -74
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -40
- data/ext/pg_query/include/catalog/pg_transform.h +0 -45
- data/ext/pg_query/include/catalog/pg_transform_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_trigger.h +0 -137
- data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -106
- data/ext/pg_query/include/catalog/pg_ts_config.h +0 -50
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -54
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -33
- data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -57
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_ts_template.h +0 -48
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_type.h +0 -373
- data/ext/pg_query/include/catalog/pg_type_d.h +0 -285
- data/ext/pg_query/include/catalog/storage.h +0 -48
- data/ext/pg_query/include/commands/async.h +0 -54
- data/ext/pg_query/include/commands/dbcommands.h +0 -35
- data/ext/pg_query/include/commands/defrem.h +0 -173
- data/ext/pg_query/include/commands/event_trigger.h +0 -88
- data/ext/pg_query/include/commands/explain.h +0 -127
- data/ext/pg_query/include/commands/prepare.h +0 -61
- data/ext/pg_query/include/commands/tablespace.h +0 -69
- data/ext/pg_query/include/commands/trigger.h +0 -285
- data/ext/pg_query/include/commands/user.h +0 -37
- data/ext/pg_query/include/commands/vacuum.h +0 -293
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/file_perm.h +0 -56
- data/ext/pg_query/include/common/hashfn.h +0 -104
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/keywords.h +0 -33
- data/ext/pg_query/include/common/kwlookup.h +0 -44
- data/ext/pg_query/include/common/relpath.h +0 -90
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/common/unicode_combining_table.h +0 -196
- data/ext/pg_query/include/datatype/timestamp.h +0 -197
- data/ext/pg_query/include/executor/execdesc.h +0 -70
- data/ext/pg_query/include/executor/executor.h +0 -620
- data/ext/pg_query/include/executor/functions.h +0 -41
- data/ext/pg_query/include/executor/instrument.h +0 -101
- data/ext/pg_query/include/executor/spi.h +0 -175
- data/ext/pg_query/include/executor/tablefunc.h +0 -67
- data/ext/pg_query/include/executor/tuptable.h +0 -487
- data/ext/pg_query/include/fmgr.h +0 -775
- data/ext/pg_query/include/funcapi.h +0 -348
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/jit/jit.h +0 -105
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/lib/ilist.h +0 -727
- data/ext/pg_query/include/lib/pairingheap.h +0 -102
- data/ext/pg_query/include/lib/simplehash.h +0 -1059
- data/ext/pg_query/include/lib/stringinfo.h +0 -161
- data/ext/pg_query/include/libpq/auth.h +0 -29
- data/ext/pg_query/include/libpq/crypt.h +0 -46
- data/ext/pg_query/include/libpq/hba.h +0 -140
- data/ext/pg_query/include/libpq/libpq-be.h +0 -326
- data/ext/pg_query/include/libpq/libpq.h +0 -134
- data/ext/pg_query/include/libpq/pqcomm.h +0 -208
- data/ext/pg_query/include/libpq/pqformat.h +0 -210
- data/ext/pg_query/include/libpq/pqsignal.h +0 -42
- data/ext/pg_query/include/mb/pg_wchar.h +0 -673
- data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
- data/ext/pg_query/include/miscadmin.h +0 -489
- data/ext/pg_query/include/nodes/bitmapset.h +0 -122
- data/ext/pg_query/include/nodes/execnodes.h +0 -2523
- data/ext/pg_query/include/nodes/extensible.h +0 -160
- data/ext/pg_query/include/nodes/lockoptions.h +0 -61
- data/ext/pg_query/include/nodes/makefuncs.h +0 -108
- data/ext/pg_query/include/nodes/memnodes.h +0 -108
- data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
- data/ext/pg_query/include/nodes/nodes.h +0 -842
- data/ext/pg_query/include/nodes/params.h +0 -170
- data/ext/pg_query/include/nodes/parsenodes.h +0 -3580
- data/ext/pg_query/include/nodes/pathnodes.h +0 -2557
- data/ext/pg_query/include/nodes/pg_list.h +0 -606
- data/ext/pg_query/include/nodes/plannodes.h +0 -1266
- data/ext/pg_query/include/nodes/primnodes.h +0 -1541
- data/ext/pg_query/include/nodes/print.h +0 -34
- data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/optimizer/cost.h +0 -206
- data/ext/pg_query/include/optimizer/geqo.h +0 -88
- data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
- data/ext/pg_query/include/optimizer/optimizer.h +0 -194
- data/ext/pg_query/include/optimizer/paths.h +0 -257
- data/ext/pg_query/include/optimizer/planmain.h +0 -119
- data/ext/pg_query/include/parser/analyze.h +0 -49
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/gramparse.h +0 -75
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_agg.h +0 -68
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_coerce.h +0 -98
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_expr.h +0 -26
- data/ext/pg_query/include/parser/parse_func.h +0 -73
- data/ext/pg_query/include/parser/parse_node.h +0 -327
- data/ext/pg_query/include/parser/parse_oper.h +0 -67
- data/ext/pg_query/include/parser/parse_relation.h +0 -123
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parse_type.h +0 -60
- data/ext/pg_query/include/parser/parser.h +0 -41
- data/ext/pg_query/include/parser/parsetree.h +0 -61
- data/ext/pg_query/include/parser/scanner.h +0 -152
- data/ext/pg_query/include/parser/scansup.h +0 -30
- data/ext/pg_query/include/partitioning/partdefs.h +0 -26
- data/ext/pg_query/include/pg_config.h +0 -995
- data/ext/pg_query/include/pg_config_manual.h +0 -357
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pg_getopt.h +0 -56
- data/ext/pg_query/include/pg_trace.h +0 -17
- data/ext/pg_query/include/pgstat.h +0 -1488
- data/ext/pg_query/include/pgtime.h +0 -84
- data/ext/pg_query/include/pl_gram.h +0 -385
- data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
- data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -112
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -246
- data/ext/pg_query/include/plerrcodes.h +0 -990
- data/ext/pg_query/include/plpgsql.h +0 -1347
- data/ext/pg_query/include/port/atomics/arch-arm.h +0 -26
- data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
- data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
- data/ext/pg_query/include/port/atomics/fallback.h +0 -170
- data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
- data/ext/pg_query/include/port/atomics/generic.h +0 -401
- data/ext/pg_query/include/port/atomics.h +0 -524
- data/ext/pg_query/include/port/pg_bitutils.h +0 -272
- data/ext/pg_query/include/port/pg_bswap.h +0 -161
- data/ext/pg_query/include/port/pg_crc32c.h +0 -101
- data/ext/pg_query/include/port.h +0 -528
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postgres.h +0 -764
- data/ext/pg_query/include/postgres_ext.h +0 -74
- data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
- data/ext/pg_query/include/postmaster/bgworker.h +0 -161
- data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
- data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/interrupt.h +0 -32
- data/ext/pg_query/include/postmaster/pgarch.h +0 -39
- data/ext/pg_query/include/postmaster/postmaster.h +0 -77
- data/ext/pg_query/include/postmaster/syslogger.h +0 -98
- data/ext/pg_query/include/postmaster/walwriter.h +0 -21
- data/ext/pg_query/include/regex/regex.h +0 -184
- data/ext/pg_query/include/replication/logicallauncher.h +0 -31
- 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/origin.h +0 -73
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -468
- data/ext/pg_query/include/replication/slot.h +0 -219
- data/ext/pg_query/include/replication/syncrep.h +0 -115
- data/ext/pg_query/include/replication/walreceiver.h +0 -340
- data/ext/pg_query/include/replication/walsender.h +0 -74
- data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
- data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -40
- data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
- data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
- data/ext/pg_query/include/storage/backendid.h +0 -37
- data/ext/pg_query/include/storage/block.h +0 -121
- data/ext/pg_query/include/storage/buf.h +0 -46
- data/ext/pg_query/include/storage/bufmgr.h +0 -292
- data/ext/pg_query/include/storage/bufpage.h +0 -459
- data/ext/pg_query/include/storage/condition_variable.h +0 -62
- data/ext/pg_query/include/storage/dsm.h +0 -61
- data/ext/pg_query/include/storage/dsm_impl.h +0 -75
- data/ext/pg_query/include/storage/fd.h +0 -168
- data/ext/pg_query/include/storage/ipc.h +0 -81
- data/ext/pg_query/include/storage/item.h +0 -19
- data/ext/pg_query/include/storage/itemid.h +0 -184
- data/ext/pg_query/include/storage/itemptr.h +0 -206
- data/ext/pg_query/include/storage/large_object.h +0 -100
- data/ext/pg_query/include/storage/latch.h +0 -190
- data/ext/pg_query/include/storage/lmgr.h +0 -114
- data/ext/pg_query/include/storage/lock.h +0 -613
- data/ext/pg_query/include/storage/lockdefs.h +0 -59
- data/ext/pg_query/include/storage/lwlock.h +0 -233
- data/ext/pg_query/include/storage/lwlocknames.h +0 -51
- data/ext/pg_query/include/storage/off.h +0 -57
- data/ext/pg_query/include/storage/pg_sema.h +0 -61
- data/ext/pg_query/include/storage/pg_shmem.h +0 -90
- data/ext/pg_query/include/storage/pmsignal.h +0 -94
- data/ext/pg_query/include/storage/predicate.h +0 -87
- data/ext/pg_query/include/storage/proc.h +0 -347
- data/ext/pg_query/include/storage/proclist_types.h +0 -51
- data/ext/pg_query/include/storage/procsignal.h +0 -75
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/storage/s_lock.h +0 -1071
- data/ext/pg_query/include/storage/sharedfileset.h +0 -45
- data/ext/pg_query/include/storage/shm_mq.h +0 -85
- data/ext/pg_query/include/storage/shm_toc.h +0 -58
- data/ext/pg_query/include/storage/shmem.h +0 -81
- data/ext/pg_query/include/storage/sinval.h +0 -153
- data/ext/pg_query/include/storage/sinvaladt.h +0 -43
- data/ext/pg_query/include/storage/smgr.h +0 -109
- data/ext/pg_query/include/storage/spin.h +0 -77
- data/ext/pg_query/include/storage/standby.h +0 -91
- data/ext/pg_query/include/storage/standbydefs.h +0 -74
- data/ext/pg_query/include/storage/sync.h +0 -62
- data/ext/pg_query/include/tcop/cmdtag.h +0 -58
- data/ext/pg_query/include/tcop/cmdtaglist.h +0 -217
- data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
- data/ext/pg_query/include/tcop/dest.h +0 -149
- data/ext/pg_query/include/tcop/fastpath.h +0 -21
- data/ext/pg_query/include/tcop/pquery.h +0 -51
- data/ext/pg_query/include/tcop/tcopprot.h +0 -89
- data/ext/pg_query/include/tcop/utility.h +0 -108
- data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
- data/ext/pg_query/include/utils/acl.h +0 -312
- data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
- data/ext/pg_query/include/utils/array.h +0 -459
- data/ext/pg_query/include/utils/builtins.h +0 -128
- data/ext/pg_query/include/utils/bytea.h +0 -27
- data/ext/pg_query/include/utils/catcache.h +0 -231
- data/ext/pg_query/include/utils/date.h +0 -90
- data/ext/pg_query/include/utils/datetime.h +0 -343
- data/ext/pg_query/include/utils/datum.h +0 -68
- data/ext/pg_query/include/utils/dsa.h +0 -123
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- data/ext/pg_query/include/utils/elog.h +0 -439
- data/ext/pg_query/include/utils/errcodes.h +0 -352
- data/ext/pg_query/include/utils/expandeddatum.h +0 -159
- data/ext/pg_query/include/utils/expandedrecord.h +0 -231
- data/ext/pg_query/include/utils/float.h +0 -356
- data/ext/pg_query/include/utils/fmgroids.h +0 -2657
- data/ext/pg_query/include/utils/fmgrprotos.h +0 -2646
- data/ext/pg_query/include/utils/fmgrtab.h +0 -48
- data/ext/pg_query/include/utils/guc.h +0 -443
- data/ext/pg_query/include/utils/guc_tables.h +0 -272
- data/ext/pg_query/include/utils/hsearch.h +0 -149
- data/ext/pg_query/include/utils/inval.h +0 -65
- data/ext/pg_query/include/utils/lsyscache.h +0 -198
- data/ext/pg_query/include/utils/memdebug.h +0 -82
- data/ext/pg_query/include/utils/memutils.h +0 -225
- data/ext/pg_query/include/utils/numeric.h +0 -76
- data/ext/pg_query/include/utils/palloc.h +0 -136
- data/ext/pg_query/include/utils/partcache.h +0 -102
- data/ext/pg_query/include/utils/pg_locale.h +0 -119
- 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/plancache.h +0 -235
- data/ext/pg_query/include/utils/portal.h +0 -254
- data/ext/pg_query/include/utils/probes.h +0 -114
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/queryenvironment.h +0 -74
- data/ext/pg_query/include/utils/regproc.h +0 -28
- data/ext/pg_query/include/utils/rel.h +0 -643
- data/ext/pg_query/include/utils/relcache.h +0 -150
- data/ext/pg_query/include/utils/reltrigger.h +0 -81
- data/ext/pg_query/include/utils/resowner.h +0 -86
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/ruleutils.h +0 -44
- data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
- data/ext/pg_query/include/utils/snapmgr.h +0 -159
- data/ext/pg_query/include/utils/snapshot.h +0 -206
- data/ext/pg_query/include/utils/sortsupport.h +0 -276
- data/ext/pg_query/include/utils/syscache.h +0 -219
- data/ext/pg_query/include/utils/timeout.h +0 -88
- data/ext/pg_query/include/utils/timestamp.h +0 -116
- data/ext/pg_query/include/utils/tuplesort.h +0 -277
- data/ext/pg_query/include/utils/tuplestore.h +0 -91
- data/ext/pg_query/include/utils/typcache.h +0 -202
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/include/utils/varlena.h +0 -39
- data/ext/pg_query/include/utils/xml.h +0 -84
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
- 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 -1832
- 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/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -0,0 +1,294 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* fdwapi.h
|
4
|
+
* API for foreign-data wrappers
|
5
|
+
*
|
6
|
+
* Copyright (c) 2010-2024, 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 */
|
@@ -0,0 +1,360 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* funcapi.h
|
4
|
+
* Definitions for functions which return composite type and/or sets
|
5
|
+
* or work on VARIADIC inputs.
|
6
|
+
*
|
7
|
+
* This file must be included by all Postgres modules that either define
|
8
|
+
* or call FUNCAPI-callable functions or macros.
|
9
|
+
*
|
10
|
+
*
|
11
|
+
* Copyright (c) 2002-2024, PostgreSQL Global Development Group
|
12
|
+
*
|
13
|
+
* src/include/funcapi.h
|
14
|
+
*
|
15
|
+
*-------------------------------------------------------------------------
|
16
|
+
*/
|
17
|
+
#ifndef FUNCAPI_H
|
18
|
+
#define FUNCAPI_H
|
19
|
+
|
20
|
+
#include "access/tupdesc.h"
|
21
|
+
#include "executor/executor.h"
|
22
|
+
#include "executor/tuptable.h"
|
23
|
+
#include "fmgr.h"
|
24
|
+
|
25
|
+
/*-------------------------------------------------------------------------
|
26
|
+
* Support to ease writing Functions returning composite types
|
27
|
+
*-------------------------------------------------------------------------
|
28
|
+
*
|
29
|
+
* This struct holds arrays of individual attribute information
|
30
|
+
* needed to create a tuple from raw C strings. It also requires
|
31
|
+
* a copy of the TupleDesc. The information carried here
|
32
|
+
* is derived from the TupleDesc, but it is stored here to
|
33
|
+
* avoid redundant cpu cycles on each call to an SRF.
|
34
|
+
*/
|
35
|
+
typedef struct AttInMetadata
|
36
|
+
{
|
37
|
+
/* full TupleDesc */
|
38
|
+
TupleDesc tupdesc;
|
39
|
+
|
40
|
+
/* array of attribute type input function finfo */
|
41
|
+
FmgrInfo *attinfuncs;
|
42
|
+
|
43
|
+
/* array of attribute type i/o parameter OIDs */
|
44
|
+
Oid *attioparams;
|
45
|
+
|
46
|
+
/* array of attribute typmod */
|
47
|
+
int32 *atttypmods;
|
48
|
+
} AttInMetadata;
|
49
|
+
|
50
|
+
/*-------------------------------------------------------------------------
|
51
|
+
* Support struct to ease writing Set Returning Functions (SRFs)
|
52
|
+
*-------------------------------------------------------------------------
|
53
|
+
*
|
54
|
+
* This struct holds function context for Set Returning Functions.
|
55
|
+
* Use fn_extra to hold a pointer to it across calls
|
56
|
+
*/
|
57
|
+
typedef struct FuncCallContext
|
58
|
+
{
|
59
|
+
/*
|
60
|
+
* Number of times we've been called before
|
61
|
+
*
|
62
|
+
* call_cntr is initialized to 0 for you by SRF_FIRSTCALL_INIT(), and
|
63
|
+
* incremented for you every time SRF_RETURN_NEXT() is called.
|
64
|
+
*/
|
65
|
+
uint64 call_cntr;
|
66
|
+
|
67
|
+
/*
|
68
|
+
* OPTIONAL maximum number of calls
|
69
|
+
*
|
70
|
+
* max_calls is here for convenience only and setting it is optional. If
|
71
|
+
* not set, you must provide alternative means to know when the function
|
72
|
+
* is done.
|
73
|
+
*/
|
74
|
+
uint64 max_calls;
|
75
|
+
|
76
|
+
/*
|
77
|
+
* OPTIONAL pointer to miscellaneous user-provided context information
|
78
|
+
*
|
79
|
+
* user_fctx is for use as a pointer to your own struct to retain
|
80
|
+
* arbitrary context information between calls of your function.
|
81
|
+
*/
|
82
|
+
void *user_fctx;
|
83
|
+
|
84
|
+
/*
|
85
|
+
* OPTIONAL pointer to struct containing attribute type input metadata
|
86
|
+
*
|
87
|
+
* attinmeta is for use when returning tuples (i.e. composite data types)
|
88
|
+
* and is not used when returning base data types. It is only needed if
|
89
|
+
* you intend to use BuildTupleFromCStrings() to create the return tuple.
|
90
|
+
*/
|
91
|
+
AttInMetadata *attinmeta;
|
92
|
+
|
93
|
+
/*
|
94
|
+
* memory context used for structures that must live for multiple calls
|
95
|
+
*
|
96
|
+
* multi_call_memory_ctx is set by SRF_FIRSTCALL_INIT() for you, and used
|
97
|
+
* by SRF_RETURN_DONE() for cleanup. It is the most appropriate memory
|
98
|
+
* context for any memory that is to be reused across multiple calls of
|
99
|
+
* the SRF.
|
100
|
+
*/
|
101
|
+
MemoryContext multi_call_memory_ctx;
|
102
|
+
|
103
|
+
/*
|
104
|
+
* OPTIONAL pointer to struct containing tuple description
|
105
|
+
*
|
106
|
+
* tuple_desc is for use when returning tuples (i.e. composite data types)
|
107
|
+
* and is only needed if you are going to build the tuples with
|
108
|
+
* heap_form_tuple() rather than with BuildTupleFromCStrings(). Note that
|
109
|
+
* the TupleDesc pointer stored here should usually have been run through
|
110
|
+
* BlessTupleDesc() first.
|
111
|
+
*/
|
112
|
+
TupleDesc tuple_desc;
|
113
|
+
|
114
|
+
} FuncCallContext;
|
115
|
+
|
116
|
+
/*----------
|
117
|
+
* Support to ease writing functions returning composite types
|
118
|
+
*
|
119
|
+
* External declarations:
|
120
|
+
* get_call_result_type:
|
121
|
+
* Given a function's call info record, determine the kind of datatype
|
122
|
+
* it is supposed to return. If resultTypeId isn't NULL, *resultTypeId
|
123
|
+
* receives the actual datatype OID (this is mainly useful for scalar
|
124
|
+
* result types). If resultTupleDesc isn't NULL, *resultTupleDesc
|
125
|
+
* receives a pointer to a TupleDesc when the result is of a composite
|
126
|
+
* type, or NULL when it's a scalar result or the rowtype could not be
|
127
|
+
* determined. NB: the tupledesc should be copied if it is to be
|
128
|
+
* accessed over a long period.
|
129
|
+
* get_expr_result_type:
|
130
|
+
* Given an expression node, return the same info as for
|
131
|
+
* get_call_result_type. Note: the cases in which rowtypes cannot be
|
132
|
+
* determined are different from the cases for get_call_result_type.
|
133
|
+
* get_func_result_type:
|
134
|
+
* Given only a function's OID, return the same info as for
|
135
|
+
* get_call_result_type. Note: the cases in which rowtypes cannot be
|
136
|
+
* determined are different from the cases for get_call_result_type.
|
137
|
+
* Do *not* use this if you can use one of the others.
|
138
|
+
*
|
139
|
+
* See also get_expr_result_tupdesc(), which is a convenient wrapper around
|
140
|
+
* get_expr_result_type() for use when the caller only cares about
|
141
|
+
* determinable-rowtype cases.
|
142
|
+
*----------
|
143
|
+
*/
|
144
|
+
|
145
|
+
/* Type categories for get_call_result_type and siblings */
|
146
|
+
typedef enum TypeFuncClass
|
147
|
+
{
|
148
|
+
TYPEFUNC_SCALAR, /* scalar result type */
|
149
|
+
TYPEFUNC_COMPOSITE, /* determinable rowtype result */
|
150
|
+
TYPEFUNC_COMPOSITE_DOMAIN, /* domain over determinable rowtype result */
|
151
|
+
TYPEFUNC_RECORD, /* indeterminate rowtype result */
|
152
|
+
TYPEFUNC_OTHER, /* bogus type, eg pseudotype */
|
153
|
+
} TypeFuncClass;
|
154
|
+
|
155
|
+
extern TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo,
|
156
|
+
Oid *resultTypeId,
|
157
|
+
TupleDesc *resultTupleDesc);
|
158
|
+
extern TypeFuncClass get_expr_result_type(Node *expr,
|
159
|
+
Oid *resultTypeId,
|
160
|
+
TupleDesc *resultTupleDesc);
|
161
|
+
extern TypeFuncClass get_func_result_type(Oid functionId,
|
162
|
+
Oid *resultTypeId,
|
163
|
+
TupleDesc *resultTupleDesc);
|
164
|
+
|
165
|
+
extern TupleDesc get_expr_result_tupdesc(Node *expr, bool noError);
|
166
|
+
|
167
|
+
extern bool resolve_polymorphic_argtypes(int numargs, Oid *argtypes,
|
168
|
+
char *argmodes,
|
169
|
+
Node *call_expr);
|
170
|
+
|
171
|
+
extern int get_func_arg_info(HeapTuple procTup,
|
172
|
+
Oid **p_argtypes, char ***p_argnames,
|
173
|
+
char **p_argmodes);
|
174
|
+
|
175
|
+
extern int get_func_input_arg_names(Datum proargnames, Datum proargmodes,
|
176
|
+
char ***arg_names);
|
177
|
+
|
178
|
+
extern int get_func_trftypes(HeapTuple procTup, Oid **p_trftypes);
|
179
|
+
extern char *get_func_result_name(Oid functionId);
|
180
|
+
|
181
|
+
extern TupleDesc build_function_result_tupdesc_d(char prokind,
|
182
|
+
Datum proallargtypes,
|
183
|
+
Datum proargmodes,
|
184
|
+
Datum proargnames);
|
185
|
+
extern TupleDesc build_function_result_tupdesc_t(HeapTuple procTuple);
|
186
|
+
|
187
|
+
|
188
|
+
/*----------
|
189
|
+
* Support to ease writing functions returning composite types
|
190
|
+
*
|
191
|
+
* External declarations:
|
192
|
+
* TupleDesc BlessTupleDesc(TupleDesc tupdesc) - "Bless" a completed tuple
|
193
|
+
* descriptor so that it can be used to return properly labeled tuples.
|
194
|
+
* You need to call this if you are going to use heap_form_tuple directly.
|
195
|
+
* TupleDescGetAttInMetadata does it for you, however, so no need to call
|
196
|
+
* it if you call TupleDescGetAttInMetadata.
|
197
|
+
* AttInMetadata *TupleDescGetAttInMetadata(TupleDesc tupdesc) - Build an
|
198
|
+
* AttInMetadata struct based on the given TupleDesc. AttInMetadata can
|
199
|
+
* be used in conjunction with C strings to produce a properly formed
|
200
|
+
* tuple.
|
201
|
+
* HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values) -
|
202
|
+
* build a HeapTuple given user data in C string form. values is an array
|
203
|
+
* of C strings, one for each attribute of the return tuple.
|
204
|
+
* Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple) - convert a
|
205
|
+
* HeapTupleHeader to a Datum.
|
206
|
+
*
|
207
|
+
* Inline declarations:
|
208
|
+
* HeapTupleGetDatum(HeapTuple tuple) - convert a HeapTuple to a Datum.
|
209
|
+
*
|
210
|
+
* Obsolete routines and macros:
|
211
|
+
* TupleDesc RelationNameGetTupleDesc(const char *relname) - Use to get a
|
212
|
+
* TupleDesc based on a named relation.
|
213
|
+
* TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases) - Use to get a
|
214
|
+
* TupleDesc based on a type OID.
|
215
|
+
* TupleGetDatum(TupleTableSlot *slot, HeapTuple tuple) - get a Datum
|
216
|
+
* given a tuple and a slot.
|
217
|
+
*----------
|
218
|
+
*/
|
219
|
+
|
220
|
+
extern TupleDesc RelationNameGetTupleDesc(const char *relname);
|
221
|
+
extern TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases);
|
222
|
+
|
223
|
+
/* from execTuples.c */
|
224
|
+
extern TupleDesc BlessTupleDesc(TupleDesc tupdesc);
|
225
|
+
extern AttInMetadata *TupleDescGetAttInMetadata(TupleDesc tupdesc);
|
226
|
+
extern HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values);
|
227
|
+
extern Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple);
|
228
|
+
|
229
|
+
static inline Datum
|
230
|
+
HeapTupleGetDatum(const HeapTupleData *tuple)
|
231
|
+
{
|
232
|
+
return HeapTupleHeaderGetDatum(tuple->t_data);
|
233
|
+
}
|
234
|
+
|
235
|
+
/* obsolete version of above */
|
236
|
+
#define TupleGetDatum(_slot, _tuple) HeapTupleGetDatum(_tuple)
|
237
|
+
|
238
|
+
|
239
|
+
/*----------
|
240
|
+
* Support for Set Returning Functions (SRFs)
|
241
|
+
*
|
242
|
+
* The basic API for SRFs using ValuePerCall mode looks something like this:
|
243
|
+
*
|
244
|
+
* Datum
|
245
|
+
* my_Set_Returning_Function(PG_FUNCTION_ARGS)
|
246
|
+
* {
|
247
|
+
* FuncCallContext *funcctx;
|
248
|
+
* Datum result;
|
249
|
+
* MemoryContext oldcontext;
|
250
|
+
* <user defined declarations>
|
251
|
+
*
|
252
|
+
* if (SRF_IS_FIRSTCALL())
|
253
|
+
* {
|
254
|
+
* funcctx = SRF_FIRSTCALL_INIT();
|
255
|
+
* // switch context when allocating stuff to be used in later calls
|
256
|
+
* oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
|
257
|
+
* <user defined code>
|
258
|
+
* <if returning composite>
|
259
|
+
* <build TupleDesc, and perhaps AttInMetadata>
|
260
|
+
* <endif returning composite>
|
261
|
+
* <user defined code>
|
262
|
+
* // return to original context when allocating transient memory
|
263
|
+
* MemoryContextSwitchTo(oldcontext);
|
264
|
+
* }
|
265
|
+
* <user defined code>
|
266
|
+
* funcctx = SRF_PERCALL_SETUP();
|
267
|
+
* <user defined code>
|
268
|
+
*
|
269
|
+
* if (funcctx->call_cntr < funcctx->max_calls)
|
270
|
+
* {
|
271
|
+
* <user defined code>
|
272
|
+
* <obtain result Datum>
|
273
|
+
* SRF_RETURN_NEXT(funcctx, result);
|
274
|
+
* }
|
275
|
+
* else
|
276
|
+
* SRF_RETURN_DONE(funcctx);
|
277
|
+
* }
|
278
|
+
*
|
279
|
+
* NOTE: there is no guarantee that a SRF using ValuePerCall mode will be
|
280
|
+
* run to completion; for example, a query with LIMIT might stop short of
|
281
|
+
* fetching all the rows. Therefore, do not expect that you can do resource
|
282
|
+
* cleanup just before SRF_RETURN_DONE(). You need not worry about releasing
|
283
|
+
* memory allocated in multi_call_memory_ctx, but holding file descriptors or
|
284
|
+
* other non-memory resources open across calls is a bug. SRFs that need
|
285
|
+
* such resources should not use these macros, but instead populate a
|
286
|
+
* tuplestore during a single call, as set up by InitMaterializedSRF() (see
|
287
|
+
* fmgr/README). Alternatively, set up a callback to release resources
|
288
|
+
* at query shutdown, using RegisterExprContextCallback().
|
289
|
+
*
|
290
|
+
*----------
|
291
|
+
*/
|
292
|
+
|
293
|
+
/* from funcapi.c */
|
294
|
+
|
295
|
+
/* flag bits for InitMaterializedSRF() */
|
296
|
+
#define MAT_SRF_USE_EXPECTED_DESC 0x01 /* use expectedDesc as tupdesc. */
|
297
|
+
#define MAT_SRF_BLESS 0x02 /* "Bless" a tuple descriptor with
|
298
|
+
* BlessTupleDesc(). */
|
299
|
+
extern void InitMaterializedSRF(FunctionCallInfo fcinfo, bits32 flags);
|
300
|
+
|
301
|
+
extern FuncCallContext *init_MultiFuncCall(PG_FUNCTION_ARGS);
|
302
|
+
extern FuncCallContext *per_MultiFuncCall(PG_FUNCTION_ARGS);
|
303
|
+
extern void end_MultiFuncCall(PG_FUNCTION_ARGS, FuncCallContext *funcctx);
|
304
|
+
|
305
|
+
#define SRF_IS_FIRSTCALL() (fcinfo->flinfo->fn_extra == NULL)
|
306
|
+
|
307
|
+
#define SRF_FIRSTCALL_INIT() init_MultiFuncCall(fcinfo)
|
308
|
+
|
309
|
+
#define SRF_PERCALL_SETUP() per_MultiFuncCall(fcinfo)
|
310
|
+
|
311
|
+
#define SRF_RETURN_NEXT(_funcctx, _result) \
|
312
|
+
do { \
|
313
|
+
ReturnSetInfo *rsi; \
|
314
|
+
(_funcctx)->call_cntr++; \
|
315
|
+
rsi = (ReturnSetInfo *) fcinfo->resultinfo; \
|
316
|
+
rsi->isDone = ExprMultipleResult; \
|
317
|
+
PG_RETURN_DATUM(_result); \
|
318
|
+
} while (0)
|
319
|
+
|
320
|
+
#define SRF_RETURN_NEXT_NULL(_funcctx) \
|
321
|
+
do { \
|
322
|
+
ReturnSetInfo *rsi; \
|
323
|
+
(_funcctx)->call_cntr++; \
|
324
|
+
rsi = (ReturnSetInfo *) fcinfo->resultinfo; \
|
325
|
+
rsi->isDone = ExprMultipleResult; \
|
326
|
+
PG_RETURN_NULL(); \
|
327
|
+
} while (0)
|
328
|
+
|
329
|
+
#define SRF_RETURN_DONE(_funcctx) \
|
330
|
+
do { \
|
331
|
+
ReturnSetInfo *rsi; \
|
332
|
+
end_MultiFuncCall(fcinfo, _funcctx); \
|
333
|
+
rsi = (ReturnSetInfo *) fcinfo->resultinfo; \
|
334
|
+
rsi->isDone = ExprEndResult; \
|
335
|
+
PG_RETURN_NULL(); \
|
336
|
+
} while (0)
|
337
|
+
|
338
|
+
/*----------
|
339
|
+
* Support to ease writing of functions dealing with VARIADIC inputs
|
340
|
+
*----------
|
341
|
+
*
|
342
|
+
* This function extracts a set of argument values, types and NULL markers
|
343
|
+
* for a given input function. This returns a set of data:
|
344
|
+
* - **values includes the set of Datum values extracted.
|
345
|
+
* - **types the data type OID for each element.
|
346
|
+
* - **nulls tracks if an element is NULL.
|
347
|
+
*
|
348
|
+
* variadic_start indicates the argument number where the VARIADIC argument
|
349
|
+
* starts.
|
350
|
+
* convert_unknown set to true will enforce the conversion of arguments
|
351
|
+
* with unknown data type to text.
|
352
|
+
*
|
353
|
+
* The return result is the number of elements stored, or -1 in the case of
|
354
|
+
* "VARIADIC NULL".
|
355
|
+
*/
|
356
|
+
extern int extract_variadic_args(FunctionCallInfo fcinfo, int variadic_start,
|
357
|
+
bool convert_unknown, Datum **args,
|
358
|
+
Oid **types, bool **nulls);
|
359
|
+
|
360
|
+
#endif /* FUNCAPI_H */
|