From 5a6c377a5064212b4a8b68875f0f059b271e8e3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Thu, 15 Mar 2012 12:49:29 +0800 Subject: [PATCH] bug fixed for sql parser : SQLNotExpr --- .../java/com/alibaba/druid/sql/parser/SQLExprParser.java | 5 ++++- .../alibaba/druid/bvt/filter/wall/WallVisitorUtilsTest.java | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java index 54dda9481f..a86506fbfd 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -270,9 +270,12 @@ public class SQLExprParser extends SQLParser { lexer.nextToken(); SQLExpr notTarget = expr(); - sqlExpr = new SQLNotExpr(notTarget); accept(Token.RPAREN); + notTarget = exprRest(notTarget); + + sqlExpr = new SQLNotExpr(notTarget); + return primaryRest(sqlExpr); } else { SQLExpr restExpr = expr(); diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/WallVisitorUtilsTest.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/WallVisitorUtilsTest.java index aac3070e54..f4fa19cf36 100644 --- a/src/test/java/com/alibaba/druid/bvt/filter/wall/WallVisitorUtilsTest.java +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/WallVisitorUtilsTest.java @@ -32,5 +32,7 @@ public class WallVisitorUtilsTest extends TestCase { Assert.assertEquals(Boolean.TRUE, WallVisitorUtils.getValue(SQLUtils.toSQLExpr("(select count(*) from t) > 0"))); Assert.assertEquals(Boolean.TRUE, WallVisitorUtils.getValue(SQLUtils.toSQLExpr("(select count(*) from t) >= 0"))); + Assert.assertEquals(Boolean.FALSE, WallVisitorUtils.getValue(SQLUtils.toSQLExpr("(select count(*) from t) < 0"))); + Assert.assertEquals(Boolean.TRUE, WallVisitorUtils.getValue(SQLUtils.toSQLExpr("NOT (select count(*) from t) < 0"))); } }