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
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* identifying statement boundaries in multi-statement source strings.
|
|
13
13
|
*
|
|
14
14
|
*
|
|
15
|
-
* Portions Copyright (c) 1996-
|
|
15
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
16
16
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
17
17
|
*
|
|
18
18
|
* src/include/nodes/parsenodes.h
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
#ifndef PARSENODES_H
|
|
23
23
|
#define PARSENODES_H
|
|
24
24
|
|
|
25
|
+
#include "common/relpath.h"
|
|
25
26
|
#include "nodes/bitmapset.h"
|
|
26
27
|
#include "nodes/lockoptions.h"
|
|
27
28
|
#include "nodes/primnodes.h"
|
|
@@ -72,12 +73,12 @@ typedef enum SetQuantifier
|
|
|
72
73
|
|
|
73
74
|
/*
|
|
74
75
|
* Grantable rights are encoded so that we can OR them together in a bitmask.
|
|
75
|
-
* The present representation of AclItem limits us to
|
|
76
|
-
* even though AclMode is defined as
|
|
76
|
+
* The present representation of AclItem limits us to 32 distinct rights,
|
|
77
|
+
* even though AclMode is defined as uint64. See utils/acl.h.
|
|
77
78
|
*
|
|
78
79
|
* Caution: changing these codes breaks stored ACLs, hence forces initdb.
|
|
79
80
|
*/
|
|
80
|
-
typedef
|
|
81
|
+
typedef uint64 AclMode; /* a bitmask of privilege bits */
|
|
81
82
|
|
|
82
83
|
#define ACL_INSERT (1<<0) /* for relations */
|
|
83
84
|
#define ACL_SELECT (1<<1)
|
|
@@ -87,8 +88,7 @@ typedef uint32 AclMode; /* a bitmask of privilege bits */
|
|
|
87
88
|
#define ACL_REFERENCES (1<<5)
|
|
88
89
|
#define ACL_TRIGGER (1<<6)
|
|
89
90
|
#define ACL_EXECUTE (1<<7) /* for functions */
|
|
90
|
-
#define ACL_USAGE (1<<8) /* for
|
|
91
|
-
* servers */
|
|
91
|
+
#define ACL_USAGE (1<<8) /* for various object types */
|
|
92
92
|
#define ACL_CREATE (1<<9) /* for namespaces and databases */
|
|
93
93
|
#define ACL_CREATE_TEMP (1<<10) /* for databases */
|
|
94
94
|
#define ACL_CONNECT (1<<11) /* for databases */
|
|
@@ -114,6 +114,11 @@ typedef uint32 AclMode; /* a bitmask of privilege bits */
|
|
|
114
114
|
*
|
|
115
115
|
* Planning converts a Query tree into a Plan tree headed by a PlannedStmt
|
|
116
116
|
* node --- the Query structure is not used by the executor.
|
|
117
|
+
*
|
|
118
|
+
* All the fields ignored for the query jumbling are not semantically
|
|
119
|
+
* significant (such as alias names), as is ignored anything that can
|
|
120
|
+
* be deduced from child nodes (else we'd just be double-hashing that
|
|
121
|
+
* piece of information).
|
|
117
122
|
*/
|
|
118
123
|
typedef struct Query
|
|
119
124
|
{
|
|
@@ -121,41 +126,69 @@ typedef struct Query
|
|
|
121
126
|
|
|
122
127
|
CmdType commandType; /* select|insert|update|delete|merge|utility */
|
|
123
128
|
|
|
124
|
-
|
|
129
|
+
/* where did I come from? */
|
|
130
|
+
QuerySource querySource pg_node_attr(query_jumble_ignore);
|
|
125
131
|
|
|
126
|
-
|
|
132
|
+
/*
|
|
133
|
+
* query identifier (can be set by plugins); ignored for equal, as it
|
|
134
|
+
* might not be set; also not stored. This is the result of the query
|
|
135
|
+
* jumble, hence ignored.
|
|
136
|
+
*/
|
|
137
|
+
uint64 queryId pg_node_attr(equal_ignore, query_jumble_ignore, read_write_ignore, read_as(0));
|
|
127
138
|
|
|
128
|
-
|
|
139
|
+
/* do I set the command result tag? */
|
|
140
|
+
bool canSetTag pg_node_attr(query_jumble_ignore);
|
|
129
141
|
|
|
130
142
|
Node *utilityStmt; /* non-null if commandType == CMD_UTILITY */
|
|
131
143
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
bool
|
|
141
|
-
|
|
142
|
-
bool
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
/*
|
|
145
|
+
* rtable index of target relation for INSERT/UPDATE/DELETE/MERGE; 0 for
|
|
146
|
+
* SELECT. This is ignored in the query jumble as unrelated to the
|
|
147
|
+
* compilation of the query ID.
|
|
148
|
+
*/
|
|
149
|
+
int resultRelation pg_node_attr(query_jumble_ignore);
|
|
150
|
+
|
|
151
|
+
/* has aggregates in tlist or havingQual */
|
|
152
|
+
bool hasAggs pg_node_attr(query_jumble_ignore);
|
|
153
|
+
/* has window functions in tlist */
|
|
154
|
+
bool hasWindowFuncs pg_node_attr(query_jumble_ignore);
|
|
155
|
+
/* has set-returning functions in tlist */
|
|
156
|
+
bool hasTargetSRFs pg_node_attr(query_jumble_ignore);
|
|
157
|
+
/* has subquery SubLink */
|
|
158
|
+
bool hasSubLinks pg_node_attr(query_jumble_ignore);
|
|
159
|
+
/* distinctClause is from DISTINCT ON */
|
|
160
|
+
bool hasDistinctOn pg_node_attr(query_jumble_ignore);
|
|
161
|
+
/* WITH RECURSIVE was specified */
|
|
162
|
+
bool hasRecursive pg_node_attr(query_jumble_ignore);
|
|
163
|
+
/* has INSERT/UPDATE/DELETE in WITH */
|
|
164
|
+
bool hasModifyingCTE pg_node_attr(query_jumble_ignore);
|
|
165
|
+
/* FOR [KEY] UPDATE/SHARE was specified */
|
|
166
|
+
bool hasForUpdate pg_node_attr(query_jumble_ignore);
|
|
167
|
+
/* rewriter has applied some RLS policy */
|
|
168
|
+
bool hasRowSecurity pg_node_attr(query_jumble_ignore);
|
|
169
|
+
/* is a RETURN statement */
|
|
170
|
+
bool isReturn pg_node_attr(query_jumble_ignore);
|
|
146
171
|
|
|
147
172
|
List *cteList; /* WITH list (of CommonTableExpr's) */
|
|
148
173
|
|
|
149
174
|
List *rtable; /* list of range table entries */
|
|
175
|
+
|
|
176
|
+
/*
|
|
177
|
+
* list of RTEPermissionInfo nodes for the rtable entries having
|
|
178
|
+
* perminfoindex > 0
|
|
179
|
+
*/
|
|
180
|
+
List *rteperminfos pg_node_attr(query_jumble_ignore);
|
|
150
181
|
FromExpr *jointree; /* table join tree (FROM and WHERE clauses);
|
|
151
182
|
* also USING clause for MERGE */
|
|
152
183
|
|
|
153
184
|
List *mergeActionList; /* list of actions for MERGE (only) */
|
|
154
|
-
|
|
185
|
+
/* whether to use outer join */
|
|
186
|
+
bool mergeUseOuterJoin pg_node_attr(query_jumble_ignore);
|
|
155
187
|
|
|
156
188
|
List *targetList; /* target list (of TargetEntry) */
|
|
157
189
|
|
|
158
|
-
|
|
190
|
+
/* OVERRIDING clause */
|
|
191
|
+
OverridingKind override pg_node_attr(query_jumble_ignore);
|
|
159
192
|
|
|
160
193
|
OnConflictExpr *onConflict; /* ON CONFLICT DO [NOTHING | UPDATE] */
|
|
161
194
|
|
|
@@ -183,11 +216,14 @@ typedef struct Query
|
|
|
183
216
|
Node *setOperations; /* set-operation tree if this is top level of
|
|
184
217
|
* a UNION/INTERSECT/EXCEPT query */
|
|
185
218
|
|
|
186
|
-
|
|
187
|
-
|
|
219
|
+
/*
|
|
220
|
+
* A list of pg_constraint OIDs that the query depends on to be
|
|
221
|
+
* semantically valid
|
|
222
|
+
*/
|
|
223
|
+
List *constraintDeps pg_node_attr(query_jumble_ignore);
|
|
188
224
|
|
|
189
|
-
|
|
190
|
-
|
|
225
|
+
/* a list of WithCheckOption's (added during rewrite) */
|
|
226
|
+
List *withCheckOptions pg_node_attr(query_jumble_ignore);
|
|
191
227
|
|
|
192
228
|
/*
|
|
193
229
|
* The following two fields identify the portion of the source text string
|
|
@@ -195,8 +231,10 @@ typedef struct Query
|
|
|
195
231
|
* Queries, not in sub-queries. When not set, they might both be zero, or
|
|
196
232
|
* both be -1 meaning "unknown".
|
|
197
233
|
*/
|
|
198
|
-
|
|
199
|
-
int
|
|
234
|
+
/* start location, or -1 if unknown */
|
|
235
|
+
int stmt_location;
|
|
236
|
+
/* length in bytes; 0 means "rest of string" */
|
|
237
|
+
int stmt_len pg_node_attr(query_jumble_ignore);
|
|
200
238
|
} Query;
|
|
201
239
|
|
|
202
240
|
|
|
@@ -287,6 +325,8 @@ typedef enum A_Expr_Kind
|
|
|
287
325
|
|
|
288
326
|
typedef struct A_Expr
|
|
289
327
|
{
|
|
328
|
+
pg_node_attr(custom_read_write)
|
|
329
|
+
|
|
290
330
|
NodeTag type;
|
|
291
331
|
A_Expr_Kind kind; /* see above */
|
|
292
332
|
List *name; /* possibly-qualified name of operator */
|
|
@@ -297,24 +337,26 @@ typedef struct A_Expr
|
|
|
297
337
|
|
|
298
338
|
/*
|
|
299
339
|
* A_Const - a literal constant
|
|
340
|
+
*
|
|
341
|
+
* Value nodes are inline for performance. You can treat 'val' as a node,
|
|
342
|
+
* as in IsA(&val, Integer). 'val' is not valid if isnull is true.
|
|
300
343
|
*/
|
|
344
|
+
union ValUnion
|
|
345
|
+
{
|
|
346
|
+
Node node;
|
|
347
|
+
Integer ival;
|
|
348
|
+
Float fval;
|
|
349
|
+
Boolean boolval;
|
|
350
|
+
String sval;
|
|
351
|
+
BitString bsval;
|
|
352
|
+
};
|
|
353
|
+
|
|
301
354
|
typedef struct A_Const
|
|
302
355
|
{
|
|
303
|
-
|
|
356
|
+
pg_node_attr(custom_copy_equal, custom_read_write, custom_query_jumble)
|
|
304
357
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
* as in IsA(&val, Integer). 'val' is not valid if isnull is true.
|
|
308
|
-
*/
|
|
309
|
-
union ValUnion
|
|
310
|
-
{
|
|
311
|
-
Node node;
|
|
312
|
-
Integer ival;
|
|
313
|
-
Float fval;
|
|
314
|
-
Boolean boolval;
|
|
315
|
-
String sval;
|
|
316
|
-
BitString bsval;
|
|
317
|
-
} val;
|
|
358
|
+
NodeTag type;
|
|
359
|
+
union ValUnion val;
|
|
318
360
|
bool isnull; /* SQL NULL constant */
|
|
319
361
|
int location; /* token location, or -1 if unknown */
|
|
320
362
|
} A_Const;
|
|
@@ -683,6 +725,7 @@ typedef struct ColumnDef
|
|
|
683
725
|
bool is_not_null; /* NOT NULL constraint specified? */
|
|
684
726
|
bool is_from_type; /* column definition came from table type */
|
|
685
727
|
char storage; /* attstorage setting, or 0 for default */
|
|
728
|
+
char *storage_name; /* attstorage setting name or NULL for default */
|
|
686
729
|
Node *raw_default; /* default value (untransformed parse tree) */
|
|
687
730
|
Node *cooked_default; /* default value (transformed expr tree) */
|
|
688
731
|
char identity; /* attidentity setting */
|
|
@@ -796,6 +839,7 @@ typedef struct XmlSerialize
|
|
|
796
839
|
XmlOptionType xmloption; /* DOCUMENT or CONTENT */
|
|
797
840
|
Node *expr;
|
|
798
841
|
TypeName *typeName;
|
|
842
|
+
bool indent; /* [NO] INDENT */
|
|
799
843
|
int location; /* token location, or -1 if unknown */
|
|
800
844
|
} XmlSerialize;
|
|
801
845
|
|
|
@@ -817,6 +861,13 @@ typedef struct PartitionElem
|
|
|
817
861
|
int location; /* token location, or -1 if unknown */
|
|
818
862
|
} PartitionElem;
|
|
819
863
|
|
|
864
|
+
typedef enum PartitionStrategy
|
|
865
|
+
{
|
|
866
|
+
PARTITION_STRATEGY_LIST = 'l',
|
|
867
|
+
PARTITION_STRATEGY_RANGE = 'r',
|
|
868
|
+
PARTITION_STRATEGY_HASH = 'h'
|
|
869
|
+
} PartitionStrategy;
|
|
870
|
+
|
|
820
871
|
/*
|
|
821
872
|
* PartitionSpec - parse-time representation of a partition key specification
|
|
822
873
|
*
|
|
@@ -825,17 +876,11 @@ typedef struct PartitionElem
|
|
|
825
876
|
typedef struct PartitionSpec
|
|
826
877
|
{
|
|
827
878
|
NodeTag type;
|
|
828
|
-
|
|
829
|
-
* 'range') */
|
|
879
|
+
PartitionStrategy strategy;
|
|
830
880
|
List *partParams; /* List of PartitionElems */
|
|
831
881
|
int location; /* token location, or -1 if unknown */
|
|
832
882
|
} PartitionSpec;
|
|
833
883
|
|
|
834
|
-
/* Internal codes for partitioning strategies */
|
|
835
|
-
#define PARTITION_STRATEGY_HASH 'h'
|
|
836
|
-
#define PARTITION_STRATEGY_LIST 'l'
|
|
837
|
-
#define PARTITION_STRATEGY_RANGE 'r'
|
|
838
|
-
|
|
839
884
|
/*
|
|
840
885
|
* PartitionBoundSpec - a partition bound specification
|
|
841
886
|
*
|
|
@@ -955,37 +1000,6 @@ typedef struct PartitionCmd
|
|
|
955
1000
|
* control visibility. But it is needed by ruleutils.c to determine
|
|
956
1001
|
* whether RTEs should be shown in decompiled queries.
|
|
957
1002
|
*
|
|
958
|
-
* requiredPerms and checkAsUser specify run-time access permissions
|
|
959
|
-
* checks to be performed at query startup. The user must have *all*
|
|
960
|
-
* of the permissions that are OR'd together in requiredPerms (zero
|
|
961
|
-
* indicates no permissions checking). If checkAsUser is not zero,
|
|
962
|
-
* then do the permissions checks using the access rights of that user,
|
|
963
|
-
* not the current effective user ID. (This allows rules to act as
|
|
964
|
-
* setuid gateways.) Permissions checks only apply to RELATION RTEs.
|
|
965
|
-
*
|
|
966
|
-
* For SELECT/INSERT/UPDATE permissions, if the user doesn't have
|
|
967
|
-
* table-wide permissions then it is sufficient to have the permissions
|
|
968
|
-
* on all columns identified in selectedCols (for SELECT) and/or
|
|
969
|
-
* insertedCols and/or updatedCols (INSERT with ON CONFLICT DO UPDATE may
|
|
970
|
-
* have all 3). selectedCols, insertedCols and updatedCols are bitmapsets,
|
|
971
|
-
* which cannot have negative integer members, so we subtract
|
|
972
|
-
* FirstLowInvalidHeapAttributeNumber from column numbers before storing
|
|
973
|
-
* them in these fields. A whole-row Var reference is represented by
|
|
974
|
-
* setting the bit for InvalidAttrNumber.
|
|
975
|
-
*
|
|
976
|
-
* updatedCols is also used in some other places, for example, to determine
|
|
977
|
-
* which triggers to fire and in FDWs to know which changed columns they
|
|
978
|
-
* need to ship off.
|
|
979
|
-
*
|
|
980
|
-
* Generated columns that are caused to be updated by an update to a base
|
|
981
|
-
* column are listed in extraUpdatedCols. This is not considered for
|
|
982
|
-
* permission checking, but it is useful in those places that want to know
|
|
983
|
-
* the full set of columns being updated as opposed to only the ones the
|
|
984
|
-
* user explicitly mentioned in the query. (There is currently no need for
|
|
985
|
-
* an extraInsertedCols, but it could exist.) Note that extraUpdatedCols
|
|
986
|
-
* is populated during query rewrite, NOT in the parser, since generated
|
|
987
|
-
* columns could be added after a rule has been parsed and stored.
|
|
988
|
-
*
|
|
989
1003
|
* securityQuals is a list of security barrier quals (boolean expressions),
|
|
990
1004
|
* to be tested in the listed order before returning a row from the
|
|
991
1005
|
* relation. It is always NIL in parser output. Entries are added by the
|
|
@@ -1011,6 +1025,8 @@ typedef enum RTEKind
|
|
|
1011
1025
|
|
|
1012
1026
|
typedef struct RangeTblEntry
|
|
1013
1027
|
{
|
|
1028
|
+
pg_node_attr(custom_read_write, custom_query_jumble)
|
|
1029
|
+
|
|
1014
1030
|
NodeTag type;
|
|
1015
1031
|
|
|
1016
1032
|
RTEKind rtekind; /* see above */
|
|
@@ -1024,11 +1040,6 @@ typedef struct RangeTblEntry
|
|
|
1024
1040
|
/*
|
|
1025
1041
|
* Fields valid for a plain relation RTE (else zero):
|
|
1026
1042
|
*
|
|
1027
|
-
* As a special case, RTE_NAMEDTUPLESTORE can also set relid to indicate
|
|
1028
|
-
* that the tuple format of the tuplestore is the same as the referenced
|
|
1029
|
-
* relation. This allows plans referencing AFTER trigger transition
|
|
1030
|
-
* tables to be invalidated if the underlying table is altered.
|
|
1031
|
-
*
|
|
1032
1043
|
* rellockmode is really LOCKMODE, but it's declared int to avoid having
|
|
1033
1044
|
* to include lock-related headers here. It must be RowExclusiveLock if
|
|
1034
1045
|
* the RTE is an INSERT/UPDATE/DELETE/MERGE target, else RowShareLock if
|
|
@@ -1039,11 +1050,29 @@ typedef struct RangeTblEntry
|
|
|
1039
1050
|
* current query; this happens if a DO ALSO rule simply scans the original
|
|
1040
1051
|
* target table. We leave such RTEs with their original lockmode so as to
|
|
1041
1052
|
* avoid getting an additional, lesser lock.
|
|
1053
|
+
*
|
|
1054
|
+
* perminfoindex is 1-based index of the RTEPermissionInfo belonging to
|
|
1055
|
+
* this RTE in the containing struct's list of same; 0 if permissions need
|
|
1056
|
+
* not be checked for this RTE.
|
|
1057
|
+
*
|
|
1058
|
+
* As a special case, relid, relkind, rellockmode, and perminfoindex can
|
|
1059
|
+
* also be set (nonzero) in an RTE_SUBQUERY RTE. This occurs when we
|
|
1060
|
+
* convert an RTE_RELATION RTE naming a view into an RTE_SUBQUERY
|
|
1061
|
+
* containing the view's query. We still need to perform run-time locking
|
|
1062
|
+
* and permission checks on the view, even though it's not directly used
|
|
1063
|
+
* in the query anymore, and the most expedient way to do that is to
|
|
1064
|
+
* retain these fields from the old state of the RTE.
|
|
1065
|
+
*
|
|
1066
|
+
* As a special case, RTE_NAMEDTUPLESTORE can also set relid to indicate
|
|
1067
|
+
* that the tuple format of the tuplestore is the same as the referenced
|
|
1068
|
+
* relation. This allows plans referencing AFTER trigger transition
|
|
1069
|
+
* tables to be invalidated if the underlying table is altered.
|
|
1042
1070
|
*/
|
|
1043
1071
|
Oid relid; /* OID of the relation */
|
|
1044
1072
|
char relkind; /* relation kind (see pg_class.relkind) */
|
|
1045
1073
|
int rellockmode; /* lock level that query requires on the rel */
|
|
1046
1074
|
struct TableSampleClause *tablesample; /* sampling info, or NULL */
|
|
1075
|
+
Index perminfoindex;
|
|
1047
1076
|
|
|
1048
1077
|
/*
|
|
1049
1078
|
* Fields valid for a subquery RTE (else NULL):
|
|
@@ -1067,6 +1096,14 @@ typedef struct RangeTblEntry
|
|
|
1067
1096
|
* alias Vars are generated only for merged columns). We keep these
|
|
1068
1097
|
* entries only because they're needed in expandRTE() and similar code.
|
|
1069
1098
|
*
|
|
1099
|
+
* Vars appearing within joinaliasvars are marked with varnullingrels sets
|
|
1100
|
+
* that describe the nulling effects of this join and lower ones. This is
|
|
1101
|
+
* essential for FULL JOIN cases, because the COALESCE expression only
|
|
1102
|
+
* describes the semantics correctly if its inputs have been nulled by the
|
|
1103
|
+
* join. For other cases, it allows expandRTE() to generate a valid
|
|
1104
|
+
* representation of the join's output without consulting additional
|
|
1105
|
+
* parser state.
|
|
1106
|
+
*
|
|
1070
1107
|
* Within a Query loaded from a stored rule, it is possible for non-merged
|
|
1071
1108
|
* joinaliasvars items to be null pointers, which are placeholders for
|
|
1072
1109
|
* (necessarily unreferenced) columns dropped since the rule was made.
|
|
@@ -1163,14 +1200,54 @@ typedef struct RangeTblEntry
|
|
|
1163
1200
|
bool lateral; /* subquery, function, or values is LATERAL? */
|
|
1164
1201
|
bool inh; /* inheritance requested? */
|
|
1165
1202
|
bool inFromCl; /* present in FROM clause? */
|
|
1203
|
+
List *securityQuals; /* security barrier quals to apply, if any */
|
|
1204
|
+
} RangeTblEntry;
|
|
1205
|
+
|
|
1206
|
+
/*
|
|
1207
|
+
* RTEPermissionInfo
|
|
1208
|
+
* Per-relation information for permission checking. Added to the Query
|
|
1209
|
+
* node by the parser when adding the corresponding RTE to the query
|
|
1210
|
+
* range table and subsequently editorialized on by the rewriter if
|
|
1211
|
+
* needed after rule expansion.
|
|
1212
|
+
*
|
|
1213
|
+
* Only the relations directly mentioned in the query are checked for
|
|
1214
|
+
* access permissions by the core executor, so only their RTEPermissionInfos
|
|
1215
|
+
* are present in the Query. However, extensions may want to check inheritance
|
|
1216
|
+
* children too, depending on the value of rte->inh, so it's copied in 'inh'
|
|
1217
|
+
* for their perusal.
|
|
1218
|
+
*
|
|
1219
|
+
* requiredPerms and checkAsUser specify run-time access permissions checks
|
|
1220
|
+
* to be performed at query startup. The user must have *all* of the
|
|
1221
|
+
* permissions that are OR'd together in requiredPerms (never 0!). If
|
|
1222
|
+
* checkAsUser is not zero, then do the permissions checks using the access
|
|
1223
|
+
* rights of that user, not the current effective user ID. (This allows rules
|
|
1224
|
+
* to act as setuid gateways.)
|
|
1225
|
+
*
|
|
1226
|
+
* For SELECT/INSERT/UPDATE permissions, if the user doesn't have table-wide
|
|
1227
|
+
* permissions then it is sufficient to have the permissions on all columns
|
|
1228
|
+
* identified in selectedCols (for SELECT) and/or insertedCols and/or
|
|
1229
|
+
* updatedCols (INSERT with ON CONFLICT DO UPDATE may have all 3).
|
|
1230
|
+
* selectedCols, insertedCols and updatedCols are bitmapsets, which cannot have
|
|
1231
|
+
* negative integer members, so we subtract FirstLowInvalidHeapAttributeNumber
|
|
1232
|
+
* from column numbers before storing them in these fields. A whole-row Var
|
|
1233
|
+
* reference is represented by setting the bit for InvalidAttrNumber.
|
|
1234
|
+
*
|
|
1235
|
+
* updatedCols is also used in some other places, for example, to determine
|
|
1236
|
+
* which triggers to fire and in FDWs to know which changed columns they need
|
|
1237
|
+
* to ship off.
|
|
1238
|
+
*/
|
|
1239
|
+
typedef struct RTEPermissionInfo
|
|
1240
|
+
{
|
|
1241
|
+
NodeTag type;
|
|
1242
|
+
|
|
1243
|
+
Oid relid; /* relation OID */
|
|
1244
|
+
bool inh; /* separately check inheritance children? */
|
|
1166
1245
|
AclMode requiredPerms; /* bitmask of required access permissions */
|
|
1167
1246
|
Oid checkAsUser; /* if valid, check access as this role */
|
|
1168
1247
|
Bitmapset *selectedCols; /* columns needing SELECT permission */
|
|
1169
1248
|
Bitmapset *insertedCols; /* columns needing INSERT permission */
|
|
1170
1249
|
Bitmapset *updatedCols; /* columns needing UPDATE permission */
|
|
1171
|
-
|
|
1172
|
-
List *securityQuals; /* security barrier quals to apply, if any */
|
|
1173
|
-
} RangeTblEntry;
|
|
1250
|
+
} RTEPermissionInfo;
|
|
1174
1251
|
|
|
1175
1252
|
/*
|
|
1176
1253
|
* RangeTblFunction -
|
|
@@ -1187,20 +1264,29 @@ typedef struct RangeTblEntry
|
|
|
1187
1264
|
* time. We do however remember how many columns we thought the type had
|
|
1188
1265
|
* (including dropped columns!), so that we can successfully ignore any
|
|
1189
1266
|
* columns added after the query was parsed.
|
|
1267
|
+
*
|
|
1268
|
+
* The query jumbling only needs to track the function expression.
|
|
1190
1269
|
*/
|
|
1191
1270
|
typedef struct RangeTblFunction
|
|
1192
1271
|
{
|
|
1193
1272
|
NodeTag type;
|
|
1194
1273
|
|
|
1195
1274
|
Node *funcexpr; /* expression tree for func call */
|
|
1196
|
-
|
|
1275
|
+
/* number of columns it contributes to RTE */
|
|
1276
|
+
int funccolcount pg_node_attr(query_jumble_ignore);
|
|
1197
1277
|
/* These fields record the contents of a column definition list, if any: */
|
|
1198
|
-
|
|
1199
|
-
List *
|
|
1200
|
-
|
|
1201
|
-
List *
|
|
1278
|
+
/* column names (list of String) */
|
|
1279
|
+
List *funccolnames pg_node_attr(query_jumble_ignore);
|
|
1280
|
+
/* OID list of column type OIDs */
|
|
1281
|
+
List *funccoltypes pg_node_attr(query_jumble_ignore);
|
|
1282
|
+
/* integer list of column typmods */
|
|
1283
|
+
List *funccoltypmods pg_node_attr(query_jumble_ignore);
|
|
1284
|
+
/* OID list of column collation OIDs */
|
|
1285
|
+
List *funccolcollations pg_node_attr(query_jumble_ignore);
|
|
1286
|
+
|
|
1202
1287
|
/* This is set during planning for use by the executor: */
|
|
1203
|
-
|
|
1288
|
+
/* PARAM_EXEC Param IDs affecting this func */
|
|
1289
|
+
Bitmapset *funcparams pg_node_attr(query_jumble_ignore);
|
|
1204
1290
|
} RangeTblFunction;
|
|
1205
1291
|
|
|
1206
1292
|
/*
|
|
@@ -1307,7 +1393,8 @@ typedef struct SortGroupClause
|
|
|
1307
1393
|
Oid eqop; /* the equality operator ('=' op) */
|
|
1308
1394
|
Oid sortop; /* the ordering operator ('<' op), or 0 */
|
|
1309
1395
|
bool nulls_first; /* do NULLs come before normal values? */
|
|
1310
|
-
|
|
1396
|
+
/* can eqop be implemented by hashing? */
|
|
1397
|
+
bool hashable pg_node_attr(query_jumble_ignore);
|
|
1311
1398
|
} SortGroupClause;
|
|
1312
1399
|
|
|
1313
1400
|
/*
|
|
@@ -1372,7 +1459,7 @@ typedef enum GroupingSetKind
|
|
|
1372
1459
|
typedef struct GroupingSet
|
|
1373
1460
|
{
|
|
1374
1461
|
NodeTag type;
|
|
1375
|
-
GroupingSetKind kind;
|
|
1462
|
+
GroupingSetKind kind pg_node_attr(query_jumble_ignore);
|
|
1376
1463
|
List *content;
|
|
1377
1464
|
int location;
|
|
1378
1465
|
} GroupingSet;
|
|
@@ -1393,25 +1480,38 @@ typedef struct GroupingSet
|
|
|
1393
1480
|
* When refname isn't null, the partitionClause is always copied from there;
|
|
1394
1481
|
* the orderClause might or might not be copied (see copiedOrder); the framing
|
|
1395
1482
|
* options are never copied, per spec.
|
|
1483
|
+
*
|
|
1484
|
+
* The information relevant for the query jumbling is the partition clause
|
|
1485
|
+
* type and its bounds.
|
|
1396
1486
|
*/
|
|
1397
1487
|
typedef struct WindowClause
|
|
1398
1488
|
{
|
|
1399
1489
|
NodeTag type;
|
|
1400
|
-
|
|
1401
|
-
char *
|
|
1490
|
+
/* window name (NULL in an OVER clause) */
|
|
1491
|
+
char *name pg_node_attr(query_jumble_ignore);
|
|
1492
|
+
/* referenced window name, if any */
|
|
1493
|
+
char *refname pg_node_attr(query_jumble_ignore);
|
|
1402
1494
|
List *partitionClause; /* PARTITION BY list */
|
|
1403
|
-
|
|
1495
|
+
/* ORDER BY list */
|
|
1496
|
+
List *orderClause;
|
|
1404
1497
|
int frameOptions; /* frame_clause options, see WindowDef */
|
|
1405
1498
|
Node *startOffset; /* expression for starting bound, if any */
|
|
1406
1499
|
Node *endOffset; /* expression for ending bound, if any */
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
Oid
|
|
1411
|
-
|
|
1412
|
-
|
|
1500
|
+
/* qual to help short-circuit execution */
|
|
1501
|
+
List *runCondition pg_node_attr(query_jumble_ignore);
|
|
1502
|
+
/* in_range function for startOffset */
|
|
1503
|
+
Oid startInRangeFunc pg_node_attr(query_jumble_ignore);
|
|
1504
|
+
/* in_range function for endOffset */
|
|
1505
|
+
Oid endInRangeFunc pg_node_attr(query_jumble_ignore);
|
|
1506
|
+
/* collation for in_range tests */
|
|
1507
|
+
Oid inRangeColl pg_node_attr(query_jumble_ignore);
|
|
1508
|
+
/* use ASC sort order for in_range tests? */
|
|
1509
|
+
bool inRangeAsc pg_node_attr(query_jumble_ignore);
|
|
1510
|
+
/* nulls sort first for in_range tests? */
|
|
1511
|
+
bool inRangeNullsFirst pg_node_attr(query_jumble_ignore);
|
|
1413
1512
|
Index winref; /* ID referenced by window functions */
|
|
1414
|
-
|
|
1513
|
+
/* did we copy orderClause from refname? */
|
|
1514
|
+
bool copiedOrder pg_node_attr(query_jumble_ignore);
|
|
1415
1515
|
} WindowClause;
|
|
1416
1516
|
|
|
1417
1517
|
/*
|
|
@@ -1521,22 +1621,37 @@ typedef struct CTECycleClause
|
|
|
1521
1621
|
typedef struct CommonTableExpr
|
|
1522
1622
|
{
|
|
1523
1623
|
NodeTag type;
|
|
1524
|
-
|
|
1525
|
-
|
|
1624
|
+
|
|
1625
|
+
/*
|
|
1626
|
+
* Query name (never qualified). The string name is included in the query
|
|
1627
|
+
* jumbling because RTE_CTE RTEs need it.
|
|
1628
|
+
*/
|
|
1629
|
+
char *ctename;
|
|
1630
|
+
/* optional list of column names */
|
|
1631
|
+
List *aliascolnames pg_node_attr(query_jumble_ignore);
|
|
1526
1632
|
CTEMaterialize ctematerialized; /* is this an optimization fence? */
|
|
1527
1633
|
/* SelectStmt/InsertStmt/etc before parse analysis, Query afterwards: */
|
|
1528
1634
|
Node *ctequery; /* the CTE's subquery */
|
|
1529
|
-
CTESearchClause *search_clause;
|
|
1530
|
-
CTECycleClause *cycle_clause;
|
|
1635
|
+
CTESearchClause *search_clause pg_node_attr(query_jumble_ignore);
|
|
1636
|
+
CTECycleClause *cycle_clause pg_node_attr(query_jumble_ignore);
|
|
1531
1637
|
int location; /* token location, or -1 if unknown */
|
|
1532
1638
|
/* These fields are set during parse analysis: */
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1639
|
+
/* is this CTE actually recursive? */
|
|
1640
|
+
bool cterecursive pg_node_attr(query_jumble_ignore);
|
|
1641
|
+
|
|
1642
|
+
/*
|
|
1643
|
+
* Number of RTEs referencing this CTE (excluding internal
|
|
1644
|
+
* self-references), irrelevant for query jumbling.
|
|
1645
|
+
*/
|
|
1646
|
+
int cterefcount pg_node_attr(query_jumble_ignore);
|
|
1647
|
+
/* list of output column names */
|
|
1648
|
+
List *ctecolnames pg_node_attr(query_jumble_ignore);
|
|
1649
|
+
/* OID list of output column type OIDs */
|
|
1650
|
+
List *ctecoltypes pg_node_attr(query_jumble_ignore);
|
|
1651
|
+
/* integer list of output column typmods */
|
|
1652
|
+
List *ctecoltypmods pg_node_attr(query_jumble_ignore);
|
|
1653
|
+
/* OID list of column collation OIDs */
|
|
1654
|
+
List *ctecolcollations pg_node_attr(query_jumble_ignore);
|
|
1540
1655
|
} CommonTableExpr;
|
|
1541
1656
|
|
|
1542
1657
|
/* Convenience macro to get the output tlist of a CTE's query */
|
|
@@ -1573,10 +1688,12 @@ typedef struct MergeAction
|
|
|
1573
1688
|
NodeTag type;
|
|
1574
1689
|
bool matched; /* true=MATCHED, false=NOT MATCHED */
|
|
1575
1690
|
CmdType commandType; /* INSERT/UPDATE/DELETE/DO NOTHING */
|
|
1576
|
-
|
|
1691
|
+
/* OVERRIDING clause */
|
|
1692
|
+
OverridingKind override pg_node_attr(query_jumble_ignore);
|
|
1577
1693
|
Node *qual; /* transformed WHEN conditions */
|
|
1578
1694
|
List *targetList; /* the target list (of TargetEntry) */
|
|
1579
|
-
|
|
1695
|
+
/* target attribute numbers of an UPDATE */
|
|
1696
|
+
List *updateColnos pg_node_attr(query_jumble_ignore);
|
|
1580
1697
|
} MergeAction;
|
|
1581
1698
|
|
|
1582
1699
|
/*
|
|
@@ -1595,6 +1712,113 @@ typedef struct TriggerTransition
|
|
|
1595
1712
|
bool isTable;
|
|
1596
1713
|
} TriggerTransition;
|
|
1597
1714
|
|
|
1715
|
+
/* Nodes for SQL/JSON support */
|
|
1716
|
+
|
|
1717
|
+
/*
|
|
1718
|
+
* JsonOutput -
|
|
1719
|
+
* representation of JSON output clause (RETURNING type [FORMAT format])
|
|
1720
|
+
*/
|
|
1721
|
+
typedef struct JsonOutput
|
|
1722
|
+
{
|
|
1723
|
+
NodeTag type;
|
|
1724
|
+
TypeName *typeName; /* RETURNING type name, if specified */
|
|
1725
|
+
JsonReturning *returning; /* RETURNING FORMAT clause and type Oids */
|
|
1726
|
+
} JsonOutput;
|
|
1727
|
+
|
|
1728
|
+
/*
|
|
1729
|
+
* JsonKeyValue -
|
|
1730
|
+
* untransformed representation of JSON object key-value pair for
|
|
1731
|
+
* JSON_OBJECT() and JSON_OBJECTAGG()
|
|
1732
|
+
*/
|
|
1733
|
+
typedef struct JsonKeyValue
|
|
1734
|
+
{
|
|
1735
|
+
NodeTag type;
|
|
1736
|
+
Expr *key; /* key expression */
|
|
1737
|
+
JsonValueExpr *value; /* JSON value expression */
|
|
1738
|
+
} JsonKeyValue;
|
|
1739
|
+
|
|
1740
|
+
/*
|
|
1741
|
+
* JsonObjectConstructor -
|
|
1742
|
+
* untransformed representation of JSON_OBJECT() constructor
|
|
1743
|
+
*/
|
|
1744
|
+
typedef struct JsonObjectConstructor
|
|
1745
|
+
{
|
|
1746
|
+
NodeTag type;
|
|
1747
|
+
List *exprs; /* list of JsonKeyValue pairs */
|
|
1748
|
+
JsonOutput *output; /* RETURNING clause, if specified */
|
|
1749
|
+
bool absent_on_null; /* skip NULL values? */
|
|
1750
|
+
bool unique; /* check key uniqueness? */
|
|
1751
|
+
int location; /* token location, or -1 if unknown */
|
|
1752
|
+
} JsonObjectConstructor;
|
|
1753
|
+
|
|
1754
|
+
/*
|
|
1755
|
+
* JsonArrayConstructor -
|
|
1756
|
+
* untransformed representation of JSON_ARRAY(element,...) constructor
|
|
1757
|
+
*/
|
|
1758
|
+
typedef struct JsonArrayConstructor
|
|
1759
|
+
{
|
|
1760
|
+
NodeTag type;
|
|
1761
|
+
List *exprs; /* list of JsonValueExpr elements */
|
|
1762
|
+
JsonOutput *output; /* RETURNING clause, if specified */
|
|
1763
|
+
bool absent_on_null; /* skip NULL elements? */
|
|
1764
|
+
int location; /* token location, or -1 if unknown */
|
|
1765
|
+
} JsonArrayConstructor;
|
|
1766
|
+
|
|
1767
|
+
/*
|
|
1768
|
+
* JsonArrayQueryConstructor -
|
|
1769
|
+
* untransformed representation of JSON_ARRAY(subquery) constructor
|
|
1770
|
+
*/
|
|
1771
|
+
typedef struct JsonArrayQueryConstructor
|
|
1772
|
+
{
|
|
1773
|
+
NodeTag type;
|
|
1774
|
+
Node *query; /* subquery */
|
|
1775
|
+
JsonOutput *output; /* RETURNING clause, if specified */
|
|
1776
|
+
JsonFormat *format; /* FORMAT clause for subquery, if specified */
|
|
1777
|
+
bool absent_on_null; /* skip NULL elements? */
|
|
1778
|
+
int location; /* token location, or -1 if unknown */
|
|
1779
|
+
} JsonArrayQueryConstructor;
|
|
1780
|
+
|
|
1781
|
+
/*
|
|
1782
|
+
* JsonAggConstructor -
|
|
1783
|
+
* common fields of untransformed representation of
|
|
1784
|
+
* JSON_ARRAYAGG() and JSON_OBJECTAGG()
|
|
1785
|
+
*/
|
|
1786
|
+
typedef struct JsonAggConstructor
|
|
1787
|
+
{
|
|
1788
|
+
NodeTag type;
|
|
1789
|
+
JsonOutput *output; /* RETURNING clause, if any */
|
|
1790
|
+
Node *agg_filter; /* FILTER clause, if any */
|
|
1791
|
+
List *agg_order; /* ORDER BY clause, if any */
|
|
1792
|
+
struct WindowDef *over; /* OVER clause, if any */
|
|
1793
|
+
int location; /* token location, or -1 if unknown */
|
|
1794
|
+
} JsonAggConstructor;
|
|
1795
|
+
|
|
1796
|
+
/*
|
|
1797
|
+
* JsonObjectAgg -
|
|
1798
|
+
* untransformed representation of JSON_OBJECTAGG()
|
|
1799
|
+
*/
|
|
1800
|
+
typedef struct JsonObjectAgg
|
|
1801
|
+
{
|
|
1802
|
+
NodeTag type;
|
|
1803
|
+
JsonAggConstructor *constructor; /* common fields */
|
|
1804
|
+
JsonKeyValue *arg; /* object key-value pair */
|
|
1805
|
+
bool absent_on_null; /* skip NULL values? */
|
|
1806
|
+
bool unique; /* check key uniqueness? */
|
|
1807
|
+
} JsonObjectAgg;
|
|
1808
|
+
|
|
1809
|
+
/*
|
|
1810
|
+
* JsonArrayAgg -
|
|
1811
|
+
* untransformed representation of JSON_ARRAYAGG()
|
|
1812
|
+
*/
|
|
1813
|
+
typedef struct JsonArrayAgg
|
|
1814
|
+
{
|
|
1815
|
+
NodeTag type;
|
|
1816
|
+
JsonAggConstructor *constructor; /* common fields */
|
|
1817
|
+
JsonValueExpr *arg; /* array element expression */
|
|
1818
|
+
bool absent_on_null; /* skip NULL elements? */
|
|
1819
|
+
} JsonArrayAgg;
|
|
1820
|
+
|
|
1821
|
+
|
|
1598
1822
|
/*****************************************************************************
|
|
1599
1823
|
* Raw Grammar Output Statements
|
|
1600
1824
|
*****************************************************************************/
|
|
@@ -1610,9 +1834,14 @@ typedef struct TriggerTransition
|
|
|
1610
1834
|
*
|
|
1611
1835
|
* stmt_location/stmt_len identify the portion of the source text string
|
|
1612
1836
|
* containing this raw statement (useful for multi-statement strings).
|
|
1837
|
+
*
|
|
1838
|
+
* This is irrelevant for query jumbling, as this is not used in parsed
|
|
1839
|
+
* queries.
|
|
1613
1840
|
*/
|
|
1614
1841
|
typedef struct RawStmt
|
|
1615
1842
|
{
|
|
1843
|
+
pg_node_attr(no_query_jumble)
|
|
1844
|
+
|
|
1616
1845
|
NodeTag type;
|
|
1617
1846
|
Node *stmt; /* raw parse tree */
|
|
1618
1847
|
int stmt_location; /* start location, or -1 if unknown */
|
|
@@ -1785,11 +2014,15 @@ typedef struct SetOperationStmt
|
|
|
1785
2014
|
Node *rarg; /* right child */
|
|
1786
2015
|
/* Eventually add fields for CORRESPONDING spec here */
|
|
1787
2016
|
|
|
1788
|
-
/* Fields derived during parse analysis: */
|
|
1789
|
-
|
|
1790
|
-
List *
|
|
1791
|
-
|
|
1792
|
-
List *
|
|
2017
|
+
/* Fields derived during parse analysis (irrelevant for query jumbling): */
|
|
2018
|
+
/* OID list of output column type OIDs */
|
|
2019
|
+
List *colTypes pg_node_attr(query_jumble_ignore);
|
|
2020
|
+
/* integer list of output column typmods */
|
|
2021
|
+
List *colTypmods pg_node_attr(query_jumble_ignore);
|
|
2022
|
+
/* OID list of output column collation OIDs */
|
|
2023
|
+
List *colCollations pg_node_attr(query_jumble_ignore);
|
|
2024
|
+
/* a list of SortGroupClause's */
|
|
2025
|
+
List *groupClauses pg_node_attr(query_jumble_ignore);
|
|
1793
2026
|
/* groupClauses is NIL if UNION ALL, but must be set otherwise */
|
|
1794
2027
|
} SetOperationStmt;
|
|
1795
2028
|
|
|
@@ -1938,7 +2171,6 @@ typedef struct AlterTableStmt
|
|
|
1938
2171
|
typedef enum AlterTableType
|
|
1939
2172
|
{
|
|
1940
2173
|
AT_AddColumn, /* add column */
|
|
1941
|
-
AT_AddColumnRecurse, /* internal to commands/tablecmds.c */
|
|
1942
2174
|
AT_AddColumnToView, /* implicitly via CREATE OR REPLACE VIEW */
|
|
1943
2175
|
AT_ColumnDefault, /* alter column default */
|
|
1944
2176
|
AT_CookedColumnDefault, /* add a pre-cooked column default */
|
|
@@ -1952,19 +2184,15 @@ typedef enum AlterTableType
|
|
|
1952
2184
|
AT_SetStorage, /* alter column set storage */
|
|
1953
2185
|
AT_SetCompression, /* alter column set compression */
|
|
1954
2186
|
AT_DropColumn, /* drop column */
|
|
1955
|
-
AT_DropColumnRecurse, /* internal to commands/tablecmds.c */
|
|
1956
2187
|
AT_AddIndex, /* add index */
|
|
1957
2188
|
AT_ReAddIndex, /* internal to commands/tablecmds.c */
|
|
1958
2189
|
AT_AddConstraint, /* add constraint */
|
|
1959
|
-
AT_AddConstraintRecurse, /* internal to commands/tablecmds.c */
|
|
1960
2190
|
AT_ReAddConstraint, /* internal to commands/tablecmds.c */
|
|
1961
2191
|
AT_ReAddDomainConstraint, /* internal to commands/tablecmds.c */
|
|
1962
2192
|
AT_AlterConstraint, /* alter constraint */
|
|
1963
2193
|
AT_ValidateConstraint, /* validate constraint */
|
|
1964
|
-
AT_ValidateConstraintRecurse, /* internal to commands/tablecmds.c */
|
|
1965
2194
|
AT_AddIndexConstraint, /* add constraint using existing index */
|
|
1966
2195
|
AT_DropConstraint, /* drop constraint */
|
|
1967
|
-
AT_DropConstraintRecurse, /* internal to commands/tablecmds.c */
|
|
1968
2196
|
AT_ReAddComment, /* internal to commands/tablecmds.c */
|
|
1969
2197
|
AT_AlterColumnType, /* alter column type */
|
|
1970
2198
|
AT_AlterColumnGenericOptions, /* alter column OPTIONS (...) */
|
|
@@ -2153,7 +2381,7 @@ typedef struct GrantRoleStmt
|
|
|
2153
2381
|
List *granted_roles; /* list of roles to be granted/revoked */
|
|
2154
2382
|
List *grantee_roles; /* list of member roles to add/delete */
|
|
2155
2383
|
bool is_grant; /* true = GRANT, false = REVOKE */
|
|
2156
|
-
|
|
2384
|
+
List *opt; /* options e.g. WITH GRANT OPTION */
|
|
2157
2385
|
RoleSpec *grantor; /* set grantor to other than current role */
|
|
2158
2386
|
DropBehavior behavior; /* drop behavior (for REVOKE) */
|
|
2159
2387
|
} GrantRoleStmt;
|
|
@@ -2321,6 +2549,8 @@ typedef enum ConstrType /* types of constraints */
|
|
|
2321
2549
|
|
|
2322
2550
|
typedef struct Constraint
|
|
2323
2551
|
{
|
|
2552
|
+
pg_node_attr(custom_read_write)
|
|
2553
|
+
|
|
2324
2554
|
NodeTag type;
|
|
2325
2555
|
ConstrType contype; /* see above */
|
|
2326
2556
|
|
|
@@ -2961,10 +3191,10 @@ typedef struct IndexStmt
|
|
|
2961
3191
|
List *excludeOpNames; /* exclusion operator names, or NIL if none */
|
|
2962
3192
|
char *idxcomment; /* comment to apply to index, or NULL */
|
|
2963
3193
|
Oid indexOid; /* OID of an existing index, if any */
|
|
2964
|
-
|
|
2965
|
-
SubTransactionId oldCreateSubid; /* rd_createSubid of
|
|
2966
|
-
SubTransactionId
|
|
2967
|
-
|
|
3194
|
+
RelFileNumber oldNumber; /* relfilenumber of existing storage, if any */
|
|
3195
|
+
SubTransactionId oldCreateSubid; /* rd_createSubid of oldNumber */
|
|
3196
|
+
SubTransactionId oldFirstRelfilelocatorSubid; /* rd_firstRelfilelocatorSubid
|
|
3197
|
+
* of oldNumber */
|
|
2968
3198
|
bool unique; /* is index unique? */
|
|
2969
3199
|
bool nulls_not_distinct; /* null treatment for UNIQUE constraints */
|
|
2970
3200
|
bool primary; /* is index a primary key? */
|
|
@@ -3080,6 +3310,8 @@ typedef struct DoStmt
|
|
|
3080
3310
|
|
|
3081
3311
|
typedef struct InlineCodeBlock
|
|
3082
3312
|
{
|
|
3313
|
+
pg_node_attr(nodetag_only) /* this is not a member of parse trees */
|
|
3314
|
+
|
|
3083
3315
|
NodeTag type;
|
|
3084
3316
|
char *source_text; /* source text of anonymous code block */
|
|
3085
3317
|
Oid langOid; /* OID of selected language */
|
|
@@ -3094,18 +3326,24 @@ typedef struct InlineCodeBlock
|
|
|
3094
3326
|
* list contains copies of the expressions for all output arguments, in the
|
|
3095
3327
|
* order of the procedure's declared arguments. (outargs is never evaluated,
|
|
3096
3328
|
* but is useful to the caller as a reference for what to assign to.)
|
|
3329
|
+
* The transformed call state is not relevant in the query jumbling, only the
|
|
3330
|
+
* function call is.
|
|
3097
3331
|
* ----------------------
|
|
3098
3332
|
*/
|
|
3099
3333
|
typedef struct CallStmt
|
|
3100
3334
|
{
|
|
3101
3335
|
NodeTag type;
|
|
3102
3336
|
FuncCall *funccall; /* from the parser */
|
|
3103
|
-
|
|
3104
|
-
|
|
3337
|
+
/* transformed call, with only input args */
|
|
3338
|
+
FuncExpr *funcexpr pg_node_attr(query_jumble_ignore);
|
|
3339
|
+
/* transformed output-argument expressions */
|
|
3340
|
+
List *outargs pg_node_attr(query_jumble_ignore);
|
|
3105
3341
|
} CallStmt;
|
|
3106
3342
|
|
|
3107
3343
|
typedef struct CallContext
|
|
3108
3344
|
{
|
|
3345
|
+
pg_node_attr(nodetag_only) /* this is not a member of parse trees */
|
|
3346
|
+
|
|
3109
3347
|
NodeTag type;
|
|
3110
3348
|
bool atomic;
|
|
3111
3349
|
} CallContext;
|