pg_query 4.2.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +6 -8
- data/Rakefile +5 -6
- data/ext/pg_query/extconf.rb +14 -4
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
- data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
- data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
- data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
- data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
- data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
- data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
- data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
- data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
- data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
- data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
- data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
- data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +534 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +79 -5
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +6 -10
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +23 -5
- data/lib/pg_query/version.rb +1 -1
- metadata +432 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
- /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* definitions for query plan nodes
|
|
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/nodes/plannodes.h
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
#include "access/sdir.h"
|
|
18
18
|
#include "access/stratnum.h"
|
|
19
|
+
#include "common/relpath.h"
|
|
19
20
|
#include "lib/stringinfo.h"
|
|
20
21
|
#include "nodes/bitmapset.h"
|
|
21
22
|
#include "nodes/lockoptions.h"
|
|
@@ -38,10 +39,15 @@
|
|
|
38
39
|
* nodes; in such cases, commandType == CMD_UTILITY, the statement itself
|
|
39
40
|
* is in the utilityStmt field, and the rest of the struct is mostly dummy.
|
|
40
41
|
* (We do use canSetTag, stmt_location, stmt_len, and possibly queryId.)
|
|
42
|
+
*
|
|
43
|
+
* PlannedStmt, as well as all varieties of Plan, do not support equal(),
|
|
44
|
+
* not because it's not sensible but because we currently have no need.
|
|
41
45
|
* ----------------
|
|
42
46
|
*/
|
|
43
47
|
typedef struct PlannedStmt
|
|
44
48
|
{
|
|
49
|
+
pg_node_attr(no_equal, no_query_jumble)
|
|
50
|
+
|
|
45
51
|
NodeTag type;
|
|
46
52
|
|
|
47
53
|
CmdType commandType; /* select|insert|update|delete|merge|utility */
|
|
@@ -66,6 +72,9 @@ typedef struct PlannedStmt
|
|
|
66
72
|
|
|
67
73
|
List *rtable; /* list of RangeTblEntry nodes */
|
|
68
74
|
|
|
75
|
+
List *permInfos; /* list of RTEPermissionInfo nodes for rtable
|
|
76
|
+
* entries needing one */
|
|
77
|
+
|
|
69
78
|
/* rtable indexes of target relations for INSERT/UPDATE/DELETE/MERGE */
|
|
70
79
|
List *resultRelations; /* integer list of RT indexes, or NIL */
|
|
71
80
|
|
|
@@ -110,6 +119,8 @@ typedef struct PlannedStmt
|
|
|
110
119
|
*/
|
|
111
120
|
typedef struct Plan
|
|
112
121
|
{
|
|
122
|
+
pg_node_attr(abstract, no_equal, no_query_jumble)
|
|
123
|
+
|
|
113
124
|
NodeTag type;
|
|
114
125
|
|
|
115
126
|
/*
|
|
@@ -205,11 +216,12 @@ typedef struct ProjectSet
|
|
|
205
216
|
* Apply rows produced by outer plan to result table(s),
|
|
206
217
|
* by inserting, updating, or deleting.
|
|
207
218
|
*
|
|
208
|
-
* If the originally named target table is a partitioned table
|
|
209
|
-
* nominalRelation and rootRelation contain the RT index of the
|
|
210
|
-
* root, which is not otherwise mentioned in the
|
|
211
|
-
* is zero. However, nominalRelation will
|
|
212
|
-
* EXPLAIN should claim is the
|
|
219
|
+
* If the originally named target table is a partitioned table or inheritance
|
|
220
|
+
* tree, both nominalRelation and rootRelation contain the RT index of the
|
|
221
|
+
* partition root or appendrel RTE, which is not otherwise mentioned in the
|
|
222
|
+
* plan. Otherwise rootRelation is zero. However, nominalRelation will
|
|
223
|
+
* always be set, as it's the rel that EXPLAIN should claim is the
|
|
224
|
+
* INSERT/UPDATE/DELETE/MERGE target.
|
|
213
225
|
*
|
|
214
226
|
* Note that rowMarks and epqParam are presumed to be valid for all the
|
|
215
227
|
* table(s); they can't contain any info that varies across tables.
|
|
@@ -221,7 +233,7 @@ typedef struct ModifyTable
|
|
|
221
233
|
CmdType operation; /* INSERT, UPDATE, DELETE, or MERGE */
|
|
222
234
|
bool canSetTag; /* do we set the command tag/es_processed? */
|
|
223
235
|
Index nominalRelation; /* Parent RT index for use of EXPLAIN */
|
|
224
|
-
Index rootRelation; /* Root RT index, if
|
|
236
|
+
Index rootRelation; /* Root RT index, if partitioned/inherited */
|
|
225
237
|
bool partColsUpdated; /* some part key in hierarchy updated? */
|
|
226
238
|
List *resultRelations; /* integer list of RT indexes */
|
|
227
239
|
List *updateColnosLists; /* per-target-table update_colnos lists */
|
|
@@ -274,14 +286,29 @@ typedef struct Append
|
|
|
274
286
|
typedef struct MergeAppend
|
|
275
287
|
{
|
|
276
288
|
Plan plan;
|
|
277
|
-
|
|
289
|
+
|
|
290
|
+
/* RTIs of appendrel(s) formed by this node */
|
|
291
|
+
Bitmapset *apprelids;
|
|
292
|
+
|
|
278
293
|
List *mergeplans;
|
|
294
|
+
|
|
279
295
|
/* these fields are just like the sort-key info in struct Sort: */
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
296
|
+
|
|
297
|
+
/* number of sort-key columns */
|
|
298
|
+
int numCols;
|
|
299
|
+
|
|
300
|
+
/* their indexes in the target list */
|
|
301
|
+
AttrNumber *sortColIdx pg_node_attr(array_size(numCols));
|
|
302
|
+
|
|
303
|
+
/* OIDs of operators to sort them by */
|
|
304
|
+
Oid *sortOperators pg_node_attr(array_size(numCols));
|
|
305
|
+
|
|
306
|
+
/* OIDs of collations */
|
|
307
|
+
Oid *collations pg_node_attr(array_size(numCols));
|
|
308
|
+
|
|
309
|
+
/* NULLS FIRST/LAST directions */
|
|
310
|
+
bool *nullsFirst pg_node_attr(array_size(numCols));
|
|
311
|
+
|
|
285
312
|
/* Info for run-time subplan pruning; NULL if we're not doing that */
|
|
286
313
|
struct PartitionPruneInfo *part_prune_info;
|
|
287
314
|
} MergeAppend;
|
|
@@ -297,14 +324,24 @@ typedef struct MergeAppend
|
|
|
297
324
|
typedef struct RecursiveUnion
|
|
298
325
|
{
|
|
299
326
|
Plan plan;
|
|
300
|
-
|
|
327
|
+
|
|
328
|
+
/* ID of Param representing work table */
|
|
329
|
+
int wtParam;
|
|
330
|
+
|
|
301
331
|
/* Remaining fields are zero/null in UNION ALL case */
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
332
|
+
|
|
333
|
+
/* number of columns to check for duplicate-ness */
|
|
334
|
+
int numCols;
|
|
335
|
+
|
|
336
|
+
/* their indexes in the target list */
|
|
337
|
+
AttrNumber *dupColIdx pg_node_attr(array_size(numCols));
|
|
338
|
+
|
|
339
|
+
/* equality operators to compare with */
|
|
340
|
+
Oid *dupOperators pg_node_attr(array_size(numCols));
|
|
341
|
+
Oid *dupCollations pg_node_attr(array_size(numCols));
|
|
342
|
+
|
|
343
|
+
/* estimated number of groups in input */
|
|
344
|
+
long numGroups;
|
|
308
345
|
} RecursiveUnion;
|
|
309
346
|
|
|
310
347
|
/* ----------------
|
|
@@ -339,10 +376,14 @@ typedef struct BitmapOr
|
|
|
339
376
|
/*
|
|
340
377
|
* ==========
|
|
341
378
|
* Scan nodes
|
|
379
|
+
*
|
|
380
|
+
* Scan is an abstract type that all relation scan plan types inherit from.
|
|
342
381
|
* ==========
|
|
343
382
|
*/
|
|
344
383
|
typedef struct Scan
|
|
345
384
|
{
|
|
385
|
+
pg_node_attr(abstract)
|
|
386
|
+
|
|
346
387
|
Plan plan;
|
|
347
388
|
Index scanrelid; /* relid is index into the range table */
|
|
348
389
|
} Scan;
|
|
@@ -652,6 +693,7 @@ typedef struct WorkTableScan
|
|
|
652
693
|
* When the plan node represents a foreign join, scan.scanrelid is zero and
|
|
653
694
|
* fs_relids must be consulted to identify the join relation. (fs_relids
|
|
654
695
|
* is valid for simple scans as well, but will always match scan.scanrelid.)
|
|
696
|
+
* fs_relids includes outer joins; fs_base_relids does not.
|
|
655
697
|
*
|
|
656
698
|
* If the FDW's PlanDirectModify() callback decides to repurpose a ForeignScan
|
|
657
699
|
* node to perform the UPDATE or DELETE operation directly in the remote
|
|
@@ -666,12 +708,15 @@ typedef struct ForeignScan
|
|
|
666
708
|
Scan scan;
|
|
667
709
|
CmdType operation; /* SELECT/INSERT/UPDATE/DELETE */
|
|
668
710
|
Index resultRelation; /* direct modification target's RT index */
|
|
711
|
+
Oid checkAsUser; /* user to perform the scan as; 0 means to
|
|
712
|
+
* check as current user */
|
|
669
713
|
Oid fs_server; /* OID of foreign server */
|
|
670
714
|
List *fdw_exprs; /* expressions that FDW may evaluate */
|
|
671
715
|
List *fdw_private; /* private data for FDW */
|
|
672
716
|
List *fdw_scan_tlist; /* optional tlist describing scan tuple */
|
|
673
717
|
List *fdw_recheck_quals; /* original quals not in scan.plan.qual */
|
|
674
|
-
Bitmapset *fs_relids; /* RTIs generated by this scan */
|
|
718
|
+
Bitmapset *fs_relids; /* base+OJ RTIs generated by this scan */
|
|
719
|
+
Bitmapset *fs_base_relids; /* base RTIs generated by this scan */
|
|
675
720
|
bool fsSystemCol; /* true if any "system column" is needed */
|
|
676
721
|
} ForeignScan;
|
|
677
722
|
|
|
@@ -700,6 +745,12 @@ typedef struct CustomScan
|
|
|
700
745
|
List *custom_private; /* private data for custom code */
|
|
701
746
|
List *custom_scan_tlist; /* optional tlist describing scan tuple */
|
|
702
747
|
Bitmapset *custom_relids; /* RTIs generated by this scan */
|
|
748
|
+
|
|
749
|
+
/*
|
|
750
|
+
* NOTE: The method field of CustomScan is required to be a pointer to a
|
|
751
|
+
* static table of callback functions. So we don't copy the table itself,
|
|
752
|
+
* just reference the original one.
|
|
753
|
+
*/
|
|
703
754
|
const struct CustomScanMethods *methods;
|
|
704
755
|
} CustomScan;
|
|
705
756
|
|
|
@@ -733,6 +784,8 @@ typedef struct CustomScan
|
|
|
733
784
|
*/
|
|
734
785
|
typedef struct Join
|
|
735
786
|
{
|
|
787
|
+
pg_node_attr(abstract)
|
|
788
|
+
|
|
736
789
|
Plan plan;
|
|
737
790
|
JoinType jointype;
|
|
738
791
|
bool inner_unique;
|
|
@@ -758,6 +811,8 @@ typedef struct NestLoop
|
|
|
758
811
|
|
|
759
812
|
typedef struct NestLoopParam
|
|
760
813
|
{
|
|
814
|
+
pg_node_attr(no_equal, no_query_jumble)
|
|
815
|
+
|
|
761
816
|
NodeTag type;
|
|
762
817
|
int paramno; /* number of the PARAM_EXEC Param to set */
|
|
763
818
|
Var *paramval; /* outer-relation Var to assign to Param */
|
|
@@ -777,13 +832,26 @@ typedef struct NestLoopParam
|
|
|
777
832
|
typedef struct MergeJoin
|
|
778
833
|
{
|
|
779
834
|
Join join;
|
|
780
|
-
|
|
781
|
-
|
|
835
|
+
|
|
836
|
+
/* Can we skip mark/restore calls? */
|
|
837
|
+
bool skip_mark_restore;
|
|
838
|
+
|
|
839
|
+
/* mergeclauses as expression trees */
|
|
840
|
+
List *mergeclauses;
|
|
841
|
+
|
|
782
842
|
/* these are arrays, but have the same length as the mergeclauses list: */
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
843
|
+
|
|
844
|
+
/* per-clause OIDs of btree opfamilies */
|
|
845
|
+
Oid *mergeFamilies pg_node_attr(array_size(mergeclauses));
|
|
846
|
+
|
|
847
|
+
/* per-clause OIDs of collations */
|
|
848
|
+
Oid *mergeCollations pg_node_attr(array_size(mergeclauses));
|
|
849
|
+
|
|
850
|
+
/* per-clause ordering (ASC or DESC) */
|
|
851
|
+
int *mergeStrategies pg_node_attr(array_size(mergeclauses));
|
|
852
|
+
|
|
853
|
+
/* per-clause nulls ordering */
|
|
854
|
+
bool *mergeNullsFirst pg_node_attr(array_size(mergeclauses));
|
|
787
855
|
} MergeJoin;
|
|
788
856
|
|
|
789
857
|
/* ----------------
|
|
@@ -821,21 +889,38 @@ typedef struct Memoize
|
|
|
821
889
|
{
|
|
822
890
|
Plan plan;
|
|
823
891
|
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
892
|
+
/* size of the two arrays below */
|
|
893
|
+
int numKeys;
|
|
894
|
+
|
|
895
|
+
/* hash operators for each key */
|
|
896
|
+
Oid *hashOperators pg_node_attr(array_size(numKeys));
|
|
897
|
+
|
|
898
|
+
/* collations for each key */
|
|
899
|
+
Oid *collations pg_node_attr(array_size(numKeys));
|
|
900
|
+
|
|
901
|
+
/* cache keys in the form of exprs containing parameters */
|
|
902
|
+
List *param_exprs;
|
|
903
|
+
|
|
904
|
+
/*
|
|
905
|
+
* true if the cache entry should be marked as complete after we store the
|
|
906
|
+
* first tuple in it.
|
|
907
|
+
*/
|
|
908
|
+
bool singlerow;
|
|
909
|
+
|
|
910
|
+
/*
|
|
911
|
+
* true when cache key should be compared bit by bit, false when using
|
|
912
|
+
* hash equality ops
|
|
913
|
+
*/
|
|
914
|
+
bool binary_mode;
|
|
915
|
+
|
|
916
|
+
/*
|
|
917
|
+
* The maximum number of entries that the planner expects will fit in the
|
|
918
|
+
* cache, or 0 if unknown
|
|
919
|
+
*/
|
|
920
|
+
uint32 est_entries;
|
|
921
|
+
|
|
922
|
+
/* paramids from param_exprs */
|
|
923
|
+
Bitmapset *keyparamids;
|
|
839
924
|
} Memoize;
|
|
840
925
|
|
|
841
926
|
/* ----------------
|
|
@@ -845,11 +930,21 @@ typedef struct Memoize
|
|
|
845
930
|
typedef struct Sort
|
|
846
931
|
{
|
|
847
932
|
Plan plan;
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
933
|
+
|
|
934
|
+
/* number of sort-key columns */
|
|
935
|
+
int numCols;
|
|
936
|
+
|
|
937
|
+
/* their indexes in the target list */
|
|
938
|
+
AttrNumber *sortColIdx pg_node_attr(array_size(numCols));
|
|
939
|
+
|
|
940
|
+
/* OIDs of operators to sort them by */
|
|
941
|
+
Oid *sortOperators pg_node_attr(array_size(numCols));
|
|
942
|
+
|
|
943
|
+
/* OIDs of collations */
|
|
944
|
+
Oid *collations pg_node_attr(array_size(numCols));
|
|
945
|
+
|
|
946
|
+
/* NULLS FIRST/LAST directions */
|
|
947
|
+
bool *nullsFirst pg_node_attr(array_size(numCols));
|
|
853
948
|
} Sort;
|
|
854
949
|
|
|
855
950
|
/* ----------------
|
|
@@ -871,10 +966,16 @@ typedef struct IncrementalSort
|
|
|
871
966
|
typedef struct Group
|
|
872
967
|
{
|
|
873
968
|
Plan plan;
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
969
|
+
|
|
970
|
+
/* number of grouping columns */
|
|
971
|
+
int numCols;
|
|
972
|
+
|
|
973
|
+
/* their indexes in the target list */
|
|
974
|
+
AttrNumber *grpColIdx pg_node_attr(array_size(numCols));
|
|
975
|
+
|
|
976
|
+
/* equality operators to compare with */
|
|
977
|
+
Oid *grpOperators pg_node_attr(array_size(numCols));
|
|
978
|
+
Oid *grpCollations pg_node_attr(array_size(numCols));
|
|
878
979
|
} Group;
|
|
879
980
|
|
|
880
981
|
/* ---------------
|
|
@@ -894,18 +995,39 @@ typedef struct Group
|
|
|
894
995
|
typedef struct Agg
|
|
895
996
|
{
|
|
896
997
|
Plan plan;
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
998
|
+
|
|
999
|
+
/* basic strategy, see nodes.h */
|
|
1000
|
+
AggStrategy aggstrategy;
|
|
1001
|
+
|
|
1002
|
+
/* agg-splitting mode, see nodes.h */
|
|
1003
|
+
AggSplit aggsplit;
|
|
1004
|
+
|
|
1005
|
+
/* number of grouping columns */
|
|
1006
|
+
int numCols;
|
|
1007
|
+
|
|
1008
|
+
/* their indexes in the target list */
|
|
1009
|
+
AttrNumber *grpColIdx pg_node_attr(array_size(numCols));
|
|
1010
|
+
|
|
1011
|
+
/* equality operators to compare with */
|
|
1012
|
+
Oid *grpOperators pg_node_attr(array_size(numCols));
|
|
1013
|
+
Oid *grpCollations pg_node_attr(array_size(numCols));
|
|
1014
|
+
|
|
1015
|
+
/* estimated number of groups in input */
|
|
1016
|
+
long numGroups;
|
|
1017
|
+
|
|
1018
|
+
/* for pass-by-ref transition data */
|
|
1019
|
+
uint64 transitionSpace;
|
|
1020
|
+
|
|
1021
|
+
/* IDs of Params used in Aggref inputs */
|
|
1022
|
+
Bitmapset *aggParams;
|
|
1023
|
+
|
|
906
1024
|
/* Note: planner provides numGroups & aggParams only in HASHED/MIXED case */
|
|
907
|
-
|
|
908
|
-
|
|
1025
|
+
|
|
1026
|
+
/* grouping sets to use */
|
|
1027
|
+
List *groupingSets;
|
|
1028
|
+
|
|
1029
|
+
/* chained Agg/Sort nodes */
|
|
1030
|
+
List *chain;
|
|
909
1031
|
} Agg;
|
|
910
1032
|
|
|
911
1033
|
/* ----------------
|
|
@@ -915,28 +1037,71 @@ typedef struct Agg
|
|
|
915
1037
|
typedef struct WindowAgg
|
|
916
1038
|
{
|
|
917
1039
|
Plan plan;
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
int
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
1040
|
+
|
|
1041
|
+
/* ID referenced by window functions */
|
|
1042
|
+
Index winref;
|
|
1043
|
+
|
|
1044
|
+
/* number of columns in partition clause */
|
|
1045
|
+
int partNumCols;
|
|
1046
|
+
|
|
1047
|
+
/* their indexes in the target list */
|
|
1048
|
+
AttrNumber *partColIdx pg_node_attr(array_size(partNumCols));
|
|
1049
|
+
|
|
1050
|
+
/* equality operators for partition columns */
|
|
1051
|
+
Oid *partOperators pg_node_attr(array_size(partNumCols));
|
|
1052
|
+
|
|
1053
|
+
/* collations for partition columns */
|
|
1054
|
+
Oid *partCollations pg_node_attr(array_size(partNumCols));
|
|
1055
|
+
|
|
1056
|
+
/* number of columns in ordering clause */
|
|
1057
|
+
int ordNumCols;
|
|
1058
|
+
|
|
1059
|
+
/* their indexes in the target list */
|
|
1060
|
+
AttrNumber *ordColIdx pg_node_attr(array_size(ordNumCols));
|
|
1061
|
+
|
|
1062
|
+
/* equality operators for ordering columns */
|
|
1063
|
+
Oid *ordOperators pg_node_attr(array_size(ordNumCols));
|
|
1064
|
+
|
|
1065
|
+
/* collations for ordering columns */
|
|
1066
|
+
Oid *ordCollations pg_node_attr(array_size(ordNumCols));
|
|
1067
|
+
|
|
1068
|
+
/* frame_clause options, see WindowDef */
|
|
1069
|
+
int frameOptions;
|
|
1070
|
+
|
|
1071
|
+
/* expression for starting bound, if any */
|
|
1072
|
+
Node *startOffset;
|
|
1073
|
+
|
|
1074
|
+
/* expression for ending bound, if any */
|
|
1075
|
+
Node *endOffset;
|
|
1076
|
+
|
|
1077
|
+
/* qual to help short-circuit execution */
|
|
1078
|
+
List *runCondition;
|
|
1079
|
+
|
|
1080
|
+
/* runCondition for display in EXPLAIN */
|
|
1081
|
+
List *runConditionOrig;
|
|
1082
|
+
|
|
932
1083
|
/* these fields are used with RANGE offset PRECEDING/FOLLOWING: */
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
Oid
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
1084
|
+
|
|
1085
|
+
/* in_range function for startOffset */
|
|
1086
|
+
Oid startInRangeFunc;
|
|
1087
|
+
|
|
1088
|
+
/* in_range function for endOffset */
|
|
1089
|
+
Oid endInRangeFunc;
|
|
1090
|
+
|
|
1091
|
+
/* collation for in_range tests */
|
|
1092
|
+
Oid inRangeColl;
|
|
1093
|
+
|
|
1094
|
+
/* use ASC sort order for in_range tests? */
|
|
1095
|
+
bool inRangeAsc;
|
|
1096
|
+
|
|
1097
|
+
/* nulls sort first for in_range tests? */
|
|
1098
|
+
bool inRangeNullsFirst;
|
|
1099
|
+
|
|
1100
|
+
/*
|
|
1101
|
+
* false for all apart from the WindowAgg that's closest to the root of
|
|
1102
|
+
* the plan
|
|
1103
|
+
*/
|
|
1104
|
+
bool topWindow;
|
|
940
1105
|
} WindowAgg;
|
|
941
1106
|
|
|
942
1107
|
/* ----------------
|
|
@@ -946,10 +1111,18 @@ typedef struct WindowAgg
|
|
|
946
1111
|
typedef struct Unique
|
|
947
1112
|
{
|
|
948
1113
|
Plan plan;
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
1114
|
+
|
|
1115
|
+
/* number of columns to check for uniqueness */
|
|
1116
|
+
int numCols;
|
|
1117
|
+
|
|
1118
|
+
/* their indexes in the target list */
|
|
1119
|
+
AttrNumber *uniqColIdx pg_node_attr(array_size(numCols));
|
|
1120
|
+
|
|
1121
|
+
/* equality operators to compare with */
|
|
1122
|
+
Oid *uniqOperators pg_node_attr(array_size(numCols));
|
|
1123
|
+
|
|
1124
|
+
/* collations for equality comparisons */
|
|
1125
|
+
Oid *uniqCollations pg_node_attr(array_size(numCols));
|
|
953
1126
|
} Unique;
|
|
954
1127
|
|
|
955
1128
|
/* ------------
|
|
@@ -981,16 +1154,35 @@ typedef struct Gather
|
|
|
981
1154
|
typedef struct GatherMerge
|
|
982
1155
|
{
|
|
983
1156
|
Plan plan;
|
|
984
|
-
|
|
985
|
-
|
|
1157
|
+
|
|
1158
|
+
/* planned number of worker processes */
|
|
1159
|
+
int num_workers;
|
|
1160
|
+
|
|
1161
|
+
/* ID of Param that signals a rescan, or -1 */
|
|
1162
|
+
int rescan_param;
|
|
1163
|
+
|
|
986
1164
|
/* remaining fields are just like the sort-key info in struct Sort */
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1165
|
+
|
|
1166
|
+
/* number of sort-key columns */
|
|
1167
|
+
int numCols;
|
|
1168
|
+
|
|
1169
|
+
/* their indexes in the target list */
|
|
1170
|
+
AttrNumber *sortColIdx pg_node_attr(array_size(numCols));
|
|
1171
|
+
|
|
1172
|
+
/* OIDs of operators to sort them by */
|
|
1173
|
+
Oid *sortOperators pg_node_attr(array_size(numCols));
|
|
1174
|
+
|
|
1175
|
+
/* OIDs of collations */
|
|
1176
|
+
Oid *collations pg_node_attr(array_size(numCols));
|
|
1177
|
+
|
|
1178
|
+
/* NULLS FIRST/LAST directions */
|
|
1179
|
+
bool *nullsFirst pg_node_attr(array_size(numCols));
|
|
1180
|
+
|
|
1181
|
+
/*
|
|
1182
|
+
* param id's of initplans which are referred at gather merge or one of
|
|
1183
|
+
* it's child node
|
|
1184
|
+
*/
|
|
1185
|
+
Bitmapset *initParam;
|
|
994
1186
|
} GatherMerge;
|
|
995
1187
|
|
|
996
1188
|
/* ----------------
|
|
@@ -1024,16 +1216,31 @@ typedef struct Hash
|
|
|
1024
1216
|
typedef struct SetOp
|
|
1025
1217
|
{
|
|
1026
1218
|
Plan plan;
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
int
|
|
1036
|
-
|
|
1219
|
+
|
|
1220
|
+
/* what to do, see nodes.h */
|
|
1221
|
+
SetOpCmd cmd;
|
|
1222
|
+
|
|
1223
|
+
/* how to do it, see nodes.h */
|
|
1224
|
+
SetOpStrategy strategy;
|
|
1225
|
+
|
|
1226
|
+
/* number of columns to check for duplicate-ness */
|
|
1227
|
+
int numCols;
|
|
1228
|
+
|
|
1229
|
+
/* their indexes in the target list */
|
|
1230
|
+
AttrNumber *dupColIdx pg_node_attr(array_size(numCols));
|
|
1231
|
+
|
|
1232
|
+
/* equality operators to compare with */
|
|
1233
|
+
Oid *dupOperators pg_node_attr(array_size(numCols));
|
|
1234
|
+
Oid *dupCollations pg_node_attr(array_size(numCols));
|
|
1235
|
+
|
|
1236
|
+
/* where is the flag column, if any */
|
|
1237
|
+
AttrNumber flagColIdx;
|
|
1238
|
+
|
|
1239
|
+
/* flag value for first input relation */
|
|
1240
|
+
int firstFlag;
|
|
1241
|
+
|
|
1242
|
+
/* estimated number of groups in input */
|
|
1243
|
+
long numGroups;
|
|
1037
1244
|
} SetOp;
|
|
1038
1245
|
|
|
1039
1246
|
/* ----------------
|
|
@@ -1062,13 +1269,27 @@ typedef struct LockRows
|
|
|
1062
1269
|
typedef struct Limit
|
|
1063
1270
|
{
|
|
1064
1271
|
Plan plan;
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1272
|
+
|
|
1273
|
+
/* OFFSET parameter, or NULL if none */
|
|
1274
|
+
Node *limitOffset;
|
|
1275
|
+
|
|
1276
|
+
/* COUNT parameter, or NULL if none */
|
|
1277
|
+
Node *limitCount;
|
|
1278
|
+
|
|
1279
|
+
/* limit type */
|
|
1280
|
+
LimitOption limitOption;
|
|
1281
|
+
|
|
1282
|
+
/* number of columns to check for similarity */
|
|
1283
|
+
int uniqNumCols;
|
|
1284
|
+
|
|
1285
|
+
/* their indexes in the target list */
|
|
1286
|
+
AttrNumber *uniqColIdx pg_node_attr(array_size(uniqNumCols));
|
|
1287
|
+
|
|
1288
|
+
/* equality operators to compare with */
|
|
1289
|
+
Oid *uniqOperators pg_node_attr(array_size(uniqNumCols));
|
|
1290
|
+
|
|
1291
|
+
/* collations for equality comparisons */
|
|
1292
|
+
Oid *uniqCollations pg_node_attr(array_size(uniqNumCols));
|
|
1072
1293
|
} Limit;
|
|
1073
1294
|
|
|
1074
1295
|
|
|
@@ -1089,7 +1310,7 @@ typedef struct Limit
|
|
|
1089
1310
|
* doing a separate remote query to lock each selected row is usually pretty
|
|
1090
1311
|
* unappealing, so early locking remains a credible design choice for FDWs.
|
|
1091
1312
|
*
|
|
1092
|
-
* When doing UPDATE
|
|
1313
|
+
* When doing UPDATE/DELETE/MERGE/SELECT FOR UPDATE/SHARE, we have to uniquely
|
|
1093
1314
|
* identify all the source rows, not only those from the target relations, so
|
|
1094
1315
|
* that we can perform EvalPlanQual rechecking at need. For plain tables we
|
|
1095
1316
|
* can just fetch the TID, much as for a target relation; this case is
|
|
@@ -1118,7 +1339,7 @@ typedef enum RowMarkType
|
|
|
1118
1339
|
* PlanRowMark -
|
|
1119
1340
|
* plan-time representation of FOR [KEY] UPDATE/SHARE clauses
|
|
1120
1341
|
*
|
|
1121
|
-
* When doing UPDATE
|
|
1342
|
+
* When doing UPDATE/DELETE/MERGE/SELECT FOR UPDATE/SHARE, we create a separate
|
|
1122
1343
|
* PlanRowMark node for each non-target relation in the query. Relations that
|
|
1123
1344
|
* are not specified as FOR UPDATE/SHARE are marked ROW_MARK_REFERENCE (if
|
|
1124
1345
|
* regular tables or supported foreign tables) or ROW_MARK_COPY (if not).
|
|
@@ -1154,6 +1375,8 @@ typedef enum RowMarkType
|
|
|
1154
1375
|
*/
|
|
1155
1376
|
typedef struct PlanRowMark
|
|
1156
1377
|
{
|
|
1378
|
+
pg_node_attr(no_equal, no_query_jumble)
|
|
1379
|
+
|
|
1157
1380
|
NodeTag type;
|
|
1158
1381
|
Index rti; /* range table index of markable relation */
|
|
1159
1382
|
Index prti; /* range table index of parent relation */
|
|
@@ -1198,6 +1421,8 @@ typedef struct PlanRowMark
|
|
|
1198
1421
|
*/
|
|
1199
1422
|
typedef struct PartitionPruneInfo
|
|
1200
1423
|
{
|
|
1424
|
+
pg_node_attr(no_equal, no_query_jumble)
|
|
1425
|
+
|
|
1201
1426
|
NodeTag type;
|
|
1202
1427
|
List *prune_infos;
|
|
1203
1428
|
Bitmapset *other_subplans;
|
|
@@ -1222,14 +1447,27 @@ typedef struct PartitionPruneInfo
|
|
|
1222
1447
|
*/
|
|
1223
1448
|
typedef struct PartitionedRelPruneInfo
|
|
1224
1449
|
{
|
|
1450
|
+
pg_node_attr(no_equal, no_query_jumble)
|
|
1451
|
+
|
|
1225
1452
|
NodeTag type;
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1453
|
+
|
|
1454
|
+
/* RT index of partition rel for this level */
|
|
1455
|
+
Index rtindex;
|
|
1456
|
+
|
|
1457
|
+
/* Indexes of all partitions which subplans or subparts are present for */
|
|
1458
|
+
Bitmapset *present_parts;
|
|
1459
|
+
|
|
1460
|
+
/* Length of the following arrays: */
|
|
1461
|
+
int nparts;
|
|
1462
|
+
|
|
1463
|
+
/* subplan index by partition index, or -1 */
|
|
1464
|
+
int *subplan_map pg_node_attr(array_size(nparts));
|
|
1465
|
+
|
|
1466
|
+
/* subpart index by partition index, or -1 */
|
|
1467
|
+
int *subpart_map pg_node_attr(array_size(nparts));
|
|
1468
|
+
|
|
1469
|
+
/* relation OID by partition index, or 0 */
|
|
1470
|
+
Oid *relid_map pg_node_attr(array_size(nparts));
|
|
1233
1471
|
|
|
1234
1472
|
/*
|
|
1235
1473
|
* initial_pruning_steps shows how to prune during executor startup (i.e.,
|
|
@@ -1239,8 +1477,9 @@ typedef struct PartitionedRelPruneInfo
|
|
|
1239
1477
|
*/
|
|
1240
1478
|
List *initial_pruning_steps; /* List of PartitionPruneStep */
|
|
1241
1479
|
List *exec_pruning_steps; /* List of PartitionPruneStep */
|
|
1242
|
-
|
|
1243
|
-
|
|
1480
|
+
|
|
1481
|
+
/* All PARAM_EXEC Param IDs in exec_pruning_steps */
|
|
1482
|
+
Bitmapset *execparamids;
|
|
1244
1483
|
} PartitionedRelPruneInfo;
|
|
1245
1484
|
|
|
1246
1485
|
/*
|
|
@@ -1251,6 +1490,8 @@ typedef struct PartitionedRelPruneInfo
|
|
|
1251
1490
|
*/
|
|
1252
1491
|
typedef struct PartitionPruneStep
|
|
1253
1492
|
{
|
|
1493
|
+
pg_node_attr(abstract, no_equal, no_query_jumble)
|
|
1494
|
+
|
|
1254
1495
|
NodeTag type;
|
|
1255
1496
|
int step_id;
|
|
1256
1497
|
} PartitionPruneStep;
|
|
@@ -1324,6 +1565,8 @@ typedef struct PartitionPruneStepCombine
|
|
|
1324
1565
|
*/
|
|
1325
1566
|
typedef struct PlanInvalItem
|
|
1326
1567
|
{
|
|
1568
|
+
pg_node_attr(no_equal, no_query_jumble)
|
|
1569
|
+
|
|
1327
1570
|
NodeTag type;
|
|
1328
1571
|
int cacheId; /* a syscache ID, see utils/syscache.h */
|
|
1329
1572
|
uint32 hashValue; /* hash value of object's cache lookup key */
|