|
PostgreSQL Source Code git master
|
#include "postgres.h"#include <limits.h>#include "access/stratnum.h"#include "catalog/pg_type.h"#include "common/hashfn.h"#include "nodes/makefuncs.h"#include "nodes/nodeFuncs.h"#include "optimizer/appendinfo.h"#include "optimizer/clauses.h"#include "optimizer/optimizer.h"#include "optimizer/pathnode.h"#include "optimizer/paths.h"#include "optimizer/planmain.h"#include "optimizer/restrictinfo.h"#include "rewrite/rewriteManip.h"#include "utils/lsyscache.h"#include "lib/simplehash.h"
Go to the source code of this file.
Data Structures | |
| struct | ECDerivesKey |
| struct | ECDerivesEntry |
Macros | |
| #define | EC_DERIVES_HASH_THRESHOLD 32 |
| #define | SH_PREFIX derives |
| #define | SH_ELEMENT_TYPE ECDerivesEntry |
| #define | SH_KEY_TYPE ECDerivesKey |
| #define | SH_KEY key |
| #define | SH_HASH_KEY(tb, key) hash_bytes((const unsigned char *) &(key), sizeof(ECDerivesKey)) |
| #define | SH_EQUAL(tb, a, b) ((a).em1 == (b).em1 && (a).em2 == (b).em2 && (a).parent_ec == (b).parent_ec) |
| #define | SH_SCOPE static inline |
| #define | SH_DECLARE |
| #define | SH_DEFINE |
| #define EC_DERIVES_HASH_THRESHOLD 32 |
Definition at line 124 of file equivclass.c.
| #define SH_DECLARE |
Definition at line 135 of file equivclass.c.
| #define SH_DEFINE |
Definition at line 136 of file equivclass.c.
| #define SH_ELEMENT_TYPE ECDerivesEntry |
Definition at line 127 of file equivclass.c.
| #define SH_EQUAL | ( | tb, | |
| a, | |||
| b | |||
| ) | ((a).em1 == (b).em1 && (a).em2 == (b).em2 && (a).parent_ec == (b).parent_ec) |
Definition at line 132 of file equivclass.c.
| #define SH_HASH_KEY | ( | tb, | |
| key | |||
| ) | hash_bytes((const unsigned char *) &(key), sizeof(ECDerivesKey)) |
Definition at line 130 of file equivclass.c.
| #define SH_KEY key |
Definition at line 129 of file equivclass.c.
| #define SH_KEY_TYPE ECDerivesKey |
Definition at line 128 of file equivclass.c.
Definition at line 126 of file equivclass.c.
Definition at line 134 of file equivclass.c.
|
static |
Definition at line 661 of file equivclass.c.
References Assert, bms_add_member(), EquivalenceClass::ec_childmembers, EquivalenceClass::ec_childmembers_size, RelOptInfo::eclass_indexes, fb(), lappend(), make_eq_member(), palloc0_array, repalloc0_array, root, and unlikely.
Referenced by add_child_join_rel_equivalences(), add_child_rel_equivalences(), and add_setop_child_rel_equivalences().
| void add_child_join_rel_equivalences | ( | PlannerInfo * | root, |
| int | nappinfos, | ||
| AppendRelInfo ** | appinfos, | ||
| RelOptInfo * | parent_joinrel, | ||
| RelOptInfo * | child_joinrel | ||
| ) |
Definition at line 2940 of file equivclass.c.
References add_child_eq_member(), adjust_appendrel_attrs(), adjust_appendrel_attrs_multilevel(), Assert, bms_add_members(), bms_difference(), bms_membership(), BMS_MULTIPLE, bms_next_member(), bms_overlap(), fb(), foreach_node, get_eclass_indexes_for_relids(), i, IS_JOIN_REL, list_nth(), MemoryContextSwitchTo(), RELOPT_JOINREL, RELOPT_OTHER_JOINREL, and root.
Referenced by build_child_join_rel().
| void add_child_rel_equivalences | ( | PlannerInfo * | root, |
| AppendRelInfo * | appinfo, | ||
| RelOptInfo * | parent_rel, | ||
| RelOptInfo * | child_rel | ||
| ) |
Definition at line 2832 of file equivclass.c.
References add_child_eq_member(), adjust_appendrel_attrs(), adjust_appendrel_attrs_multilevel(), Assert, bms_add_members(), bms_difference(), bms_is_empty, bms_is_subset(), bms_next_member(), fb(), foreach_node, i, IS_SIMPLE_REL, list_nth(), RELOPT_BASEREL, and root.
Referenced by set_append_rel_size().
|
static |
Definition at line 628 of file equivclass.c.
References bms_add_members(), EquivalenceClass::ec_members, EquivalenceClass::ec_relids, fb(), lappend(), and make_eq_member().
Referenced by get_eclass_for_sort_expr(), and process_equivalence().
| void add_setop_child_rel_equivalences | ( | PlannerInfo * | root, |
| RelOptInfo * | child_rel, | ||
| List * | child_tlist, | ||
| List * | setop_pathkeys | ||
| ) |
Definition at line 3083 of file equivclass.c.
References add_child_eq_member(), bms_add_range(), elog, ERROR, exprType(), fb(), lfirst_node, linitial, list_head(), list_length(), lnext(), and root.
Referenced by build_setop_child_paths().
Definition at line 545 of file equivclass.c.
References applyRelabelType(), COERCE_IMPLICIT_CAST, exprCollation(), exprType(), exprTypmod(), and fb().
Referenced by convert_subquery_pathkeys(), get_eclass_for_sort_expr(), and process_equivalence().
|
static |
Definition at line 1982 of file equivclass.c.
References bms_add_members(), bms_union(), build_implied_join_equality(), create_join_clause(), ec_add_derived_clause(), EquivalenceClass::ec_collation, EquivalenceClass::ec_min_security, ec_search_clause_for_ems(), fb(), MemoryContextSwitchTo(), RestrictInfo::rinfo_serial, and root.
Referenced by create_join_clause(), generate_implied_equalities_for_column(), and generate_join_implied_equalities_normal().
|
static |
Definition at line 3788 of file equivclass.c.
References Assert, EquivalenceClass::ec_derives_hash, fb(), fill_ec_derives_key(), and ECDerivesEntry::rinfo.
Referenced by ec_add_derived_clause(), ec_add_derived_clauses(), and ec_build_derives_hash().
|
static |
Definition at line 3702 of file equivclass.c.
References Assert, ec_add_clause_to_derives_hash(), EquivalenceClass::ec_derives_hash, EquivalenceClass::ec_derives_list, and lappend().
Referenced by create_join_clause(), and generate_base_implied_equalities_const().
|
static |
Definition at line 3732 of file equivclass.c.
References ec_add_clause_to_derives_hash(), EquivalenceClass::ec_derives_hash, EquivalenceClass::ec_derives_list, foreach_node, and list_concat().
Referenced by process_equivalence().
|
static |
Definition at line 3672 of file equivclass.c.
References Assert, ec_add_clause_to_derives_hash(), EquivalenceClass::ec_derives_hash, EquivalenceClass::ec_derives_list, fb(), foreach_node, list_length(), and root.
Referenced by ec_search_derived_clause_for_ems().
| void ec_clear_derived_clauses | ( | EquivalenceClass * | ec | ) |
Definition at line 3830 of file equivclass.c.
References EquivalenceClass::ec_derives_hash, EquivalenceClass::ec_derives_list, fb(), list_free(), and NIL.
Referenced by process_equivalence(), remove_rel_from_eclass(), and update_eclasses().
|
static |
Definition at line 3854 of file equivclass.c.
References ec_search_derived_clause_for_ems(), EquivalenceClass::ec_sources, fb(), foreach_node, and root.
Referenced by create_join_clause().
|
static |
Definition at line 3892 of file equivclass.c.
References Assert, ec_build_derives_hash(), EquivalenceClass::ec_derives_hash, EC_DERIVES_HASH_THRESHOLD, EquivalenceClass::ec_derives_list, fb(), fill_ec_derives_key(), foreach_node, list_length(), ECDerivesEntry::rinfo, and root.
Referenced by ec_search_clause_for_ems(), and find_derived_clause_for_ec_member().
| EquivalenceMember * eclass_member_iterator_next | ( | EquivalenceMemberIterator * | it | ) |
Definition at line 3174 of file equivclass.c.
References bms_next_member(), fb(), lfirst_node, list_head(), lnext(), and NIL.
Referenced by find_computable_ec_member(), find_ec_member_matching_expr(), find_em_for_rel(), generate_implied_equalities_for_column(), generate_join_implied_equalities_normal(), get_eclass_for_sort_expr(), and match_pathkeys_to_index().
| bool eclass_useful_for_merging | ( | PlannerInfo * | root, |
| EquivalenceClass * | eclass, | ||
| RelOptInfo * | rel | ||
| ) |
Definition at line 3489 of file equivclass.c.
References Assert, bms_is_empty, bms_is_subset(), bms_overlap(), eclass(), fb(), IS_OTHER_REL, lfirst, list_length(), RelOptInfo::relids, and RelOptInfo::top_parent_relids.
Referenced by get_useful_ecs_for_relation(), and pathkeys_useful_for_merging().
| bool exprs_known_equal | ( | PlannerInfo * | root, |
| Node * | item1, | ||
| Node * | item2, | ||
| Oid | opfamily | ||
| ) |
Definition at line 2647 of file equivclass.c.
References Assert, EquivalenceClass::ec_has_volatile, EquivalenceClass::ec_members, EquivalenceClass::ec_opfamilies, equal(), fb(), lfirst, list_member_oid(), OidIsValid, and root.
Referenced by add_unique_group_var(), and have_partkey_equi_join().
|
inlinestatic |
Definition at line 3754 of file equivclass.c.
Referenced by ec_add_clause_to_derives_hash(), and ec_search_derived_clause_for_ems().
| EquivalenceMember * find_computable_ec_member | ( | PlannerInfo * | root, |
| EquivalenceClass * | ec, | ||
| List * | exprs, | ||
| Relids | relids, | ||
| bool | require_parallel_safe | ||
| ) |
Definition at line 991 of file equivclass.c.
References bms_is_subset(), eclass_member_iterator_next(), fb(), is_parallel_safe(), lfirst, list_free(), list_member(), pull_var_clause(), PVC_INCLUDE_AGGREGATES, PVC_INCLUDE_PLACEHOLDERS, PVC_INCLUDE_WINDOWFUNCS, root, and setup_eclass_member_iterator().
Referenced by prepare_sort_from_pathkeys(), and relation_can_be_sorted_early().
| RestrictInfo * find_derived_clause_for_ec_member | ( | PlannerInfo * | root, |
| EquivalenceClass * | ec, | ||
| EquivalenceMember * | em | ||
| ) |
Definition at line 2803 of file equivclass.c.
References Assert, EquivalenceClass::ec_has_const, ec_search_derived_clause_for_ems(), fb(), and root.
Referenced by get_foreign_key_join_selectivity().
| EquivalenceMember * find_ec_member_matching_expr | ( | EquivalenceClass * | ec, |
| Expr * | expr, | ||
| Relids | relids | ||
| ) |
Definition at line 916 of file equivclass.c.
References bms_is_subset(), eclass_member_iterator_next(), equal(), fb(), IsA, and setup_eclass_member_iterator().
Referenced by make_unique_from_pathkeys(), prepare_sort_from_pathkeys(), and relation_can_be_sorted_early().
|
static |
Definition at line 2616 of file equivclass.c.
References bms_is_subset(), elog, ERROR, fb(), JoinDomain::jd_relids, lfirst, and root.
Referenced by reconsider_full_join_clause(), and reconsider_outer_join_clause().
| void generate_base_implied_equalities | ( | PlannerInfo * | root | ) |
Definition at line 1187 of file equivclass.c.
References Assert, bms_add_member(), bms_is_member(), bms_membership(), BMS_MULTIPLE, bms_next_member(), EquivalenceClass::ec_broken, EquivalenceClass::ec_has_const, EquivalenceClass::ec_members, EquivalenceClass::ec_merged, EquivalenceClass::ec_relids, RelOptInfo::eclass_indexes, fb(), generate_base_implied_equalities_broken(), generate_base_implied_equalities_const(), generate_base_implied_equalities_no_const(), RelOptInfo::has_eclass_joins, i, lfirst, list_length(), RELOPT_BASEREL, RelOptInfo::reloptkind, and root.
Referenced by query_planner().
|
static |
Definition at line 1486 of file equivclass.c.
References bms_membership(), BMS_MULTIPLE, distribute_restrictinfo_to_rels(), EquivalenceClass::ec_has_const, EquivalenceClass::ec_sources, fb(), lfirst, and root.
Referenced by generate_base_implied_equalities().
|
static |
Definition at line 1271 of file equivclass.c.
References Assert, distribute_restrictinfo_to_rels(), ec_add_derived_clause(), EquivalenceClass::ec_broken, EquivalenceClass::ec_childmembers, EquivalenceClass::ec_collation, EquivalenceClass::ec_members, EquivalenceClass::ec_min_security, EquivalenceClass::ec_sources, fb(), IsA, lfirst, linitial, list_length(), OidIsValid, process_implied_equality(), root, and select_equality_operator().
Referenced by generate_base_implied_equalities().
|
static |
Definition at line 1370 of file equivclass.c.
References add_vars_to_targetlist(), Assert, bms_get_singleton_member(), EquivalenceClass::ec_broken, EquivalenceClass::ec_childmembers, EquivalenceClass::ec_collation, EquivalenceClass::ec_members, EquivalenceClass::ec_min_security, EquivalenceClass::ec_relids, fb(), lfirst, list_free(), OidIsValid, palloc0(), pfree(), process_implied_equality(), pull_var_clause(), PVC_INCLUDE_PLACEHOLDERS, PVC_RECURSE_AGGREGATES, PVC_RECURSE_WINDOWFUNCS, root, and select_equality_operator().
Referenced by generate_base_implied_equalities().
| List * generate_implied_equalities_for_column | ( | PlannerInfo * | root, |
| RelOptInfo * | rel, | ||
| ec_matches_callback_type | callback, | ||
| void * | callback_arg, | ||
| Relids | prohibited_rels | ||
| ) |
Definition at line 3238 of file equivclass.c.
References Assert, bms_equal(), bms_is_subset(), bms_next_member(), bms_overlap(), callback(), create_join_clause(), RelOptInfo::eclass_indexes, eclass_member_iterator_next(), fb(), find_childrel_parents(), i, IS_SIMPLE_REL, lappend(), lfirst, list_length(), list_nth(), NIL, OidIsValid, RelOptInfo::relids, RELOPT_OTHER_MEMBER_REL, RelOptInfo::reloptkind, root, select_equality_operator(), and setup_eclass_member_iterator().
Referenced by create_tidscan_paths(), match_eclass_clauses_to_index(), and postgresGetForeignPaths().
| List * generate_join_implied_equalities | ( | PlannerInfo * | root, |
| Relids | join_relids, | ||
| Relids | outer_relids, | ||
| RelOptInfo * | inner_rel, | ||
| SpecialJoinInfo * | sjinfo | ||
| ) |
Definition at line 1549 of file equivclass.c.
References add_outer_joins_to_relids(), Assert, bms_is_empty, bms_next_member(), bms_overlap(), bms_union(), EquivalenceClass::ec_broken, EquivalenceClass::ec_has_const, EquivalenceClass::ec_members, EquivalenceClass::ec_relids, fb(), generate_join_implied_equalities_broken(), generate_join_implied_equalities_normal(), get_common_eclass_indexes(), get_eclass_indexes_for_relids(), i, IS_OTHER_REL, list_concat(), list_length(), list_nth(), NIL, SpecialJoinInfo::ojrelid, and root.
Referenced by build_joinrel_restrictlist(), check_index_predicates(), get_baserel_parampathinfo(), get_joinrel_parampathinfo(), reduce_unique_semijoins(), and remove_self_joins_one_group().
|
static |
Definition at line 1898 of file equivclass.c.
References adjust_appendrel_attrs_multilevel(), bms_is_subset(), EquivalenceClass::ec_sources, fb(), IS_OTHER_REL, lappend(), lfirst, NIL, and root.
Referenced by generate_join_implied_equalities(), and generate_join_implied_equalities_for_ecs().
| List * generate_join_implied_equalities_for_ecs | ( | PlannerInfo * | root, |
| List * | eclasses, | ||
| Relids | join_relids, | ||
| Relids | outer_relids, | ||
| RelOptInfo * | inner_rel | ||
| ) |
Definition at line 1649 of file equivclass.c.
References Assert, bms_is_empty, bms_overlap(), bms_union(), EquivalenceClass::ec_broken, EquivalenceClass::ec_has_const, EquivalenceClass::ec_members, EquivalenceClass::ec_relids, fb(), generate_join_implied_equalities_broken(), generate_join_implied_equalities_normal(), IS_OTHER_REL, lfirst, list_concat(), list_length(), NIL, and root.
Referenced by get_joinrel_parampathinfo().
|
static |
Definition at line 1720 of file equivclass.c.
References bms_is_subset(), create_join_clause(), EquivalenceClass::ec_broken, eclass_member_iterator_next(), exprType(), fb(), InvalidOid, IsA, lappend(), lfirst, linitial, list_concat(), NIL, OidIsValid, op_hashjoinable(), root, select_equality_operator(), and setup_eclass_member_iterator().
Referenced by generate_join_implied_equalities(), and generate_join_implied_equalities_for_ecs().
|
static |
Definition at line 3646 of file equivclass.c.
References bms_get_singleton_member(), bms_int_members(), fb(), get_eclass_indexes_for_relids(), and root.
Referenced by generate_join_implied_equalities(), and have_relevant_eclass_joinclause().
| EquivalenceClass * get_eclass_for_sort_expr | ( | PlannerInfo * | root, |
| Expr * | expr, | ||
| List * | opfamilies, | ||
| Oid | opcintype, | ||
| Oid | collation, | ||
| Index | sortref, | ||
| Relids | rel, | ||
| bool | create_it | ||
| ) |
Definition at line 736 of file equivclass.c.
References add_eq_member(), Assert, bms_add_member(), bms_equal(), bms_is_member(), bms_next_member(), canonicalize_ec_expression(), contain_agg_clause(), contain_volatile_functions(), contain_window_function(), copyObject, RelOptInfo::eclass_indexes, eclass_member_iterator_next(), elog, equal(), ERROR, expression_returns_set(), fb(), i, lappend(), lfirst, linitial_node, list_copy(), list_length(), makeNode, MemoryContextSwitchTo(), NIL, pull_varnos(), RELOPT_BASEREL, RelOptInfo::reloptkind, root, and setup_eclass_member_iterator().
Referenced by convert_subquery_pathkeys(), get_eclass_for_sortgroupclause(), initialize_mergeclause_eclasses(), and make_pathkey_from_sortinfo().
|
static |
Definition at line 3612 of file equivclass.c.
References Assert, bms_add_members(), bms_is_member(), bms_next_member(), RelOptInfo::eclass_indexes, fb(), i, and root.
Referenced by add_child_join_rel_equivalences(), generate_join_implied_equalities(), get_common_eclass_indexes(), and has_relevant_eclass_joinclause().
| bool has_relevant_eclass_joinclause | ( | PlannerInfo * | root, |
| RelOptInfo * | rel1 | ||
| ) |
Definition at line 3445 of file equivclass.c.
References bms_is_subset(), bms_next_member(), EquivalenceClass::ec_members, EquivalenceClass::ec_relids, fb(), get_eclass_indexes_for_relids(), i, list_length(), list_nth(), and root.
Referenced by build_join_rel().
| bool have_relevant_eclass_joinclause | ( | PlannerInfo * | root, |
| RelOptInfo * | rel1, | ||
| RelOptInfo * | rel2 | ||
| ) |
Definition at line 3369 of file equivclass.c.
References Assert, bms_next_member(), bms_overlap(), EquivalenceClass::ec_members, EquivalenceClass::ec_relids, fb(), get_common_eclass_indexes(), i, list_length(), list_nth(), and root.
Referenced by have_relevant_joinclause().
| bool is_redundant_derived_clause | ( | RestrictInfo * | rinfo, |
| List * | clauselist | ||
| ) |
Definition at line 3549 of file equivclass.c.
Referenced by create_tidscan_plan().
| bool is_redundant_with_indexclauses | ( | RestrictInfo * | rinfo, |
| List * | indexclauses | ||
| ) |
Definition at line 3576 of file equivclass.c.
References fb(), and lfirst_node.
Referenced by create_indexscan_plan(), extract_nonindex_conditions(), and has_indexed_join_quals().
|
static |
Definition at line 592 of file equivclass.c.
References Assert, bms_is_empty, EquivalenceClass::ec_has_const, fb(), and makeNode.
Referenced by add_child_eq_member(), and add_eq_member().
| EquivalenceClass * match_eclasses_to_foreign_key_col | ( | PlannerInfo * | root, |
| ForeignKeyOptInfo * | fkinfo, | ||
| int | colno | ||
| ) |
Definition at line 2709 of file equivclass.c.
References arg, Assert, bms_intersect(), bms_next_member(), EquivalenceClass::ec_has_volatile, EquivalenceClass::ec_members, EquivalenceClass::ec_opfamilies, equal(), fb(), get_mergejoin_opfamilies(), i, IS_SIMPLE_REL, IsA, lfirst, list_nth(), NIL, root, Var::varattno, and Var::varno.
Referenced by match_foreign_keys_to_quals().
| bool process_equivalence | ( | PlannerInfo * | root, |
| RestrictInfo ** | p_restrictinfo, | ||
| JoinDomain * | jdomain | ||
| ) |
Definition at line 179 of file equivclass.c.
References add_eq_member(), Assert, bms_join(), canonicalize_ec_expression(), ec_add_derived_clauses(), EquivalenceClass::ec_broken, EquivalenceClass::ec_childmembers, EquivalenceClass::ec_childmembers_size, ec_clear_derived_clauses(), EquivalenceClass::ec_collation, EquivalenceClass::ec_derives_hash, EquivalenceClass::ec_derives_list, EquivalenceClass::ec_has_const, EquivalenceClass::ec_has_volatile, EquivalenceClass::ec_max_security, EquivalenceClass::ec_members, EquivalenceClass::ec_merged, EquivalenceClass::ec_min_security, EquivalenceClass::ec_opfamilies, EquivalenceClass::ec_relids, EquivalenceClass::ec_sortref, EquivalenceClass::ec_sources, elog, equal(), ERROR, exprType(), fb(), foreach_current_index, func_strict(), get_leftop(), get_rightop(), IS_NOT_NULL, is_opclause(), lappend(), lfirst, list_concat(), list_delete_nth_cell(), list_make1, make_restrictinfo(), makeNode, Max, Min, NIL, op_input_types(), root, and set_opfuncid().
Referenced by distribute_qual_to_rels(), reconsider_full_join_clause(), and reconsider_outer_join_clause().
| void rebuild_eclass_attr_needed | ( | PlannerInfo * | root | ) |
Definition at line 2573 of file equivclass.c.
References add_vars_to_attr_needed(), Assert, EquivalenceClass::ec_childmembers, EquivalenceClass::ec_has_const, EquivalenceClass::ec_members, EquivalenceClass::ec_relids, fb(), lfirst, list_free(), list_length(), pull_var_clause(), PVC_INCLUDE_PLACEHOLDERS, PVC_RECURSE_AGGREGATES, PVC_RECURSE_WINDOWFUNCS, and root.
Referenced by remove_leftjoinrel_from_query(), and remove_self_join_rel().
|
static |
Definition at line 2383 of file equivclass.c.
References CoalesceExpr::args, Assert, bms_copy(), bms_make_singleton(), build_implied_join_equality(), RestrictInfo::clause, equal(), fb(), find_join_domain(), foreach_current_index, get_leftop(), get_rightop(), is_opclause(), IsA, lfirst, linitial, list_delete_nth_cell(), list_length(), lsecond, OidIsValid, SpecialJoinInfo::ojrelid, op_input_types(), process_equivalence(), remove_nulling_relids(), root, select_equality_operator(), SpecialJoinInfo::syn_lefthand, and SpecialJoinInfo::syn_righthand.
Referenced by reconsider_outer_join_clauses().
|
static |
Definition at line 2256 of file equivclass.c.
References Assert, bms_copy(), build_implied_join_equality(), RestrictInfo::clause, equal(), fb(), find_join_domain(), get_leftop(), get_rightop(), is_opclause(), lfirst, OidIsValid, op_input_types(), process_equivalence(), root, select_equality_operator(), and SpecialJoinInfo::syn_righthand.
Referenced by reconsider_outer_join_clauses().
| void reconsider_outer_join_clauses | ( | PlannerInfo * | root | ) |
Definition at line 2134 of file equivclass.c.
References distribute_restrictinfo_to_rels(), fb(), foreach_delete_current, RestrictInfo::has_clone, RestrictInfo::incompatible_relids, RestrictInfo::is_clone, RestrictInfo::is_pushed_down, lfirst, make_restrictinfo(), makeBoolConst(), RestrictInfo::outer_relids, reconsider_full_join_clause(), reconsider_outer_join_clause(), RestrictInfo::required_relids, and root.
Referenced by query_planner().
| bool relation_can_be_sorted_early | ( | PlannerInfo * | root, |
| RelOptInfo * | rel, | ||
| EquivalenceClass * | ec, | ||
| bool | require_parallel_safe | ||
| ) |
Definition at line 1076 of file equivclass.c.
References EquivalenceClass::ec_has_volatile, expression_returns_set(), PathTarget::exprs, fb(), find_computable_ec_member(), find_ec_member_matching_expr(), is_parallel_safe(), lfirst, RelOptInfo::relids, RelOptInfo::reltarget, and root.
Referenced by get_useful_pathkeys_for_relation().
|
static |
Definition at line 1947 of file equivclass.c.
References COMPARE_EQ, EquivalenceClass::ec_max_security, EquivalenceClass::ec_opfamilies, fb(), get_func_leakproof(), get_opcode(), get_opfamily_member_for_cmptype(), InvalidOid, lfirst_oid, and OidIsValid.
Referenced by generate_base_implied_equalities_const(), generate_base_implied_equalities_no_const(), generate_implied_equalities_for_column(), generate_join_implied_equalities_normal(), reconsider_full_join_clause(), and reconsider_outer_join_clause().
| void setup_eclass_member_iterator | ( | EquivalenceMemberIterator * | it, |
| EquivalenceClass * | ec, | ||
| Relids | child_relids | ||
| ) |
Definition at line 3155 of file equivclass.c.
References EquivalenceClass::ec_childmembers, EquivalenceClass::ec_members, fb(), and list_head().
Referenced by find_computable_ec_member(), find_ec_member_matching_expr(), find_em_for_rel(), generate_implied_equalities_for_column(), generate_join_implied_equalities_normal(), get_eclass_for_sort_expr(), and match_pathkeys_to_index().