You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jc...@apache.org on 2019/05/15 18:14:21 UTC
[calcite] 01/02: [CALCITE-3066] RelToSqlConverter may incorrectly
throw an AssertionError for some decimal literals
This is an automated email from the ASF dual-hosted git repository.
jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
commit d6896202c865b38b7821f1e0b644e1de0c95eda2
Author: Jesus Camacho Rodriguez <jc...@apache.org>
AuthorDate: Mon May 13 18:35:09 2019 -0700
[CALCITE-3066] RelToSqlConverter may incorrectly throw an AssertionError for some decimal literals
Close apache/calcite#1213
---
.../main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java | 4 ++--
.../org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java | 8 ++++++++
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
index 8b51530..39f6b4b 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
@@ -500,10 +500,10 @@ public abstract class SqlImplementor {
case NUMERIC:
case EXACT_NUMERIC:
return SqlLiteral.createExactNumeric(
- literal.getValueAs(BigDecimal.class).toString(), POS);
+ literal.getValueAs(BigDecimal.class).toPlainString(), POS);
case APPROXIMATE_NUMERIC:
return SqlLiteral.createApproxNumeric(
- literal.getValueAs(BigDecimal.class).toString(), POS);
+ literal.getValueAs(BigDecimal.class).toPlainString(), POS);
case BOOLEAN:
return SqlLiteral.createBoolean(literal.getValueAs(Boolean.class),
POS);
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 8dc4cc5..e4fe971 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
@@ -408,6 +408,14 @@ public class RelToSqlConverterTest {
sql(query).ok(expected);
}
+ @Test public void testCastDecimal1() {
+ final String query = "select -0.0000000123\n"
+ + " from \"expense_fact\"";
+ final String expected = "SELECT -1.23E-8\n"
+ + "FROM \"foodmart\".\"expense_fact\"";
+ sql(query).ok(expected);
+ }
+
/** Test case for
* <a href="https://issues.apache.org/jira/browse/CALCITE-2713">[CALCITE-2713]
* JDBC adapter may generate casts on PostgreSQL for VARCHAR type exceeding