diff options
author | Bruce Momjian <bruce@momjian.us> | 1997-09-07 05:04:48 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1997-09-07 05:04:48 +0000 |
commit | 1ccd423235a48739d6f7a4d7889705b5f9ecc69b (patch) | |
tree | 8001c4e839dfad8f29ceda7f8c5f5dbb8759b564 /src/backend/optimizer/path/mergeutils.c | |
parent | 8fecd4febf8357f3cc20383ed29ced484877d5ac (diff) | |
download | postgresql-1ccd423235a48739d6f7a4d7889705b5f9ecc69b.tar.gz postgresql-1ccd423235a48739d6f7a4d7889705b5f9ecc69b.zip |
Massive commit to run PGINDENT on all *.c and *.h files.
Diffstat (limited to 'src/backend/optimizer/path/mergeutils.c')
-rw-r--r-- | src/backend/optimizer/path/mergeutils.c | 170 |
1 files changed, 89 insertions, 81 deletions
diff --git a/src/backend/optimizer/path/mergeutils.c b/src/backend/optimizer/path/mergeutils.c index d5f0fdcb65b..93004a6741e 100644 --- a/src/backend/optimizer/path/mergeutils.c +++ b/src/backend/optimizer/path/mergeutils.c @@ -1,13 +1,13 @@ /*------------------------------------------------------------------------- * * mergeutils.c-- - * Utilities for finding applicable merge clauses and pathkeys + * Utilities for finding applicable merge clauses and pathkeys * * Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/mergeutils.c,v 1.1.1.1 1996/07/09 06:21:36 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/mergeutils.c,v 1.2 1997/09/07 04:43:45 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -21,102 +21,110 @@ #include "optimizer/clauses.h" #include "optimizer/ordering.h" -/* +/* * group-clauses-by-order-- - * If a join clause node in 'clauseinfo-list' is mergesortable, store - * it within a mergeinfo node containing other clause nodes with the same - * mergesort ordering. - * + * If a join clause node in 'clauseinfo-list' is mergesortable, store + * it within a mergeinfo node containing other clause nodes with the same + * mergesort ordering. + * * 'clauseinfo-list' is the list of clauseinfo nodes * 'inner-relid' is the relid of the inner join relation - * + * * Returns the new list of mergeinfo nodes. - * + * */ -List * -group_clauses_by_order(List *clauseinfo_list, - int inner_relid) +List * +group_clauses_by_order(List * clauseinfo_list, + int inner_relid) { - List *mergeinfo_list = NIL; - List *xclauseinfo = NIL; - - foreach (xclauseinfo, clauseinfo_list) { - CInfo *clauseinfo = (CInfo *)lfirst(xclauseinfo); - MergeOrder *merge_ordering = clauseinfo->mergesortorder; - - if (merge_ordering) { - /* - * Create a new mergeinfo node and add it to - * 'mergeinfo-list' if one does not yet exist for this - * merge ordering. - */ - PathOrder p_ordering; - MInfo *xmergeinfo; - Expr *clause = clauseinfo->clause; - Var *leftop = get_leftop (clause); - Var *rightop = get_rightop (clause); - JoinKey *keys; - - p_ordering.ordtype = MERGE_ORDER; - p_ordering.ord.merge = merge_ordering; - xmergeinfo = - match_order_mergeinfo(&p_ordering, mergeinfo_list); - if (inner_relid == leftop->varno) { - keys = makeNode(JoinKey); - keys->outer = rightop; - keys->inner = leftop; - } else { - keys = makeNode(JoinKey); - keys->outer = leftop; - keys->inner = rightop; - } - - if (xmergeinfo==NULL) { - xmergeinfo = makeNode(MInfo); - - xmergeinfo->m_ordering = merge_ordering; - mergeinfo_list = lcons(xmergeinfo, - mergeinfo_list); - } - - ((JoinMethod *)xmergeinfo)->clauses = - lcons(clause, - ((JoinMethod *)xmergeinfo)->clauses); - ((JoinMethod *)xmergeinfo)->jmkeys = - lcons(keys, - ((JoinMethod *)xmergeinfo)->jmkeys); + List *mergeinfo_list = NIL; + List *xclauseinfo = NIL; + + foreach(xclauseinfo, clauseinfo_list) + { + CInfo *clauseinfo = (CInfo *) lfirst(xclauseinfo); + MergeOrder *merge_ordering = clauseinfo->mergesortorder; + + if (merge_ordering) + { + + /* + * Create a new mergeinfo node and add it to 'mergeinfo-list' + * if one does not yet exist for this merge ordering. + */ + PathOrder p_ordering; + MInfo *xmergeinfo; + Expr *clause = clauseinfo->clause; + Var *leftop = get_leftop(clause); + Var *rightop = get_rightop(clause); + JoinKey *keys; + + p_ordering.ordtype = MERGE_ORDER; + p_ordering.ord.merge = merge_ordering; + xmergeinfo = + match_order_mergeinfo(&p_ordering, mergeinfo_list); + if (inner_relid == leftop->varno) + { + keys = makeNode(JoinKey); + keys->outer = rightop; + keys->inner = leftop; + } + else + { + keys = makeNode(JoinKey); + keys->outer = leftop; + keys->inner = rightop; + } + + if (xmergeinfo == NULL) + { + xmergeinfo = makeNode(MInfo); + + xmergeinfo->m_ordering = merge_ordering; + mergeinfo_list = lcons(xmergeinfo, + mergeinfo_list); + } + + ((JoinMethod *) xmergeinfo)->clauses = + lcons(clause, + ((JoinMethod *) xmergeinfo)->clauses); + ((JoinMethod *) xmergeinfo)->jmkeys = + lcons(keys, + ((JoinMethod *) xmergeinfo)->jmkeys); + } } - } - return(mergeinfo_list); + return (mergeinfo_list); } -/* +/* * match-order-mergeinfo-- - * Searches the list 'mergeinfo-list' for a mergeinfo node whose order - * field equals 'ordering'. - * + * Searches the list 'mergeinfo-list' for a mergeinfo node whose order + * field equals 'ordering'. + * * Returns the node if it exists. - * + * */ -MInfo * -match_order_mergeinfo(PathOrder *ordering, List *mergeinfo_list) +MInfo * +match_order_mergeinfo(PathOrder * ordering, List * mergeinfo_list) { - MergeOrder *xmergeorder; - List *xmergeinfo = NIL; + MergeOrder *xmergeorder; + List *xmergeinfo = NIL; - foreach(xmergeinfo, mergeinfo_list) { - MInfo *mergeinfo = (MInfo*)lfirst(xmergeinfo); + foreach(xmergeinfo, mergeinfo_list) + { + MInfo *mergeinfo = (MInfo *) lfirst(xmergeinfo); - xmergeorder = mergeinfo->m_ordering; + xmergeorder = mergeinfo->m_ordering; - if ((ordering->ordtype==MERGE_ORDER && - equal_merge_merge_ordering(ordering->ord.merge, xmergeorder)) || - (ordering->ordtype==SORTOP_ORDER && - equal_path_merge_ordering(ordering->ord.sortop, xmergeorder))) { + if ((ordering->ordtype == MERGE_ORDER && + equal_merge_merge_ordering(ordering->ord.merge, xmergeorder)) || + (ordering->ordtype == SORTOP_ORDER && + equal_path_merge_ordering(ordering->ord.sortop, xmergeorder))) + { - return (mergeinfo); + return (mergeinfo); + } } - } - return((MInfo*) NIL); + return ((MInfo *) NIL); } |