This is an automated email from the ASF dual-hosted git repository.
jackietien 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 8f15cceca31 Refactor DeviceEntry's attributeValues from List<Binary>
to Binary[] to reduce the cost of ramBytesUsed()
8f15cceca31 is described below
commit 8f15cceca31485c94beadc6044d862a8d8705115
Author: Caideyipi <[email protected]>
AuthorDate: Sat Mar 15 21:36:54 2025 +0800
Refactor DeviceEntry's attributeValues from List<Binary> to Binary[] to
reduce the cost of ramBytesUsed()
---
.../relational/AbstractAggTableScanOperator.java | 17 +++----
.../relational/AbstractTableScanOperator.java | 2 +-
.../relational/LastQueryAggTableScanOperator.java | 6 +--
.../relational/metadata/AlignedDeviceEntry.java | 20 ++------
.../plan/relational/metadata/DeviceEntry.java | 26 +++++------
.../metadata/NonAlignedAlignedDeviceEntry.java | 20 ++------
.../fetcher/DeviceInCacheFilterVisitor.java | 4 +-
.../metadata/fetcher/TableDeviceSchemaFetcher.java | 5 +-
.../distribute/TableDistributedPlanGenerator.java | 8 ++--
.../read/resp/info/impl/ShowDevicesResult.java | 2 +-
.../analyzer/MockTableModelDataPartition.java | 54 ++++++++++++----------
.../plan/relational/analyzer/TSBSMetadata.java | 22 ++++-----
.../plan/relational/analyzer/TestMatadata.java | 12 ++---
13 files changed, 81 insertions(+), 117 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAggTableScanOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAggTableScanOperator.java
index ac4b611b2fd..640b38cf698 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAggTableScanOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAggTableScanOperator.java
@@ -56,7 +56,6 @@ import org.apache.tsfile.write.schema.IMeasurementSchema;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@@ -175,7 +174,7 @@ public abstract class AbstractAggTableScanOperator extends
AbstractDataSourceOpe
if (this.deviceEntries.isEmpty() ||
this.deviceEntries.get(this.currentDeviceIndex) == null) {
// for device which is not exist
- deviceEntry = new AlignedDeviceEntry(new StringArrayDeviceID(""),
Collections.emptyList());
+ deviceEntry = new AlignedDeviceEntry(new StringArrayDeviceID(""), new
Binary[0]);
} else {
deviceEntry = this.deviceEntries.get(this.currentDeviceIndex);
}
@@ -361,10 +360,8 @@ public abstract class AbstractAggTableScanOperator extends
AbstractDataSourceOpe
id == null ? null : new Binary(id, TSFileConfig.STRING_CHARSET));
case ATTRIBUTE:
Binary attr =
- deviceEntries
- .get(currentDeviceIndex)
- .getAttributeColumnValues()
- .get(aggColumnsIndexArray[columnIdx]);
+ deviceEntries.get(currentDeviceIndex)
+ .getAttributeColumnValues()[aggColumnsIndexArray[columnIdx]];
return
getIdOrAttrColumn(inputRegion.getTimeColumn().getPositionCount(), attr);
case FIELD:
return inputRegion.getColumn(aggColumnsIndexArray[columnIdx]);
@@ -428,10 +425,8 @@ public abstract class AbstractAggTableScanOperator extends
AbstractDataSourceOpe
timeStatistics, id == null ? null : new Binary(id,
TSFileConfig.STRING_CHARSET));
case ATTRIBUTE:
Binary attr =
- deviceEntries
- .get(currentDeviceIndex)
- .getAttributeColumnValues()
- .get(aggColumnsIndexArray[columnIdx]);
+ deviceEntries.get(currentDeviceIndex)
+ .getAttributeColumnValues()[aggColumnsIndexArray[columnIdx]];
return getStatistics(timeStatistics, attr);
case FIELD:
return valueStatistics[aggColumnsIndexArray[columnIdx]];
@@ -656,7 +651,7 @@ public abstract class AbstractAggTableScanOperator extends
AbstractDataSourceOpe
}
} else {
Binary attribute =
-
deviceEntries.get(deviceIndex).getAttributeColumnValues().get(groupingKeyIndex[i]);
+
deviceEntries.get(deviceIndex).getAttributeColumnValues()[groupingKeyIndex[i]];
if (attribute == null) {
columnBuilders[i].appendNull();
} else {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractTableScanOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractTableScanOperator.java
index d8f7a5f3359..f8de2d57572 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractTableScanOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractTableScanOperator.java
@@ -217,7 +217,7 @@ public abstract class AbstractTableScanOperator extends
AbstractSeriesScanOperat
break;
case ATTRIBUTE:
Binary attributeColumnValue =
-
currentDeviceEntry.getAttributeColumnValues().get(columnsIndexArray[i]);
+
currentDeviceEntry.getAttributeColumnValues()[columnsIndexArray[i]];
valueColumns[i] = getIdOrAttributeValueColumn(attributeColumnValue,
positionCount);
break;
case FIELD:
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/LastQueryAggTableScanOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/LastQueryAggTableScanOperator.java
index b74fb4bdf54..dd1dac4e652 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/LastQueryAggTableScanOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/LastQueryAggTableScanOperator.java
@@ -191,10 +191,8 @@ public class LastQueryAggTableScanOperator extends
AbstractAggTableScanOperator
break;
case ATTRIBUTE:
Binary attribute =
- cachedDeviceEntries
- .get(currentHitCacheIndex)
- .getAttributeColumnValues()
- .get(aggColumnsIndexArray[columnIdx]);
+ cachedDeviceEntries.get(currentHitCacheIndex)
+ .getAttributeColumnValues()[aggColumnsIndexArray[columnIdx]];
if (attribute == null) {
if (aggregator.getStep().isOutputPartial()) {
columnBuilder.writeBinary(
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/AlignedDeviceEntry.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/AlignedDeviceEntry.java
index fcb9375dd55..8335167fb05 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/AlignedDeviceEntry.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/AlignedDeviceEntry.java
@@ -22,12 +22,11 @@ package
org.apache.iotdb.db.queryengine.plan.relational.metadata;
import org.apache.tsfile.file.metadata.IDeviceID;
import org.apache.tsfile.utils.Binary;
-import java.util.List;
-import java.util.Objects;
+import java.util.Arrays;
public class AlignedDeviceEntry extends DeviceEntry {
- public AlignedDeviceEntry(IDeviceID deviceID, List<Binary>
attributeColumnValues) {
+ public AlignedDeviceEntry(IDeviceID deviceID, Binary[]
attributeColumnValues) {
super(deviceID, attributeColumnValues);
}
@@ -37,20 +36,7 @@ public class AlignedDeviceEntry extends DeviceEntry {
+ "deviceID="
+ deviceID
+ ", attributeColumnValues="
- + attributeColumnValues
+ + Arrays.toString(attributeColumnValues)
+ '}';
}
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null || getClass() != obj.getClass()) {
- return false;
- }
- final AlignedDeviceEntry that = (AlignedDeviceEntry) obj;
- return Objects.equals(deviceID, that.deviceID)
- && Objects.equals(attributeColumnValues, that.attributeColumnValues);
- }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/DeviceEntry.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/DeviceEntry.java
index f6d8f594d9a..3030df74ae1 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/DeviceEntry.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/DeviceEntry.java
@@ -31,8 +31,7 @@ import org.apache.tsfile.utils.RamUsageEstimator;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Arrays;
import java.util.Objects;
import static org.apache.tsfile.utils.ReadWriteIOUtils.readBytes;
@@ -51,9 +50,9 @@ public abstract class DeviceEntry implements Accountable {
RamUsageEstimator.shallowSizeOfInstance(DeviceEntry.class);
protected final IDeviceID deviceID;
- protected final List<Binary> attributeColumnValues;
+ protected final Binary[] attributeColumnValues;
- public DeviceEntry(final IDeviceID deviceID, final List<Binary>
attributeColumnValues) {
+ public DeviceEntry(final IDeviceID deviceID, final Binary[]
attributeColumnValues) {
this.deviceID = deviceID;
this.attributeColumnValues = attributeColumnValues;
}
@@ -68,13 +67,13 @@ public abstract class DeviceEntry implements Accountable {
return segmentIndex < deviceID.segmentNum() ?
deviceID.segment(segmentIndex) : null;
}
- public List<Binary> getAttributeColumnValues() {
+ public Binary[] getAttributeColumnValues() {
return attributeColumnValues;
}
public void serialize(final ByteBuffer byteBuffer) {
deviceID.serialize(byteBuffer);
- write(attributeColumnValues.size(), byteBuffer);
+ write(attributeColumnValues.length, byteBuffer);
for (final Binary value : attributeColumnValues) {
serializeBinary(byteBuffer, value);
}
@@ -87,7 +86,7 @@ public abstract class DeviceEntry implements Accountable {
public void serialize(final DataOutputStream stream) throws IOException {
deviceID.serialize(stream);
- write(attributeColumnValues.size(), stream);
+ write(attributeColumnValues.length, stream);
for (final Binary value : attributeColumnValues) {
serializeBinary(stream, value);
}
@@ -101,9 +100,10 @@ public abstract class DeviceEntry implements Accountable {
public static DeviceEntry deserialize(final ByteBuffer byteBuffer) {
final IDeviceID iDeviceID = StringArrayDeviceID.deserialize(byteBuffer);
int size = readInt(byteBuffer);
- final List<Binary> attributeColumnValues = new ArrayList<>(size);
+ final Binary[] attributeColumnValues = new Binary[size];
while (size-- > 0) {
- attributeColumnValues.add(deserializeBinary(byteBuffer));
+ attributeColumnValues[attributeColumnValues.length - size - 1] =
+ deserializeBinary(byteBuffer);
}
return constructDeviceEntry(iDeviceID, attributeColumnValues,
readInt(byteBuffer));
}
@@ -140,7 +140,7 @@ public abstract class DeviceEntry implements Accountable {
}
private static DeviceEntry constructDeviceEntry(
- IDeviceID deviceID, List<Binary> attributeColumnValues, int ordinal) {
+ IDeviceID deviceID, Binary[] attributeColumnValues, int ordinal) {
switch (DeviceEntryType.values()[ordinal]) {
case ALIGNED:
return new AlignedDeviceEntry(deviceID, attributeColumnValues);
@@ -156,7 +156,7 @@ public abstract class DeviceEntry implements Accountable {
public long ramBytesUsed() {
return INSTANCE_SIZE
+ deviceID.ramBytesUsed()
- + RamUsageEstimator.sizeOfCollection(attributeColumnValues);
+ + RamUsageEstimator.sizeOf(attributeColumnValues);
}
@Override
@@ -169,11 +169,11 @@ public abstract class DeviceEntry implements Accountable {
}
final DeviceEntry that = (DeviceEntry) obj;
return Objects.equals(deviceID, that.deviceID)
- && Objects.equals(attributeColumnValues, that.attributeColumnValues);
+ && Arrays.equals(attributeColumnValues, that.attributeColumnValues);
}
@Override
public int hashCode() {
- return Objects.hash(deviceID, attributeColumnValues);
+ return Objects.hash(deviceID, Arrays.hashCode(attributeColumnValues));
}
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/NonAlignedAlignedDeviceEntry.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/NonAlignedAlignedDeviceEntry.java
index 9c6a2863922..6ed2d97a4ed 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/NonAlignedAlignedDeviceEntry.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/NonAlignedAlignedDeviceEntry.java
@@ -22,12 +22,11 @@ package
org.apache.iotdb.db.queryengine.plan.relational.metadata;
import org.apache.tsfile.file.metadata.IDeviceID;
import org.apache.tsfile.utils.Binary;
-import java.util.List;
-import java.util.Objects;
+import java.util.Arrays;
public class NonAlignedAlignedDeviceEntry extends DeviceEntry {
- public NonAlignedAlignedDeviceEntry(IDeviceID deviceID, List<Binary>
attributeColumnValues) {
+ public NonAlignedAlignedDeviceEntry(IDeviceID deviceID, Binary[]
attributeColumnValues) {
super(deviceID, attributeColumnValues);
}
@@ -37,20 +36,7 @@ public class NonAlignedAlignedDeviceEntry extends
DeviceEntry {
+ "deviceID="
+ deviceID
+ ", attributeColumnValues="
- + attributeColumnValues
+ + Arrays.toString(attributeColumnValues)
+ '}';
}
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null || getClass() != obj.getClass()) {
- return false;
- }
- final NonAlignedAlignedDeviceEntry that = (NonAlignedAlignedDeviceEntry)
obj;
- return Objects.equals(deviceID, that.deviceID)
- && Objects.equals(attributeColumnValues, that.attributeColumnValues);
- }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/DeviceInCacheFilterVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/DeviceInCacheFilterVisitor.java
index fbdf8298d50..29979b8a676 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/DeviceInCacheFilterVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/DeviceInCacheFilterVisitor.java
@@ -63,9 +63,7 @@ public class DeviceInCacheFilterVisitor extends
SchemaFilterVisitor<DeviceEntry>
.getChild()
.accept(
StringValueFilterVisitor.getInstance(),
- deviceEntry
- .getAttributeColumnValues()
- .get(attributeIndexMap.get(filter.getKey()))
+
deviceEntry.getAttributeColumnValues()[attributeIndexMap.get(filter.getKey())]
.getStringValue(TSFileConfig.STRING_CHARSET));
}
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableDeviceSchemaFetcher.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableDeviceSchemaFetcher.java
index 1ed1767ff4b..0731c725432 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableDeviceSchemaFetcher.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableDeviceSchemaFetcher.java
@@ -340,8 +340,7 @@ public class TableDeviceSchemaFetcher {
final DeviceEntry deviceEntry =
new AlignedDeviceEntry(
- deviceID,
-
attributeColumns.stream().map(attributeMap::get).collect(Collectors.toList()));
+ deviceID,
attributeColumns.stream().map(attributeMap::get).toArray(Binary[]::new));
// TODO table metadata: process cases that selected attr columns different
from those used for
// predicate
if (check.test(deviceEntry)) {
@@ -432,7 +431,7 @@ public class TableDeviceSchemaFetcher {
final DeviceEntry deviceEntry =
new AlignedDeviceEntry(
deviceID,
-
attributeColumns.stream().map(attributeMap::get).collect(Collectors.toList()));
+
attributeColumns.stream().map(attributeMap::get).toArray(Binary[]::new));
mppQueryContext.reserveMemoryForFrontEnd(deviceEntry.ramBytesUsed());
deviceEntryList.add(deviceEntry);
// Only cache those exact device query
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
index f18d9b398fa..ef4e3936aa0 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
@@ -1081,12 +1081,10 @@ public class TableDistributedPlanGenerator
} else {
orderingRules.add(
deviceEntry ->
- deviceEntry.getAttributeColumnValues().get(idx) == null
+ deviceEntry.getAttributeColumnValues()[idx] == null
? null
- : deviceEntry
- .getAttributeColumnValues()
- .get(idx)
- .getStringValue(TSFileConfig.STRING_CHARSET));
+ :
deviceEntry.getAttributeColumnValues()[idx].getStringValue(
+ TSFileConfig.STRING_CHARSET));
}
}
Comparator<DeviceEntry> comparator = null;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/ShowDevicesResult.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/ShowDevicesResult.java
index d9003b4f450..3ff8add3728 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/ShowDevicesResult.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/read/resp/info/impl/ShowDevicesResult.java
@@ -87,7 +87,7 @@ public class ShowDevicesResult extends ShowSchemaResult
implements IDeviceSchema
entry.getDeviceID().toString(), null, -1, (String[])
entry.getDeviceID().getSegments());
final Map<String, Binary> attributeProviderMap = new HashMap<>();
for (int i = 0; i < attributeColumns.size(); ++i) {
- attributeProviderMap.put(attributeColumns.get(i),
entry.getAttributeColumnValues().get(i));
+ attributeProviderMap.put(attributeColumns.get(i),
entry.getAttributeColumnValues()[i]);
}
result.setAttributeProvider(attributeProviderMap::get);
return result;
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/MockTableModelDataPartition.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/MockTableModelDataPartition.java
index c7fddc62d30..a3ced149f84 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/MockTableModelDataPartition.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/MockTableModelDataPartition.java
@@ -64,30 +64,36 @@ public class MockTableModelDataPartition {
DEVICES_REGION_GROUP.add(Arrays.asList(DEVICE_2, DEVICE_1));
}
- static final List<Binary> DEVICE_1_ATTRIBUTES =
- Arrays.asList(
- new Binary("high", TSFileConfig.STRING_CHARSET),
- new Binary("big", TSFileConfig.STRING_CHARSET));
- static final List<Binary> DEVICE_2_ATTRIBUTES =
- Arrays.asList(
- new Binary("high", TSFileConfig.STRING_CHARSET),
- new Binary("small", TSFileConfig.STRING_CHARSET));
- static final List<Binary> DEVICE_3_ATTRIBUTES =
- Arrays.asList(
- new Binary("low", TSFileConfig.STRING_CHARSET),
- new Binary("small", TSFileConfig.STRING_CHARSET));
- static final List<Binary> DEVICE_4_ATTRIBUTES =
- Arrays.asList(
- new Binary("low", TSFileConfig.STRING_CHARSET),
- new Binary("big", TSFileConfig.STRING_CHARSET));
- static final List<Binary> DEVICE_5_ATTRIBUTES =
- Arrays.asList(
- new Binary("mid", TSFileConfig.STRING_CHARSET),
- new Binary("big", TSFileConfig.STRING_CHARSET));
- static final List<Binary> DEVICE_6_ATTRIBUTES =
- Arrays.asList(
- new Binary("mid", TSFileConfig.STRING_CHARSET),
- new Binary("small", TSFileConfig.STRING_CHARSET));
+ static final Binary[] DEVICE_1_ATTRIBUTES =
+ new Binary[] {
+ new Binary("high", TSFileConfig.STRING_CHARSET),
+ new Binary("big", TSFileConfig.STRING_CHARSET)
+ };
+ static final Binary[] DEVICE_2_ATTRIBUTES =
+ new Binary[] {
+ new Binary("high", TSFileConfig.STRING_CHARSET),
+ new Binary("small", TSFileConfig.STRING_CHARSET)
+ };
+ static final Binary[] DEVICE_3_ATTRIBUTES =
+ new Binary[] {
+ new Binary("low", TSFileConfig.STRING_CHARSET),
+ new Binary("small", TSFileConfig.STRING_CHARSET)
+ };
+ static final Binary[] DEVICE_4_ATTRIBUTES =
+ new Binary[] {
+ new Binary("low", TSFileConfig.STRING_CHARSET),
+ new Binary("big", TSFileConfig.STRING_CHARSET)
+ };
+ static final Binary[] DEVICE_5_ATTRIBUTES =
+ new Binary[] {
+ new Binary("mid", TSFileConfig.STRING_CHARSET),
+ new Binary("big", TSFileConfig.STRING_CHARSET)
+ };
+ static final Binary[] DEVICE_6_ATTRIBUTES =
+ new Binary[] {
+ new Binary("mid", TSFileConfig.STRING_CHARSET),
+ new Binary("small", TSFileConfig.STRING_CHARSET)
+ };
private static final TRegionReplicaSet DATA_REGION_GROUP_1 =
genDataRegionGroup(10, 1, 2);
private static final TRegionReplicaSet DATA_REGION_GROUP_2 =
genDataRegionGroup(11, 3, 2);
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TSBSMetadata.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TSBSMetadata.java
index b6006cb00b6..53bb94b2ef8 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TSBSMetadata.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TSBSMetadata.java
@@ -291,10 +291,8 @@ public class TSBSMetadata implements Metadata {
&& attributeColumns.isEmpty()) {
// r01, r02
return ImmutableList.of(
- new AlignedDeviceEntry(
- new StringArrayDeviceID(T1_DEVICE_1.split("\\.")),
ImmutableList.of()),
- new AlignedDeviceEntry(
- new StringArrayDeviceID(T1_DEVICE_2.split("\\.")),
ImmutableList.of()));
+ new AlignedDeviceEntry(new
StringArrayDeviceID(T1_DEVICE_1.split("\\.")), new Binary[0]),
+ new AlignedDeviceEntry(new
StringArrayDeviceID(T1_DEVICE_2.split("\\.")), new Binary[0]));
} else if (expressionList.size() == 1
&& expressionList.get(0).toString().equals("(\"fleet\" = 'South')")
&& attributeColumns.size() == 1
@@ -303,32 +301,32 @@ public class TSBSMetadata implements Metadata {
return ImmutableList.of(
new AlignedDeviceEntry(
new StringArrayDeviceID(T1_DEVICE_1.split("\\.")),
- ImmutableList.of(new Binary("2000",
TSFileConfig.STRING_CHARSET))),
+ new Binary[] {new Binary("2000", TSFileConfig.STRING_CHARSET)}),
new AlignedDeviceEntry(
new StringArrayDeviceID(T1_DEVICE_2.split("\\.")),
- ImmutableList.of(new Binary("1000",
TSFileConfig.STRING_CHARSET))));
+ new Binary[] {new Binary("1000", TSFileConfig.STRING_CHARSET)}));
} else {
// others (The return result maybe not correct in actual, but it is
convenient for test of
// DistributionPlan)
return Arrays.asList(
new AlignedDeviceEntry(
new StringArrayDeviceID(T1_DEVICE_1.split("\\.")),
- ImmutableList.of(Binary.EMPTY_VALUE, Binary.EMPTY_VALUE)),
+ new Binary[] {Binary.EMPTY_VALUE, Binary.EMPTY_VALUE}),
new AlignedDeviceEntry(
new StringArrayDeviceID(T1_DEVICE_2.split("\\.")),
- ImmutableList.of(Binary.EMPTY_VALUE, Binary.EMPTY_VALUE)),
+ new Binary[] {Binary.EMPTY_VALUE, Binary.EMPTY_VALUE}),
new AlignedDeviceEntry(
new StringArrayDeviceID(T1_DEVICE_3.split("\\.")),
- ImmutableList.of(Binary.EMPTY_VALUE, Binary.EMPTY_VALUE)),
+ new Binary[] {Binary.EMPTY_VALUE, Binary.EMPTY_VALUE}),
new AlignedDeviceEntry(
new StringArrayDeviceID(T2_DEVICE_1.split("\\.")),
- ImmutableList.of(Binary.EMPTY_VALUE, Binary.EMPTY_VALUE)),
+ new Binary[] {Binary.EMPTY_VALUE, Binary.EMPTY_VALUE}),
new AlignedDeviceEntry(
new StringArrayDeviceID(T2_DEVICE_2.split("\\.")),
- ImmutableList.of(Binary.EMPTY_VALUE, Binary.EMPTY_VALUE)),
+ new Binary[] {Binary.EMPTY_VALUE, Binary.EMPTY_VALUE}),
new AlignedDeviceEntry(
new StringArrayDeviceID(T2_DEVICE_3.split("\\.")),
- ImmutableList.of(Binary.EMPTY_VALUE, Binary.EMPTY_VALUE)));
+ new Binary[] {Binary.EMPTY_VALUE, Binary.EMPTY_VALUE}));
}
}
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
index ada3122f055..b5bc2c66f5c 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
@@ -66,6 +66,7 @@ import org.apache.tsfile.file.metadata.StringArrayDeviceID;
import org.apache.tsfile.read.common.type.StringType;
import org.apache.tsfile.read.common.type.Type;
import org.apache.tsfile.read.common.type.TypeFactory;
+import org.apache.tsfile.utils.Binary;
import org.mockito.Mockito;
import java.util.Arrays;
@@ -284,18 +285,17 @@ public class TestMatadata implements Metadata {
if (expressionList.isEmpty()) {
return ImmutableList.of(
new AlignedDeviceEntry(
- IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_3),
ImmutableList.of()),
+ IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_3), new
Binary[0]),
new AlignedDeviceEntry(
- IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_6),
ImmutableList.of()),
+ IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_6), new
Binary[0]),
new NonAlignedAlignedDeviceEntry(
- IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_5),
ImmutableList.of()));
+ IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_5), new
Binary[0]));
}
return ImmutableList.of(
+ new
AlignedDeviceEntry(IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_3), new
Binary[0]),
new AlignedDeviceEntry(
- IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_3),
ImmutableList.of()),
- new AlignedDeviceEntry(
- IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_6),
ImmutableList.of()));
+ IDeviceID.Factory.DEFAULT_FACTORY.create(DEVICE_6), new
Binary[0]));
}
if (expressionList.size() == 2) {