From 0705b02f18b161292607a2541689aaf07783d15e Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 31 Aug 1998 07:19:56 +0000
Subject: [PATCH] OR clause index fix

---
 src/backend/optimizer/path/indxpath.c   |  6 +++---
 src/backend/optimizer/path/orindxpath.c | 15 +++++++--------
 src/backend/optimizer/util/clauses.c    |  7 +++----
 3 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c
index 00543dcdf1..d7e62b1735 100644
--- a/src/backend/optimizer/path/indxpath.c
+++ b/src/backend/optimizer/path/indxpath.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.31 1998/08/19 02:02:11 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.32 1998/08/31 07:19:54 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -340,10 +340,10 @@ match_index_orclause(RelOptInfo *rel,
 								   index) &&
 			  IsA(get_rightop((Expr *) clause), Const)) ||
 			 (match_index_to_operand(indexkey,
-								   (Expr *) get_leftop((Expr *) clause),
+								   (Expr *) get_rightop((Expr *) clause),
 								   rel,
 								   index) &&
-			 IsA(get_rightop((Expr *) clause), Const))))
+			 IsA(get_leftop((Expr *) clause), Const))))
 		{
 			lfirst(matching_indices) = lcons(index, lfirst(matching_indices));
 		}
diff --git a/src/backend/optimizer/path/orindxpath.c b/src/backend/optimizer/path/orindxpath.c
index 7f220fc54b..13f4b7c206 100644
--- a/src/backend/optimizer/path/orindxpath.c
+++ b/src/backend/optimizer/path/orindxpath.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.8 1998/08/01 22:12:13 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.9 1998/08/31 07:19:55 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -84,6 +84,7 @@ create_or_index_paths(Query *root,
 					break;
 				}
 			}
+			/* do they all have indexes? */
 			if (index_flag)
 			{					/* used to be a lisp every function */
 				IndexPath  *pathnode = makeNode(IndexPath);
@@ -215,6 +216,11 @@ best_or_subclause_index(Query *root,
 {
 	List *ilist;
 	bool first_run = true;
+
+	/* if we don't match anything, return zeros */
+	*retIndexid = 0;
+	*retCost = 0.0;
+	*retSelec = 0.0;
 	
 	foreach (ilist, indices)
 	{
@@ -268,12 +274,5 @@ best_or_subclause_index(Query *root,
 		}
 	}
 
-	/* we didn't get any indexes, so zero return values */
-	if (first_run)
-	{
-		*retIndexid = 0;
-		*retCost = 0.0;
-		*retSelec = 0.0;
-	}
 	return;
 }
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
index 653dad7f2a..fd5b91fd46 100644
--- a/src/backend/optimizer/util/clauses.c
+++ b/src/backend/optimizer/util/clauses.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.20 1998/08/10 02:26:29 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.21 1998/08/31 07:19:56 momjian Exp $
  *
  * HISTORY
  *	  AUTHOR			DATE			MAJOR EVENT
@@ -198,9 +198,8 @@ make_funcclause(Func *func, List *funcargs)
 bool
 or_clause(Node *clause)
 {
-	return
-	(clause != NULL &&
-	 nodeTag(clause) == T_Expr && ((Expr *) clause)->opType == OR_EXPR);
+	return clause != NULL &&
+		   nodeTag(clause) == T_Expr && ((Expr *) clause)->opType == OR_EXPR);
 }
 
 /*
-- 
2.24.1