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
|
* prototypes for various files in optimizer/path
|
|
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/optimizer/paths.h
|
|
@@ -104,6 +104,9 @@ extern void add_paths_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel,
|
|
|
104
104
|
extern void join_search_one_level(PlannerInfo *root, int level);
|
|
105
105
|
extern RelOptInfo *make_join_rel(PlannerInfo *root,
|
|
106
106
|
RelOptInfo *rel1, RelOptInfo *rel2);
|
|
107
|
+
extern Relids add_outer_joins_to_relids(PlannerInfo *root, Relids input_relids,
|
|
108
|
+
SpecialJoinInfo *sjinfo,
|
|
109
|
+
List **pushed_down_joins);
|
|
107
110
|
extern bool have_join_order_restriction(PlannerInfo *root,
|
|
108
111
|
RelOptInfo *rel1, RelOptInfo *rel2);
|
|
109
112
|
extern bool have_dangerous_phv(PlannerInfo *root,
|
|
@@ -122,13 +125,12 @@ typedef bool (*ec_matches_callback_type) (PlannerInfo *root,
|
|
|
122
125
|
|
|
123
126
|
extern bool process_equivalence(PlannerInfo *root,
|
|
124
127
|
RestrictInfo **p_restrictinfo,
|
|
125
|
-
|
|
128
|
+
JoinDomain *jdomain);
|
|
126
129
|
extern Expr *canonicalize_ec_expression(Expr *expr,
|
|
127
130
|
Oid req_type, Oid req_collation);
|
|
128
131
|
extern void reconsider_outer_join_clauses(PlannerInfo *root);
|
|
129
132
|
extern EquivalenceClass *get_eclass_for_sort_expr(PlannerInfo *root,
|
|
130
133
|
Expr *expr,
|
|
131
|
-
Relids nullable_relids,
|
|
132
134
|
List *opfamilies,
|
|
133
135
|
Oid opcintype,
|
|
134
136
|
Oid collation,
|
|
@@ -150,7 +152,8 @@ extern void generate_base_implied_equalities(PlannerInfo *root);
|
|
|
150
152
|
extern List *generate_join_implied_equalities(PlannerInfo *root,
|
|
151
153
|
Relids join_relids,
|
|
152
154
|
Relids outer_relids,
|
|
153
|
-
RelOptInfo *inner_rel
|
|
155
|
+
RelOptInfo *inner_rel,
|
|
156
|
+
SpecialJoinInfo *sjinfo);
|
|
154
157
|
extern List *generate_join_implied_equalities_for_ecs(PlannerInfo *root,
|
|
155
158
|
List *eclasses,
|
|
156
159
|
Relids join_relids,
|
|
@@ -169,8 +172,8 @@ extern void add_child_rel_equivalences(PlannerInfo *root,
|
|
|
169
172
|
extern void add_child_join_rel_equivalences(PlannerInfo *root,
|
|
170
173
|
int nappinfos,
|
|
171
174
|
AppendRelInfo **appinfos,
|
|
172
|
-
RelOptInfo *
|
|
173
|
-
RelOptInfo *
|
|
175
|
+
RelOptInfo *parent_joinrel,
|
|
176
|
+
RelOptInfo *child_joinrel);
|
|
174
177
|
extern List *generate_implied_equalities_for_column(PlannerInfo *root,
|
|
175
178
|
RelOptInfo *rel,
|
|
176
179
|
ec_matches_callback_type callback,
|
|
@@ -216,7 +219,7 @@ extern List *build_index_pathkeys(PlannerInfo *root, IndexOptInfo *index,
|
|
|
216
219
|
extern List *build_partition_pathkeys(PlannerInfo *root, RelOptInfo *partrel,
|
|
217
220
|
ScanDirection scandir, bool *partialkeys);
|
|
218
221
|
extern List *build_expression_pathkey(PlannerInfo *root, Expr *expr,
|
|
219
|
-
|
|
222
|
+
Oid opno,
|
|
220
223
|
Relids rel, bool create_it);
|
|
221
224
|
extern List *convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel,
|
|
222
225
|
List *subquery_pathkeys,
|
|
@@ -228,6 +231,11 @@ extern List *build_join_pathkeys(PlannerInfo *root,
|
|
|
228
231
|
extern List *make_pathkeys_for_sortclauses(PlannerInfo *root,
|
|
229
232
|
List *sortclauses,
|
|
230
233
|
List *tlist);
|
|
234
|
+
extern List *make_pathkeys_for_sortclauses_extended(PlannerInfo *root,
|
|
235
|
+
List **sortclauses,
|
|
236
|
+
List *tlist,
|
|
237
|
+
bool remove_redundant,
|
|
238
|
+
bool *sortable);
|
|
231
239
|
extern void initialize_mergeclause_eclasses(PlannerInfo *root,
|
|
232
240
|
RestrictInfo *restrictinfo);
|
|
233
241
|
extern void update_mergeclause_eclasses(PlannerInfo *root,
|
|
@@ -248,6 +256,7 @@ extern List *truncate_useless_pathkeys(PlannerInfo *root,
|
|
|
248
256
|
RelOptInfo *rel,
|
|
249
257
|
List *pathkeys);
|
|
250
258
|
extern bool has_useful_pathkeys(PlannerInfo *root, RelOptInfo *rel);
|
|
259
|
+
extern List *append_pathkeys(List *target, List *source);
|
|
251
260
|
extern PathKey *make_canonical_pathkey(PlannerInfo *root,
|
|
252
261
|
EquivalenceClass *eclass, Oid opfamily,
|
|
253
262
|
int strategy, bool nulls_first);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* prototypes for various files in optimizer/plan
|
|
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/optimizer/planmain.h
|
|
@@ -71,7 +71,7 @@ extern void add_base_rels_to_query(PlannerInfo *root, Node *jtnode);
|
|
|
71
71
|
extern void add_other_rels_to_query(PlannerInfo *root);
|
|
72
72
|
extern void build_base_rel_tlists(PlannerInfo *root, List *final_tlist);
|
|
73
73
|
extern void add_vars_to_targetlist(PlannerInfo *root, List *vars,
|
|
74
|
-
Relids where_needed
|
|
74
|
+
Relids where_needed);
|
|
75
75
|
extern void find_lateral_references(PlannerInfo *root);
|
|
76
76
|
extern void create_lateral_join_info(PlannerInfo *root);
|
|
77
77
|
extern List *deconstruct_jointree(PlannerInfo *root);
|
|
@@ -83,9 +83,7 @@ extern RestrictInfo *process_implied_equality(PlannerInfo *root,
|
|
|
83
83
|
Expr *item1,
|
|
84
84
|
Expr *item2,
|
|
85
85
|
Relids qualscope,
|
|
86
|
-
Relids nullable_relids,
|
|
87
86
|
Index security_level,
|
|
88
|
-
bool below_outer_join,
|
|
89
87
|
bool both_const);
|
|
90
88
|
extern RestrictInfo *build_implied_join_equality(PlannerInfo *root,
|
|
91
89
|
Oid opno,
|
|
@@ -93,7 +91,6 @@ extern RestrictInfo *build_implied_join_equality(PlannerInfo *root,
|
|
|
93
91
|
Expr *item1,
|
|
94
92
|
Expr *item2,
|
|
95
93
|
Relids qualscope,
|
|
96
|
-
Relids nullable_relids,
|
|
97
94
|
Index security_level);
|
|
98
95
|
extern void match_foreign_keys_to_quals(PlannerInfo *root);
|
|
99
96
|
|
|
@@ -115,6 +112,6 @@ extern Plan *set_plan_references(PlannerInfo *root, Plan *plan);
|
|
|
115
112
|
extern bool trivial_subqueryscan(SubqueryScan *plan);
|
|
116
113
|
extern void record_plan_function_dependency(PlannerInfo *root, Oid funcid);
|
|
117
114
|
extern void record_plan_type_dependency(PlannerInfo *root, Oid typid);
|
|
118
|
-
extern bool extract_query_dependencies_walker(Node *node, PlannerInfo *
|
|
115
|
+
extern bool extract_query_dependencies_walker(Node *node, PlannerInfo *context);
|
|
119
116
|
|
|
120
117
|
#endif /* PLANMAIN_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* parse analysis for optimizable statements
|
|
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/parser/analyze.h
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
#define ANALYZE_H
|
|
16
16
|
|
|
17
17
|
#include "nodes/params.h"
|
|
18
|
+
#include "nodes/queryjumble.h"
|
|
18
19
|
#include "parser/parse_node.h"
|
|
19
|
-
#include "utils/queryjumble.h"
|
|
20
20
|
|
|
21
21
|
/* Hook for plugins to get control at end of parse analysis */
|
|
22
22
|
typedef void (*post_parse_analyze_hook_type) (ParseState *pstate,
|
|
@@ -43,10 +43,11 @@ extern List *transformInsertRow(ParseState *pstate, List *exprlist,
|
|
|
43
43
|
List *stmtcols, List *icolumns, List *attrnos,
|
|
44
44
|
bool strip_indirection);
|
|
45
45
|
extern List *transformUpdateTargetList(ParseState *pstate,
|
|
46
|
-
List *
|
|
46
|
+
List *origTlist);
|
|
47
47
|
extern Query *transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree);
|
|
48
48
|
extern Query *transformStmt(ParseState *pstate, Node *parseTree);
|
|
49
49
|
|
|
50
|
+
extern bool stmt_requires_parse_analysis(RawStmt *parseTree);
|
|
50
51
|
extern bool analyze_requires_snapshot(RawStmt *parseTree);
|
|
51
52
|
|
|
52
53
|
extern const char *LCS_asString(LockClauseStrength strength);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* by the PG_KEYWORD macro, which is not defined in this file; it can
|
|
8
8
|
* be defined by the caller for special purposes.
|
|
9
9
|
*
|
|
10
|
-
* Portions Copyright (c) 1996-
|
|
10
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
11
11
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
12
12
|
*
|
|
13
13
|
* IDENTIFICATION
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
/* name, value, category, is-bare-label */
|
|
28
28
|
PG_KEYWORD("abort", ABORT_P, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
29
|
+
PG_KEYWORD("absent", ABSENT, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
29
30
|
PG_KEYWORD("absolute", ABSOLUTE_P, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
30
31
|
PG_KEYWORD("access", ACCESS, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
31
32
|
PG_KEYWORD("action", ACTION, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
@@ -175,6 +176,7 @@ PG_KEYWORD("following", FOLLOWING, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
|
175
176
|
PG_KEYWORD("for", FOR, RESERVED_KEYWORD, AS_LABEL)
|
|
176
177
|
PG_KEYWORD("force", FORCE, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
177
178
|
PG_KEYWORD("foreign", FOREIGN, RESERVED_KEYWORD, BARE_LABEL)
|
|
179
|
+
PG_KEYWORD("format", FORMAT, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
178
180
|
PG_KEYWORD("forward", FORWARD, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
179
181
|
PG_KEYWORD("freeze", FREEZE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
|
|
180
182
|
PG_KEYWORD("from", FROM, RESERVED_KEYWORD, AS_LABEL)
|
|
@@ -205,6 +207,7 @@ PG_KEYWORD("in", IN_P, RESERVED_KEYWORD, BARE_LABEL)
|
|
|
205
207
|
PG_KEYWORD("include", INCLUDE, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
206
208
|
PG_KEYWORD("including", INCLUDING, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
207
209
|
PG_KEYWORD("increment", INCREMENT, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
210
|
+
PG_KEYWORD("indent", INDENT, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
208
211
|
PG_KEYWORD("index", INDEX, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
209
212
|
PG_KEYWORD("indexes", INDEXES, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
210
213
|
PG_KEYWORD("inherit", INHERIT, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
@@ -227,7 +230,13 @@ PG_KEYWORD("is", IS, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
|
|
|
227
230
|
PG_KEYWORD("isnull", ISNULL, TYPE_FUNC_NAME_KEYWORD, AS_LABEL)
|
|
228
231
|
PG_KEYWORD("isolation", ISOLATION, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
229
232
|
PG_KEYWORD("join", JOIN, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
|
|
233
|
+
PG_KEYWORD("json", JSON, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
234
|
+
PG_KEYWORD("json_array", JSON_ARRAY, COL_NAME_KEYWORD, BARE_LABEL)
|
|
235
|
+
PG_KEYWORD("json_arrayagg", JSON_ARRAYAGG, COL_NAME_KEYWORD, BARE_LABEL)
|
|
236
|
+
PG_KEYWORD("json_object", JSON_OBJECT, COL_NAME_KEYWORD, BARE_LABEL)
|
|
237
|
+
PG_KEYWORD("json_objectagg", JSON_OBJECTAGG, COL_NAME_KEYWORD, BARE_LABEL)
|
|
230
238
|
PG_KEYWORD("key", KEY, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
239
|
+
PG_KEYWORD("keys", KEYS, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
231
240
|
PG_KEYWORD("label", LABEL, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
232
241
|
PG_KEYWORD("language", LANGUAGE, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
233
242
|
PG_KEYWORD("large", LARGE_P, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
@@ -367,6 +376,7 @@ PG_KEYWORD("row", ROW, COL_NAME_KEYWORD, BARE_LABEL)
|
|
|
367
376
|
PG_KEYWORD("rows", ROWS, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
368
377
|
PG_KEYWORD("rule", RULE, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
369
378
|
PG_KEYWORD("savepoint", SAVEPOINT, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
379
|
+
PG_KEYWORD("scalar", SCALAR, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
370
380
|
PG_KEYWORD("schema", SCHEMA, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
371
381
|
PG_KEYWORD("schemas", SCHEMAS, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
372
382
|
PG_KEYWORD("scroll", SCROLL, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
@@ -409,6 +419,7 @@ PG_KEYWORD("support", SUPPORT, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
|
409
419
|
PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD, BARE_LABEL)
|
|
410
420
|
PG_KEYWORD("sysid", SYSID, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
411
421
|
PG_KEYWORD("system", SYSTEM_P, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
422
|
+
PG_KEYWORD("system_user", SYSTEM_USER, RESERVED_KEYWORD, BARE_LABEL)
|
|
412
423
|
PG_KEYWORD("table", TABLE, RESERVED_KEYWORD, BARE_LABEL)
|
|
413
424
|
PG_KEYWORD("tables", TABLES, UNRESERVED_KEYWORD, BARE_LABEL)
|
|
414
425
|
PG_KEYWORD("tablesample", TABLESAMPLE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* parse_agg.h
|
|
4
4
|
* handle aggregates and window functions in parser
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/parser/parse_agg.h
|
|
@@ -19,7 +19,7 @@ extern void transformAggregateCall(ParseState *pstate, Aggref *agg,
|
|
|
19
19
|
List *args, List *aggorder,
|
|
20
20
|
bool agg_distinct);
|
|
21
21
|
|
|
22
|
-
extern Node *transformGroupingFunc(ParseState *pstate, GroupingFunc *
|
|
22
|
+
extern Node *transformGroupingFunc(ParseState *pstate, GroupingFunc *p);
|
|
23
23
|
|
|
24
24
|
extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc,
|
|
25
25
|
WindowDef *windef);
|
|
@@ -35,6 +35,8 @@ extern Oid resolve_aggregate_transtype(Oid aggfuncid,
|
|
|
35
35
|
Oid *inputTypes,
|
|
36
36
|
int numArguments);
|
|
37
37
|
|
|
38
|
+
extern bool agg_args_support_sendreceive(Aggref *aggref);
|
|
39
|
+
|
|
38
40
|
extern void build_aggregate_transfn_expr(Oid *agg_input_types,
|
|
39
41
|
int agg_num_inputs,
|
|
40
42
|
int agg_num_direct_inputs,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Routines for type coercion.
|
|
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/parser/parse_coerce.h
|
|
@@ -32,6 +32,8 @@ typedef enum CoercionPathType
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
extern bool IsBinaryCoercible(Oid srctype, Oid targettype);
|
|
35
|
+
extern bool IsBinaryCoercibleWithCast(Oid srctype, Oid targettype,
|
|
36
|
+
Oid *castoid);
|
|
35
37
|
extern bool IsPreferredType(TYPCATEGORY category, Oid type);
|
|
36
38
|
extern TYPCATEGORY TypeCategory(Oid type);
|
|
37
39
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* parse_expr.h
|
|
4
4
|
* handle expressions in parser
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/parser/parse_expr.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
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/parser/parse_func.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Internal definitions for parser
|
|
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/parser/parse_node.h
|
|
@@ -111,10 +111,20 @@ typedef Node *(*CoerceParamHook) (ParseState *pstate, Param *param,
|
|
|
111
111
|
* Note that neither relname nor refname of these entries are necessarily
|
|
112
112
|
* unique; searching the rtable by name is a bad idea.
|
|
113
113
|
*
|
|
114
|
+
* p_rteperminfos: list of RTEPermissionInfo containing an entry corresponding
|
|
115
|
+
* to each RTE_RELATION entry in p_rtable.
|
|
116
|
+
*
|
|
114
117
|
* p_joinexprs: list of JoinExpr nodes associated with p_rtable entries.
|
|
115
118
|
* This is one-for-one with p_rtable, but contains NULLs for non-join
|
|
116
119
|
* RTEs, and may be shorter than p_rtable if the last RTE(s) aren't joins.
|
|
117
120
|
*
|
|
121
|
+
* p_nullingrels: list of Bitmapsets associated with p_rtable entries, each
|
|
122
|
+
* containing the set of outer-join RTE indexes that can null that relation
|
|
123
|
+
* at the current point in the parse tree. This is one-for-one with p_rtable,
|
|
124
|
+
* but may be shorter than p_rtable, in which case the missing entries are
|
|
125
|
+
* implicitly empty (NULL). That rule allows us to save work when the query
|
|
126
|
+
* contains no outer joins.
|
|
127
|
+
*
|
|
118
128
|
* p_joinlist: list of join items (RangeTblRef and JoinExpr nodes) that
|
|
119
129
|
* will become the fromlist of the query's top-level FromExpr node.
|
|
120
130
|
*
|
|
@@ -181,7 +191,10 @@ struct ParseState
|
|
|
181
191
|
ParseState *parentParseState; /* stack link */
|
|
182
192
|
const char *p_sourcetext; /* source text, or NULL if not available */
|
|
183
193
|
List *p_rtable; /* range table so far */
|
|
194
|
+
List *p_rteperminfos; /* list of RTEPermissionInfo nodes for each
|
|
195
|
+
* RTE_RELATION entry in rtable */
|
|
184
196
|
List *p_joinexprs; /* JoinExprs for RTE_JOIN p_rtable entries */
|
|
197
|
+
List *p_nullingrels; /* Bitmapsets showing nulling outer joins */
|
|
185
198
|
List *p_joinlist; /* join items so far (will become FromExpr
|
|
186
199
|
* node's fromlist) */
|
|
187
200
|
List *p_namespace; /* currently-referenceable RTEs (List of
|
|
@@ -234,7 +247,8 @@ struct ParseState
|
|
|
234
247
|
* join's first N columns, the net effect is just that we expose only those
|
|
235
248
|
* join columns via this nsitem.)
|
|
236
249
|
*
|
|
237
|
-
* p_rte and p_rtindex link to the underlying rangetable entry
|
|
250
|
+
* p_rte and p_rtindex link to the underlying rangetable entry, and
|
|
251
|
+
* p_perminfo to the entry in rteperminfos.
|
|
238
252
|
*
|
|
239
253
|
* The p_nscolumns array contains info showing how to construct Vars
|
|
240
254
|
* referencing the names appearing in the p_names->colnames list.
|
|
@@ -246,8 +260,11 @@ struct ParseState
|
|
|
246
260
|
* visible for qualified references) but it does hide their columns
|
|
247
261
|
* (unqualified references to the columns refer to the JOIN, not the member
|
|
248
262
|
* tables, so we must not complain that such a reference is ambiguous).
|
|
249
|
-
*
|
|
250
|
-
*
|
|
263
|
+
* Conversely, a subquery without an alias does not hide the columns selected
|
|
264
|
+
* by the subquery, but it does hide the auto-generated relation name (so the
|
|
265
|
+
* subquery columns are visible for unqualified references only). Various
|
|
266
|
+
* special RTEs such as NEW/OLD for rules may also appear with only one flag
|
|
267
|
+
* set.
|
|
251
268
|
*
|
|
252
269
|
* While processing the FROM clause, namespace items may appear with
|
|
253
270
|
* p_lateral_only set, meaning they are visible only to LATERAL
|
|
@@ -268,6 +285,7 @@ struct ParseNamespaceItem
|
|
|
268
285
|
Alias *p_names; /* Table and column names */
|
|
269
286
|
RangeTblEntry *p_rte; /* The relation's rangetable entry */
|
|
270
287
|
int p_rtindex; /* The relation's index in the rangetable */
|
|
288
|
+
RTEPermissionInfo *p_perminfo; /* The relation's rteperminfos entry */
|
|
271
289
|
/* array of same length as p_names->colnames: */
|
|
272
290
|
ParseNamespaceColumn *p_nscolumns; /* per-column data */
|
|
273
291
|
bool p_rel_visible; /* Relation name is visible? */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* handle operator things for parser
|
|
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/parser/parse_oper.h
|
|
@@ -29,8 +29,8 @@ extern Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError);
|
|
|
29
29
|
|
|
30
30
|
/* Routines to find operators matching a name and given input types */
|
|
31
31
|
/* NB: the selected operator may require coercion of the input types! */
|
|
32
|
-
extern Operator oper(ParseState *pstate, List *
|
|
33
|
-
bool noError, int location);
|
|
32
|
+
extern Operator oper(ParseState *pstate, List *opname, Oid ltypeId,
|
|
33
|
+
Oid rtypeId, bool noError, int location);
|
|
34
34
|
extern Operator left_oper(ParseState *pstate, List *op, Oid arg,
|
|
35
35
|
bool noError, int location);
|
|
36
36
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* prototypes for parse_relation.c.
|
|
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/parser/parse_relation.h
|
|
@@ -41,6 +41,7 @@ extern Node *scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem,
|
|
|
41
41
|
int location);
|
|
42
42
|
extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
|
|
43
43
|
int location);
|
|
44
|
+
extern void markNullableIfNeeded(ParseState *pstate, Var *var);
|
|
44
45
|
extern void markVarForSelectPriv(ParseState *pstate, Var *var);
|
|
45
46
|
extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation,
|
|
46
47
|
int lockmode);
|
|
@@ -88,7 +89,7 @@ extern ParseNamespaceItem *addRangeTableEntryForJoin(ParseState *pstate,
|
|
|
88
89
|
List *aliasvars,
|
|
89
90
|
List *leftcols,
|
|
90
91
|
List *rightcols,
|
|
91
|
-
Alias *
|
|
92
|
+
Alias *join_using_alias,
|
|
92
93
|
Alias *alias,
|
|
93
94
|
bool inFromCl);
|
|
94
95
|
extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate,
|
|
@@ -99,6 +100,10 @@ extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate,
|
|
|
99
100
|
extern ParseNamespaceItem *addRangeTableEntryForENR(ParseState *pstate,
|
|
100
101
|
RangeVar *rv,
|
|
101
102
|
bool inFromCl);
|
|
103
|
+
extern RTEPermissionInfo *addRTEPermissionInfo(List **rteperminfos,
|
|
104
|
+
RangeTblEntry *rte);
|
|
105
|
+
extern RTEPermissionInfo *getRTEPermissionInfo(List *rteperminfos,
|
|
106
|
+
RangeTblEntry *rte);
|
|
102
107
|
extern bool isLockedRefname(ParseState *pstate, const char *refname);
|
|
103
108
|
extern void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem,
|
|
104
109
|
bool addToJoinList,
|
|
@@ -109,7 +114,7 @@ extern void errorMissingColumn(ParseState *pstate,
|
|
|
109
114
|
extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
|
|
110
115
|
int location, bool include_dropped,
|
|
111
116
|
List **colnames, List **colvars);
|
|
112
|
-
extern List *expandNSItemVars(ParseNamespaceItem *nsitem,
|
|
117
|
+
extern List *expandNSItemVars(ParseState *pstate, ParseNamespaceItem *nsitem,
|
|
113
118
|
int sublevels_up, int location,
|
|
114
119
|
List **colnames);
|
|
115
120
|
extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* parse_type.h
|
|
4
4
|
* handle type operations for parser
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/parser/parse_type.h
|
|
@@ -51,8 +51,9 @@ extern Datum stringTypeDatum(Type tp, char *string, int32 atttypmod);
|
|
|
51
51
|
extern Oid typeidTypeRelid(Oid type_id);
|
|
52
52
|
extern Oid typeOrDomainTypeRelid(Oid type_id);
|
|
53
53
|
|
|
54
|
-
extern TypeName *typeStringToTypeName(const char *str);
|
|
55
|
-
extern
|
|
54
|
+
extern TypeName *typeStringToTypeName(const char *str, Node *escontext);
|
|
55
|
+
extern bool parseTypeString(const char *str, Oid *typeid_p, int32 *typmod_p,
|
|
56
|
+
Node *escontext);
|
|
56
57
|
|
|
57
58
|
/* true if typeid is composite, or domain over composite, but not RECORD */
|
|
58
59
|
#define ISCOMPLEX(typeid) (typeOrDomainTypeRelid(typeid) != InvalidOid)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* This is the external API for the raw lexing/parsing functions.
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 1996-
|
|
8
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
10
|
*
|
|
11
11
|
* src/include/parser/parser.h
|
|
@@ -53,9 +53,9 @@ typedef enum
|
|
|
53
53
|
} BackslashQuoteType;
|
|
54
54
|
|
|
55
55
|
/* GUC variables in scan.l (every one of these is a bad idea :-() */
|
|
56
|
-
extern PGDLLIMPORT __thread
|
|
57
|
-
extern PGDLLIMPORT __thread
|
|
58
|
-
extern PGDLLIMPORT __thread
|
|
56
|
+
extern PGDLLIMPORT __thread int backslash_quote;
|
|
57
|
+
extern PGDLLIMPORT __thread bool escape_string_warning;
|
|
58
|
+
extern PGDLLIMPORT __thread bool standard_conforming_strings;
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
/* Primary entry point for the raw parsing functions */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* parse trees.
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 1996-
|
|
8
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
10
|
*
|
|
11
11
|
* src/include/parser/parsetree.h
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* higher-level API provided by parser.h.
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
|
-
* Portions Copyright (c) 1996-
|
|
11
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
13
13
|
*
|
|
14
14
|
* src/include/parser/scanner.h
|
|
@@ -140,7 +140,7 @@ extern core_yyscan_t scanner_init(const char *str,
|
|
|
140
140
|
const ScanKeywordList *keywordlist,
|
|
141
141
|
const uint16 *keyword_tokens);
|
|
142
142
|
extern void scanner_finish(core_yyscan_t yyscanner);
|
|
143
|
-
extern int core_yylex(core_YYSTYPE *
|
|
143
|
+
extern int core_yylex(core_YYSTYPE *yylval_param, YYLTYPE *yylloc_param,
|
|
144
144
|
core_yyscan_t yyscanner);
|
|
145
145
|
extern int scanner_errposition(int location, core_yyscan_t yyscanner);
|
|
146
146
|
extern void setup_scanner_errposition_callback(ScannerCallbackState *scbstate,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* scansup.h
|
|
4
4
|
* scanner support routines used by the core lexer
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/parser/scansup.h
|