From 2bc4300ca7e358168ed53335546a509ffd103a4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Sun, 15 Nov 2020 10:38:43 +0800 Subject: [PATCH] bug fix for #4042 --- .../alibaba/druid/sql/parser/SQLExprParser.java | 2 +- .../bvt/sql/postgresql/PostgresqlResourceTest.java | 4 ++++ src/test/resources/bvt/parser/postgresql-2.txt | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/bvt/parser/postgresql-2.txt 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 77b7c05a90..01fcec7f6a 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -4855,7 +4855,7 @@ public class SQLExprParser extends SQLParser { if (lexer.token == Token.ON) { lexer.nextToken(); accept(Token.DELETE); - if (lexer.identifierEquals(FnvHash.Constants.CASCADE)) { + if (lexer.identifierEquals(FnvHash.Constants.CASCADE) || lexer.token == Token.CASCADE) { lexer.nextToken(); fk.setOnDeleteCascade(true); } else { diff --git a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PostgresqlResourceTest.java b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PostgresqlResourceTest.java index 16983e7156..d5b6fabb8e 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PostgresqlResourceTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PostgresqlResourceTest.java @@ -44,6 +44,10 @@ public class PostgresqlResourceTest extends PGTest { exec_test("bvt/parser/postgresql-1.txt"); } + public void test_2() throws Exception { + exec_test("bvt/parser/postgresql-2.txt"); + } + public void exec_test(String resource) throws Exception { System.out.println(resource); InputStream is = null; diff --git a/src/test/resources/bvt/parser/postgresql-2.txt b/src/test/resources/bvt/parser/postgresql-2.txt new file mode 100644 index 0000000000..7933ee8081 --- /dev/null +++ b/src/test/resources/bvt/parser/postgresql-2.txt @@ -0,0 +1,14 @@ +alter table ACT_RU_INTEGRATION + add constraint ACT_FK_INT_EXECUTION + foreign key (EXECUTION_ID_) + references ACT_RU_EXECUTION (ID_) + on delete cascade +--------------------------- +SELECT e1.last_name +FROM employees e1 +WHERE f(CURSOR(( + SELECT e2.hire_date + FROM employees e2 + WHERE e1.employee_id = e2.manager_id + )), e1.hire_date) = 1 +ORDER BY last_name;