From f9cc84f35aeba0effd6654da8471d4bef9eaa925 Mon Sep 17 00:00:00 2001 From: Illes Solt Date: Mon, 20 Jan 2025 20:36:13 +0100 Subject: [PATCH] [CALCITE-6790] Write LIMIT for fetch operations in Vertica --- .../apache/calcite/sql/dialect/VerticaSqlDialect.java | 9 +++++++++ .../calcite/rel/rel2sql/RelToSqlConverterTest.java | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/core/src/main/java/org/apache/calcite/sql/dialect/VerticaSqlDialect.java b/core/src/main/java/org/apache/calcite/sql/dialect/VerticaSqlDialect.java index 3c31d7fbcc69..1b28d9e10986 100644 --- a/core/src/main/java/org/apache/calcite/sql/dialect/VerticaSqlDialect.java +++ b/core/src/main/java/org/apache/calcite/sql/dialect/VerticaSqlDialect.java @@ -19,7 +19,11 @@ import org.apache.calcite.avatica.util.Casing; import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.sql.SqlDialect; +import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlWriter; + +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.List; @@ -53,4 +57,9 @@ public VerticaSqlDialect(Context context) { return super.supportsFunction(operator, type, paramTypes); } } + + @Override public void unparseOffsetFetch(SqlWriter writer, @Nullable SqlNode offset, + @Nullable SqlNode fetch) { + unparseFetchUsingLimit(writer, offset, fetch); + } } 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 59997df0466f..2ce249b4d476 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 @@ -3012,7 +3012,12 @@ private SqlDialect nonOrdinalDialect() { + "FROM `foodmart`.`product`\n" + "LIMIT 100\n" + "OFFSET 10"; + final String expectedVertica = "SELECT \"product_id\"\n" + + "FROM \"foodmart\".\"product\"\n" + + "LIMIT 100\n" + + "OFFSET 10"; sql(query).withHive().ok(expected) + .withVertica().ok(expectedVertica) .withStarRocks().ok(expectedStarRocks); }