Skip to content

Commit 2841855

Browse files
committed
simplify process
1 parent 081b28f commit 2841855

File tree

6 files changed

+21
-16
lines changed

6 files changed

+21
-16
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/CteScanOperator.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.apache.iotdb.db.utils.cte.CteDataStore;
3131
import org.apache.iotdb.db.utils.cte.MemoryReader;
3232

33-
import org.apache.tsfile.common.conf.TSFileDescriptor;
3433
import org.apache.tsfile.read.common.block.TsBlock;
3534
import org.apache.tsfile.utils.RamUsageEstimator;
3635
import org.slf4j.Logger;
@@ -45,9 +44,6 @@ public class CteScanOperator extends AbstractSourceOperator {
4544
private final int dataStoreRefCount;
4645
private CteDataReader dataReader;
4746

48-
private final long maxReturnSize =
49-
TSFileDescriptor.getInstance().getConfig().getMaxTsBlockSizeInBytes();
50-
5147
public CteScanOperator(
5248
OperatorContext operatorContext, PlanNodeId sourceId, CteDataStore dataStore) {
5349
this.operatorContext = operatorContext;
@@ -96,7 +92,8 @@ public long calculateMaxPeekMemory() {
9692

9793
@Override
9894
public long calculateMaxReturnSize() {
99-
return maxReturnSize;
95+
// The returned object is a reference to TsBlock in CteDataReader
96+
return RamUsageEstimator.NUM_BYTES_OBJECT_REF;
10097
}
10198

10299
@Override

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@
9393
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.MigrateRegion;
9494
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Parameter;
9595
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PipeStatement;
96-
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Query;
9796
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Prepare;
97+
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Query;
9898
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ReconstructRegion;
9999
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RelationalAuthorStatement;
100100
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.RemoveAINode;
@@ -160,7 +160,6 @@
160160
import java.util.Map;
161161
import java.util.Set;
162162
import java.util.concurrent.BlockingDeque;
163-
import java.util.Map;
164163
import java.util.concurrent.ConcurrentHashMap;
165164
import java.util.concurrent.ExecutorService;
166165
import java.util.concurrent.LinkedBlockingDeque;

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/CteMaterializer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,17 @@ private List<Integer> adjustColumnIndexMapping(List<Integer> originalIndexList)
250250
return originalIndexList;
251251
}
252252

253+
boolean isSequential = true;
254+
for (int i = 0; i < originalIndexList.size(); i++) {
255+
if (originalIndexList.get(i) != i) {
256+
isSequential = false;
257+
break;
258+
}
259+
}
260+
if (isSequential) {
261+
return originalIndexList;
262+
}
263+
253264
// Create LinkedHashMap to maintain value-position mapping
254265
Map<Integer, Integer> valueToPositionMap = new LinkedHashMap<>();
255266
IntStream.range(0, originalIndexList.size())

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ private RelationPlan processNamedQuery(Table table, Query namedQuery, Scope scop
256256
}
257257

258258
if (namedQuery.isMaterialized() && namedQuery.isDone()) {
259-
RelationPlan materializedCtePlan = processMaterializedCte(table, scope);
259+
RelationPlan materializedCtePlan = processMaterializedCte(table, namedQuery, scope);
260260
if (materializedCtePlan != null) {
261261
return materializedCtePlan;
262262
}
@@ -265,8 +265,8 @@ private RelationPlan processNamedQuery(Table table, Query namedQuery, Scope scop
265265
return processRegularCte(table, namedQuery, scope);
266266
}
267267

268-
private RelationPlan processMaterializedCte(Table table, Scope scope) {
269-
CteDataStore dataStore = queryContext.getCteDataStore(table);
268+
private RelationPlan processMaterializedCte(Table table, Query query, Scope scope) {
269+
CteDataStore dataStore = query.getCteDataStore();
270270
if (dataStore == null) {
271271
return null;
272272
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/cte/CteDataStore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public CteDataStore(TableSchema tableSchema, List<Integer> columnIndex2TsBlockCo
5353

5454
public boolean addTsBlock(TsBlock tsBlock) {
5555
IoTDBConfig iotConfig = IoTDBDescriptor.getInstance().getConfig();
56-
long bytesSize = tsBlock.getRetainedSizeInBytes();
56+
long bytesSize = tsBlock.getSizeInBytes();
5757
int rows = tsBlock.getPositionCount();
5858
if (bytesSize + cachedBytes >= iotConfig.getCteBufferSize()
5959
|| rows + cachedRows >= iotConfig.getMaxRowsInCteBuffer()) {

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/CteScanOperatorTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.apache.iotdb.db.utils.cte.CteDataStore;
3030

3131
import com.google.common.collect.ImmutableList;
32-
import org.apache.tsfile.common.conf.TSFileDescriptor;
3332
import org.apache.tsfile.enums.TSDataType;
3433
import org.apache.tsfile.read.common.block.TsBlock;
3534
import org.apache.tsfile.read.common.block.TsBlockBuilder;
@@ -40,6 +39,7 @@
4039
import org.apache.tsfile.read.common.type.StringType;
4140
import org.apache.tsfile.read.common.type.TimestampType;
4241
import org.apache.tsfile.utils.Binary;
42+
import org.apache.tsfile.utils.RamUsageEstimator;
4343
import org.junit.After;
4444
import org.junit.Before;
4545
import org.junit.Test;
@@ -157,11 +157,9 @@ public void testMemory() throws Exception {
157157

158158
// maxPeekMemory + maxReturnSize + retainedSize
159159
long maxPeekMemory = cteScanOperator.calculateMaxPeekMemory();
160-
assertEquals(
161-
TSFileDescriptor.getInstance().getConfig().getMaxTsBlockSizeInBytes(), maxPeekMemory);
160+
assertEquals(RamUsageEstimator.NUM_BYTES_OBJECT_REF, maxPeekMemory);
162161
long maxReturnSize = cteScanOperator.calculateMaxReturnSize();
163-
assertEquals(
164-
TSFileDescriptor.getInstance().getConfig().getMaxTsBlockSizeInBytes(), maxReturnSize);
162+
assertEquals(RamUsageEstimator.NUM_BYTES_OBJECT_REF, maxReturnSize);
165163
long retainedSize = cteScanOperator.calculateRetainedSizeAfterCallingNext();
166164
assertEquals(0L, retainedSize);
167165

0 commit comments

Comments
 (0)