This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new c56eddbfa9 [bug](jdbc) fix trino date/datetime filter (#20443)
c56eddbfa9 is described below
commit c56eddbfa9c4e61666bd25a477a47f1b7e0f9f02
Author: zy-kkk <[email protected]>
AuthorDate: Tue Jun 6 11:20:42 2023 +0800
[bug](jdbc) fix trino date/datetime filter (#20443)
When querying Trino's JDBC catalog, if our WHERE filter condition is k1 >=
'2022-01-01', this format is incorrect.
In Trino, the correct format should be k1 >= date '2022-01-01' or k1 >=
timestamp '2022-01-01 00:00:00'.
Therefore, the date string in the WHERE condition needs to be converted to
the date or timestamp format supported by Trino.
---
.../java/org/apache/doris/planner/OdbcScanNode.java | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/planner/OdbcScanNode.java
b/fe/fe-core/src/main/java/org/apache/doris/planner/OdbcScanNode.java
index e21af36af1..3439987f16 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/OdbcScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OdbcScanNode.java
@@ -85,6 +85,25 @@ public class OdbcScanNode extends ExternalScanNode {
return filter;
}
}
+ if (tableType.equals(TOdbcTableType.TRINO) &&
expr.contains(DateLiteral.class)
+ && (expr instanceof BinaryPredicate)) {
+ ArrayList<Expr> children = expr.getChildren();
+ if (children.get(1).isConstant() &&
(children.get(1).getType().isDate()) || children
+ .get(1).getType().isDateV2()) {
+ String filter = children.get(0).toSql();
+ filter += ((BinaryPredicate) expr).getOp().toString();
+ filter += "date '" + children.get(1).getStringValue() + "'";
+ return filter;
+ }
+ if (children.get(1).isConstant() &&
(children.get(1).getType().isDatetime() || children
+ .get(1).getType().isDatetimeV2())) {
+ String filter = children.get(0).toSql();
+ filter += ((BinaryPredicate) expr).getOp().toString();
+ filter += "timestamp '" + children.get(1).getStringValue() +
"'";
+ return filter;
+ }
+ }
+
return expr.toMySql();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]