diff options
author | Ocke Janssen [oj] <Ocke.Janssen@sun.com> | 2010-05-27 08:30:29 +0200 |
---|---|---|
committer | Ocke Janssen [oj] <Ocke.Janssen@sun.com> | 2010-05-27 08:30:29 +0200 |
commit | 6d8d642a0cddfb83d285d8da69677067bbf9d1f2 (patch) | |
tree | f7727baa4447496aa755ec64ae60489dbc96ce46 | |
parent | daf76132db519d472610d6ab4bf943153f5a8b16 (diff) |
dba33f: #i107654# like corrected
-rw-r--r-- | connectivity/source/parse/sqlbison.y | 12 | ||||
-rw-r--r-- | connectivity/source/parse/sqlnode.cxx | 9 |
2 files changed, 11 insertions, 10 deletions
diff --git a/connectivity/source/parse/sqlbison.y b/connectivity/source/parse/sqlbison.y index 06911d0b59..fdaad4cd81 100644 --- a/connectivity/source/parse/sqlbison.y +++ b/connectivity/source/parse/sqlbison.y @@ -1270,12 +1270,14 @@ like_predicate: $$ = SQL_NEW_RULE; $$->append(pColumnRef); $$->append($1); - OSQLParseNode* p2nd = $1->getChild(2); - if ( !xxx_pGLOBAL_SQLPARSER->buildLikeRule($1,p2nd,$1->getChild(3)) ) + OSQLParseNode* p2nd = $1->removeAt(2); + OSQLParseNode* p3rd = $1->removeAt(2); + if ( !xxx_pGLOBAL_SQLPARSER->buildLikeRule($1,p2nd,p3rd) ) { delete $$; YYABORT; } + $1->append(p3rd); } else YYERROR; @@ -1290,12 +1292,14 @@ like_predicate: $$ = SQL_NEW_RULE; $$->append(pColumnRef); $$->append($1); - OSQLParseNode* p2nd = $1->getChild(2); - if ( !xxx_pGLOBAL_SQLPARSER->buildLikeRule($1,p2nd,$1->getChild(3)) ) + OSQLParseNode* p2nd = $1->removeAt(2); + OSQLParseNode* p3rd = $1->removeAt(2); + if ( !xxx_pGLOBAL_SQLPARSER->buildLikeRule($1,p2nd,p3rd) ) { delete $$; YYABORT; } + $1->append(p3rd); } else YYERROR; diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx index 181799f3cd..9b9f9fb66f 100644 --- a/connectivity/source/parse/sqlnode.cxx +++ b/connectivity/source/parse/sqlnode.cxx @@ -715,13 +715,10 @@ void OSQLParseNode::impl_parseLikeNodeToString_throw( ::rtl::OUStringBuffer& rSt m_aChildren[0]->impl_parseNodeToString_throw( rString, aNewParam ); const OSQLParseNode* pPart2 = m_aChildren[1]; + pPart2->getChild(0)->impl_parseNodeToString_throw( rString, aNewParam ); pPart2->getChild(1)->impl_parseNodeToString_throw( rString, aNewParam ); - if (SQL_ISTOKEN(pPart2->getChild(0), NOT)) - pPart2->getChild(2)->impl_parseNodeToString_throw( rString, aNewParam ); - - sal_Int32 nCurentPos = pPart2->count() - 2; - pParaNode = pPart2->getChild(nCurentPos); - pEscNode = pPart2->getChild(nCurentPos+1); + pParaNode = pPart2->getChild(2); + pEscNode = pPart2->getChild(3); if (pParaNode->isToken()) { |