This is an automated email from the ASF dual-hosted git repository.
zyk pushed a commit to branch rel/1.2
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/1.2 by this push:
new d336edd68ec [To rel/1.2] Fix error msg when select into view and
normal timeseries failed (#10259)
d336edd68ec is described below
commit d336edd68ecf33b215bc5f302772573b9c688a46
Author: Marcos_Zyk <[email protected]>
AuthorDate: Wed Jun 21 23:17:42 2023 +0800
[To rel/1.2] Fix error msg when select into view and normal timeseries
failed (#10259)
---
.../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java | 38 ++++++++++++++++------
.../plan/statement/crud/InsertBaseStatement.java | 3 +-
.../crud/InsertMultiTabletsStatement.java | 3 +-
.../plan/statement/crud/InsertRowsStatement.java | 3 +-
4 files changed, 34 insertions(+), 13 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index 81256440c58..a6fe6a40bcb 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@ -2118,11 +2118,11 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
context.setQueryType(QueryType.WRITE);
Analysis analysis = new Analysis();
validateSchema(analysis, insertTabletStatement);
- InsertBaseStatement realStatement =
insertTabletStatement.removeLogicalView();
- analysis.setStatement(realStatement);
+ InsertBaseStatement realStatement = removeLogicalView(analysis,
insertTabletStatement);
if (analysis.isFinishQueryAfterAnalyze()) {
return analysis;
}
+ analysis.setStatement(realStatement);
if (realStatement instanceof InsertTabletStatement) {
InsertTabletStatement realInsertTabletStatement =
(InsertTabletStatement) realStatement;
@@ -2143,11 +2143,11 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
context.setQueryType(QueryType.WRITE);
Analysis analysis = new Analysis();
validateSchema(analysis, insertRowStatement);
- InsertBaseStatement realInsertStatement =
insertRowStatement.removeLogicalView();
- analysis.setStatement(realInsertStatement);
+ InsertBaseStatement realInsertStatement = removeLogicalView(analysis,
insertRowStatement);
if (analysis.isFinishQueryAfterAnalyze()) {
return analysis;
}
+ analysis.setStatement(realInsertStatement);
if (realInsertStatement instanceof InsertRowStatement) {
InsertRowStatement realInsertRowStatement = (InsertRowStatement)
realInsertStatement;
@@ -2190,11 +2190,11 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
Analysis analysis = new Analysis();
validateSchema(analysis, insertRowsStatement);
InsertRowsStatement realInsertRowsStatement =
- (InsertRowsStatement) insertRowsStatement.removeLogicalView();
- analysis.setStatement(realInsertRowsStatement);
+ (InsertRowsStatement) removeLogicalView(analysis, insertRowsStatement);
if (analysis.isFinishQueryAfterAnalyze()) {
return analysis;
}
+ analysis.setStatement(realInsertRowsStatement);
return computeAnalysisForInsertRows(analysis, realInsertRowsStatement);
}
@@ -2228,11 +2228,11 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
Analysis analysis = new Analysis();
validateSchema(analysis, insertMultiTabletsStatement);
InsertMultiTabletsStatement realStatement =
- (InsertMultiTabletsStatement)
insertMultiTabletsStatement.removeLogicalView();
- analysis.setStatement(realStatement);
+ (InsertMultiTabletsStatement) removeLogicalView(analysis,
insertMultiTabletsStatement);
if (analysis.isFinishQueryAfterAnalyze()) {
return analysis;
}
+ analysis.setStatement(realStatement);
return computeAnalysisForMultiTablets(analysis, realStatement);
}
@@ -2243,11 +2243,12 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
context.setQueryType(QueryType.WRITE);
Analysis analysis = new Analysis();
validateSchema(analysis, insertRowsOfOneDeviceStatement);
- InsertBaseStatement realInsertStatement =
insertRowsOfOneDeviceStatement.removeLogicalView();
- analysis.setStatement(realInsertStatement);
+ InsertBaseStatement realInsertStatement =
+ removeLogicalView(analysis, insertRowsOfOneDeviceStatement);
if (analysis.isFinishQueryAfterAnalyze()) {
return analysis;
}
+ analysis.setStatement(realInsertStatement);
if (realInsertStatement instanceof InsertRowsOfOneDeviceStatement) {
InsertRowsOfOneDeviceStatement realStatement =
@@ -2292,6 +2293,23 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
}
}
+ private InsertBaseStatement removeLogicalView(
+ Analysis analysis, InsertBaseStatement insertBaseStatement) {
+ try {
+ return insertBaseStatement.removeLogicalView();
+ } catch (SemanticException e) {
+ analysis.setFinishQueryAfterAnalyze(true);
+ if (e.getCause() instanceof IoTDBException) {
+ IoTDBException exception = (IoTDBException) e.getCause();
+ analysis.setFailStatus(
+ RpcUtils.getStatus(exception.getErrorCode(),
exception.getMessage()));
+ } else {
+ analysis.setFailStatus(RpcUtils.getStatus(TSStatusCode.METADATA_ERROR,
e.getMessage()));
+ }
+ return insertBaseStatement;
+ }
+ }
+
@Override
public Analysis visitLoadFile(LoadTsFileStatement loadTsFileStatement,
MPPQueryContext context) {
context.setQueryType(QueryType.WRITE);
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertBaseStatement.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertBaseStatement.java
index 181a072bedb..59d4462e437 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertBaseStatement.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertBaseStatement.java
@@ -25,6 +25,7 @@ import
org.apache.iotdb.db.exception.metadata.DataTypeMismatchException;
import org.apache.iotdb.db.exception.metadata.DuplicateInsertException;
import org.apache.iotdb.db.exception.metadata.PathNotExistException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.mpp.plan.analyze.schema.ISchemaValidation;
import org.apache.iotdb.db.mpp.plan.statement.Statement;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -340,7 +341,7 @@ public abstract class InsertBaseStatement extends Statement
{
boolean measurementNotExists = measurementSet.add(thisPair.left);
if (!measurementNotExists) {
PartialPath devicePath = entry.getKey();
- throw new RuntimeException(
+ throw new SemanticException(
new DuplicateInsertException(devicePath.getFullPath(),
thisPair.left));
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertMultiTabletsStatement.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertMultiTabletsStatement.java
index 3d9b4f2bb14..d7c7cebad25 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertMultiTabletsStatement.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertMultiTabletsStatement.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.mpp.plan.statement.crud;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.exception.metadata.DuplicateInsertException;
+import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.mpp.plan.analyze.schema.ISchemaValidation;
import org.apache.iotdb.db.mpp.plan.statement.StatementType;
import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
@@ -167,7 +168,7 @@ public class InsertMultiTabletsStatement extends
InsertBaseStatement {
for (String measurement : insertTablet.measurements) {
boolean notExist = measurementSet.add(measurement);
if (!notExist) {
- throw new RuntimeException(new DuplicateInsertException(device,
measurement));
+ throw new SemanticException(new DuplicateInsertException(device,
measurement));
}
}
mapFromDeviceToMeasurements.put(device, measurementSet);
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsStatement.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsStatement.java
index f639c95455e..50d31b2c43a 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsStatement.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/InsertRowsStatement.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.db.mpp.plan.statement.crud;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.exception.metadata.DuplicateInsertException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.exception.sql.SemanticException;
import org.apache.iotdb.db.mpp.plan.analyze.schema.ISchemaValidation;
import org.apache.iotdb.db.mpp.plan.statement.StatementType;
import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
@@ -178,7 +179,7 @@ public class InsertRowsStatement extends
InsertBaseStatement {
for (String measurement : insertRow.measurements) {
boolean notExist = measurementSet.add(measurement);
if (!notExist) {
- throw new RuntimeException(new DuplicateInsertException(device,
measurement));
+ throw new SemanticException(new DuplicateInsertException(device,
measurement));
}
}
mapFromDeviceToMeasurements.put(device, measurementSet);