From 31ea197998ba3516fe803476331197c799d374fb Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 11 Apr 2013 19:41:31 +0800 Subject: [PATCH] improve wall filters --- .../druid/sql/visitor/functions/Greatest.java | 46 +++++++++++++++++ .../druid/sql/visitor/functions/If.java | 51 +++++++++++++++++++ .../druid/sql/visitor/functions/Isnull.java | 47 +++++++++++++++++ .../druid/sql/visitor/functions/Least.java | 46 +++++++++++++++++ .../bvt/filter/wall/MySqlWallTest76.java | 43 ++++++++++++++++ .../bvt/filter/wall/MySqlWallTest77.java | 43 ++++++++++++++++ .../bvt/filter/wall/MySqlWallTest78.java | 43 ++++++++++++++++ .../bvt/filter/wall/MySqlWallTest79.java | 43 ++++++++++++++++ .../filter/wall/MySqlWallTest_comment.java | 45 ++++++++++++++++ .../bvt/filter/wall/MySqlWallTest_if.java | 43 ++++++++++++++++ .../filter/wall/MySqlWallTest_ifnull_1.java | 43 ++++++++++++++++ .../filter/wall/MySqlWallTest_ifnull_2.java | 43 ++++++++++++++++ .../bvt/filter/wall/MySqlWallTest_like_1.java | 43 ++++++++++++++++ 13 files changed, 579 insertions(+) create mode 100644 src/main/java/com/alibaba/druid/sql/visitor/functions/Greatest.java create mode 100644 src/main/java/com/alibaba/druid/sql/visitor/functions/If.java create mode 100644 src/main/java/com/alibaba/druid/sql/visitor/functions/Isnull.java create mode 100644 src/main/java/com/alibaba/druid/sql/visitor/functions/Least.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest76.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest77.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest78.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest79.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_comment.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_if.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_ifnull_1.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_ifnull_2.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_like_1.java diff --git a/src/main/java/com/alibaba/druid/sql/visitor/functions/Greatest.java b/src/main/java/com/alibaba/druid/sql/visitor/functions/Greatest.java new file mode 100644 index 0000000000..e92e6a66a2 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/visitor/functions/Greatest.java @@ -0,0 +1,46 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.visitor.functions; + +import static com.alibaba.druid.sql.visitor.SQLEvalVisitor.EVAL_VALUE; + +import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; +import com.alibaba.druid.sql.visitor.SQLEvalVisitor; +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; + +public class Greatest implements Function { + + public final static Greatest instance = new Greatest(); + + public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) { + Object result = null; + for (SQLExpr item : x.getParameters()) { + item.accept(visitor); + + Object itemValue = item.getAttributes().get(EVAL_VALUE); + if (result == null) { + result = itemValue; + } else { + if (SQLEvalVisitorUtils.gt(itemValue, result)) { + result = itemValue; + } + } + } + + return result; + } +} diff --git a/src/main/java/com/alibaba/druid/sql/visitor/functions/If.java b/src/main/java/com/alibaba/druid/sql/visitor/functions/If.java new file mode 100644 index 0000000000..b01cb90e39 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/visitor/functions/If.java @@ -0,0 +1,51 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.visitor.functions; + +import static com.alibaba.druid.sql.visitor.SQLEvalVisitor.EVAL_ERROR; +import static com.alibaba.druid.sql.visitor.SQLEvalVisitor.EVAL_VALUE; + +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; +import com.alibaba.druid.sql.visitor.SQLEvalVisitor; +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; + +public class If implements Function { + + public final static If instance = new If(); + + public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) { + final List parameters = x.getParameters(); + if (parameters.size() == 0) { + return EVAL_ERROR; + } + + SQLExpr condition = parameters.get(0); + condition.accept(visitor); + Object itemValue = condition.getAttributes().get(EVAL_VALUE); + if (Boolean.TRUE == itemValue || !SQLEvalVisitorUtils.eq(itemValue, 0)) { + SQLExpr trueExpr = parameters.get(1); + trueExpr.accept(visitor); + return trueExpr.getAttributes().get(EVAL_VALUE); + } else { + SQLExpr falseExpr = parameters.get(2); + falseExpr.accept(visitor); + return falseExpr.getAttributes().get(EVAL_VALUE); + } + } +} diff --git a/src/main/java/com/alibaba/druid/sql/visitor/functions/Isnull.java b/src/main/java/com/alibaba/druid/sql/visitor/functions/Isnull.java new file mode 100644 index 0000000000..f0cd82fbb2 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/visitor/functions/Isnull.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.visitor.functions; + +import static com.alibaba.druid.sql.visitor.SQLEvalVisitor.EVAL_ERROR; +import static com.alibaba.druid.sql.visitor.SQLEvalVisitor.EVAL_VALUE; +import static com.alibaba.druid.sql.visitor.SQLEvalVisitor.EVAL_VALUE_NULL; + +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; +import com.alibaba.druid.sql.visitor.SQLEvalVisitor; + +public class Isnull implements Function { + + public final static Isnull instance = new Isnull(); + + public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) { + final List parameters = x.getParameters(); + if (parameters.size() == 0) { + return EVAL_ERROR; + } + + SQLExpr condition = parameters.get(0); + condition.accept(visitor); + Object itemValue = condition.getAttributes().get(EVAL_VALUE); + if (itemValue == null || itemValue == EVAL_VALUE_NULL) { + return Boolean.TRUE; + } else { + return Boolean.FALSE; + } + } +} diff --git a/src/main/java/com/alibaba/druid/sql/visitor/functions/Least.java b/src/main/java/com/alibaba/druid/sql/visitor/functions/Least.java new file mode 100644 index 0000000000..e8ff88df76 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/visitor/functions/Least.java @@ -0,0 +1,46 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.visitor.functions; + +import static com.alibaba.druid.sql.visitor.SQLEvalVisitor.EVAL_VALUE; + +import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; +import com.alibaba.druid.sql.visitor.SQLEvalVisitor; +import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils; + +public class Least implements Function { + + public final static Least instance = new Least(); + + public Object eval(SQLEvalVisitor visitor, SQLMethodInvokeExpr x) { + Object result = null; + for (SQLExpr item : x.getParameters()) { + item.accept(visitor); + + Object itemValue = item.getAttributes().get(EVAL_VALUE); + if (result == null) { + result = itemValue; + } else { + if (SQLEvalVisitorUtils.lt(itemValue, result)) { + result = itemValue; + } + } + } + + return result; + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest76.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest76.java new file mode 100644 index 0000000000..1ae5c99864 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest76.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest76 extends TestCase { + + public void test_false() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + Assert.assertFalse(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? OR GREATEST(2,0) = 2")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest77.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest77.java new file mode 100644 index 0000000000..e4e5a08c63 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest77.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest77 extends TestCase { + + public void test_false() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + Assert.assertFalse(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? OR LEAST(2,0) = 0")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest78.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest78.java new file mode 100644 index 0000000000..f2d7b41e2d --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest78.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest78 extends TestCase { + + public void test_false() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + Assert.assertFalse(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? OR LEAST(2,1,9,8) = 1")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest79.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest79.java new file mode 100644 index 0000000000..4a0a98e3ee --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest79.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest79 extends TestCase { + + public void test_false() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + Assert.assertFalse(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? OR LEAST(2,1,9,8) = 1")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_comment.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_comment.java new file mode 100644 index 0000000000..be9113f2b4 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_comment.java @@ -0,0 +1,45 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest_comment extends TestCase { + + public void test_true() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + provider.getConfig().setCommentAllow(true); + + Assert.assertTrue(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? #AND 1")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_if.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_if.java new file mode 100644 index 0000000000..5436c4bf52 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_if.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest_if extends TestCase { + + public void test_false() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + Assert.assertFalse(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? OR IF(1>2,2,3) = 3")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_ifnull_1.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_ifnull_1.java new file mode 100644 index 0000000000..f3335dcfab --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_ifnull_1.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest_ifnull_1 extends TestCase { + + public void test_false() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + Assert.assertFalse(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? OR ISNULL(1) = 0")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_ifnull_2.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_ifnull_2.java new file mode 100644 index 0000000000..b7886eabd3 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_ifnull_2.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest_ifnull_2 extends TestCase { + + public void test_false() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + Assert.assertFalse(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? OR IFNULL(CAST(CURRENT_USER() AS CHAR))")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_like_1.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_like_1.java new file mode 100644 index 0000000000..a21a2b418f --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallTest_like_1.java @@ -0,0 +1,43 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.filter.wall; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.wall.WallProvider; +import com.alibaba.druid.wall.spi.MySqlWallProvider; + +/** + * SQLServerWallTest + * + * @author RaymondXiu + * @version 1.0, 2012-3-18 + * @see + */ +public class MySqlWallTest_like_1 extends TestCase { + + public void test_false() throws Exception { + WallProvider provider = new MySqlWallProvider(); + + Assert.assertFalse(provider.checkValid(// + "SELECT * FROM T WHERE FID = ? OR FID LIKE 1")); + + Assert.assertEquals(1, provider.getTableStats().size()); + } + +}