aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/path/hashutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/path/hashutils.c')
-rw-r--r--src/backend/optimizer/path/hashutils.c118
1 files changed, 0 insertions, 118 deletions
diff --git a/src/backend/optimizer/path/hashutils.c b/src/backend/optimizer/path/hashutils.c
deleted file mode 100644
index d6456af6da3..00000000000
--- a/src/backend/optimizer/path/hashutils.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * hashutils.c
- * 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/hashutils.c,v 1.18 1999/07/16 04:59:14 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
-#include "postgres.h"
-
-#include "optimizer/clauses.h"
-#include "optimizer/paths.h"
-
-
-static HashInfo *match_hashop_hashinfo(Oid hashop, List *hashinfo_list);
-
-/*
- * group_clauses_by_hashop
- * If a join clause node in 'restrictinfo_list' is hashjoinable, store
- * it within a hashinfo node containing other clause nodes with the same
- * hash operator.
- *
- * 'restrictinfo_list' is the list of restrictinfo nodes
- * 'inner_relids' is the list of relids in the inner join relation
- * (used to determine whether a join var is inner or outer)
- *
- * Returns the new list of hashinfo nodes.
- *
- */
-List *
-group_clauses_by_hashop(List *restrictinfo_list,
- Relids inner_relids)
-{
- List *hashinfo_list = NIL;
- RestrictInfo *restrictinfo;
- List *i;
- Oid hashjoinop;
-
- foreach(i, restrictinfo_list)
- {
- restrictinfo = (RestrictInfo *) lfirst(i);
- hashjoinop = restrictinfo->hashjoinoperator;
-
- /*
- * Create a new hashinfo node and add it to 'hashinfo_list' if one
- * does not yet exist for this hash operator.
- */
- if (hashjoinop)
- {
- Expr *clause = restrictinfo->clause;
- Var *leftop = get_leftop(clause);
- Var *rightop = get_rightop(clause);
- HashInfo *xhashinfo;
- JoinKey *joinkey;
-
- xhashinfo = match_hashop_hashinfo(hashjoinop, hashinfo_list);
- joinkey = makeNode(JoinKey);
- if (intMember(leftop->varno, inner_relids))
- {
- joinkey->outer = rightop;
- joinkey->inner = leftop;
- }
- else
- {
- joinkey->outer = leftop;
- joinkey->inner = rightop;
- }
-
- if (xhashinfo == NULL)
- {
- xhashinfo = makeNode(HashInfo);
- xhashinfo->hashop = hashjoinop;
- xhashinfo->jmethod.jmkeys = NIL;
- xhashinfo->jmethod.clauses = NIL;
- hashinfo_list = lcons(xhashinfo, hashinfo_list);
- }
-
- xhashinfo->jmethod.clauses = lcons(clause,
- xhashinfo->jmethod.clauses);
- xhashinfo->jmethod.jmkeys = lcons(joinkey,
- xhashinfo->jmethod.jmkeys);
- }
- }
- return hashinfo_list;
-}
-
-
-/*
- * match_hashop_hashinfo
- * Searches the list 'hashinfo_list' for a hashinfo node whose hash op
- * field equals 'hashop'.
- *
- * Returns the node if it exists.
- *
- */
-static HashInfo *
-match_hashop_hashinfo(Oid hashop, List *hashinfo_list)
-{
- Oid key = 0;
- HashInfo *xhashinfo = (HashInfo *) NULL;
- List *i = NIL;
-
- foreach(i, hashinfo_list)
- {
- xhashinfo = (HashInfo *) lfirst(i);
- key = xhashinfo->hashop;
- if (hashop == key)
- { /* found */
- return xhashinfo; /* should be a hashinfo node ! */
- }
- }
- return (HashInfo *) NIL;
-}