Evgeny Stanilovsky created CALCITE-6792:
-------------------------------------------
Summary: RelJsonReader failed to read RelJsonWriter output if
'NaN' or 'Infinity' approximate numerics are present
Key: CALCITE-6792
URL: https://issues.apache.org/jira/browse/CALCITE-6792
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.38.0
Reporter: Evgeny Stanilovsky
Simple reproduser is below, place it into RelWriterTest
{noformat}
@Test void testInf() {
Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
final RexBuilder rexBuilder = cluster.getRexBuilder();
final FrameworkConfig config = RelBuilderTest.config().build();
final RelBuilder builder = RelBuilder.create(config);
RelDataType doubleType = cluster.getTypeFactory().builder().add("name",
cluster.getTypeFactory().createSqlType(SqlTypeName.DOUBLE)).build();
final RelDataType doubleTypeLit =
cluster.getTypeFactory().createSqlType(SqlTypeName.DOUBLE);
RexLiteral lit = rexBuilder.makeApproxLiteral(Double.POSITIVE_INFINITY,
// <---
doubleTypeLit);
RelNode vals = builder.values(Collections.nCopies(1, List.of(lit)),
doubleType).build();
final RelJsonWriter writer = new RelJsonWriter();
vals.explain(writer);
String serialized = writer.asString();
SchemaPlus schema = rootSchema.add("hr",
new ReflectiveSchema(new HrSchema()));
final RelJsonReader reader =
new RelJsonReader(cluster, relOptSchema, schema);
RelNode node;
try {
node = reader.read(serialized); // <- raised from here
} catch (IOException e) {
throw TestUtil.rethrow(e);
}
return RelOptUtil.dumpPlan("", node, SqlExplainFormat.TEXT,
SqlExplainLevel.EXPPLAN_ATTRIBUTES);
});
}
{noformat}
will throw: com.fasterxml.jackson.core.JsonParseException: Non-standard token
'Infinity': enable `JsonReadFeature.ALLOW_NON_NUMERIC_NUMBERS` to allow
--
This message was sent by Atlassian Jira
(v8.20.10#820010)