diff --git a/dinky-core/src/main/java/org/dinky/data/result/ResultBuilder.java b/dinky-core/src/main/java/org/dinky/data/result/ResultBuilder.java index 6178fa6be3..34c6157430 100644 --- a/dinky-core/src/main/java/org/dinky/data/result/ResultBuilder.java +++ b/dinky-core/src/main/java/org/dinky/data/result/ResultBuilder.java @@ -39,6 +39,7 @@ static ResultBuilder build( String timeZone) { switch (operationType) { case SELECT: + case WITH: return new SelectResultBuilder(id, maxRowNum, isChangeLog, isAutoCancel, timeZone); case SHOW: case DESC: diff --git a/dinky-core/src/main/java/org/dinky/explainer/Explainer.java b/dinky-core/src/main/java/org/dinky/explainer/Explainer.java index 3e92249088..e14cc74296 100644 --- a/dinky-core/src/main/java/org/dinky/explainer/Explainer.java +++ b/dinky-core/src/main/java/org/dinky/explainer/Explainer.java @@ -126,6 +126,7 @@ public JobParam pretreatStatements(String[] statements) { statementList.add(statement); } else if (operationType.equals(SqlType.INSERT) || operationType.equals(SqlType.SELECT) + || operationType.equals(SqlType.WITH) || operationType.equals(SqlType.SHOW) || operationType.equals(SqlType.DESCRIBE) || operationType.equals(SqlType.DESC) diff --git a/dinky-executor/src/main/java/org/dinky/parser/SqlType.java b/dinky-executor/src/main/java/org/dinky/parser/SqlType.java index 1e41a590ed..8a56cfa81b 100644 --- a/dinky-executor/src/main/java/org/dinky/parser/SqlType.java +++ b/dinky-executor/src/main/java/org/dinky/parser/SqlType.java @@ -63,6 +63,8 @@ public enum SqlType { CTAS("CTAS", "^CREATE\\s.*AS\\sSELECT.*$"), + WITH("WITH", "^WITH.*"), + UNKNOWN("UNKNOWN", "^UNKNOWN.*"); private String type; diff --git a/dinky-web/src/pages/DataStudio/BottomContainer/Result/index.tsx b/dinky-web/src/pages/DataStudio/BottomContainer/Result/index.tsx index f122fc9095..56d105d5bf 100644 --- a/dinky-web/src/pages/DataStudio/BottomContainer/Result/index.tsx +++ b/dinky-web/src/pages/DataStudio/BottomContainer/Result/index.tsx @@ -147,7 +147,7 @@ const Result = (props: any) => { id: current.id }); const historyData = res.data; - if ('2' == historyData.status) { + if (historyData && '2' == historyData.status) { const historyId = historyData.id; const tableData = await handleGetOption('api/studio/getJobData', 'Get Data', { jobId: historyId