From 68d0d494879ae34a518180445922d6346e8ee723 Mon Sep 17 00:00:00 2001 From: prabatuty Date: Fri, 15 Apr 2011 17:03:22 +0000 Subject: [PATCH] Bug:3260692 ON Clause conditions are missing from predicates in case of join ---------------------------------------------------------------------- --- src/sql/dmlyacc.yxx | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/sql/dmlyacc.yxx b/src/sql/dmlyacc.yxx index 3141d17c..6915eaea 100644 --- a/src/sql/dmlyacc.yxx +++ b/src/sql/dmlyacc.yxx @@ -233,14 +233,14 @@ table_list: table_list table_list_L join_exp: INNER opt_join table ON conditions join_exp { parsedData->insertJoinType(INNER_JOIN); - Condition *cond = parsedData->getCondition(); Predicate *pred = cond->getPredicate(); - if (pred == NULL) parsedData->setCondition((Predicate*)$5); - else { - Predicate *newPred; - newPred = parsedData->insertPredicate(pred, OpAnd, (Predicate*)$5); - parsedData->setCondition(newPred); + if (pred == NULL) { + parsedData->setCondition((Predicate*)$5); + } else { + Predicate *newPred; + newPred = parsedData->insertPredicate(pred, OpAnd, (Predicate*)$5); + parsedData->setCondition(newPred); } } @@ -249,11 +249,12 @@ join_exp: INNER opt_join table ON conditions join_exp parsedData->insertJoinType(LEFT_JOIN); Condition *cond = parsedData->getCondition(); Predicate *pred = cond->getPredicate(); - if (pred == NULL) parsedData->setCondition((Predicate*)$6); - else { - Predicate *newPred; - newPred = parsedData->insertPredicate(pred, OpAnd, (Predicate*)$6); - parsedData->setCondition(newPred); + if (pred == NULL) { + parsedData->setCondition((Predicate*)$6); + } else { + Predicate *newPred; + newPred = parsedData->insertPredicate(pred, OpAnd, (Predicate*)$6); + parsedData->setCondition(newPred); } } | CROSS opt_join table join_exp @@ -566,7 +567,16 @@ atom : ident where_clause_opt: WHERE conditions { - parsedData->setCondition((Predicate*)$2); + Condition *cond = parsedData->getCondition(); + Predicate *pred = cond->getPredicate(); + if (pred == NULL) { + parsedData->setCondition((Predicate*)$2); + } else { + Predicate *newPred; + newPred = parsedData->insertPredicate(pred, OpAnd, (Predicate*)$2); + parsedData->setCondition(newPred); + } + } | ; -- 2.11.4.GIT