This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch VectorCodeSmell in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 0cab4c4f0f6fb9637dd4ea200b9d33cef668023b Author: HTHou <[email protected]> AuthorDate: Mon Apr 12 11:53:19 2021 +0800 [To Vector] Fix Vector Code Smell Step 1 --- .../main/java/org/apache/iotdb/SessionExample.java | 1 + .../org/apache/iotdb/VectorSessionExample.java | 5 +- .../iotdb/db/engine/flush/MemTableFlushTask.java | 22 +++---- .../iotdb/db/engine/memtable/AbstractMemTable.java | 10 ++-- .../db/engine/memtable/IWritableMemChunk.java | 6 +- .../iotdb/db/engine/memtable/WritableMemChunk.java | 21 +++---- .../db/engine/querycontext/ReadOnlyMemChunk.java | 12 +++- .../db/engine/storagegroup/TsFileProcessor.java | 9 +-- .../db/engine/storagegroup/TsFileResource.java | 2 + .../iotdb/db/metadata/VectorPartialPath.java | 1 + .../apache/iotdb/db/qp/executor/PlanExecutor.java | 6 +- .../iotdb/db/qp/physical/crud/InsertRowPlan.java | 8 +-- .../db/qp/physical/crud/SetDeviceTemplatePlan.java | 1 + .../physical/sys/CreateAlignedTimeSeriesPlan.java | 1 + .../physical/sys/SetUsingDeviceTemplatePlan.java | 2 +- .../query/reader/series/SeriesReaderFactory.java | 1 + .../db/query/reader/series/VectorSeriesReader.java | 1 + .../iotdb/db/rescon/PrimitiveArrayManager.java | 3 +- .../apache/iotdb/db/rescon/TVListAllocator.java | 2 + .../db/tools/upgrade/TsFileOnlineUpgradeTool.java | 3 +- .../java/org/apache/iotdb/db/utils/MemUtils.java | 9 +++ .../org/apache/iotdb/db/utils/SchemaUtils.java | 1 - .../org/apache/iotdb/db/utils/SerializeUtils.java | 2 + .../iotdb/db/utils/datastructure/TVList.java | 10 +++- .../iotdb/db/utils/datastructure/VectorTVList.java | 68 ++++++++++++++++++---- .../iotdb/db/writelog/recover/LogReplayer.java | 6 +- .../db/engine/memtable/PrimitiveMemTableTest.java | 2 +- .../iotdb/db/metadata/MManagerBasicTest.java | 1 + .../java/org/apache/iotdb/tsfile/utils/Binary.java | 2 +- .../java/org/apache/iotdb/tsfile/utils/BitMap.java | 3 +- 30 files changed, 158 insertions(+), 63 deletions(-) diff --git a/example/session/src/main/java/org/apache/iotdb/SessionExample.java b/example/session/src/main/java/org/apache/iotdb/SessionExample.java index 612544a..d996d10 100644 --- a/example/session/src/main/java/org/apache/iotdb/SessionExample.java +++ b/example/session/src/main/java/org/apache/iotdb/SessionExample.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb; import org.apache.iotdb.rpc.IoTDBConnectionException; diff --git a/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java b/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java index 75b4bbb..2d09761 100644 --- a/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java +++ b/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb; import org.apache.iotdb.rpc.IoTDBConnectionException; @@ -34,6 +35,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +@SuppressWarnings("squid:S106") public class VectorSessionExample { private static Session session; @@ -146,7 +148,8 @@ public class VectorSessionExample { dataSet.closeOperationHandle(); dataSet = session.executeQueryStatement( - "select count(*) from root.sg_1.d1 where time > 50 and s1 > 0 and s2 > 10000 GROUP BY ([50, 100), 10ms)"); + "select count(*) from root.sg_1.d1 where time > 50 and s1 > 0 and s2 > 10000" + + " GROUP BY ([50, 100), 10ms)"); System.out.println(dataSet.getColumnNames()); while (dataSet.hasNext()) { System.out.println(dataSet.next()); diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java index 8206f7f..633dd6e 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java @@ -114,7 +114,7 @@ public class MemTableFlushTask { long startTime = System.currentTimeMillis(); IWritableMemChunk series = iWritableMemChunkEntry.getValue(); IMeasurementSchema desc = series.getSchema(); - TVList tvList = series.getSortedTVListForFlush(); + TVList tvList = series.getSortedTvListForFlush(); sortTime += System.currentTimeMillis() - startTime; encodingTaskQueue.put(new Pair<>(tvList, desc)); } @@ -195,46 +195,46 @@ public class MemTableFlushTask { seriesWriterImpl.write(time, tvPairs.getBinary(sortedRowIndex), false); break; case VECTOR: - VectorTVList vectorTVPairs = (VectorTVList) tvPairs; - List<TSDataType> dataTypes = vectorTVPairs.getTsDataTypes(); - int originRowIndex = vectorTVPairs.getValueIndex(sortedRowIndex); + VectorTVList vectorTvPairs = (VectorTVList) tvPairs; + List<TSDataType> dataTypes = vectorTvPairs.getTsDataTypes(); + int originRowIndex = vectorTvPairs.getValueIndex(sortedRowIndex); for (int columnIndex = 0; columnIndex < dataTypes.size(); columnIndex++) { - boolean isNull = vectorTVPairs.isValueMarked(originRowIndex, columnIndex); + boolean isNull = vectorTvPairs.isValueMarked(originRowIndex, columnIndex); switch (dataTypes.get(columnIndex)) { case BOOLEAN: seriesWriterImpl.write( time, - vectorTVPairs.getBooleanByValueIndex(originRowIndex, columnIndex), + vectorTvPairs.getBooleanByValueIndex(originRowIndex, columnIndex), isNull); break; case INT32: seriesWriterImpl.write( time, - vectorTVPairs.getIntByValueIndex(originRowIndex, columnIndex), + vectorTvPairs.getIntByValueIndex(originRowIndex, columnIndex), isNull); break; case INT64: seriesWriterImpl.write( time, - vectorTVPairs.getLongByValueIndex(originRowIndex, columnIndex), + vectorTvPairs.getLongByValueIndex(originRowIndex, columnIndex), isNull); break; case FLOAT: seriesWriterImpl.write( time, - vectorTVPairs.getFloatByValueIndex(originRowIndex, columnIndex), + vectorTvPairs.getFloatByValueIndex(originRowIndex, columnIndex), isNull); break; case DOUBLE: seriesWriterImpl.write( time, - vectorTVPairs.getDoubleByValueIndex(originRowIndex, columnIndex), + vectorTvPairs.getDoubleByValueIndex(originRowIndex, columnIndex), isNull); break; case TEXT: seriesWriterImpl.write( time, - vectorTVPairs.getBinaryByValueIndex(originRowIndex, columnIndex), + vectorTvPairs.getBinaryByValueIndex(originRowIndex, columnIndex), isNull); break; default: diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java index e665822..0eb04c8 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java @@ -181,6 +181,7 @@ public abstract class AbstractMemTable implements IMemTable { memSeries.write(insertTime, objectValue); } + @SuppressWarnings("squid:S3776") // high Cognitive Complexity @Override public void write(InsertTabletPlan insertTabletPlan, int start, int end) { int columnIndex = 0; @@ -312,9 +313,9 @@ public abstract class AbstractMemTable implements IMemTable { columns.add(vectorSchema.getValueMeasurementIdList().indexOf(queryingMeasurement)); } // get sorted tv list is synchronized so different query can get right sorted list reference - TVList vectorTVListCopy = vectorMemChunk.getSortedTVListForQuery(columns); - int curSize = vectorTVListCopy.size(); - return new ReadOnlyMemChunk(partialVectorSchema, vectorTVListCopy, curSize, deletionList); + TVList vectorTvListCopy = vectorMemChunk.getSortedTvListForQuery(columns); + int curSize = vectorTvListCopy.size(); + return new ReadOnlyMemChunk(partialVectorSchema, vectorTvListCopy, curSize, deletionList); } else { if (!checkPath(deviceId, measurement)) { return null; @@ -322,7 +323,7 @@ public abstract class AbstractMemTable implements IMemTable { IWritableMemChunk memChunk = memTableMap.get(deviceId).get(partialVectorSchema.getMeasurementId()); // get sorted tv list is synchronized so different query can get right sorted list reference - TVList chunkCopy = memChunk.getSortedTVListForQuery(); + TVList chunkCopy = memChunk.getSortedTvListForQuery(); int curSize = chunkCopy.size(); return new ReadOnlyMemChunk( measurement, @@ -335,6 +336,7 @@ public abstract class AbstractMemTable implements IMemTable { } } + @SuppressWarnings("squid:S3776") // high Cognitive Complexity @Override public void delete( PartialPath originalPath, PartialPath devicePath, long startTimestamp, long endTimestamp) { diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/IWritableMemChunk.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/IWritableMemChunk.java index 283a0da..6cb896f 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/IWritableMemChunk.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/IWritableMemChunk.java @@ -80,7 +80,7 @@ public interface IWritableMemChunk { * * @return sorted tv list */ - TVList getSortedTVListForQuery(); + TVList getSortedTvListForQuery(); /** * served for vector query requests. @@ -90,7 +90,7 @@ public interface IWritableMemChunk { * @param columnIndexList indices of queried columns in the full VectorTVList * @return sorted tv list */ - TVList getSortedTVListForQuery(List<Integer> columnIndexList); + TVList getSortedTvListForQuery(List<Integer> columnIndexList); /** * served for flush requests. The logic is just same as getSortedTVListForQuery, but without add @@ -98,7 +98,7 @@ public interface IWritableMemChunk { * * @return sorted tv list */ - TVList getSortedTVListForFlush(); + TVList getSortedTvListForFlush(); default TVList getTVList() { return null; diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java index 7d1a185..3679cc3 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java @@ -31,6 +31,7 @@ public class WritableMemChunk implements IWritableMemChunk { private IMeasurementSchema schema; private TVList list; + private static final String UNSUPPORTED_TYPE = "Unsupported data type:"; public WritableMemChunk(IMeasurementSchema schema, TVList list) { this.schema = schema; @@ -62,7 +63,7 @@ public class WritableMemChunk implements IWritableMemChunk { putVector(insertTime, (Object[]) objectValue); break; default: - throw new UnSupportedDataTypeException("Unsupported data type:" + schema.getType()); + throw new UnSupportedDataTypeException(UNSUPPORTED_TYPE + schema.getType()); } } @@ -99,7 +100,7 @@ public class WritableMemChunk implements IWritableMemChunk { putVectors(times, (BitMap[]) bitMap, vectorValues, start, end); break; default: - throw new UnSupportedDataTypeException("Unsupported data type:" + dataType); + throw new UnSupportedDataTypeException(UNSUPPORTED_TYPE + dataType); } } @@ -174,7 +175,7 @@ public class WritableMemChunk implements IWritableMemChunk { } @Override - public synchronized TVList getSortedTVListForQuery() { + public synchronized TVList getSortedTvListForQuery() { sortTVList(); // increase reference count list.increaseReferenceCount(); @@ -182,14 +183,14 @@ public class WritableMemChunk implements IWritableMemChunk { } @Override - public synchronized TVList getSortedTVListForQuery(List<Integer> columnIndexList) { + public synchronized TVList getSortedTvListForQuery(List<Integer> columnIndexList) { if (list.getDataType() != TSDataType.VECTOR) { - throw new UnSupportedDataTypeException("Unsupported data type:" + list.getDataType()); + throw new UnSupportedDataTypeException(UNSUPPORTED_TYPE + list.getDataType()); } sortTVList(); // increase reference count list.increaseReferenceCount(); - return list.getTVListByColumnIndex(columnIndexList); + return list.getTvListByColumnIndex(columnIndexList); } private void sortTVList() { @@ -204,7 +205,7 @@ public class WritableMemChunk implements IWritableMemChunk { } @Override - public synchronized TVList getSortedTVListForFlush() { + public synchronized TVList getSortedTvListForFlush() { sortTVList(); return list; } @@ -242,15 +243,15 @@ public class WritableMemChunk implements IWritableMemChunk { @Override public String toString() { - int size = getSortedTVListForQuery().size(); + int size = getSortedTvListForQuery().size(); StringBuilder out = new StringBuilder("MemChunk Size: " + size + System.lineSeparator()); if (size != 0) { out.append("Data type:").append(schema.getType()).append(System.lineSeparator()); out.append("First point:") - .append(getSortedTVListForQuery().getTimeValuePair(0)) + .append(getSortedTvListForQuery().getTimeValuePair(0)) .append(System.lineSeparator()); out.append("Last point:") - .append(getSortedTVListForQuery().getTimeValuePair(size - 1)) + .append(getSortedTvListForQuery().getTimeValuePair(size - 1)) .append(System.lineSeparator()); } return out.toString(); diff --git a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java index 7337bdb..dced8ed 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java @@ -139,7 +139,16 @@ public class ReadOnlyMemChunk { cachedMetaData = metaData; } - // For vector type + /** + * The constructor for VECTOR type + * + * @param schema VectorMeasurementSchema + * @param tvList VectorTvList + * @param size The Number of Chunk data points + * @param deletionList The timeRange of deletionList + * @throws IOException + * @throws QueryProcessException + */ public ReadOnlyMemChunk( IMeasurementSchema schema, TVList tvList, int size, List<TimeRange> deletionList) throws IOException, QueryProcessException { @@ -155,6 +164,7 @@ public class ReadOnlyMemChunk { initVectorChunkMeta(schema); } + @SuppressWarnings("squid:S3776") // high Cognitive Complexity private void initVectorChunkMeta(IMeasurementSchema schema) throws IOException, QueryProcessException { Statistics timeStatistics = Statistics.getStatsByType(TSDataType.VECTOR); diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java index 352919e..0207971 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java @@ -277,6 +277,7 @@ public class TsFileProcessor { tsFileResource.updatePlanIndexes(insertTabletPlan.getIndex()); } + @SuppressWarnings("squid:S3776") // high Cognitive Complexity private void checkMemCostAndAddToTspInfo(InsertRowPlan insertRowPlan) throws WriteProcessException { // memory of increased PrimitiveArray and TEXT values, e.g., add a long[128], add 128*8 @@ -302,7 +303,7 @@ public class TsFileProcessor { * ChunkMetadata.calculateRamSize( schema.getValueMeasurementIdList().get(0), schema.getValueTSDataTypeList().get(0)); - memTableIncrement += TVList.vectorTVListArrayMemSize(schema.getValueTSDataTypeList()); + memTableIncrement += TVList.vectorTvListArrayMemSize(schema.getValueTSDataTypeList()); } else { chunkMetadataIncrement += ChunkMetadata.calculateRamSize( @@ -425,20 +426,20 @@ public class TsFileProcessor { * ChunkMetadata.calculateRamSize(measurementIds.get(0), dataTypes.get(0)); memIncrements[0] += ((end - start) / PrimitiveArrayManager.ARRAY_SIZE + 1) - * TVList.vectorTVListArrayMemSize(dataTypes); + * TVList.vectorTvListArrayMemSize(dataTypes); } else { int currentChunkPointNum = workMemTable.getCurrentChunkPointNum(deviceId, vectorSchema.getMeasurementId()); if (currentChunkPointNum % PrimitiveArrayManager.ARRAY_SIZE == 0) { memIncrements[0] += ((end - start) / PrimitiveArrayManager.ARRAY_SIZE + 1) - * TVList.vectorTVListArrayMemSize(dataTypes); + * TVList.vectorTvListArrayMemSize(dataTypes); } else { int acquireArray = (end - start - 1 + (currentChunkPointNum % PrimitiveArrayManager.ARRAY_SIZE)) / PrimitiveArrayManager.ARRAY_SIZE; memIncrements[0] += - acquireArray == 0 ? 0 : acquireArray * TVList.vectorTVListArrayMemSize(dataTypes); + acquireArray == 0 ? 0 : acquireArray * TVList.vectorTvListArrayMemSize(dataTypes); } } // TEXT data size diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java index 22f751f..2390a7c 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java @@ -216,6 +216,7 @@ public class TsFileResource { this.timeIndexType = 1; } + @SuppressWarnings("squid:S3776") // high Cognitive Complexity private void generateTimeSeriesMetadata() throws IOException { TimeseriesMetadata timeTimeSeriesMetadata = new TimeseriesMetadata(); timeTimeSeriesMetadata.setOffsetOfChunkMetaDataList(-1); @@ -661,6 +662,7 @@ public class TsFileResource { this.processor = processor; } + /** @return TimeseriesMetadata or VectorTimeseriesMetadata */ public TimeseriesMetadata getTimeSeriesMetadata() { if (timeSeriesMetadata == null) { return null; diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java b/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java index f1aa76a..b4cdcc4 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.metadata; import org.apache.iotdb.db.exception.metadata.IllegalPathException; 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 791f9b6..3cc4bc5 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 @@ -130,6 +130,7 @@ import org.apache.iotdb.rpc.RpcUtils; import org.apache.iotdb.rpc.TSStatusCode; import org.apache.iotdb.tsfile.common.constant.TsFileConstant; import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException; +import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata; import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; @@ -652,6 +653,8 @@ public class PlanExecutor implements IPlanExecutor { case BOOLEAN: field.setBoolV(((boolean) val)); break; + default: + throw new UnSupportedDataTypeException("Unsupported data type" + columnType); } RowRecord record = new RowRecord(0); record.addField(field); @@ -1420,6 +1423,7 @@ public class PlanExecutor implements IPlanExecutor { return true; } + @SuppressWarnings("squid:S3776") // high Cognitive Complexity private boolean createMultiTimeSeries(CreateMultiTimeSeriesPlan multiPlan) throws BatchProcessException { int dataTypeIdx = 0; @@ -1851,7 +1855,7 @@ public class PlanExecutor implements IPlanExecutor { /** * @param storageGroups the storage groups to check - * @return List<PartialPath> the storage groups that not exist + * @return List of PartialPath the storage groups that not exist */ List<PartialPath> checkStorageGroupExist(List<PartialPath> storageGroups) { List<PartialPath> noExistSg = new ArrayList<>(); 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 9c19d9a..bd0150d 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 @@ -438,12 +438,8 @@ public class InsertRowPlan extends InsertPlan { // types are not determined, the situation mainly occurs when the plan uses string values // and is forwarded to other nodes byte typeNum = (byte) ReadWriteIOUtils.read(buffer); - if (typeNum == TYPE_RAW_STRING) { - values[i] = ReadWriteIOUtils.readString(buffer); - continue; - } - if (typeNum == TYPE_NULL) { - values[i] = null; + if (typeNum == TYPE_RAW_STRING || typeNum == TYPE_NULL) { + values[i] = typeNum == TYPE_RAW_STRING ? ReadWriteIOUtils.readString(buffer) : null; continue; } dataTypes[i] = TSDataType.values()[typeNum]; diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/SetDeviceTemplatePlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/SetDeviceTemplatePlan.java index e3634b6..b76703a 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/SetDeviceTemplatePlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/SetDeviceTemplatePlan.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.qp.physical.crud; import org.apache.iotdb.db.metadata.PartialPath; diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java index ed4ab6c..5451860 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.qp.physical.sys; import org.apache.iotdb.db.exception.metadata.IllegalPathException; diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetUsingDeviceTemplatePlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetUsingDeviceTemplatePlan.java index b8ccdf2..6d20145 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetUsingDeviceTemplatePlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetUsingDeviceTemplatePlan.java @@ -35,7 +35,7 @@ import java.util.List; public class SetUsingDeviceTemplatePlan extends PhysicalPlan { - private static final Logger logger = LoggerFactory.getLogger(AutoCreateDeviceMNodePlan.class); + private static final Logger logger = LoggerFactory.getLogger(SetUsingDeviceTemplatePlan.class); PartialPath prefixPath; public SetUsingDeviceTemplatePlan() { diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderFactory.java b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderFactory.java index f0a1a47..c27ce49 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderFactory.java +++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderFactory.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.query.reader.series; import org.apache.iotdb.db.engine.querycontext.QueryDataSource; diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/series/VectorSeriesReader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/series/VectorSeriesReader.java index ecd03c6..ec362a8 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/VectorSeriesReader.java +++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/VectorSeriesReader.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.query.reader.series; import org.apache.iotdb.db.engine.querycontext.QueryDataSource; diff --git a/server/src/main/java/org/apache/iotdb/db/rescon/PrimitiveArrayManager.java b/server/src/main/java/org/apache/iotdb/db/rescon/PrimitiveArrayManager.java index 53381ea..5924bd7 100644 --- a/server/src/main/java/org/apache/iotdb/db/rescon/PrimitiveArrayManager.java +++ b/server/src/main/java/org/apache/iotdb/db/rescon/PrimitiveArrayManager.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.rescon; import org.apache.iotdb.db.conf.IoTDBConfig; @@ -36,7 +37,7 @@ import java.util.concurrent.atomic.AtomicLong; /** Manage all primitive data list in memory, including get and release operation. */ public class PrimitiveArrayManager { - /** data type -> ArrayDeque<Array> */ + /** data type -> ArrayDeque\<Array\> */ private static final Map<TSDataType, ArrayDeque<Object>> bufferedArraysMap = new EnumMap<>(TSDataType.class); diff --git a/server/src/main/java/org/apache/iotdb/db/rescon/TVListAllocator.java b/server/src/main/java/org/apache/iotdb/db/rescon/TVListAllocator.java index 0f683a8..d18b98d 100644 --- a/server/src/main/java/org/apache/iotdb/db/rescon/TVListAllocator.java +++ b/server/src/main/java/org/apache/iotdb/db/rescon/TVListAllocator.java @@ -56,6 +56,7 @@ public class TVListAllocator implements TVListAllocatorMBean, IService { return TVList.newVectorList(dataTypes); } + /** For non-vector types */ public synchronized void release(TSDataType dataType, TVList list) { list.clear(); if (dataType != TSDataType.VECTOR) { @@ -63,6 +64,7 @@ public class TVListAllocator implements TVListAllocatorMBean, IService { } } + /** For VECTOR type only */ public synchronized void release(TVList list) { list.clear(); if (list.getDataType() != TSDataType.VECTOR) { diff --git a/server/src/main/java/org/apache/iotdb/db/tools/upgrade/TsFileOnlineUpgradeTool.java b/server/src/main/java/org/apache/iotdb/db/tools/upgrade/TsFileOnlineUpgradeTool.java index a6dfd19..afe6bfc 100644 --- a/server/src/main/java/org/apache/iotdb/db/tools/upgrade/TsFileOnlineUpgradeTool.java +++ b/server/src/main/java/org/apache/iotdb/db/tools/upgrade/TsFileOnlineUpgradeTool.java @@ -83,7 +83,8 @@ public class TsFileOnlineUpgradeTool extends TsFileRewriteTool { /** * upgrade file resource * - * @throws IOException, WriteProcessException + * @throws IOException + * @throws WriteProcessException */ @SuppressWarnings({"squid:S3776", "deprecation"}) // Suppress high Cognitive Complexity warning private void upgradeFile(List<TsFileResource> upgradedResources) diff --git a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java index 8ad1373..667a984 100644 --- a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java @@ -56,6 +56,10 @@ public class MemUtils { return 8L + dataType.getDataTypeSize(); } + /** + * function for getting the vector value size. If mem control enabled, do not add text data size + * here, the size will be added to memtable before inserting. + */ public static long getVectorRecordSize( List<TSDataType> dataTypes, Object[] value, boolean addingTextDataSize) { // time and index size @@ -87,6 +91,7 @@ public class MemUtils { * If mem control enabled, do not add text data size here, the size will be added to memtable * before inserting. */ + @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning public static long getRecordSize( InsertTabletPlan insertTabletPlan, int start, int end, boolean addingTextDataSize) { if (insertTabletPlan.getMeasurementMNodes() == null) { @@ -133,6 +138,10 @@ public class MemUtils { return memSize; } + /** + * This method is for test only. This reason is the InsertTabletPlan in tests may doesn't have + * MeasurementMNodes + */ public static long getRecordSizeForTest( InsertTabletPlan insertTabletPlan, int start, int end, boolean addingTextDataSize) { if (start >= end) { diff --git a/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java index 92e5f3a..c02ac81 100644 --- a/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java @@ -158,7 +158,6 @@ public class SchemaUtils { * @param measurementDataType * @param aggregation * @return - * @throws MetadataException */ public static List<TSDataType> getAggregatedDataTypes( List<TSDataType> measurementDataType, String aggregation) { diff --git a/server/src/main/java/org/apache/iotdb/db/utils/SerializeUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/SerializeUtils.java index d876bc6..86e6c6e 100644 --- a/server/src/main/java/org/apache/iotdb/db/utils/SerializeUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/utils/SerializeUtils.java @@ -117,6 +117,7 @@ public class SerializeUtils { } } + @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning public static void serializeBatchData(BatchData batchData, DataOutputStream outputStream) { try { int length = batchData.length(); @@ -204,6 +205,7 @@ public class SerializeUtils { } } + @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning public static BatchData deserializeBatchData(ByteBuffer buffer) { if (buffer == null || (buffer.limit() - buffer.position()) == 0) { return null; diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java index 0df6783..396146f 100644 --- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java +++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java @@ -93,7 +93,13 @@ public abstract class TVList { return size; } - public static long vectorTVListArrayMemSize(List<TSDataType> types) { + /** + * For Vector data type + * + * @param types the types in the vector + * @return VectorTvListArrayMemSize + */ + public static long vectorTvListArrayMemSize(List<TSDataType> types) { long size = 0; // time size size += (long) PrimitiveArrayManager.ARRAY_SIZE * 8L; @@ -215,7 +221,7 @@ public abstract class TVList { throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT); } - public TVList getTVListByColumnIndex(List<Integer> columnIndexList) { + public TVList getTvListByColumnIndex(List<Integer> columnIndexList) { throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT); } diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/VectorTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/VectorTVList.java index ee4145a..dfe599d 100644 --- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/VectorTVList.java +++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/VectorTVList.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.db.utils.datastructure; import org.apache.iotdb.db.rescon.PrimitiveArrayManager; @@ -55,6 +56,7 @@ public class VectorTVList extends TVList { } } + @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning @Override public void putVector(long timestamp, Object[] value) { checkExpansion(); @@ -170,7 +172,7 @@ public class VectorTVList extends TVList { } @Override - public TVList getTVListByColumnIndex(List<Integer> columns) { + public TVList getTvListByColumnIndex(List<Integer> columns) { List<TSDataType> types = new ArrayList<>(); List<List<Object>> values = new ArrayList<>(); List<List<BitMap>> bitMaps = null; @@ -197,9 +199,11 @@ public class VectorTVList extends TVList { } /** + * Get the int value at this position in VectorTvList + * * @param rowIndex value index inside this column * @param columnIndex index of the column - * @return + * @return the value at this position in VectorTvList */ public int getIntByValueIndex(int rowIndex, int columnIndex) { int arrayIndex = rowIndex / ARRAY_SIZE; @@ -208,6 +212,13 @@ public class VectorTVList extends TVList { return ((int[]) columnValues.get(arrayIndex))[elementIndex]; } + /** + * Get the long value at this position in VectorTvList + * + * @param rowIndex value index inside this column + * @param columnIndex index of the column + * @return the value at this position in VectorTvList + */ public long getLongByValueIndex(int rowIndex, int columnIndex) { int arrayIndex = rowIndex / ARRAY_SIZE; int elementIndex = rowIndex % ARRAY_SIZE; @@ -215,6 +226,13 @@ public class VectorTVList extends TVList { return ((long[]) columnValues.get(arrayIndex))[elementIndex]; } + /** + * Get the float value at this position in VectorTvList + * + * @param rowIndex value index inside this column + * @param columnIndex index of the column + * @return the value at this position in VectorTvList + */ public float getFloatByValueIndex(int rowIndex, int columnIndex) { int arrayIndex = rowIndex / ARRAY_SIZE; int elementIndex = rowIndex % ARRAY_SIZE; @@ -222,6 +240,13 @@ public class VectorTVList extends TVList { return ((float[]) columnValues.get(arrayIndex))[elementIndex]; } + /** + * Get the double value at this position in VectorTvList + * + * @param rowIndex value index inside this column + * @param columnIndex index of the column + * @return the value at this position in VectorTvList + */ public double getDoubleByValueIndex(int rowIndex, int columnIndex) { int arrayIndex = rowIndex / ARRAY_SIZE; int elementIndex = rowIndex % ARRAY_SIZE; @@ -229,6 +254,13 @@ public class VectorTVList extends TVList { return ((double[]) columnValues.get(arrayIndex))[elementIndex]; } + /** + * Get the Binary value at this position in VectorTvList + * + * @param rowIndex value index inside this column + * @param columnIndex index of the column + * @return the value at this position in VectorTvList + */ public Binary getBinaryByValueIndex(int rowIndex, int columnIndex) { int arrayIndex = rowIndex / ARRAY_SIZE; int elementIndex = rowIndex % ARRAY_SIZE; @@ -236,6 +268,13 @@ public class VectorTVList extends TVList { return ((Binary[]) columnValues.get(arrayIndex))[elementIndex]; } + /** + * Get the boolean value at this position in VectorTvList + * + * @param rowIndex value index inside this column + * @param columnIndex index of the column + * @return the value at this position in VectorTvList + */ public boolean getBooleanByValueIndex(int rowIndex, int columnIndex) { int arrayIndex = rowIndex / ARRAY_SIZE; int elementIndex = rowIndex % ARRAY_SIZE; @@ -243,6 +282,13 @@ public class VectorTVList extends TVList { return ((boolean[]) columnValues.get(arrayIndex))[elementIndex]; } + /** + * Get whether value is marked at this position in VectorTvList + * + * @param rowIndex value index inside this column + * @param columnIndex index of the column + * @return boolean + */ public boolean isValueMarked(int rowIndex, int columnIndex) { if (rowIndex >= size) { return false; @@ -271,6 +317,7 @@ public class VectorTVList extends TVList { indices.get(arrayIndex)[elementIndex] = value; } + @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning @Override public VectorTVList clone() { VectorTVList cloneList = new VectorTVList(dataTypes); @@ -478,11 +525,12 @@ public class VectorTVList extends TVList { @Override protected void releaseLastValueArray() { PrimitiveArrayManager.release(indices.remove(indices.size() - 1)); - for (int i = 0; i < dataTypes.size(); i++) { - PrimitiveArrayManager.release(values.get(i).remove(values.get(i).size() - 1)); + for (List<Object> valueList : values) { + PrimitiveArrayManager.release(valueList.remove(valueList.size() - 1)); } } + @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning @Override public void putVectors(long[] time, BitMap[] bitMaps, Object[] value, int start, int end) { checkExpansion(); @@ -539,27 +587,27 @@ public class VectorTVList extends TVList { switch (dataTypes.get(i)) { case TEXT: Binary[] arrayT = ((Binary[]) columnValues.get(arrayIndex)); - System.arraycopy((Binary[]) value[i], idx, arrayT, elementIndex, remaining); + System.arraycopy(value[i], idx, arrayT, elementIndex, remaining); break; case FLOAT: float[] arrayF = ((float[]) columnValues.get(arrayIndex)); - System.arraycopy((float[]) value[i], idx, arrayF, elementIndex, remaining); + System.arraycopy(value[i], idx, arrayF, elementIndex, remaining); break; case INT32: int[] arrayI = ((int[]) columnValues.get(arrayIndex)); - System.arraycopy((int[]) value[i], idx, arrayI, elementIndex, remaining); + System.arraycopy(value[i], idx, arrayI, elementIndex, remaining); break; case INT64: long[] arrayL = ((long[]) columnValues.get(arrayIndex)); - System.arraycopy((long[]) value[i], idx, arrayL, elementIndex, remaining); + System.arraycopy(value[i], idx, arrayL, elementIndex, remaining); break; case DOUBLE: double[] arrayD = ((double[]) columnValues.get(arrayIndex)); - System.arraycopy((double[]) value[i], idx, arrayD, elementIndex, remaining); + System.arraycopy(value[i], idx, arrayD, elementIndex, remaining); break; case BOOLEAN: boolean[] arrayB = ((boolean[]) columnValues.get(arrayIndex)); - System.arraycopy((boolean[]) value[i], idx, arrayB, elementIndex, remaining); + System.arraycopy(value[i], idx, arrayB, elementIndex, remaining); break; default: break; 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 0a7f078..e9a6e5b 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 @@ -198,7 +198,6 @@ public class LogReplayer { + IoTDBConstant.PATH_SEPARATOR + tPlan.getMeasurements()[i])); columnIndex++; - continue; } else if (mNodes[i].getSchema().getType() == TSDataType.VECTOR) { List<TSDataType> datatypes = mNodes[i].getSchema().getValueTSDataTypeList(); for (int j = 0; j < datatypes.size(); j++) { @@ -214,7 +213,6 @@ public class LogReplayer { } columnIndex++; } - continue; } else if (mNodes[i].getSchema().getType() != tPlan.getDataTypes()[columnIndex]) { tPlan.markFailedMeasurementInsertion( i, @@ -222,8 +220,10 @@ public class LogReplayer { mNodes[i].getName(), tPlan.getDataTypes()[columnIndex], mNodes[i].getSchema().getType())); + columnIndex++; + } else { + columnIndex++; } - columnIndex++; } } } diff --git a/server/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java b/server/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java index 98ac2da..963d2bb 100644 --- a/server/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java +++ b/server/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java @@ -71,7 +71,7 @@ public class PrimitiveMemTableTest { for (int i = 0; i < count; i++) { series.write(i, i); } - IPointReader it = series.getSortedTVListForQuery().getIterator(); + IPointReader it = series.getSortedTvListForQuery().getIterator(); int i = 0; while (it.hasNextTimeValuePair()) { Assert.assertEquals(i, it.nextTimeValuePair().getTimestamp()); diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java index a512f6d..ab13c55 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java @@ -240,6 +240,7 @@ public class MManagerBasicTest { assertFalse(manager.isPathExist(new PartialPath("root.1"))); } + @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning @Test public void testCreateAlignedTimeseries() throws IllegalPathException { MManager manager = IoTDB.metaManager; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Binary.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Binary.java index fde1041..0411e40 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Binary.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/Binary.java @@ -30,7 +30,7 @@ import java.util.Arrays; public class Binary implements Comparable<Binary>, Serializable { private static final long serialVersionUID = 6394197743397020735L; - public static Binary EMPTY_VALUE = new Binary(""); + public static final Binary EMPTY_VALUE = new Binary(""); private byte[] values; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java index 5177260..a7f2589 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.iotdb.tsfile.utils; import java.util.Arrays; @@ -109,7 +110,7 @@ public class BitMap { @Override public String toString() { - StringBuffer res = new StringBuffer(); + StringBuilder res = new StringBuilder(); for (int i = 0; i < size; i++) { res.append(isMarked(i) ? 1 : 0); }
