mirror of https://github.com/alibaba/druid.git
Compare commits
4 Commits
b25a517e9e
...
7d0ec5f060
Author | SHA1 | Date |
---|---|---|
|
7d0ec5f060 | |
|
b1fda6d046 | |
|
1121b304c2 | |
|
7538dc54a7 |
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -99,6 +99,7 @@ public enum SQLBinaryOperator {
|
|||
BooleanXor("XOR", 150),
|
||||
BooleanOr("OR", 160),
|
||||
Assignment(":=", 169),
|
||||
Blank("", 170),
|
||||
|
||||
PG_And("&&", 140),
|
||||
PG_ST_DISTANCE("<->", 20);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -756,6 +756,7 @@ public class SQLSelectParser extends SQLParser {
|
|||
case BANGEQ:
|
||||
case LIKE:
|
||||
case NOT:
|
||||
case VARIANT:
|
||||
where = this.exprParser.relationalRest(where);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -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 ");
|
||||
|
|
|
@ -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
|
||||
--------------------
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue