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 <zhongy...@gmail.com> 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: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org