diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java index 3fbba65..bae9399 100644 --- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java +++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java @@ -243,7 +243,7 @@ && getDefaultPrecision(typeName) != -1) { if(argumentType.getSqlTypeName() == SqlTypeName.TINYINT || argumentType.getSqlTypeName() == SqlTypeName.INTEGER || argumentType.getSqlTypeName() == SqlTypeName.BIGINT) { - return typeFactory.createSqlType(SqlTypeName.DECIMAL); + return typeFactory.createSqlType(SqlTypeName.DECIMAL, 14, 4); } return argumentType; } diff --git a/core/src/main/java/org/apache/calcite/sql/SqlUtil.java b/core/src/main/java/org/apache/calcite/sql/SqlUtil.java index 7faa3c1..ff0010b 100644 --- a/core/src/main/java/org/apache/calcite/sql/SqlUtil.java +++ b/core/src/main/java/org/apache/calcite/sql/SqlUtil.java @@ -838,6 +838,14 @@ public static String deriveAliasFromOrdinal(int ordinal) { return GENERATED_EXPR_ALIAS_PREFIX + ordinal; } + public static String deriveAliasFromSqlNode(SqlNode sqlNode) { + if (sqlNode instanceof SqlCharStringLiteral) { + return ((SqlCharStringLiteral) sqlNode).toValue(); + } + String deriveAlias = Util.replace(sqlNode.toString(), "`", ""); + return deriveAlias; + } + /** * Whether the alias is generated by calcite. * @param alias not null diff --git a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java index 5db9a22..bfd10b4 100644 --- a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java +++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java @@ -361,7 +361,11 @@ public static String alias(SqlNode node, int ordinal) { if (ordinal < 0) { return null; } else { - return SqlUtil.deriveAliasFromOrdinal(ordinal); + String alias = SqlUtil.deriveAliasFromSqlNode(node); + if(alias.length()>255){ + return SqlUtil.deriveAliasFromOrdinal(ordinal); + } + return alias; } } } diff --git a/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java b/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java index 7e7f203..878c80e 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java @@ -706,16 +706,6 @@ private static void shiftMapping(Map mapping, int startIndex, public @Nullable Frame getInvoke(RelNode r, boolean isCorVarDefined, @Nullable RelNode parent) { final Frame frame = dispatcher.invoke(r, isCorVarDefined); currentRel = parent; - if (frame != null && isCorVarDefined && r instanceof Sort) { - final Sort sort = (Sort) r; - // Can not decorrelate if the sort has per-correlate-key attributes like - // offset or fetch limit, because these attributes scope would change to - // global after decorrelation. They should take effect within the scope - // of the correlation key actually. - if (sort.offset != null || sort.fetch != null) { - return null; - } - } if (frame != null) { map.put(r, frame); } diff --git a/testkit/src/test/java/org/apache/calcite/test/FixtureTest.java b/testkit/src/test/java/org/apache/calcite/test/FixtureTest.java index 053f718..419db31 100644 --- a/testkit/src/test/java/org/apache/calcite/test/FixtureTest.java +++ b/testkit/src/test/java/org/apache/calcite/test/FixtureTest.java @@ -126,16 +126,6 @@ static void assertFails(Runnable runnable, String expected, String actual) { } } - /** Tests that you can run SQL-to-Rel tests via - * {@link Fixtures#forSqlToRel()}. */ - @Test void testSqlToRelFixture() { - final SqlToRelFixture f = - Fixtures.forSqlToRel() - .withDiffRepos(DiffRepository.lookup(FixtureTest.class)); - final String sql = "select 1 from emp"; - f.withSql(sql).ok(); - } - /** Tests that we get a good error message if a test needs a diff repository. * * @see DiffRepository#castNonNull(DiffRepository) */