Compare commits

...

4 Commits

Author SHA1 Message Date
WuTaoyu 7d0ec5f060
Merge 7538dc54a7 into b1fda6d046 2025-07-10 11:29:40 +08:00
林枸 b1fda6d046 Support parse more variant cases.
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (11, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (17, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (21, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (8, ubuntu-latest) (push) Has been cancelled Details
2025-07-07 22:54:36 +08:00
Muhong_Yang 1121b304c2
fix quote parsing in columns (#6471)
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (11, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (17, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (21, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (8, ubuntu-latest) (push) Has been cancelled Details
* add dbtype adb_mysql

* Presto/Trino parser fix

* add CTE visit for insertNode

* add keyword config for spark/hive

* support synapse parser

* support synapse parser

* lexer fix: comment character missing

* lexer fix: comment character missing

* fix quote parsing in columns
2025-07-05 00:47:01 +08:00
WuTaoyu 7538dc54a7 Fix issue#6318:该问题导致误判连接池空闲连接不足,创建多余连接 2025-06-08 15:57:43 +08:00
7 changed files with 47 additions and 3 deletions

View File

@ -3203,7 +3203,9 @@ public class DruidDataSource extends DruidAbstractDataSource
lock.lock();
try {
int fillCount = minIdle - (activeCount + poolingCount + createTaskCount);
emptySignal(fillCount);
if (fillCount > 0) {
emptySignal(fillCount);
}
} finally {
lock.unlock();
}

View File

@ -99,6 +99,7 @@ public enum SQLBinaryOperator {
BooleanXor("XOR", 150),
BooleanOr("OR", 160),
Assignment(":=", 169),
Blank("", 170),
PG_And("&&", 140),
PG_ST_DISTANCE("<->", 20);

View File

@ -3532,6 +3532,9 @@ public class SQLExprParser extends SQLParser {
SQLBinaryOperator operator = andRestGetAndOperator();
expr = new SQLBinaryOpExpr(expr, operator, rightExp, dbType);
} else if (token == VARIANT) {
expr = new SQLBinaryOpExpr(expr, SQLBinaryOperator.Blank, new SQLVariantRefExpr(lexer.stringVal()), dbType);
lexer.nextToken();
} else {
break;
}
@ -3977,6 +3980,11 @@ public class SQLExprParser extends SQLParser {
return expr;
}
break;
case VARIANT:
rightExp = new SQLVariantRefExpr(lexer.stringVal);
expr = new SQLBinaryOpExpr(expr, SQLBinaryOperator.Blank, rightExp, dbType);
lexer.nextToken();
return expr;
default:
return expr;
}

View File

@ -756,6 +756,7 @@ public class SQLSelectParser extends SQLParser {
case BANGEQ:
case LIKE:
case NOT:
case VARIANT:
where = this.exprParser.relationalRest(where);
break;
default:

View File

@ -1048,7 +1048,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Paramet
&& ((SQLIdentifierExpr) right).getName().equalsIgnoreCase("NOTFOUND")) {
printOpSpace = false;
}
if (printOpSpace) {
if (printOpSpace && operator != SQLBinaryOperator.Blank) {
print(' ');
}
}
@ -1569,7 +1569,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Paramet
if (x.isParenthesized()) {
print('(');
}
printName0(x.getName());
String replacedName = x.getName();
if (x.getParent() instanceof SQLBinaryOpExpr
|| x.getParent() instanceof SQLSelectItem) {
replacedName = replaceQuota(x.getName());
}
printName0(replacedName);
if (x.getCollate() != null) {
String collate = x.getCollate();
print(" COLLATE ");

View File

@ -1,3 +1,14 @@
select c from b where c=1 ${if(len(a)=0,'and 1=1',"and a>0")} ${if(len(a)=0,'and 1=1',"and a>0")}
--------------------
SELECT c
FROM b
WHERE c = 1 ${if(len(a)=0,'and 1=1',"and a>0")} ${if(len(a)=0,'and 1=1',"and a>0")}
------------------------------------------------------------------------------------------------------------------------
select ${if(len(a)=0,' 1=1 ',"c")} ${if(len(a)=0,' 1=1 ',"c")} from b
--------------------
SELECT ${if(len(a)=0,' 1=1 ',"c")}, ${if(len(a)=0,' 1=1 ',"c")}
FROM b
------------------------------------------------------------------------------------------------------------------------
--test
select a from b
--------------------

View File

@ -12,6 +12,22 @@ select * from [test].[test]
SELECT *
FROM [test].[test]
------------------------------------------------------------------------------------------------------------------------
CREATE VIEW [a].[b]
AS SELECT
*
, [c] = DATEDIFF(MILLISECOND, request_time, GETDATE()) / 1000.0
FROM
tbl
WHERE
[state] = 'Queued';
--------------------
CREATE VIEW [a].[b]
AS
SELECT *
, [c] = DATEDIFF(MILLISECOND, request_time, GETDATE()) / 1000.0
FROM tbl
WHERE [state] = 'Queued';
------------------------------------------------------------------------------------------------------------------------
USE AdventureWorks2008R2
--------------------
USE AdventureWorks2008R2