You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Chunwei Lei (Jira)" <ji...@apache.org> on 2021/11/18 09:04:00 UTC
[jira] [Updated] (CALCITE-4893) JsonParseException happens when externalizing expressions with escape character from JSON
[ https://issues.apache.org/jira/browse/CALCITE-4893?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chunwei Lei updated CALCITE-4893:
---------------------------------
Description:
The following test can reproduce the error.
{code:java}
// RelWriterTest.java
@Test void testEscapeCharacter() {
final FrameworkConfig config = RelBuilderTest.config().build();
final RelBuilder builder = RelBuilder.create(config);
final RelNode rel = builder
.scan("EMP")
.project(
builder.call(new MockSqlOperatorTable.SplitFunction(),
builder.field("ENAME"), builder.literal("\r")))
.build();
final String relJson = RelOptUtil.dumpPlan("", rel,
SqlExplainFormat.JSON, SqlExplainLevel.EXPPLAN_ATTRIBUTES);
final String s = deserializeAndDumpToTextFormat(getSchema(rel), relJson);
final String expected = ""
+ "LogicalProject($f0=[SPLIT($1, '\r')])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n";
assertThat(s, isLinux(expected));
}
FAILURE 3.3sec, org.apache.calcite.plan.RelWriterTest > testEscapeCharacter()
java.lang.RuntimeException: com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 13)): has to be escaped using backslash to be included in string value
at [Source: (String)"{
"rels": [
{
"id": "0",
"relOp": "LogicalTableScan",
"table": [
"scott",
"EMP"
],
"inputs": []
},
{
"id": "1",
"relOp": "LogicalProject",
"fields": [
"$f0"
],
"exprs": [
{
"op": {
"name": "SPLIT",
"kind": "OTHER_FUNCTION",
"syntax": "FUNCTION"
},
"operands": [
{
"input": 1,
"name": "$1""[truncated 625 chars]; line: 31, column: 28]
at org.apache.calcite.tools.Frameworks.withPrepare(Frameworks.java:193)
at org.apache.calcite.tools.Frameworks.withPlanner(Frameworks.java:135)
at org.apache.calcite.tools.Frameworks.withPlanner(Frameworks.java:153)
at org.apache.calcite.plan.RelWriterTest.deserializeAndDump(RelWriterTest.java:1006)
at org.apache.calcite.plan.RelWriterTest.deserializeAndDumpToTextFormat(RelWriterTest.java:1026)
at org.apache.calcite.plan.RelWriterTest.testEscapeCharacter(RelWriterTest.java:978)
Caused by: com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 13)): has to be escaped using backslash to be included in string value
at [Source: (String)"{
{code}
was:
The following test can reproduce the error.
{code:java}
// RelWriterTest.java
@Test void testEscapeCharacter() {
final FrameworkConfig config = RelBuilderTest.config().build();
final RelBuilder builder = RelBuilder.create(config);
final RelNode rel = builder
.scan("EMP")
.project(
builder.call(new MockSqlOperatorTable.SplitFunction(),
builder.field("ENAME"), builder.literal("\r")))
.build();
final String relJson = RelOptUtil.dumpPlan("", rel,
SqlExplainFormat.JSON, SqlExplainLevel.EXPPLAN_ATTRIBUTES);
final String s = deserializeAndDumpToTextFormat(getSchema(rel), relJson);
final String expected = ""
+ "LogicalProject($f0=[SPLIT($1, '\r')])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n";
assertThat(s, isLinux(expected));
} {code}
> JsonParseException happens when externalizing expressions with escape character from JSON
> -----------------------------------------------------------------------------------------
>
> Key: CALCITE-4893
> URL: https://issues.apache.org/jira/browse/CALCITE-4893
> Project: Calcite
> Issue Type: Bug
> Reporter: Chunwei Lei
> Assignee: Chunwei Lei
> Priority: Major
>
> The following test can reproduce the error.
> {code:java}
> // RelWriterTest.java
> @Test void testEscapeCharacter() {
> final FrameworkConfig config = RelBuilderTest.config().build();
> final RelBuilder builder = RelBuilder.create(config);
> final RelNode rel = builder
> .scan("EMP")
> .project(
> builder.call(new MockSqlOperatorTable.SplitFunction(),
> builder.field("ENAME"), builder.literal("\r")))
> .build();
> final String relJson = RelOptUtil.dumpPlan("", rel,
> SqlExplainFormat.JSON, SqlExplainLevel.EXPPLAN_ATTRIBUTES);
> final String s = deserializeAndDumpToTextFormat(getSchema(rel), relJson);
> final String expected = ""
> + "LogicalProject($f0=[SPLIT($1, '\r')])\n"
> + " LogicalTableScan(table=[[scott, EMP]])\n";
> assertThat(s, isLinux(expected));
> }
> FAILURE 3.3sec, org.apache.calcite.plan.RelWriterTest > testEscapeCharacter()
> java.lang.RuntimeException: com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 13)): has to be escaped using backslash to be included in string value
> at [Source: (String)"{
> "rels": [
> {
> "id": "0",
> "relOp": "LogicalTableScan",
> "table": [
> "scott",
> "EMP"
> ],
> "inputs": []
> },
> {
> "id": "1",
> "relOp": "LogicalProject",
> "fields": [
> "$f0"
> ],
> "exprs": [
> {
> "op": {
> "name": "SPLIT",
> "kind": "OTHER_FUNCTION",
> "syntax": "FUNCTION"
> },
> "operands": [
> {
> "input": 1,
> "name": "$1""[truncated 625 chars]; line: 31, column: 28]
> at org.apache.calcite.tools.Frameworks.withPrepare(Frameworks.java:193)
> at org.apache.calcite.tools.Frameworks.withPlanner(Frameworks.java:135)
> at org.apache.calcite.tools.Frameworks.withPlanner(Frameworks.java:153)
> at org.apache.calcite.plan.RelWriterTest.deserializeAndDump(RelWriterTest.java:1006)
> at org.apache.calcite.plan.RelWriterTest.deserializeAndDumpToTextFormat(RelWriterTest.java:1026)
> at org.apache.calcite.plan.RelWriterTest.testEscapeCharacter(RelWriterTest.java:978)
> Caused by: com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 13)): has to be escaped using backslash to be included in string value
> at [Source: (String)"{
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)