This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 38bf656 Improve the readUnLock way while inserting (#1757)
38bf656 is described below
commit 38bf656e4ca4c3f967e5ec4ee9eb808cbfda0e77
Author: Jialin Qiao <[email protected]>
AuthorDate: Thu Sep 24 15:19:17 2020 +0800
Improve the readUnLock way while inserting (#1757)
---
.../org/apache/iotdb/db/metadata/MManager.java | 124 ++++++++++-----------
.../apache/iotdb/db/qp/executor/PlanExecutor.java | 25 +++--
.../iotdb/db/qp/physical/crud/InsertPlan.java | 2 +
.../iotdb/db/qp/physical/crud/InsertRowPlan.java | 49 ++++----
.../iotdb/db/writelog/recover/LogReplayer.java | 3 +-
.../iotdb/db/engine/storagegroup/TTLTest.java | 11 +-
6 files changed, 101 insertions(+), 113 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index 6deb9c8..353cfff 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -183,8 +183,6 @@ public class MManager {
/**
* we should not use this function in other place, but only in IoTDB class
- *
- * @return
*/
public static MManager getInstance() {
return MManagerHolder.INSTANCE;
@@ -347,7 +345,7 @@ public class MManager {
break;
case MetadataOperationType.DELETE_STORAGE_GROUP:
List<PartialPath> storageGroups = new ArrayList<>();
- for(int i = 1; i <= args.length; i++) {
+ for (int i = 1; i <= args.length; i++) {
storageGroups.add(new PartialPath(args[i]));
}
deleteStorageGroups(storageGroups);
@@ -437,9 +435,9 @@ public class MManager {
/**
* Add one timeseries to metadata tree, if the timeseries already exists,
throw exception
*
- * @param path the timeseries path
- * @param dataType the dateType {@code DataType} of the timeseries
- * @param encoding the encoding function {@code Encoding} of the timeseries
+ * @param path the timeseries path
+ * @param dataType the dateType {@code DataType} of the timeseries
+ * @param encoding the encoding function {@code Encoding} of the timeseries
* @param compressor the compressor function {@code Compressor} of the time
series
* @return whether the measurement occurs for the first time in this storage
group (if true, the
* measurement should be registered to the StorageEngine too)
@@ -549,7 +547,8 @@ public class MManager {
throws MetadataException, IOException {
lock.writeLock().lock();
try {
- Pair<PartialPath, MeasurementMNode> pair =
mtree.deleteTimeseriesAndReturnEmptyStorageGroup(path);
+ Pair<PartialPath, MeasurementMNode> pair = mtree
+ .deleteTimeseriesAndReturnEmptyStorageGroup(path);
removeFromTagInvertedIndex(pair.right);
PartialPath storageGroupPath = pair.left;
@@ -708,7 +707,7 @@ public class MManager {
* Get all devices under given prefixPath.
*
* @param prefixPath a prefix of a full path. if the wildcard is not at the
tail, then each
- * wildcard can only match one level, otherwise it can
match to the tail.
+ * wildcard can only match one level, otherwise it can match to the tail.
* @return A HashSet instance which stores devices paths with given
prefixPath.
*/
public Set<PartialPath> getDevices(PartialPath prefixPath) throws
MetadataException {
@@ -724,16 +723,18 @@ public class MManager {
* Get all nodes from the given level
*
* @param prefixPath can be a prefix of a full path. Can not be a full path.
can not have
- * wildcard. But, the level of the prefixPath can be
smaller than the given
- * level, e.g., prefixPath = root.a while the given level
is 5
- * @param nodeLevel the level can not be smaller than the level of the
prefixPath
+ * wildcard. But, the level of the prefixPath can be smaller than the given
level, e.g.,
+ * prefixPath = root.a while the given level is 5
+ * @param nodeLevel the level can not be smaller than the level of the
prefixPath
* @return A List instance which stores all node at given level
*/
- public List<PartialPath> getNodesList(PartialPath prefixPath, int nodeLevel)
throws MetadataException {
+ public List<PartialPath> getNodesList(PartialPath prefixPath, int nodeLevel)
+ throws MetadataException {
return getNodesList(prefixPath, nodeLevel, null);
}
- public List<PartialPath> getNodesList(PartialPath prefixPath, int nodeLevel,
StorageGroupFilter filter)
+ public List<PartialPath> getNodesList(PartialPath prefixPath, int nodeLevel,
+ StorageGroupFilter filter)
throws MetadataException {
lock.readLock().lock();
try {
@@ -775,7 +776,7 @@ public class MManager {
* Get all storage group under given prefixPath.
*
* @param prefixPath a prefix of a full path. if the wildcard is not at the
tail, then each
- * wildcard can only match one level, otherwise it can
match to the tail.
+ * wildcard can only match one level, otherwise it can match to the tail.
* @return A ArrayList instance which stores storage group paths with given
prefixPath.
*/
public List<PartialPath> getStorageGroupPaths(PartialPath prefixPath) throws
MetadataException {
@@ -804,7 +805,7 @@ public class MManager {
* expression in this method is formed by the amalgamation of seriesPath and
the character '*'.
*
* @param prefixPath can be a prefix or a full path. if the wildcard is not
at the tail, then each
- * wildcard can only match one level, otherwise it can
match to the tail.
+ * wildcard can only match one level, otherwise it can match to the tail.
*/
public List<PartialPath> getAllTimeseriesPath(PartialPath prefixPath) throws
MetadataException {
lock.readLock().lock();
@@ -816,10 +817,10 @@ public class MManager {
}
/**
- * Similar to method getAllTimeseriesPath(), but return Path with alias
- * alias.
+ * Similar to method getAllTimeseriesPath(), but return Path with alias
alias.
*/
- public List<PartialPath> getAllTimeseriesPathWithAlias(PartialPath
prefixPath) throws MetadataException {
+ public List<PartialPath> getAllTimeseriesPathWithAlias(PartialPath
prefixPath)
+ throws MetadataException {
lock.readLock().lock();
try {
return mtree.getAllTimeseriesPathWithAlias(prefixPath);
@@ -868,7 +869,7 @@ public class MManager {
* To calculate the count of nodes in the given level for given prefix path.
*
* @param prefixPath a prefix path or a full path, can not contain '*'
- * @param level the level can not be smaller than the level of the
prefixPath
+ * @param level the level can not be smaller than the level of the prefixPath
*/
public int getNodesCountInGivenLevel(PartialPath prefixPath, int level)
throws MetadataException {
lock.readLock().lock();
@@ -940,7 +941,8 @@ public class MManager {
pair.left.putAll(pair.right);
MeasurementSchema measurementSchema = leaf.getSchema();
res.add(new ShowTimeSeriesResult(leaf.getFullPath(),
leaf.getAlias(),
- getStorageGroupPath(leaf.getPartialPath()).getFullPath(),
measurementSchema.getType().toString(),
+ getStorageGroupPath(leaf.getPartialPath()).getFullPath(),
+ measurementSchema.getType().toString(),
measurementSchema.getEncodingType().toString(),
measurementSchema.getCompressor().toString(), pair.left));
if (limit != 0) {
@@ -1005,19 +1007,22 @@ public class MManager {
try {
if (tagFileOffset < 0) {
// no tags/attributes
- res.add(new ShowTimeSeriesResult(ansString.left.getFullPath(),
ansString.right[0], ansString.right[1], ansString.right[2],
+ res.add(new ShowTimeSeriesResult(ansString.left.getFullPath(),
ansString.right[0],
+ ansString.right[1], ansString.right[2],
ansString.right[3], ansString.right[4],
Collections.emptyMap()));
} else {
// has tags/attributes
Pair<Map<String, String>, Map<String, String>> pair =
tagLogFile.read(config.getTagAttributeTotalSize(),
tagFileOffset);
pair.left.putAll(pair.right);
- res.add(new ShowTimeSeriesResult(ansString.left.getFullPath(),
ansString.right[0], ansString.right[1], ansString.right[2],
+ res.add(new ShowTimeSeriesResult(ansString.left.getFullPath(),
ansString.right[0],
+ ansString.right[1], ansString.right[2],
ansString.right[3], ansString.right[4], pair.left));
}
} catch (IOException e) {
throw new MetadataException(
- "Something went wrong while deserialize tag info of " +
ansString.left.getFullPath(), e);
+ "Something went wrong while deserialize tag info of " +
ansString.left.getFullPath(),
+ e);
}
}
return res;
@@ -1088,13 +1093,12 @@ public class MManager {
}
/**
- * E.g., root.sg is storage group
- * given [root, sg], return the MNode of root.sg
- * given [root, sg, device], return the MNode of root.sg
- * Get storage group node by path. If storage group is not set,
StorageGroupNotSetException will
- * be thrown
+ * E.g., root.sg is storage group given [root, sg], return the MNode of
root.sg given [root, sg,
+ * device], return the MNode of root.sg Get storage group node by path. If
storage group is not
+ * set, StorageGroupNotSetException will be thrown
*/
- public StorageGroupMNode getStorageGroupNodeByStorageGroupPath(PartialPath
path) throws MetadataException {
+ public StorageGroupMNode getStorageGroupNodeByStorageGroupPath(PartialPath
path)
+ throws MetadataException {
lock.readLock().lock();
try {
return mtree.getStorageGroupNodeByStorageGroupPath(path);
@@ -1274,7 +1278,7 @@ public class MManager {
* Check whether the given path contains a storage group change or set the
new offset of a
* timeseries
*
- * @param path timeseries
+ * @param path timeseries
* @param offset offset in the tag file
*/
public void changeOffset(PartialPath path, long offset) throws
MetadataException {
@@ -1304,14 +1308,15 @@ public class MManager {
* upsert tags and attributes key-value for the timeseries if the key has
existed, just use the
* new value to update it.
*
- * @param alias newly added alias
- * @param tagsMap newly added tags map
+ * @param alias newly added alias
+ * @param tagsMap newly added tags map
* @param attributesMap newly added attributes map
- * @param fullPath timeseries
+ * @param fullPath timeseries
*/
@SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity
warning
public void upsertTagsAndAttributes(String alias, Map<String, String>
tagsMap,
- Map<String, String> attributesMap, PartialPath fullPath) throws
MetadataException, IOException {
+ Map<String, String> attributesMap, PartialPath fullPath)
+ throws MetadataException, IOException {
lock.writeLock().lock();
try {
MNode mNode = mtree.getNodeByPath(fullPath);
@@ -1411,7 +1416,7 @@ public class MManager {
* add new attributes key-value for the timeseries
*
* @param attributesMap newly added attributes map
- * @param fullPath timeseries
+ * @param fullPath timeseries
*/
public void addAttributes(Map<String, String> attributesMap, PartialPath
fullPath)
throws MetadataException, IOException {
@@ -1453,7 +1458,7 @@ public class MManager {
/**
* add new tags key-value for the timeseries
*
- * @param tagsMap newly added tags map
+ * @param tagsMap newly added tags map
* @param fullPath timeseries
*/
public void addTags(Map<String, String> tagsMap, PartialPath fullPath)
@@ -1506,7 +1511,7 @@ public class MManager {
/**
* drop tags or attributes of the timeseries
*
- * @param keySet tags key or attributes key
+ * @param keySet tags key or attributes key
* @param fullPath timeseries path
*/
@SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity
warning
@@ -1657,8 +1662,8 @@ public class MManager {
/**
* rename the tag or attribute's key of the timeseries
*
- * @param oldKey old key of tag or attribute
- * @param newKey new key of tag or attribute
+ * @param oldKey old key of tag or attribute
+ * @param newKey new key of tag or attribute
* @param fullPath timeseries
*/
@SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity
warning
@@ -1792,9 +1797,6 @@ public class MManager {
/**
* Collect the timeseries schemas under "startingPath".
- *
- * @param startingPath
- * @param measurementSchemas
*/
public void collectSeries(PartialPath startingPath, List<MeasurementSchema>
measurementSchemas) {
MNode mNode;
@@ -1936,17 +1938,20 @@ public class MManager {
/**
* get schema for device. Attention!!! Only support insertPlan
- *
- * @throws MetadataException
*/
@SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity
warning
- public MeasurementMNode[] getSeriesSchemasAndReadLockDevice(PartialPath
deviceId,
- String[] measurementList, InsertPlan plan) throws MetadataException {
- MeasurementMNode[] mNodes = new MeasurementMNode[measurementList.length];
+ public MNode getSeriesSchemasAndReadLockDevice(InsertPlan plan)
+ throws MetadataException {
+
+ PartialPath deviceId = plan.getDeviceId();
+ String[] measurementList = plan.getMeasurements();
+ MeasurementMNode[] measurementMNodes = plan.getMeasurementMNodes();
+
// 1. get device node
MNode deviceMNode = getDeviceNodeWithAutoCreateAndReadLock(deviceId);
+
// 2. get schema of each measurement
for (int i = 0; i < measurementList.length; i++) {
try {
@@ -1994,10 +1999,10 @@ public class MManager {
}
}
- mNodes[i] = measurementMNode;
+ measurementMNodes[i] = measurementMNode;
// set measurementName instead of alias
- measurementList[i] = mNodes[i].getName();
+ measurementList[i] = measurementMNode.getName();
} catch (MetadataException e) {
logger.warn("meet error when check {}.{}, message: {}", deviceId,
measurementList[i],
@@ -2011,14 +2016,15 @@ public class MManager {
}
}
- return mNodes;
+ return deviceMNode;
}
/**
* create timeseries with ignore PathAlreadyExistException
*/
- private void internalCreateTimeseries(PartialPath path, TSDataType dataType)
throws MetadataException {
+ private void internalCreateTimeseries(PartialPath path, TSDataType dataType)
+ throws MetadataException {
try {
createTimeseries(
path,
@@ -2060,8 +2066,6 @@ public class MManager {
/**
* get dataType of plan, in loc measurements only support InsertRowPlan and
InsertTabletPlan
- *
- * @throws MetadataException
*/
private TSDataType getTypeInLoc(InsertPlan plan, int loc) throws
MetadataException {
TSDataType dataType;
@@ -2078,18 +2082,4 @@ public class MManager {
return dataType;
}
- /**
- * when insert, we lock device node for not create deleted time series after
insert, we should
- * call this function to unlock the device node
- *
- * @param deviceId
- */
- public void unlockDeviceReadLock(PartialPath deviceId) {
- try {
- MNode mNode = getDeviceNode(deviceId);
- mNode.readUnlock();
- } catch (MetadataException e) {
- // ignore the exception
- }
- }
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index d3eff10..1085074 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -912,18 +912,18 @@ public class PlanExecutor implements IPlanExecutor {
}
}
- protected MeasurementMNode[] getSeriesSchemas(InsertPlan insertPlan)
+ private MNode getSeriesSchemas(InsertPlan insertPlan)
throws MetadataException {
- return mManager
- .getSeriesSchemasAndReadLockDevice(insertPlan.getDeviceId(),
insertPlan.getMeasurements(),
- insertPlan);
+ return mManager.getSeriesSchemasAndReadLockDevice(insertPlan);
}
@Override
public void insert(InsertRowPlan insertRowPlan) throws QueryProcessException
{
+ MNode deviceNode = null;
try {
- MeasurementMNode[] mNodes = getSeriesSchemas(insertRowPlan);
- insertRowPlan.setMNodesAndTransferType(mNodes);
+ insertRowPlan.setMeasurementMNodes(new
MeasurementMNode[insertRowPlan.getMeasurements().length]);
+ deviceNode = getSeriesSchemas(insertRowPlan);
+ insertRowPlan.transferType();
StorageEngine.getInstance().insert(insertRowPlan);
if (insertRowPlan.getFailedMeasurements() != null) {
throw new StorageEngineException(
@@ -932,15 +932,18 @@ public class PlanExecutor implements IPlanExecutor {
} catch (StorageEngineException | MetadataException e) {
throw new QueryProcessException(e);
} finally {
- mManager.unlockDeviceReadLock(insertRowPlan.getDeviceId());
+ if (deviceNode != null) {
+ deviceNode.readUnlock();
+ }
}
}
@Override
public void insertTablet(InsertTabletPlan insertTabletPlan) throws
QueryProcessException {
+ MNode deviceMNode = null;
try {
- MeasurementMNode[] mNodes = getSeriesSchemas(insertTabletPlan);
- insertTabletPlan.setMeasurementMNodes(mNodes);
+ insertTabletPlan.setMeasurementMNodes(new
MeasurementMNode[insertTabletPlan.getMeasurements().length]);
+ deviceMNode = getSeriesSchemas(insertTabletPlan);
StorageEngine.getInstance().insertTablet(insertTabletPlan);
if (insertTabletPlan.getFailedMeasurements() != null) {
throw new StorageEngineException(
@@ -949,7 +952,9 @@ public class PlanExecutor implements IPlanExecutor {
} catch (StorageEngineException | MetadataException e) {
throw new QueryProcessException(e);
} finally {
- mManager.unlockDeviceReadLock(insertTabletPlan.getDeviceId());
+ if (deviceMNode != null) {
+ deviceMNode.readUnlock();
+ }
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
index 38e9318..2d33a89 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
@@ -31,7 +31,9 @@ abstract public class InsertPlan extends PhysicalPlan {
protected PartialPath deviceId;
protected String[] measurements;
+ // get from client
protected TSDataType[] dataTypes;
+ // get from MManager
protected MeasurementMNode[] measurementMNodes;
// record the failed measurements
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
index 3b3f06c..1271ecd 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
@@ -63,6 +63,19 @@ public class InsertRowPlan extends InsertPlan {
super(OperatorType.INSERT);
}
+ public InsertRowPlan(PartialPath deviceId, long insertTime, String[]
measurementList,
+ String[] insertValues) {
+ super(Operator.OperatorType.INSERT);
+ this.time = insertTime;
+ this.deviceId = deviceId;
+ this.measurements = measurementList;
+ this.dataTypes = new TSDataType[measurements.length];
+ // We need to create an Object[] for the data type casting, because we can
not set Float, Long to String[i]
+ this.values = new Object[measurements.length];
+ System.arraycopy(insertValues, 0, values, 0, measurements.length);
+ isNeedInferType = true;
+ }
+
@TestOnly
public InsertRowPlan(PartialPath deviceId, long insertTime, String[]
measurements,
TSDataType[] dataTypes, String[] insertValues) {
@@ -97,6 +110,7 @@ public class InsertRowPlan extends InsertPlan {
}
}
+ @TestOnly
public InsertRowPlan(TSRecord tsRecord) throws IllegalPathException {
super(OperatorType.INSERT);
this.deviceId = new PartialPath(tsRecord.deviceId);
@@ -115,30 +129,6 @@ public class InsertRowPlan extends InsertPlan {
}
}
- public InsertRowPlan(PartialPath deviceId, long insertTime, String[]
measurementList,
- TSDataType[] dataTypes, Object[] insertValues) {
- super(Operator.OperatorType.INSERT);
- this.time = insertTime;
- this.deviceId = deviceId;
- this.measurements = measurementList;
- this.dataTypes = dataTypes;
- this.values = insertValues;
- }
-
- public InsertRowPlan(PartialPath deviceId, long insertTime, String[]
measurementList,
- String[] insertValues) {
- super(Operator.OperatorType.INSERT);
- this.time = insertTime;
- this.deviceId = deviceId;
- this.measurements = measurementList;
- this.dataTypes = new TSDataType[measurements.length];
- // We need to create an Object[] for the data type casting, because we can
not set Float, Long to String[i]
- this.values = new Object[measurements.length];
- System.arraycopy(insertValues, 0, values, 0, measurements.length);
- isNeedInferType = true;
- }
-
-
public long getTime() {
return time;
}
@@ -160,11 +150,10 @@ public class InsertRowPlan extends InsertPlan {
* Double, Binary)
*/
@SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity
warning
- public void setMNodesAndTransferType(MeasurementMNode[] mNodes) throws
QueryProcessException {
- this.measurementMNodes = mNodes;
+ public void transferType() throws QueryProcessException {
if (isNeedInferType) {
- for (int i = 0; i < mNodes.length; i++) {
- if (mNodes[i] == null) {
+ for (int i = 0; i < measurementMNodes.length; i++) {
+ if (measurementMNodes[i] == null) {
if
(IoTDBDescriptor.getInstance().getConfig().isEnablePartialInsert()) {
markFailedMeasurementInsertion(i);
} else {
@@ -173,7 +162,7 @@ public class InsertRowPlan extends InsertPlan {
}
continue;
}
- dataTypes[i] = mNodes[i].getSchema().getType();
+ dataTypes[i] = measurementMNodes[i].getSchema().getType();
try {
values[i] = CommonUtils.parseValue(dataTypes[i],
values[i].toString());
} catch (Exception e) {
@@ -181,7 +170,7 @@ public class InsertRowPlan extends InsertPlan {
measurements[i], values[i], dataTypes[i]);
if
(IoTDBDescriptor.getInstance().getConfig().isEnablePartialInsert()) {
markFailedMeasurementInsertion(i);
- mNodes[i] = null;
+ measurementMNodes[i] = null;
} else {
throw e;
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
index 08c403e..7326921 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
@@ -166,8 +166,9 @@ public class LogReplayer {
InsertRowPlan tPlan = (InsertRowPlan) plan;
//only infer type when users pass a String value
//WAL already serializes the real data type, so no need to infer type
+ tPlan.setMeasurementMNodes(mNodes);
((InsertRowPlan) plan).setNeedInferType(false);
- tPlan.setMNodesAndTransferType(mNodes);
+ tPlan.transferType();
//mark failed plan manually
checkDataTypeAndMarkFailed(mNodes, tPlan);
recoverMemTable.insert(tPlan);
diff --git
a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
index 9cff5e5..01c4ea8 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
@@ -46,7 +46,6 @@ import
org.apache.iotdb.db.exception.metadata.MetadataException;
import org.apache.iotdb.db.exception.query.OutOfTTLException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.metadata.PartialPath;
-import org.apache.iotdb.db.metadata.mnode.MNode;
import org.apache.iotdb.db.metadata.mnode.MeasurementMNode;
import org.apache.iotdb.db.metadata.mnode.StorageGroupMNode;
import org.apache.iotdb.db.qp.Planner;
@@ -145,8 +144,9 @@ public class TTLTest {
plan.setMeasurements(new String[]{"s1"});
plan.setDataTypes(new TSDataType[]{TSDataType.INT64});
plan.setValues(new Object[]{1L});
- plan.setMNodesAndTransferType(new MeasurementMNode[]{new
MeasurementMNode(null, null,
- new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN),
null)});
+ plan.setMeasurementMNodes(new MeasurementMNode[]{new
MeasurementMNode(null, null,
+ new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN),
null)});
+ plan.transferType();
// ok without ttl
insertToStorageGroupProcessor(plan);
@@ -173,8 +173,9 @@ public class TTLTest {
plan.setMeasurements(new String[]{"s1"});
plan.setDataTypes(new TSDataType[]{TSDataType.INT64});
plan.setValues(new Object[]{1L});
- plan.setMNodesAndTransferType(new MeasurementMNode[]{new
MeasurementMNode(null, null,
- new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN),
null)});
+ plan.setMeasurementMNodes(new MeasurementMNode[]{new
MeasurementMNode(null, null,
+ new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.PLAIN),
null)});
+ plan.transferType();
long initTime = System.currentTimeMillis();
// sequence data