This is an automated email from the ASF dual-hosted git repository.

mihaibudiu 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 bca2eef42a [CALCITE-7681] SqlDatetimeSubtractionOperator drops 
parentheses around compound interval expressions
bca2eef42a is described below

commit bca2eef42ab0208b87fcfe8e9164402c9f5e1770
Author: Matthew Bayer <[email protected]>
AuthorDate: Thu Jul 30 13:00:50 2026 -0400

    [CALCITE-7681] SqlDatetimeSubtractionOperator drops parentheses around 
compound interval expressions
---
 core/src/main/java/org/apache/calcite/sql/SqlDialect.java  |  4 ++--
 .../apache/calcite/rel/rel2sql/RelToSqlConverterTest.java  | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/apache/calcite/sql/SqlDialect.java 
b/core/src/main/java/org/apache/calcite/sql/SqlDialect.java
index eef1c386d5..82e12c93d2 100644
--- a/core/src/main/java/org/apache/calcite/sql/SqlDialect.java
+++ b/core/src/main/java/org/apache/calcite/sql/SqlDialect.java
@@ -496,9 +496,9 @@ public void unparseNumericLiteral(SqlWriter writer,
   public void unparseSqlDatetimeArithmetic(SqlWriter writer,
       SqlCall call, SqlKind sqlKind, int leftPrec, int rightPrec) {
     final SqlWriter.Frame frame = writer.startList("(", ")");
-    call.operand(0).unparse(writer, leftPrec, rightPrec);
+    call.operand(0).unparse(writer, leftPrec, 
call.getOperator().getLeftPrec());
     writer.sep((SqlKind.PLUS == sqlKind) ? "+" : "-");
-    call.operand(1).unparse(writer, leftPrec, rightPrec);
+    call.operand(1).unparse(writer, call.getOperator().getRightPrec(), 
rightPrec);
     writer.endList(frame);
     // Only two parameters are present normally.
     // Checking parameter count to prevent errors.
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 b09f299f84..f0103c90a7 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
@@ -836,6 +836,20 @@ private static RelNode sqlToRel(String sql, SchemaPlus 
defaultSchema,
         .withOracle().ok(expectedOracle);
   }
 
+  @Test void testDatetimeSubtractionWithCompoundInterval() {
+    final String query = "select CURRENT_DATE"
+        + " - (INTERVAL '3' YEAR + INTERVAL '3' YEAR) as d";
+    final String expected = "SELECT (CURRENT_DATE"
+        + " - (INTERVAL '3' YEAR + INTERVAL '3' YEAR)) AS \"D\"\n"
+        + "FROM (VALUES (0)) AS \"t\" (\"ZERO\")";
+    final String expectedSpark = "SELECT (CURRENT_DATE"
+        + " - (INTERVAL '3' YEAR + INTERVAL '3' YEAR)) `D`\n"
+        + "FROM (VALUES (0)) `t` (`ZERO`)";
+    sql(query)
+        .ok(expected)
+        .withSpark().ok(expectedSpark);
+  }
+
   @Test void testPivotToSqlFromProductTable() {
     String query = "select * from (\n"
         + "  select \"shelf_width\", \"net_weight\", \"product_id\"\n"

Reply via email to