This is an automated email from the ASF dual-hosted git repository.
mbudiu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/main by this push:
new 25247c1360 [CALCITE-6643] Char_Length Function is not recognized in
PrestoSql. Add LENGTH function in PrestoSqlDialect
25247c1360 is described below
commit 25247c1360c73e9b4e70b96417a07e4b62ac954e
Author: Vikram Ahuja <[email protected]>
AuthorDate: Fri Oct 25 10:40:19 2024 +0530
[CALCITE-6643] Char_Length Function is not recognized in PrestoSql. Add
LENGTH function in PrestoSqlDialect
---
.../org/apache/calcite/sql/dialect/PrestoSqlDialect.java | 6 ++++++
.../apache/calcite/rel/rel2sql/RelToSqlConverterTest.java | 12 ++++++++++++
2 files changed, 18 insertions(+)
diff --git
a/core/src/main/java/org/apache/calcite/sql/dialect/PrestoSqlDialect.java
b/core/src/main/java/org/apache/calcite/sql/dialect/PrestoSqlDialect.java
index 4b6c7c3292..e1fd1784e5 100644
--- a/core/src/main/java/org/apache/calcite/sql/dialect/PrestoSqlDialect.java
+++ b/core/src/main/java/org/apache/calcite/sql/dialect/PrestoSqlDialect.java
@@ -29,6 +29,7 @@ import org.apache.calcite.sql.SqlLiteral;
import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.SqlWriter;
import org.apache.calcite.sql.fun.SqlArrayValueConstructor;
+import org.apache.calcite.sql.fun.SqlLibraryOperators;
import org.apache.calcite.sql.fun.SqlMapValueConstructor;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
import org.apache.calcite.sql.parser.SqlParserPos;
@@ -145,6 +146,11 @@ public class PrestoSqlDialect extends SqlDialect {
case MAP_VALUE_CONSTRUCTOR:
unparseMapValue(writer, call, leftPrec, rightPrec);
break;
+ case CHAR_LENGTH:
+ SqlCall lengthCall = SqlLibraryOperators.LENGTH
+ .createCall(SqlParserPos.ZERO, call.getOperandList());
+ super.unparseCall(writer, lengthCall, leftPrec, rightPrec);
+ break;
default:
// Current impl is same with Postgresql.
PostgresqlSqlDialect.DEFAULT.unparseCall(writer, call, leftPrec,
rightPrec);
diff --git
a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
index 0a0fc7cd35..78aa404b8e 100644
---
a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
+++
b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
@@ -7264,6 +7264,18 @@ class RelToSqlConverterTest {
sql.withSnowflake().ok(expectedSnowflake);
}
+ /** Test case for
+ * <a
href="https://issues.apache.org/jira/browse/CALCITE-6643">[CALCITE-6643]
+ * Char_Length Function is not recognized in PrestoSql.
+ * Add LENGTH function in PrestoSqlDialect</a>. */
+ @Test void testPrestoSqlLength() {
+ final String query = "select CHAR_LENGTH(\"brand_name\")\n"
+ + "from \"product\"";
+ final String expected = "SELECT LENGTH(\"brand_name\")\n"
+ + "FROM \"foodmart\".\"product\"";
+ sql(query).withPresto().ok(expected);
+ }
+
@Test void testSubstringInSpark() {
final String query = "select substring(\"brand_name\" from 2) "
+ "from \"product\"\n";