PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "catalog/pg_type.h"
#include "funcapi.h"
#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "nodes/multibitmapset.h"
#include "nodes/nodeFuncs.h"
#include "optimizer/clauses.h"
#include "optimizer/optimizer.h"
#include "optimizer/placeholder.h"
#include "optimizer/prep.h"
#include "optimizer/subselect.h"
#include "optimizer/tlist.h"
#include "parser/parse_relation.h"
#include "parser/parsetree.h"
#include "rewrite/rewriteManip.h"
Go to the source code of this file.
Data Structures | |
struct | pullup_replace_vars_context |
struct | reduce_outer_joins_pass1_state |
struct | reduce_outer_joins_pass2_state |
struct | reduce_outer_joins_partial_state |
struct | find_dependent_phvs_context |
struct | substitute_phv_relids_context |
Typedefs | |
typedef struct pullup_replace_vars_context | pullup_replace_vars_context |
typedef struct reduce_outer_joins_pass1_state | reduce_outer_joins_pass1_state |
typedef struct reduce_outer_joins_pass2_state | reduce_outer_joins_pass2_state |
typedef struct reduce_outer_joins_partial_state | reduce_outer_joins_partial_state |
typedef struct pullup_replace_vars_context pullup_replace_vars_context |
typedef struct reduce_outer_joins_partial_state reduce_outer_joins_partial_state |
typedef struct reduce_outer_joins_pass1_state reduce_outer_joins_pass1_state |
typedef struct reduce_outer_joins_pass2_state reduce_outer_joins_pass2_state |
|
static |
Definition at line 3596 of file prepjointree.c.
References PlannerInfo::append_rel_list, bms_make_singleton(), expression_tree_walker, find_dependent_phvs_walker(), PlannerInfo::glob, PlannerGlobal::lastPHId, PlannerInfo::parse, query_tree_walker, find_dependent_phvs_context::relids, and find_dependent_phvs_context::sublevels_up.
Referenced by remove_useless_results_recurse().
|
static |
Definition at line 3621 of file prepjointree.c.
References bms_make_singleton(), bms_next_member(), find_dependent_phvs_walker(), get_relids_in_jointree(), PlannerInfo::glob, PlannerGlobal::lastPHId, RangeTblEntry::lateral, PlannerInfo::parse, range_table_entry_walker, find_dependent_phvs_context::relids, rt_fetch, Query::rtable, and find_dependent_phvs_context::sublevels_up.
Referenced by remove_useless_results_recurse().
|
static |
Definition at line 3560 of file prepjointree.c.
References Assert(), bms_equal(), expression_tree_walker, IsA, PlaceHolderVar::phlevelsup, query_tree_walker, find_dependent_phvs_context::relids, and find_dependent_phvs_context::sublevels_up.
Referenced by find_dependent_phvs(), and find_dependent_phvs_in_jointree().
Definition at line 3879 of file prepjointree.c.
References elog(), ERROR, FromExpr::fromlist, IsA, j, lfirst, and nodeTag.
Referenced by get_relids_for_join().
|
static |
Definition at line 3757 of file prepjointree.c.
References PlannerInfo::append_rel_list, Assert(), bms_singleton_member(), AppendRelInfo::child_relid, PlannerInfo::glob, PlannerGlobal::lastPHId, lfirst, AppendRelInfo::parent_relid, substitute_phv_relids(), and AppendRelInfo::translated_vars.
Referenced by pull_up_simple_subquery(), and remove_result_refs().
void flatten_simple_union_all | ( | PlannerInfo * | root | ) |
Definition at line 2534 of file prepjointree.c.
References Assert(), castNode, copyObject, PlannerInfo::hasRecursion, RangeTblEntry::inh, is_simple_union_all_recurse(), IsA, lappend(), SetOperationStmt::larg, list_length(), list_make1, makeNode, NIL, parse(), PlannerInfo::parse, pull_up_union_leaf_queries(), rt_fetch, RTE_SUBQUERY, RangeTblEntry::rtekind, and RangeTblRef::rtindex.
Referenced by subquery_planner().
Definition at line 3862 of file prepjointree.c.
References elog(), ERROR, find_jointree_node_for_rel(), get_relids_in_jointree(), and Query::jointree.
Referenced by add_nullingrels_if_needed(), and alias_relid_set().
Definition at line 3801 of file prepjointree.c.
References bms_add_member(), bms_join(), bms_make_singleton(), elog(), ERROR, FromExpr::fromlist, IsA, j, JOIN_INNER, lfirst, and nodeTag.
Referenced by find_dependent_phvs_in_jointree(), get_relids_for_join(), is_simple_subquery(), preprocess_rowmarks(), pull_up_simple_subquery(), and remove_result_refs().
|
static |
Definition at line 3491 of file prepjointree.c.
References IsA, PlannerInfo::parse, rt_fetch, Query::rtable, and RTE_RESULT.
Referenced by remove_useless_results_recurse().
Definition at line 1962 of file prepjointree.c.
References Assert(), FromExpr::fromlist, IsA, Query::jointree, linitial, list_length(), NIL, and FromExpr::quals.
Referenced by pull_up_simple_subquery(), and pull_up_subqueries_recurse().
|
static |
Definition at line 1487 of file prepjointree.c.
References bms_is_subset(), CMD_SELECT, Query::commandType, contain_volatile_functions(), Query::cteList, Query::distinctClause, elog(), ERROR, get_relids_in_jointree(), Query::groupClause, Query::groupingSets, Query::havingQual, IsA, Query::jointree, jointree_contains_lateral_outer_refs(), RangeTblEntry::lateral, Query::limitCount, Query::limitOffset, pull_varnos_of_level(), RangeTblEntry::security_barrier, Query::setOperations, Query::sortClause, and Query::targetList.
Referenced by pull_up_simple_subquery(), and pull_up_subqueries_recurse().
Definition at line 1891 of file prepjointree.c.
References castNode, CMD_SELECT, Query::commandType, Query::cteList, elog(), ERROR, is_simple_union_all_recurse(), IsA, Query::limitCount, Query::limitOffset, Query::rowMarks, Query::setOperations, and Query::sortClause.
Referenced by pull_up_subqueries_recurse().
|
static |
Definition at line 1919 of file prepjointree.c.
References SetOperationStmt::all, Assert(), check_stack_depth(), elog(), ERROR, IsA, SetOperationStmt::larg, nodeTag, SetOperationStmt::op, SetOperationStmt::rarg, rt_fetch, Query::rtable, RangeTblRef::rtindex, SETOP_UNION, RangeTblEntry::subquery, Query::targetList, and tlist_same_datatypes().
Referenced by flatten_simple_union_all(), and is_simple_union_all().
|
static |
Definition at line 1719 of file prepjointree.c.
References Assert(), contain_volatile_functions(), expression_returns_set(), linitial, list_length(), PlannerInfo::parse, Query::rtable, RTE_VALUES, RangeTblEntry::rtekind, and RangeTblEntry::values_lists.
Referenced by pull_up_subqueries_recurse().
|
static |
Definition at line 2010 of file prepjointree.c.
References bms_is_subset(), elog(), ERROR, FromExpr::fromlist, IsA, j, JOIN_INNER, lfirst, nodeTag, pull_varnos_of_level(), and FromExpr::quals.
Referenced by is_simple_subquery().
|
static |
Definition at line 1449 of file prepjointree.c.
References lappend(), lfirst, list_length(), makeVarFromTargetEntry(), NIL, AppendRelInfo::num_child_cols, palloc0(), TargetEntry::resno, Query::targetList, and AppendRelInfo::translated_vars.
Referenced by pull_up_union_leaf_queries().
|
static |
Definition at line 2085 of file prepjointree.c.
References generate_unaccent_rules::action, PlannerInfo::append_rel_list, Assert(), RangeTblEntry::joinaliasvars, lfirst, lfirst_node, NIL, parse(), PlannerInfo::parse, pullup_replace_vars(), replace_vars_in_jointree(), RTE_JOIN, RangeTblEntry::rtekind, AppendRelInfo::translated_vars, and pullup_replace_vars_context::wrap_non_vars.
Referenced by pull_up_constant_function(), pull_up_simple_subquery(), and pull_up_simple_values().
void preprocess_function_rtes | ( | PlannerInfo * | root | ) |
Definition at line 727 of file prepjointree.c.
References eval_const_expressions(), RangeTblEntry::funcordinality, RangeTblEntry::functions, inline_set_returning_function(), lfirst, NIL, PlannerInfo::parse, Query::rtable, RTE_FUNCTION, RTE_SUBQUERY, RangeTblEntry::rtekind, RangeTblEntry::security_barrier, and RangeTblEntry::subquery.
Referenced by pull_up_simple_subquery(), and subquery_planner().
|
static |
Definition at line 1778 of file prepjointree.c.
References RangeTblFunction::funcexpr, RangeTblEntry::funcordinality, RangeTblEntry::functions, get_expr_result_type(), IsA, RangeTblEntry::lateral, linitial_node, list_length(), list_make1, makeTargetEntry(), NIL, pullup_replace_vars_context::outer_hasSubLinks, palloc0(), parse(), PlannerInfo::parse, perform_pullup_replace_vars(), pullup_replace_vars_context::relids, pullup_replace_vars_context::root, RTE_RESULT, RangeTblEntry::rtekind, pullup_replace_vars_context::rv_cache, pullup_replace_vars_context::target_rte, pullup_replace_vars_context::targetlist, TYPEFUNC_SCALAR, pullup_replace_vars_context::varno, and pullup_replace_vars_context::wrap_non_vars.
Referenced by pull_up_subqueries_recurse().
|
static |
Definition at line 957 of file prepjointree.c.
References PlannerInfo::all_result_relids, PlannerInfo::append_rel_list, Assert(), CombineRangeTables(), copyObject, PlannerInfo::cte_plan_ids, Query::cteList, CurrentMemoryContext, PlannerInfo::ec_merging_done, PlannerInfo::eq_classes, fix_append_rel_relids(), flatten_join_alias_vars(), FromExpr::fromlist, get_relids_in_jointree(), PlannerInfo::glob, PlannerInfo::hasRecursion, IncrementVarSublevelsUp(), PlannerInfo::init_plans, is_safe_append_member(), is_simple_subquery(), IsA, PlannerInfo::join_domains, PlannerInfo::join_info_list, Query::jointree, PlannerInfo::last_rinfo_serial, PlannerGlobal::lastPHId, RangeTblEntry::lateral, PlannerInfo::leaf_result_relids, lfirst, linitial, list_concat(), list_length(), makeNode, PlannerInfo::minmax_aggs, PlannerInfo::multiexpr_params, NIL, PlannerInfo::non_recursive_path, OffsetVarNodes(), pullup_replace_vars_context::outer_hasSubLinks, PlannerInfo::outer_params, palloc0(), parse(), PlannerInfo::parse, perform_pullup_replace_vars(), PlannerInfo::placeholder_list, PlannerInfo::placeholdersFrozen, PlannerInfo::plan_params, preprocess_function_rtes(), PlannerInfo::processed_distinctClause, PlannerInfo::processed_groupClause, PlannerInfo::processed_tlist, pull_up_sublinks(), pull_up_subqueries(), PlannerInfo::qual_security_level, FromExpr::quals, PlannerInfo::query_level, pullup_replace_vars_context::relids, replace_empty_jointree(), pullup_replace_vars_context::root, PlannerInfo::row_identity_vars, Query::rowMarks, PlannerInfo::rowMarks, Query::rtable, RTE_CTE, RTE_FUNCTION, RTE_JOIN, RTE_NAMEDTUPLESTORE, RTE_RELATION, RTE_RESULT, RTE_SUBQUERY, RTE_TABLEFUNC, RTE_VALUES, RangeTblEntry::rtekind, pullup_replace_vars_context::rv_cache, RangeTblEntry::subquery, substitute_phv_relids(), RangeTblEntry::tablesample, pullup_replace_vars_context::target_rte, pullup_replace_vars_context::targetlist, Query::targetList, PlannerInfo::update_colnos, pullup_replace_vars_context::varno, pullup_replace_vars_context::wrap_non_vars, and PlannerInfo::wt_param_id.
Referenced by pull_up_subqueries_recurse().
|
static |
Definition at line 1297 of file prepjointree.c.
References Assert(), CombineRangeTables(), copyObject, IncrementVarSublevelsUp_rtable(), RangeTblEntry::inh, RangeTblEntry::lateral, lfirst, list_length(), PlannerInfo::parse, pull_up_union_leaf_queries(), Query::rtable, RTE_SUBQUERY, RangeTblEntry::rtekind, Query::setOperations, and RangeTblEntry::subquery.
Referenced by pull_up_subqueries_recurse().
|
static |
Definition at line 1624 of file prepjointree.c.
References PlannerInfo::append_rel_list, Assert(), contain_vars_of_level(), copyObject, RangeTblEntry::eref, PlannerInfo::join_info_list, lappend(), lfirst, linitial, list_length(), list_make1, makeAlias(), makeNode, makeTargetEntry(), NIL, pullup_replace_vars_context::outer_hasSubLinks, palloc0(), parse(), PlannerInfo::parse, perform_pullup_replace_vars(), PlannerInfo::placeholder_list, pullup_replace_vars_context::relids, pullup_replace_vars_context::root, RTE_RESULT, RTE_VALUES, RangeTblEntry::rtekind, pullup_replace_vars_context::rv_cache, pullup_replace_vars_context::target_rte, pullup_replace_vars_context::targetlist, RangeTblEntry::values_lists, pullup_replace_vars_context::varno, and pullup_replace_vars_context::wrap_non_vars.
Referenced by pull_up_subqueries_recurse().
void pull_up_sublinks | ( | PlannerInfo * | root | ) |
Definition at line 293 of file prepjointree.c.
References IsA, Query::jointree, list_make1, makeFromExpr(), PlannerInfo::parse, and pull_up_sublinks_jointree_recurse().
Referenced by pull_up_simple_subquery(), and subquery_planner().
|
static |
Definition at line 320 of file prepjointree.c.
References bms_add_member(), bms_join(), bms_make_singleton(), bms_union(), check_stack_depth(), elog(), ERROR, FromExpr::fromlist, IsA, j, JOIN_FULL, JOIN_INNER, JOIN_LEFT, JOIN_RIGHT, lappend(), lfirst, makeFromExpr(), NIL, nodeTag, palloc(), pull_up_sublinks_qual_recurse(), and FromExpr::quals.
Referenced by pull_up_sublinks(), and pull_up_sublinks_qual_recurse().
|
static |
Definition at line 477 of file prepjointree.c.
References ANY_SUBLINK, generate_unaccent_rules::args, convert_ANY_sublink_to_join(), convert_EXISTS_sublink_to_join(), EXISTS_SUBLINK, get_notclausearg(), is_andclause(), is_notclause(), IsA, j, lappend(), lfirst, linitial, list_length(), make_andclause(), NIL, pull_up_sublinks_jointree_recurse(), and SubLink::subLinkType.
Referenced by pull_up_sublinks_jointree_recurse().
void pull_up_subqueries | ( | PlannerInfo * | root | ) |
Definition at line 768 of file prepjointree.c.
References Assert(), IsA, Query::jointree, PlannerInfo::parse, and pull_up_subqueries_recurse().
Referenced by pull_up_simple_subquery(), and subquery_planner().
|
static |
Definition at line 812 of file prepjointree.c.
References Assert(), CHECK_FOR_INTERRUPTS, check_stack_depth(), elog(), ERROR, FromExpr::fromlist, is_safe_append_member(), is_simple_subquery(), is_simple_union_all(), is_simple_values(), IsA, j, JOIN_ANTI, JOIN_FULL, JOIN_INNER, JOIN_LEFT, JOIN_RIGHT, JOIN_SEMI, lfirst, nodeTag, PlannerInfo::parse, pull_up_constant_function(), pull_up_simple_subquery(), pull_up_simple_union_all(), pull_up_simple_values(), rt_fetch, Query::rtable, RTE_FUNCTION, RTE_SUBQUERY, RTE_VALUES, RangeTblEntry::rtekind, and RangeTblEntry::subquery.
Referenced by pull_up_subqueries(), and pull_up_union_leaf_queries().
|
static |
Definition at line 1379 of file prepjointree.c.
References PlannerInfo::append_rel_list, AppendRelInfo::child_relid, AppendRelInfo::child_reltype, elog(), ERROR, InvalidOid, IsA, lappend(), SetOperationStmt::larg, make_setop_translation_list(), makeNode, nodeTag, AppendRelInfo::parent_relid, AppendRelInfo::parent_reloid, AppendRelInfo::parent_reltype, pull_up_subqueries_recurse(), SetOperationStmt::rarg, and RangeTblRef::rtindex.
Referenced by flatten_simple_union_all(), and pull_up_simple_union_all().
|
static |
Definition at line 2299 of file prepjointree.c.
References pullup_replace_vars_context::outer_hasSubLinks, pullup_replace_vars_callback(), replace_rte_variables(), and pullup_replace_vars_context::varno.
Referenced by perform_pullup_replace_vars(), and replace_vars_in_jointree().
|
static |
Definition at line 2309 of file prepjointree.c.
References RowExpr::args, Assert(), bms_add_members(), bms_is_member(), bms_make_singleton(), replace_rte_variables_context::callback_arg, COERCE_IMPLICIT_CAST, copyObject, elog(), ERROR, expandRTE(), TargetEntry::expr, get_tle_by_resno(), IncrementVarSublevelsUp(), InvalidAttrNumber, IsA, RangeTblEntry::lateral, list_length(), Var::location, RowExpr::location, make_placeholder_expr(), makeNode, NIL, PlaceHolderVar::phlevelsup, PlaceHolderVar::phnullingrels, pullup_replace_vars_context::relids, replace_rte_variables_mutator(), pullup_replace_vars_context::root, pullup_replace_vars_context::rv_cache, replace_rte_variables_context::sublevels_up, pullup_replace_vars_context::target_rte, pullup_replace_vars_context::targetlist, Var::varattno, Var::varlevelsup, pullup_replace_vars_context::varno, Var::varno, and pullup_replace_vars_context::wrap_non_vars.
Referenced by pullup_replace_vars(), and pullup_replace_vars_subquery().
|
static |
Definition at line 2507 of file prepjointree.c.
References Assert(), IsA, pullup_replace_vars_callback(), replace_rte_variables(), and pullup_replace_vars_context::varno.
Referenced by replace_vars_in_jointree().
void reduce_outer_joins | ( | PlannerInfo * | root | ) |
Definition at line 2653 of file prepjointree.c.
References PlannerInfo::append_rel_list, bms_is_empty, bms_make_singleton(), reduce_outer_joins_pass1_state::contains_outer, elog(), ERROR, reduce_outer_joins_partial_state::full_join_rti, reduce_outer_joins_pass2_state::inner_reduced, Query::jointree, lfirst, NIL, PlannerInfo::parse, reduce_outer_joins_pass2_state::partial_reduced, reduce_outer_joins_pass1(), reduce_outer_joins_pass2(), remove_nulling_relids(), and reduce_outer_joins_partial_state::unreduced_side.
Referenced by subquery_planner().
|
static |
Definition at line 2726 of file prepjointree.c.
References bms_add_members(), bms_make_singleton(), reduce_outer_joins_pass1_state::contains_outer, elog(), ERROR, FromExpr::fromlist, IS_OUTER_JOIN, IsA, j, lappend(), lfirst, NIL, nodeTag, palloc(), reduce_outer_joins_pass1_state::relids, and reduce_outer_joins_pass1_state::sub_states.
Referenced by reduce_outer_joins().
|
static |
Definition at line 2804 of file prepjointree.c.
References Assert(), bms_add_member(), bms_add_members(), bms_free(), bms_overlap(), reduce_outer_joins_pass1_state::contains_outer, elog(), ERROR, find_forced_null_vars(), find_nonnullable_rels(), find_nonnullable_vars(), forboth, FromExpr::fromlist, reduce_outer_joins_pass2_state::inner_reduced, IsA, j, JOIN_ANTI, JOIN_FULL, JOIN_INNER, JOIN_LEFT, JOIN_RIGHT, JOIN_SEMI, RangeTblEntry::jointype, lfirst, linitial, list_length(), lsecond, mbms_add_members(), mbms_overlap_sets(), NIL, nodeTag, PlannerInfo::parse, FromExpr::quals, reduce_outer_joins_pass1_state::relids, report_reduced_full_join(), rt_fetch, Query::rtable, RTE_JOIN, RangeTblEntry::rtekind, and reduce_outer_joins_pass1_state::sub_states.
Referenced by reduce_outer_joins().
|
static |
Definition at line 3521 of file prepjointree.c.
References Assert(), bms_is_empty, fix_append_rel_relids(), get_relids_in_jointree(), PlannerInfo::glob, PlannerGlobal::lastPHId, PlannerInfo::parse, and substitute_phv_relids().
Referenced by remove_useless_results_recurse().
void remove_useless_result_rtes | ( | PlannerInfo * | root | ) |
Definition at line 3147 of file prepjointree.c.
References PlannerInfo::append_rel_list, Assert(), bms_is_empty, foreach_delete_current, IsA, Query::jointree, lfirst, PlannerInfo::parse, remove_nulling_relids(), remove_useless_results_recurse(), PlannerInfo::rowMarks, rt_fetch, Query::rtable, RTE_RESULT, and PlanRowMark::rti.
Referenced by subquery_planner().
|
static |
Definition at line 3220 of file prepjointree.c.
References Assert(), bms_add_member(), bms_next_member(), castNode, elog(), ERROR, find_dependent_phvs(), find_dependent_phvs_in_jointree(), foreach_delete_current, FromExpr::fromlist, get_result_relid(), IsA, j, JOIN_ANTI, JOIN_FULL, JOIN_INNER, JOIN_LEFT, JOIN_SEMI, Query::jointree, lfirst, linitial, list_concat(), list_length(), list_make1, makeFromExpr(), nodeTag, PlannerInfo::parse, FromExpr::quals, and remove_result_refs().
Referenced by remove_useless_result_rtes().
void replace_empty_jointree | ( | Query * | parse | ) |
Definition at line 235 of file prepjointree.c.
References RangeTblEntry::eref, lappend(), list_length(), list_make1, makeAlias(), makeNode, NIL, parse(), RTE_RESULT, RangeTblEntry::rtekind, and RangeTblRef::rtindex.
Referenced by convert_EXISTS_sublink_to_join(), pull_up_simple_subquery(), and subquery_planner().
|
static |
Definition at line 2193 of file prepjointree.c.
References Assert(), elog(), ERROR, FromExpr::fromlist, RangeTblEntry::functions, IsA, j, JOIN_FULL, RangeTblEntry::lateral, lfirst, nodeTag, PlannerInfo::parse, pullup_replace_vars(), pullup_replace_vars_subquery(), FromExpr::quals, pullup_replace_vars_context::root, rt_fetch, Query::rtable, RTE_CTE, RTE_FUNCTION, RTE_JOIN, RTE_NAMEDTUPLESTORE, RTE_RELATION, RTE_RESULT, RTE_SUBQUERY, RTE_TABLEFUNC, RTE_VALUES, RangeTblEntry::rtekind, RangeTblEntry::subquery, RangeTblEntry::tablefunc, RangeTblEntry::tablesample, pullup_replace_vars_context::target_rte, RangeTblEntry::values_lists, pullup_replace_vars_context::varno, and pullup_replace_vars_context::wrap_non_vars.
Referenced by perform_pullup_replace_vars().
|
static |
Definition at line 3078 of file prepjointree.c.
References reduce_outer_joins_partial_state::full_join_rti, lappend(), palloc(), reduce_outer_joins_pass2_state::partial_reduced, and reduce_outer_joins_partial_state::unreduced_side.
Referenced by reduce_outer_joins_pass2().
Definition at line 3729 of file prepjointree.c.
References query_or_expression_tree_walker, substitute_phv_relids_context::sublevels_up, substitute_phv_relids_context::subrelids, substitute_phv_relids_walker(), and substitute_phv_relids_context::varno.
Referenced by fix_append_rel_relids(), pull_up_simple_subquery(), and remove_result_refs().
|
static |
Definition at line 3685 of file prepjointree.c.
References Assert(), bms_del_member(), bms_is_empty, bms_is_member(), bms_union(), expression_tree_walker, IsA, PlaceHolderVar::phlevelsup, query_tree_walker, substitute_phv_relids_context::sublevels_up, substitute_phv_relids_context::subrelids, and substitute_phv_relids_context::varno.
Referenced by substitute_phv_relids().
void transform_MERGE_to_join | ( | Query * | parse | ) |
Definition at line 152 of file prepjointree.c.
References RangeTblEntry::alias, CMD_MERGE, RangeTblEntry::eref, RangeTblEntry::inFromCl, RangeTblEntry::inh, JoinExpr::isNatural, JOIN_INNER, JOIN_RIGHT, RangeTblEntry::join_using_alias, RangeTblEntry::joinaliasvars, RangeTblEntry::joinleftcols, RangeTblEntry::joinmergedcols, RangeTblEntry::joinrightcols, RangeTblEntry::jointype, JoinExpr::jointype, lappend(), JoinExpr::larg, RangeTblEntry::lateral, linitial, list_length(), list_make1, makeAlias(), makeNode, NIL, parse(), JoinExpr::quals, JoinExpr::rarg, RTE_JOIN, RangeTblEntry::rtekind, and JoinExpr::rtindex.
Referenced by subquery_planner().