You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by er...@apache.org on 2022/04/14 02:52:42 UTC
[iotdb] branch master updated: [IOTDB-2901] Refine codes of DataTypeMismatchException and checkDataTypeMatch (#5501)
This is an automated email from the ASF dual-hosted git repository.
ericpai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 4de7d70fe1 [IOTDB-2901] Refine codes of DataTypeMismatchException and checkDataTypeMatch (#5501)
4de7d70fe1 is described below
commit 4de7d70fe1f9f78f2830441f41ae9aa0d9deaca7
Author: BaiJian <er...@hotmail.com>
AuthorDate: Thu Apr 14 10:52:37 2022 +0800
[IOTDB-2901] Refine codes of DataTypeMismatchException and checkDataTypeMatch (#5501)
---
.../session/IoTDBSessionDisableMemControlIT.java | 8 ++--
.../apache/iotdb/session/IoTDBSessionSimpleIT.java | 4 +-
.../iotdb/session/IoTDBSessionVectorInsertIT.java | 4 +-
.../metadata/DataTypeMismatchException.java | 6 +--
.../db/metadata/idtable/IDTableHashmapImpl.java | 50 ++--------------------
.../db/metadata/schemaregion/SchemaRegion.java | 50 +++-------------------
.../metadata/schemaregion/SchemaRegionUtils.java | 42 ++++++++++++++++++
.../schemaregion/rocksdb/RSchemaRegion.java | 49 +--------------------
.../mpp/sql/statement/crud/InsertRowStatement.java | 5 ++-
.../sql/statement/crud/InsertTabletStatement.java | 5 ++-
.../db/wal/recover/file/TsFilePlanRedoer.java | 5 ++-
.../iotdb/db/metadata/idtable/IDTableTest.java | 2 +-
12 files changed, 78 insertions(+), 152 deletions(-)
diff --git a/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionDisableMemControlIT.java b/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionDisableMemControlIT.java
index 8bc9d199e5..1f4101b64f 100644
--- a/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionDisableMemControlIT.java
+++ b/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionDisableMemControlIT.java
@@ -100,7 +100,7 @@ public class IoTDBSessionDisableMemControlIT {
session.insertTablet(tablet, true);
} catch (StatementExecutionException e) {
Assert.assertEquals(
- "313: failed to insert measurements [s3] caused by DataType mismatch, Insert measurement s3 type TEXT, metadata tree type INT64",
+ "313: failed to insert measurements [s3] caused by DataType mismatch, Insert timeseries root.sg.d.s3 type TEXT, metadata tree type INT64",
e.getMessage());
}
tablet.reset();
@@ -113,7 +113,7 @@ public class IoTDBSessionDisableMemControlIT {
session.insertTablet(tablet);
} catch (StatementExecutionException e) {
Assert.assertEquals(
- "313: failed to insert measurements [s3] caused by DataType mismatch, Insert measurement s3 type TEXT, metadata tree type INT64",
+ "313: failed to insert measurements [s3] caused by DataType mismatch, Insert timeseries root.sg.d.s3 type TEXT, metadata tree type INT64",
e.getMessage());
}
tablet.reset();
@@ -179,7 +179,7 @@ public class IoTDBSessionDisableMemControlIT {
session.insertAlignedTablet(tablet, true);
} catch (StatementExecutionException e) {
Assert.assertEquals(
- "313: failed to insert measurements [s3] caused by DataType mismatch, Insert measurement s3 type TEXT, metadata tree type INT64",
+ "313: failed to insert measurements [s3] caused by DataType mismatch, Insert timeseries root.sg.d.s3 type TEXT, metadata tree type INT64",
e.getMessage());
}
tablet.reset();
@@ -192,7 +192,7 @@ public class IoTDBSessionDisableMemControlIT {
session.insertAlignedTablet(tablet);
} catch (StatementExecutionException e) {
Assert.assertEquals(
- "313: failed to insert measurements [s3] caused by DataType mismatch, Insert measurement s3 type TEXT, metadata tree type INT64",
+ "313: failed to insert measurements [s3] caused by DataType mismatch, Insert timeseries root.sg.d.s3 type TEXT, metadata tree type INT64",
e.getMessage());
}
tablet.reset();
diff --git a/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java b/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
index fa371dd3f7..818cc78e6e 100644
--- a/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
+++ b/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
@@ -1455,7 +1455,7 @@ public class IoTDBSessionSimpleIT {
session.insertTablet(tablet, true);
} catch (StatementExecutionException e) {
Assert.assertEquals(
- "313: failed to insert measurements [s3] caused by DataType mismatch, Insert measurement s3 type TEXT, metadata tree type INT64",
+ "313: failed to insert measurements [s3] caused by DataType mismatch, Insert timeseries root.sg.d.s3 type TEXT, metadata tree type INT64",
e.getMessage());
}
tablet.reset();
@@ -1468,7 +1468,7 @@ public class IoTDBSessionSimpleIT {
session.insertTablet(tablet);
} catch (StatementExecutionException e) {
Assert.assertEquals(
- "313: failed to insert measurements [s3] caused by DataType mismatch, Insert measurement s3 type TEXT, metadata tree type INT64",
+ "313: failed to insert measurements [s3] caused by DataType mismatch, Insert timeseries root.sg.d.s3 type TEXT, metadata tree type INT64",
e.getMessage());
}
tablet.reset();
diff --git a/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionVectorInsertIT.java b/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionVectorInsertIT.java
index 6f7aaef17d..f0c010e992 100644
--- a/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionVectorInsertIT.java
+++ b/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionVectorInsertIT.java
@@ -490,7 +490,7 @@ public class IoTDBSessionVectorInsertIT {
session.insertAlignedTablet(tablet, true);
} catch (StatementExecutionException e) {
Assert.assertEquals(
- "313: failed to insert measurements [s3] caused by DataType mismatch, Insert measurement s3 type TEXT, metadata tree type INT64",
+ "313: failed to insert measurements [s3] caused by DataType mismatch, Insert timeseries root.sg.d.s3 type TEXT, metadata tree type INT64",
e.getMessage());
}
tablet.reset();
@@ -503,7 +503,7 @@ public class IoTDBSessionVectorInsertIT {
session.insertAlignedTablet(tablet);
} catch (StatementExecutionException e) {
Assert.assertEquals(
- "313: failed to insert measurements [s3] caused by DataType mismatch, Insert measurement s3 type TEXT, metadata tree type INT64",
+ "313: failed to insert measurements [s3] caused by DataType mismatch, Insert timeseries root.sg.d.s3 type TEXT, metadata tree type INT64",
e.getMessage());
}
tablet.reset();
diff --git a/server/src/main/java/org/apache/iotdb/db/exception/metadata/DataTypeMismatchException.java b/server/src/main/java/org/apache/iotdb/db/exception/metadata/DataTypeMismatchException.java
index 15fe3a9733..b9effa8b9d 100644
--- a/server/src/main/java/org/apache/iotdb/db/exception/metadata/DataTypeMismatchException.java
+++ b/server/src/main/java/org/apache/iotdb/db/exception/metadata/DataTypeMismatchException.java
@@ -22,10 +22,10 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
public class DataTypeMismatchException extends MetadataException {
public DataTypeMismatchException(
- String measurementName, TSDataType insertType, TSDataType realType) {
+ String deviceName, String measurementName, TSDataType insertType, TSDataType realType) {
super(
String.format(
- "DataType mismatch, Insert measurement %s type %s, metadata tree type %s",
- measurementName, insertType, realType));
+ "DataType mismatch, Insert timeseries %s.%s type %s, metadata tree type %s",
+ deviceName, measurementName, insertType, realType));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java
index 33578f630b..8f704ce016 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java
@@ -32,14 +32,11 @@ import org.apache.iotdb.db.metadata.idtable.entry.SchemaEntry;
import org.apache.iotdb.db.metadata.idtable.entry.TimeseriesID;
import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
import org.apache.iotdb.db.metadata.path.PartialPath;
+import org.apache.iotdb.db.metadata.schemaregion.SchemaRegionUtils;
import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
-import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
-import org.apache.iotdb.db.qp.physical.crud.InsertTabletPlan;
import org.apache.iotdb.db.qp.physical.sys.CreateAlignedTimeSeriesPlan;
import org.apache.iotdb.db.qp.physical.sys.CreateTimeSeriesPlan;
import org.apache.iotdb.db.service.IoTDB;
-import org.apache.iotdb.db.utils.TypeInferenceUtils;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.TimeValuePair;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
@@ -154,9 +151,10 @@ public class IDTableHashmapImpl implements IDTable {
IMeasurementMNode measurementMNode =
getOrCreateMeasurementIfNotExist(deviceEntry, plan, i);
- checkDataTypeMatch(plan, i, measurementMNode.getSchema().getType());
+ SchemaRegionUtils.checkDataTypeMatch(plan, i, measurementMNode.getSchema().getType());
measurementMNodes[i] = measurementMNode;
} catch (DataTypeMismatchException mismatchException) {
+ logger.warn(mismatchException.getMessage());
if (!config.isEnablePartialInsert()) {
throw mismatchException;
} else {
@@ -454,48 +452,6 @@ public class IDTableHashmapImpl implements IDTable {
return schemaEntry;
}
- // from mmanger
- private void checkDataTypeMatch(InsertPlan plan, int loc, TSDataType dataType)
- throws MetadataException {
- TSDataType insertDataType;
- if (plan instanceof InsertRowPlan) {
- if (!((InsertRowPlan) plan).isNeedInferType()) {
- // only when InsertRowPlan's values is object[], we should check type
- insertDataType = getTypeInLoc(plan, loc);
- } else {
- insertDataType = dataType;
- }
- } else {
- insertDataType = getTypeInLoc(plan, loc);
- }
- if (dataType != insertDataType) {
- String measurement = plan.getMeasurements()[loc];
- logger.warn(
- "DataType mismatch, Insert measurement {} type {}, metadata tree type {}",
- measurement,
- insertDataType,
- dataType);
- throw new DataTypeMismatchException(measurement, insertDataType, dataType);
- }
- }
-
- /** get dataType of plan, in loc measurements only support InsertRowPlan and InsertTabletPlan */
- private TSDataType getTypeInLoc(InsertPlan plan, int loc) throws MetadataException {
- TSDataType dataType;
- if (plan instanceof InsertRowPlan) {
- InsertRowPlan tPlan = (InsertRowPlan) plan;
- dataType =
- TypeInferenceUtils.getPredictedDataType(tPlan.getValues()[loc], tPlan.isNeedInferType());
- } else if (plan instanceof InsertTabletPlan) {
- dataType = (plan).getDataTypes()[loc];
- } else {
- throw new MetadataException(
- String.format(
- "Only support insert and insertTablet, plan is [%s]", plan.getOperatorType()));
- }
- return dataType;
- }
-
@TestOnly
public Map<IDeviceID, DeviceEntry>[] getIdTables() {
return idTables;
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegion.java b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegion.java
index 47f56a5f12..38f1582fcd 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegion.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegion.java
@@ -77,7 +77,6 @@ import org.apache.iotdb.db.query.dataset.ShowTimeSeriesResult;
import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.db.sync.sender.manager.SchemaSyncManager;
import org.apache.iotdb.db.utils.SchemaUtils;
-import org.apache.iotdb.db.utils.TypeInferenceUtils;
import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -277,7 +276,11 @@ public class SchemaRegion implements ISchemaRegion {
}
}
- /** @return line number of the logFile */
+ /**
+ * Init from metadata log file.
+ *
+ * @return line number of the logFile
+ */
@SuppressWarnings("squid:S3776")
private int initFromLog(File logFile) throws IOException {
long time = System.currentTimeMillis();
@@ -1567,8 +1570,9 @@ public class SchemaRegion implements ISchemaRegion {
// check type is match
if (plan instanceof InsertRowPlan || plan instanceof InsertTabletPlan) {
try {
- checkDataTypeMatch(plan, i, measurementMNode.getSchema().getType());
+ SchemaRegionUtils.checkDataTypeMatch(plan, i, measurementMNode.getSchema().getType());
} catch (DataTypeMismatchException mismatchException) {
+ logger.warn(mismatchException.getMessage());
if (!config.isEnablePartialInsert()) {
throw mismatchException;
} else {
@@ -1654,47 +1658,7 @@ public class SchemaRegion implements ISchemaRegion {
return new Pair<>(deviceMNode, measurementMNode);
}
- private void checkDataTypeMatch(InsertPlan plan, int loc, TSDataType dataType)
- throws MetadataException {
- TSDataType insertDataType;
- if (plan instanceof InsertRowPlan) {
- if (!((InsertRowPlan) plan).isNeedInferType()) {
- // only when InsertRowPlan's values is object[], we should check type
- insertDataType = getTypeInLoc(plan, loc);
- } else {
- insertDataType = dataType;
- }
- } else {
- insertDataType = getTypeInLoc(plan, loc);
- }
- if (dataType != insertDataType) {
- String measurement = plan.getMeasurements()[loc];
- logger.warn(
- "DataType mismatch, Insert measurement {} type {}, metadata tree type {}",
- measurement,
- insertDataType,
- dataType);
- throw new DataTypeMismatchException(measurement, insertDataType, dataType);
- }
- }
-
/** get dataType of plan, in loc measurements only support InsertRowPlan and InsertTabletPlan */
- private TSDataType getTypeInLoc(InsertPlan plan, int loc) throws MetadataException {
- TSDataType dataType;
- if (plan instanceof InsertRowPlan) {
- InsertRowPlan tPlan = (InsertRowPlan) plan;
- dataType =
- TypeInferenceUtils.getPredictedDataType(tPlan.getValues()[loc], tPlan.isNeedInferType());
- } else if (plan instanceof InsertTabletPlan) {
- dataType = (plan).getDataTypes()[loc];
- } else {
- throw new MetadataException(
- String.format(
- "Only support insert and insertTablet, plan is [%s]", plan.getOperatorType()));
- }
- return dataType;
- }
-
private IMeasurementMNode findMeasurementInTemplate(IMNode deviceMNode, String measurement)
throws MetadataException {
Template curTemplate = deviceMNode.getUpperTemplate();
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionUtils.java b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionUtils.java
index 40f2cc10c1..a67182bd24 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionUtils.java
@@ -20,7 +20,13 @@
package org.apache.iotdb.db.metadata.schemaregion;
import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
+import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException;
import org.apache.iotdb.db.exception.metadata.MetadataException;
+import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
+import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
+import org.apache.iotdb.db.qp.physical.crud.InsertTabletPlan;
+import org.apache.iotdb.db.utils.TypeInferenceUtils;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.slf4j.Logger;
@@ -56,4 +62,40 @@ public class SchemaRegionUtils {
"Failed to delete schema region folder %s", schemaRegionDir.getAbsolutePath()));
}
}
+
+ public static void checkDataTypeMatch(InsertPlan plan, int loc, TSDataType dataType)
+ throws MetadataException {
+ TSDataType insertDataType;
+ if (plan instanceof InsertRowPlan) {
+ if (!((InsertRowPlan) plan).isNeedInferType()) {
+ // only when InsertRowPlan's values is object[], we should check type
+ insertDataType = getTypeInLoc(plan, loc);
+ } else {
+ insertDataType = dataType;
+ }
+ } else {
+ insertDataType = getTypeInLoc(plan, loc);
+ }
+ if (dataType != insertDataType) {
+ String measurement = plan.getMeasurements()[loc];
+ String device = plan.getDevicePath().getFullPath();
+ throw new DataTypeMismatchException(device, measurement, insertDataType, dataType);
+ }
+ }
+
+ private static TSDataType getTypeInLoc(InsertPlan plan, int loc) throws MetadataException {
+ TSDataType dataType;
+ if (plan instanceof InsertRowPlan) {
+ InsertRowPlan tPlan = (InsertRowPlan) plan;
+ dataType =
+ TypeInferenceUtils.getPredictedDataType(tPlan.getValues()[loc], tPlan.isNeedInferType());
+ } else if (plan instanceof InsertTabletPlan) {
+ dataType = (plan).getDataTypes()[loc];
+ } else {
+ throw new MetadataException(
+ String.format(
+ "Only support insert and insertTablet, plan is [%s]", plan.getOperatorType()));
+ }
+ return dataType;
+ }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/rocksdb/RSchemaRegion.java b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/rocksdb/RSchemaRegion.java
index 0eb798fd61..5026693ee1 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/rocksdb/RSchemaRegion.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/rocksdb/RSchemaRegion.java
@@ -72,7 +72,6 @@ import org.apache.iotdb.db.query.dataset.ShowDevicesResult;
import org.apache.iotdb.db.query.dataset.ShowTimeSeriesResult;
import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.db.utils.SchemaUtils;
-import org.apache.iotdb.db.utils.TypeInferenceUtils;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
@@ -1806,13 +1805,9 @@ public class RSchemaRegion implements ISchemaRegion {
// check type is match
if (plan instanceof InsertRowPlan || plan instanceof InsertTabletPlan) {
try {
- checkDataTypeMatch(plan, i, nodeMap.get(i).getSchema().getType());
+ SchemaRegionUtils.checkDataTypeMatch(plan, i, nodeMap.get(i).getSchema().getType());
} catch (DataTypeMismatchException mismatchException) {
- logger.warn(
- "DataType mismatch, Insert measurement {} type {}, metadata tree type {}",
- measurementList[i],
- plan.getDataTypes()[i],
- nodeMap.get(i).getSchema().getType());
+ logger.warn(mismatchException.getMessage());
if (!config.isEnablePartialInsert()) {
throw mismatchException;
} else {
@@ -1850,46 +1845,6 @@ public class RSchemaRegion implements ISchemaRegion {
return deviceMNode;
}
- private void checkDataTypeMatch(InsertPlan plan, int loc, TSDataType dataType)
- throws MetadataException {
- TSDataType insertDataType;
- if (plan instanceof InsertRowPlan) {
- if (!((InsertRowPlan) plan).isNeedInferType()) {
- // only when InsertRowPlan's values is object[], we should check type
- insertDataType = getTypeInLoc(plan, loc);
- } else {
- insertDataType = dataType;
- }
- } else {
- insertDataType = getTypeInLoc(plan, loc);
- }
- if (dataType != insertDataType) {
- String measurement = plan.getMeasurements()[loc];
- logger.warn(
- "DataType mismatch, Insert measurement {} type {}, metadata tree type {}",
- measurement,
- insertDataType,
- dataType);
- throw new DataTypeMismatchException(measurement, insertDataType, dataType);
- }
- }
- /** get dataType of plan, in loc measurements only support InsertRowPlan and InsertTabletPlan */
- private TSDataType getTypeInLoc(InsertPlan plan, int loc) throws MetadataException {
- TSDataType dataType;
- if (plan instanceof InsertRowPlan) {
- InsertRowPlan tPlan = (InsertRowPlan) plan;
- dataType =
- TypeInferenceUtils.getPredictedDataType(tPlan.getValues()[loc], tPlan.isNeedInferType());
- } else if (plan instanceof InsertTabletPlan) {
- dataType = (plan).getDataTypes()[loc];
- } else {
- throw new MetadataException(
- String.format(
- "Only support insert and insertTablet, plan is [%s]", plan.getOperatorType()));
- }
- return dataType;
- }
-
@Override
public void clear() {
try {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/statement/crud/InsertRowStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/statement/crud/InsertRowStatement.java
index d5becb00c2..80862ab70e 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/statement/crud/InsertRowStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/statement/crud/InsertRowStatement.java
@@ -193,7 +193,10 @@ public class InsertRowStatement extends InsertBaseStatement {
markFailedMeasurementInsertion(
i,
new DataTypeMismatchException(
- measurements[i], measurementSchemas.get(i).getType(), dataTypes[i]));
+ devicePath.getFullPath(),
+ measurements[i],
+ measurementSchemas.get(i).getType(),
+ dataTypes[i]));
}
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/sql/statement/crud/InsertTabletStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/sql/statement/crud/InsertTabletStatement.java
index 9123601eef..9755950521 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/sql/statement/crud/InsertTabletStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/sql/statement/crud/InsertTabletStatement.java
@@ -117,7 +117,10 @@ public class InsertTabletStatement extends InsertBaseStatement {
markFailedMeasurementInsertion(
i,
new DataTypeMismatchException(
- measurements[i], measurementSchemas.get(i).getType(), dataTypes[i]));
+ devicePath.getFullPath(),
+ measurements[i],
+ measurementSchemas.get(i).getType(),
+ dataTypes[i]));
}
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/TsFilePlanRedoer.java b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/TsFilePlanRedoer.java
index 47318b0c5d..1932488fef 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/TsFilePlanRedoer.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/TsFilePlanRedoer.java
@@ -144,7 +144,10 @@ public class TsFilePlanRedoer {
tPlan.markFailedMeasurementInsertion(
i,
new DataTypeMismatchException(
- mNodes[i].getName(), tPlan.getDataTypes()[i], mNodes[i].getSchema().getType()));
+ tPlan.getDevicePath().getFullPath(),
+ mNodes[i].getName(),
+ tPlan.getDataTypes()[i],
+ mNodes[i].getSchema().getType()));
}
}
}
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
index 294f87c533..4973887d35 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
@@ -160,7 +160,7 @@ public class IDTableTest {
fail("should throw exception");
} catch (DataTypeMismatchException e) {
assertEquals(
- "DataType mismatch, Insert measurement s2 type DOUBLE, metadata tree type INT64",
+ "DataType mismatch, Insert timeseries root.laptop.d1.aligned_device.s2 type DOUBLE, metadata tree type INT64",
e.getMessage());
} catch (Exception e2) {
fail("throw wrong exception");