diff --git a/fe/fe-core/src/main/java/com/starrocks/connector/parser/trino/AstBuilder.java b/fe/fe-core/src/main/java/com/starrocks/connector/parser/trino/AstBuilder.java index 3bb6e8e3a7e35..daa0e1456dc12 100644 --- a/fe/fe-core/src/main/java/com/starrocks/connector/parser/trino/AstBuilder.java +++ b/fe/fe-core/src/main/java/com/starrocks/connector/parser/trino/AstBuilder.java @@ -999,6 +999,11 @@ protected ParseNode visitCoalesceExpression(CoalesceExpression node, ParseTreeCo @Override protected ParseNode visitExtract(Extract node, ParseTreeContext context) { String fieldString = node.getField().toString(); + if (fieldString.equalsIgnoreCase("dow")) { + fieldString = "dayofweek_iso"; + } else if (fieldString.equalsIgnoreCase("week")) { + fieldString = "week_iso"; + } return new FunctionCallExpr(fieldString, new FunctionParams(Lists.newArrayList((Expr) visit(node.getExpression(), context)))); } diff --git a/fe/fe-core/src/test/java/com/starrocks/connector/parser/trino/TrinoFunctionTransformTest.java b/fe/fe-core/src/test/java/com/starrocks/connector/parser/trino/TrinoFunctionTransformTest.java index c6e134eea03a3..f9f8a6a096229 100644 --- a/fe/fe-core/src/test/java/com/starrocks/connector/parser/trino/TrinoFunctionTransformTest.java +++ b/fe/fe-core/src/test/java/com/starrocks/connector/parser/trino/TrinoFunctionTransformTest.java @@ -339,6 +339,15 @@ public void testJsonFnTransform() throws Exception { assertPlanContains(sql, "CAST(json_query(parse_json('{\"a\": {\"b\": 1}}'), '$.a.b') AS VARCHAR)"); } + @Test + public void testExtractFnTransform() throws Exception { + String sql = "SELECT extract(dow FROM TIMESTAMP '2022-10-20 05:10:00')"; + assertPlanContains(sql, "dayofweek_iso('2022-10-20 05:10:00')"); + sql = "SELECT week(dow FROM TIMESTAMP '2022-10-20 05:10:00')"; + assertPlanContains(sql, "week_iso('2022-10-20 05:10:00')"); + } + + @Test public void testBitFnTransform() throws Exception { String sql = "select bitwise_and(19,25)";