diff --git a/java/common/src/main/java/org/apache/tsfile/block/column/Column.java b/java/common/src/main/java/org/apache/tsfile/block/column/Column.java index f92d3b5c0..ee8fbe783 100644 --- a/java/common/src/main/java/org/apache/tsfile/block/column/Column.java +++ b/java/common/src/main/java/org/apache/tsfile/block/column/Column.java @@ -20,7 +20,7 @@ package org.apache.tsfile.block.column; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsPrimitiveType; import java.util.Arrays; @@ -59,7 +59,7 @@ default double getDouble(int position) { } /** Gets a Binary at {@code position}. */ - default Binary getBinary(int position) { + default PooledBinary getBinary(int position) { throw new UnsupportedOperationException(getClass().getName()); } @@ -94,7 +94,7 @@ default double[] getDoubles() { } /** Gets the Binary list. */ - default Binary[] getBinaries() { + default PooledBinary[] getBinaries() { throw new UnsupportedOperationException(getClass().getName()); } diff --git a/java/common/src/main/java/org/apache/tsfile/block/column/ColumnBuilder.java b/java/common/src/main/java/org/apache/tsfile/block/column/ColumnBuilder.java index df8ecc113..a35b232a7 100644 --- a/java/common/src/main/java/org/apache/tsfile/block/column/ColumnBuilder.java +++ b/java/common/src/main/java/org/apache/tsfile/block/column/ColumnBuilder.java @@ -20,7 +20,7 @@ package org.apache.tsfile.block.column; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsPrimitiveType; public interface ColumnBuilder { @@ -51,7 +51,7 @@ default ColumnBuilder writeDouble(double value) { } /** Write a Binary to the current entry; */ - default ColumnBuilder writeBinary(Binary value) { + default ColumnBuilder writeBinary(PooledBinary value) { throw new UnsupportedOperationException(getClass().getName()); } diff --git a/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java b/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java index 226862ff1..39608690d 100644 --- a/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java +++ b/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java @@ -79,7 +79,7 @@ public static TsPrimitiveType getByType(TSDataType dataType, Object v) { case TEXT: case BLOB: case STRING: - return new TsPrimitiveType.TsBinary((Binary) v); + return new TsPrimitiveType.TsBinary((PooledBinary) v); case VECTOR: return new TsPrimitiveType.TsVector((TsPrimitiveType[]) v); default: @@ -107,7 +107,7 @@ public double getDouble() { throw new UnsupportedOperationException("getDouble() is not supported for current sub-class"); } - public Binary getBinary() { + public PooledBinary getBinary() { throw new UnsupportedOperationException("getBinary() is not supported for current sub-class"); } @@ -135,7 +135,7 @@ public void setDouble(double val) { throw new UnsupportedOperationException("setDouble() is not supported for current sub-class"); } - public void setBinary(Binary val) { + public void setBinary(PooledBinary val) { throw new UnsupportedOperationException("setBinary() is not supported for current sub-class"); } @@ -538,28 +538,28 @@ public boolean equals(Object anObject) { public static class TsBinary extends TsPrimitiveType { - private Binary value; + private PooledBinary value; public TsBinary() {} - public TsBinary(Binary value) { + public TsBinary(PooledBinary value) { this.value = value; } @Override - public Binary getBinary() { + public PooledBinary getBinary() { return value; } @Override - public void setBinary(Binary val) { + public void setBinary(PooledBinary val) { this.value = val; } @Override public void setObject(Object val) { - if (val instanceof Binary) { - setBinary((Binary) val); + if (val instanceof PooledBinary) { + setBinary((PooledBinary) val); return; } throw new UnSupportedDataTypeException("TsBinary can only be set Binary value"); diff --git a/java/tools/src/main/java/org/apache/tsfile/tools/TsFileTool.java b/java/tools/src/main/java/org/apache/tsfile/tools/TsFileTool.java index 4366cee95..c59b823a0 100644 --- a/java/tools/src/main/java/org/apache/tsfile/tools/TsFileTool.java +++ b/java/tools/src/main/java/org/apache/tsfile/tools/TsFileTool.java @@ -22,7 +22,7 @@ import org.apache.tsfile.file.metadata.TableSchema; import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.write.TsFileWriter; import org.apache.tsfile.write.record.Tablet; import org.apache.tsfile.write.schema.IMeasurementSchema; @@ -270,7 +270,7 @@ public static Object getValue( return Boolean.valueOf(i); case TEXT: if (columnCategory.equals(Tablet.ColumnCategory.MEASUREMENT)) { - return new Binary(String.valueOf(i), StandardCharsets.UTF_8); + return new PooledBinary(String.valueOf(i), StandardCharsets.UTF_8); } else { return String.valueOf(i); } diff --git a/java/tsfile/src/main/codegen/dataModel/AllFilter.tdd b/java/tsfile/src/main/codegen/dataModel/AllFilter.tdd index cb5815bcf..aafc666e8 100644 --- a/java/tsfile/src/main/codegen/dataModel/AllFilter.tdd +++ b/java/tsfile/src/main/codegen/dataModel/AllFilter.tdd @@ -20,36 +20,43 @@ "filters": [ { "dataType": "boolean", + "valueType": "boolean", "javaBoxName": "Boolean", "classSerializeName": "BOOLEAN" }, { "dataType": "int", + "valueType": "int", "javaBoxName": "Integer", "classSerializeName": "INTEGER" }, { "dataType": "long", + "valueType": "long", "javaBoxName": "Long", "classSerializeName": "LONG" }, { "dataType": "double", + "valueType": "double", "javaBoxName": "Double", "classSerializeName": "DOUBLE" }, { "dataType": "float", + "valueType": "float", "javaBoxName": "Float", "classSerializeName": "FLOAT" }, { "dataType": "Binary", + "valueType": "PooledBinary", "javaBoxName": "Binary", "classSerializeName": "BINARY" }, { "dataType": "Binary", + "valueType": "PooledBinary", "javaBoxName": "String", "classSerializeName": "STRING" } diff --git a/java/tsfile/src/main/codegen/templates/FilterOperatorsTemplate.ftl b/java/tsfile/src/main/codegen/templates/FilterOperatorsTemplate.ftl index 77d394d14..e4a09e717 100644 --- a/java/tsfile/src/main/codegen/templates/FilterOperatorsTemplate.ftl +++ b/java/tsfile/src/main/codegen/templates/FilterOperatorsTemplate.ftl @@ -35,7 +35,7 @@ import org.apache.tsfile.file.metadata.statistics.Statistics; import org.apache.tsfile.read.filter.basic.Filter; import org.apache.tsfile.read.filter.basic.${filter.javaBoxName}Filter; import org.apache.tsfile.read.filter.basic.OperatorType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; @@ -67,9 +67,9 @@ public final class ${className} { // base class for ValueEq, ValueNotEq, ValueLt, ValueGt, ValueLtEq, ValueGtEq abstract static class ValueColumnCompareFilter extends ${filterName} { - protected final ${filter.dataType} constant; + protected final ${filter.valueType} constant; - protected ValueColumnCompareFilter(int measurementIndex, ${filter.dataType} constant) { + protected ValueColumnCompareFilter(int measurementIndex, ${filter.valueType} constant) { super(measurementIndex); <#if filter.dataType == "Binary"> this.constant = Objects.requireNonNull(constant, CONSTANT_CANNOT_BE_NULL_MSG); @@ -127,7 +127,7 @@ public final class ${className} { public static final class ValueEq extends ValueColumnCompareFilter { - public ValueEq(int measurementIndex, ${filter.dataType} constant) { + public ValueEq(int measurementIndex, ${filter.valueType} constant) { super(measurementIndex, constant); } @@ -137,11 +137,11 @@ public final class ${className} { @Override public boolean valueSatisfy(Object value){ - return valueSatisfy((${filter.dataType}) value); + return valueSatisfy((${filter.valueType}) value); } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "Binary"> return constant.equals(value); <#else> @@ -157,8 +157,8 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMinValue()) < 0 - || constant.compareTo((${filter.dataType}) statistics.getMaxValue()) > 0; + return constant.compareTo((${filter.valueType}) statistics.getMinValue()) < 0 + || constant.compareTo((${filter.valueType}) statistics.getMaxValue()) > 0; <#else> return false; @@ -180,8 +180,8 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMinValue()) == 0 - && constant.compareTo((${filter.dataType}) statistics.getMaxValue()) == 0; + return constant.compareTo((${filter.valueType}) statistics.getMinValue()) == 0 + && constant.compareTo((${filter.valueType}) statistics.getMaxValue()) == 0; <#else> return false; @@ -208,7 +208,7 @@ public final class ${className} { public static final class ValueNotEq extends ValueColumnCompareFilter { - public ValueNotEq(int measurementIndex, ${filter.dataType} constant) { + public ValueNotEq(int measurementIndex, ${filter.valueType} constant) { super(measurementIndex, constant); } @@ -218,11 +218,11 @@ public final class ${className} { @Override public boolean valueSatisfy(Object value){ - return valueSatisfy((${filter.dataType}) value); + return valueSatisfy((${filter.valueType}) value); } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "Binary"> return !constant.equals(value); <#else> @@ -238,8 +238,8 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMinValue()) == 0 - && constant.compareTo((${filter.dataType}) statistics.getMaxValue()) == 0; + return constant.compareTo((${filter.valueType}) statistics.getMinValue()) == 0 + && constant.compareTo((${filter.valueType}) statistics.getMaxValue()) == 0; <#else> return false; @@ -262,8 +262,8 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMinValue()) < 0 - || constant.compareTo((${filter.dataType}) statistics.getMaxValue()) > 0; + return constant.compareTo((${filter.valueType}) statistics.getMinValue()) < 0 + || constant.compareTo((${filter.valueType}) statistics.getMaxValue()) > 0; <#else> return false; @@ -289,7 +289,7 @@ public final class ${className} { public static final class ValueLt extends ValueColumnCompareFilter { - public ValueLt(int measurementIndex, ${filter.dataType} constant) { + public ValueLt(int measurementIndex, ${filter.valueType} constant) { super(measurementIndex, constant); } @@ -300,11 +300,11 @@ public final class ${className} { @Override @SuppressWarnings("unchecked") public boolean valueSatisfy(Object value){ - return valueSatisfy((${filter.dataType}) value); + return valueSatisfy((${filter.valueType}) value); } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "boolean"> return Boolean.compare(constant,value) > 0; <#elseif filter.dataType == "Binary"> @@ -322,7 +322,7 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMinValue()) <= 0; + return constant.compareTo((${filter.valueType}) statistics.getMinValue()) <= 0; <#else> return false; @@ -344,7 +344,7 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMaxValue()) > 0; + return constant.compareTo((${filter.valueType}) statistics.getMaxValue()) > 0; <#else> return false; @@ -369,7 +369,7 @@ public final class ${className} { public static final class ValueLtEq extends ValueColumnCompareFilter { - public ValueLtEq(int measurementIndex, ${filter.dataType} constant) { + public ValueLtEq(int measurementIndex, ${filter.valueType} constant) { super(measurementIndex, constant); } @@ -380,11 +380,11 @@ public final class ${className} { @Override @SuppressWarnings("unchecked") public boolean valueSatisfy(Object value){ - return valueSatisfy((${filter.dataType}) value); + return valueSatisfy((${filter.valueType}) value); } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "boolean"> return Boolean.compare(constant,value) >= 0; <#elseif filter.dataType == "Binary"> @@ -402,7 +402,7 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMinValue()) < 0; + return constant.compareTo((${filter.valueType}) statistics.getMinValue()) < 0; <#else> return false; @@ -424,7 +424,7 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMaxValue()) >= 0; + return constant.compareTo((${filter.valueType}) statistics.getMaxValue()) >= 0; <#else> return false; @@ -449,7 +449,7 @@ public final class ${className} { public static final class ValueGt extends ValueColumnCompareFilter { - public ValueGt(int measurementIndex, ${filter.dataType} constant) { + public ValueGt(int measurementIndex, ${filter.valueType} constant) { super(measurementIndex, constant); } @@ -460,11 +460,11 @@ public final class ${className} { @Override @SuppressWarnings("unchecked") public boolean valueSatisfy(Object value){ - return valueSatisfy((${filter.dataType}) value); + return valueSatisfy((${filter.valueType}) value); } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "boolean"> return Boolean.compare(constant,value) < 0; <#elseif filter.dataType == "Binary"> @@ -482,7 +482,7 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMaxValue()) >= 0; + return constant.compareTo((${filter.valueType}) statistics.getMaxValue()) >= 0; <#else> return false; @@ -504,7 +504,7 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMinValue()) < 0; + return constant.compareTo((${filter.valueType}) statistics.getMinValue()) < 0; <#else> return false; @@ -529,7 +529,7 @@ public final class ${className} { public static final class ValueGtEq extends ValueColumnCompareFilter { - public ValueGtEq(int measurementIndex, ${filter.dataType} constant) { + public ValueGtEq(int measurementIndex, ${filter.valueType} constant) { super(measurementIndex, constant); } @@ -540,11 +540,11 @@ public final class ${className} { @Override @SuppressWarnings("unchecked") public boolean valueSatisfy(Object value){ - return valueSatisfy((${filter.dataType}) value); + return valueSatisfy((${filter.valueType}) value); } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "boolean"> return Boolean.compare(constant,value) <= 0; <#elseif filter.dataType == "Binary"> @@ -562,7 +562,7 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMaxValue()) > 0; + return constant.compareTo((${filter.valueType}) statistics.getMaxValue()) > 0; <#else> return false; @@ -584,7 +584,7 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return constant.compareTo((${filter.dataType}) statistics.getMinValue()) <= 0; + return constant.compareTo((${filter.valueType}) statistics.getMinValue()) <= 0; <#else> return false; @@ -610,10 +610,10 @@ public final class ${className} { // base class for ValueBetweenAnd, ValueNotBetweenAnd abstract static class ValueColumnRangeFilter extends ${filterName} { - protected final ${filter.dataType} min; - protected final ${filter.dataType} max; + protected final ${filter.valueType} min; + protected final ${filter.valueType} max; - protected ValueColumnRangeFilter(int measurementIndex, ${filter.dataType} min, ${filter.dataType} max) { + protected ValueColumnRangeFilter(int measurementIndex, ${filter.valueType} min, ${filter.valueType} max) { super(measurementIndex); <#if filter.dataType == "Binary"> this.min = Objects.requireNonNull(min,"min cannot be null"); @@ -677,7 +677,7 @@ public final class ${className} { public static final class ValueBetweenAnd extends ValueColumnRangeFilter { - public ValueBetweenAnd(int measurementIndex, ${filter.dataType} min, ${filter.dataType} max) { + public ValueBetweenAnd(int measurementIndex, ${filter.valueType} min, ${filter.valueType} max) { super(measurementIndex, min, max); } @@ -688,11 +688,11 @@ public final class ${className} { @Override @SuppressWarnings("unchecked") public boolean valueSatisfy(Object value){ - return valueSatisfy((${filter.dataType}) value); + return valueSatisfy((${filter.valueType}) value); } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "boolean"> return Boolean.compare(min,value) <= 0 && Boolean.compare(max,value) >= 0; @@ -712,8 +712,8 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return ((${filter.dataType}) statistics.getMaxValue()).compareTo(min) < 0 - || ((${filter.dataType}) statistics.getMinValue()).compareTo(max) > 0; + return ((${filter.valueType}) statistics.getMaxValue()).compareTo(min) < 0 + || ((${filter.valueType}) statistics.getMinValue()).compareTo(max) > 0; <#else> return false; @@ -735,8 +735,8 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return ((${filter.dataType}) statistics.getMinValue()).compareTo(min) >= 0 - && ((${filter.dataType}) statistics.getMaxValue()).compareTo(max) <= 0; + return ((${filter.valueType}) statistics.getMinValue()).compareTo(min) >= 0 + && ((${filter.valueType}) statistics.getMaxValue()).compareTo(max) <= 0; <#else> return false; @@ -762,7 +762,7 @@ public final class ${className} { public static final class ValueNotBetweenAnd extends ValueColumnRangeFilter { - public ValueNotBetweenAnd(int measurementIndex, ${filter.dataType} min, ${filter.dataType} max) { + public ValueNotBetweenAnd(int measurementIndex, ${filter.valueType} min, ${filter.valueType} max) { super(measurementIndex, min, max); } @@ -773,11 +773,11 @@ public final class ${className} { @Override @SuppressWarnings("unchecked") public boolean valueSatisfy(Object value){ - return valueSatisfy((${filter.dataType}) value); + return valueSatisfy((${filter.valueType}) value); } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "boolean"> return Boolean.compare(min,value) > 0 || Boolean.compare(max,value) < 0; @@ -796,8 +796,8 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return ((${filter.dataType}) statistics.getMinValue()).compareTo(min) >= 0 - && ((${filter.dataType}) statistics.getMaxValue()).compareTo(max) <= 0; + return ((${filter.valueType}) statistics.getMinValue()).compareTo(min) >= 0 + && ((${filter.valueType}) statistics.getMaxValue()).compareTo(max) <= 0; <#else> return false; @@ -819,8 +819,8 @@ public final class ${className} { if(statistics.isEmpty()){ return false; } - return ((${filter.dataType}) statistics.getMinValue()).compareTo(max) > 0 - || ((${filter.dataType}) statistics.getMaxValue()).compareTo(min) < 0; + return ((${filter.valueType}) statistics.getMinValue()).compareTo(max) > 0 + || ((${filter.valueType}) statistics.getMaxValue()).compareTo(min) < 0; <#else> return false; @@ -847,25 +847,25 @@ public final class ${className} { // base class for ValueIn, ValueNotIn abstract static class ValueColumnSetFilter extends ${filterName} { - <#if filter.javaBoxName == "String"> - protected final Set<${filter.dataType}> candidates; + <#if filter.javaBoxName == "String" || filter.javaBoxName == "Binary"> + protected final Set<${filter.valueType}> candidates; <#else> protected final Set<${filter.javaBoxName}> candidates; - protected final ${filter.dataType} candidatesMin; - protected final ${filter.dataType} candidatesMax; + protected final ${filter.valueType} candidatesMin; + protected final ${filter.valueType} candidatesMax; - <#if filter.javaBoxName == "String"> - protected ValueColumnSetFilter(int measurementIndex, Set<${filter.dataType}> candidates) { + <#if filter.javaBoxName == "String" || filter.javaBoxName == "Binary"> + protected ValueColumnSetFilter(int measurementIndex, Set<${filter.valueType}> candidates) { <#else> protected ValueColumnSetFilter(int measurementIndex, Set<${filter.javaBoxName}> candidates) { super(measurementIndex); this.candidates = candidates; - <#if filter.javaBoxName == "String"> - Set<${filter.dataType}> filteredSet = candidates.stream().filter(Objects::nonNull).collect(Collectors.toSet()); + <#if filter.javaBoxName == "String" || filter.javaBoxName == "Binary"> + Set<${filter.valueType}> filteredSet = candidates.stream().filter(Objects::nonNull).collect(Collectors.toSet()); <#else> Set<${filter.javaBoxName}> filteredSet = candidates.stream().filter(Objects::nonNull).collect(Collectors.toSet()); @@ -946,8 +946,8 @@ public final class ${className} { public static final class ValueIn extends ValueColumnSetFilter { - <#if filter.javaBoxName == "String"> - public ValueIn(int measurementIndex, Set<${filter.dataType}> candidates) { + <#if filter.javaBoxName == "String" || filter.javaBoxName == "Binary"> + public ValueIn(int measurementIndex, Set<${filter.valueType}> candidates) { super(measurementIndex, candidates); } <#else> @@ -962,11 +962,15 @@ public final class ${className} { @Override public boolean valueSatisfy(Object value){ + <#if filter.javaBoxName == "Binary"> + return candidates.contains((PooledBinary) value); + <#else> return candidates.contains((${filter.javaBoxName}) value); + } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { return candidates.contains(value); } @@ -991,8 +995,8 @@ public final class ${className} { if (statistics.isPresent()) { Statistics stat = statistics.get(); <#if filter.dataType == "Binary" && filter.javaBoxName == "String"> - ${filter.dataType} valuesMin = (${filter.dataType}) stat.getMinValue(); - ${filter.dataType} valuesMax = (${filter.dataType}) stat.getMaxValue(); + ${filter.valueType} valuesMin = (${filter.valueType}) stat.getMinValue(); + ${filter.valueType} valuesMax = (${filter.valueType}) stat.getMaxValue(); <#else> ${filter.javaBoxName} valuesMin = (${filter.javaBoxName}) stat.getMinValue(); ${filter.javaBoxName} valuesMax = (${filter.javaBoxName}) stat.getMaxValue(); @@ -1045,8 +1049,8 @@ public final class ${className} { if (statistics.isPresent()) { Statistics stat = statistics.get(); <#if filter.dataType == "Binary" && filter.javaBoxName == "String"> - ${filter.dataType} valuesMin = (${filter.dataType}) stat.getMinValue(); - ${filter.dataType} valuesMax = (${filter.dataType}) stat.getMaxValue(); + ${filter.valueType} valuesMin = (${filter.valueType}) stat.getMinValue(); + ${filter.valueType} valuesMax = (${filter.valueType}) stat.getMaxValue(); <#else> ${filter.javaBoxName} valuesMin = (${filter.javaBoxName}) stat.getMinValue(); ${filter.javaBoxName} valuesMax = (${filter.javaBoxName}) stat.getMaxValue(); @@ -1090,8 +1094,8 @@ public final class ${className} { public static final class ValueNotIn extends ValueColumnSetFilter { - <#if filter.javaBoxName == "String"> - public ValueNotIn(int measurementIndex, Set<${filter.dataType}> candidates) { + <#if filter.javaBoxName == "String" || filter.javaBoxName == "Binary"> + public ValueNotIn(int measurementIndex, Set<${filter.valueType}> candidates) { super(measurementIndex, candidates); } <#else> @@ -1106,11 +1110,15 @@ public final class ${className} { @Override public boolean valueSatisfy(Object value){ + <#if filter.javaBoxName == "Binary"> + return !candidates.contains((PooledBinary) value); + <#else> return !candidates.contains((${filter.javaBoxName}) value); + } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { return !candidates.contains(value); } @@ -1202,7 +1210,7 @@ public final class ${className} { } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "Binary"> return pattern.matcher(new MatcherInput(value.toString(), new AccessCount())).find(); <#else> @@ -1247,7 +1255,7 @@ public final class ${className} { } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "Binary"> return !pattern.matcher(new MatcherInput(value.toString(), new AccessCount())).find(); <#else> @@ -1352,7 +1360,7 @@ public final class ${className} { } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "Binary"> return pattern.getMatcher().match(value.toString().getBytes()); <#else> @@ -1397,7 +1405,7 @@ public final class ${className} { } @Override - public boolean valueSatisfy(${filter.dataType} value) { + public boolean valueSatisfy(${filter.valueType} value) { <#if filter.dataType == "Binary"> return !pattern.getMatcher().match(value.toString().getBytes()); <#else> diff --git a/java/tsfile/src/main/codegen/templates/FilterTemplate.ftl b/java/tsfile/src/main/codegen/templates/FilterTemplate.ftl index e1fd9fefa..fa07768ca 100644 --- a/java/tsfile/src/main/codegen/templates/FilterTemplate.ftl +++ b/java/tsfile/src/main/codegen/templates/FilterTemplate.ftl @@ -24,7 +24,7 @@ import static org.apache.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.${filter import org.apache.tsfile.block.column.Column; import org.apache.tsfile.read.common.block.TsBlock; <#if filter.dataType == "Binary"> -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -47,9 +47,9 @@ public abstract class ${className} extends ValueFilter { @Override <#if filter.dataType == "int"> - public boolean satisfyInteger(long time, ${filter.dataType} value){ + public boolean satisfyInteger(long time, ${filter.valueType} value){ <#else> - public boolean satisfy${filter.dataType?cap_first}(long time, ${filter.dataType} value){ + public boolean satisfy${filter.dataType?cap_first}(long time, ${filter.valueType} value){ <#if filter.dataType=="Binary"> if (value == null) { @@ -64,7 +64,7 @@ public abstract class ${className} extends ValueFilter { return ${filter.classSerializeName}; } - protected abstract boolean valueSatisfy(${filter.dataType} value); + protected abstract boolean valueSatisfy(${filter.valueType} value); @Override public boolean[] satisfyTsBlock(boolean[] selection, TsBlock tsBlock) { diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/BitmapDecoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/BitmapDecoder.java index e512e71ef..0bdac4f60 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/BitmapDecoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/BitmapDecoder.java @@ -21,8 +21,8 @@ import org.apache.tsfile.exception.encoding.TsFileDecodingException; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.Pair; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.slf4j.Logger; @@ -210,7 +210,7 @@ public double readDouble(ByteBuffer buffer) { } @Override - public Binary readBinary(ByteBuffer buffer) { + public PooledBinary readBinary(ByteBuffer buffer) { throw new TsFileDecodingException("Method readBinary is not supported by BitmapDecoder"); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java index 36c3d8261..ac83f462c 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java @@ -22,7 +22,7 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.encoding.TsFileDecodingException; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.io.IOException; import java.math.BigDecimal; @@ -206,7 +206,7 @@ public double readDouble(ByteBuffer buffer) { throw new TsFileDecodingException("Method readDouble is not supported by Decoder"); } - public Binary readBinary(ByteBuffer buffer) { + public PooledBinary readBinary(ByteBuffer buffer) { throw new TsFileDecodingException("Method readBinary is not supported by Decoder"); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/DictionaryDecoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/DictionaryDecoder.java index 8731551c4..440a919fe 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/DictionaryDecoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/DictionaryDecoder.java @@ -20,7 +20,7 @@ package org.apache.tsfile.encoding.decoder; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.slf4j.Logger; @@ -34,7 +34,7 @@ public class DictionaryDecoder extends Decoder { private static final Logger logger = LoggerFactory.getLogger(DictionaryDecoder.class); - private List entryIndex; + private List entryIndex; private IntRleDecoder valueDecoder; public DictionaryDecoder() { @@ -59,7 +59,7 @@ public boolean hasNext(ByteBuffer buffer) { } @Override - public Binary readBinary(ByteBuffer buffer) { + public PooledBinary readBinary(ByteBuffer buffer) { if (entryIndex == null) { initMap(buffer); } @@ -74,7 +74,7 @@ private void initMap(ByteBuffer buffer) { int binaryLength = ReadWriteForEncodingUtils.readVarInt(buffer); byte[] buf = new byte[binaryLength]; buffer.get(buf, 0, binaryLength); - entryIndex.add(new Binary(buf)); + entryIndex.add(new PooledBinary(buf)); } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java index 6b019930e..5ba33daa3 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java @@ -23,7 +23,7 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.encoding.TsFileDecodingException; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.slf4j.Logger; @@ -125,7 +125,7 @@ public boolean hasNext(ByteBuffer buffer) throws IOException { } @Override - public Binary readBinary(ByteBuffer buffer) { + public PooledBinary readBinary(ByteBuffer buffer) { throw new TsFileDecodingException("Method readBinary is not supported by FloatDecoder"); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/PlainDecoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/PlainDecoder.java index 8ad2e382e..0ae2298ae 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/PlainDecoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/PlainDecoder.java @@ -21,7 +21,7 @@ import org.apache.tsfile.exception.encoding.TsFileDecodingException; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import java.math.BigDecimal; @@ -64,11 +64,11 @@ public double readDouble(ByteBuffer buffer) { } @Override - public Binary readBinary(ByteBuffer buffer) { + public PooledBinary readBinary(ByteBuffer buffer) { int length = readInt(buffer); byte[] buf = new byte[length]; buffer.get(buf, 0, buf.length); - return new Binary(buf); + return new PooledBinary(buf); } @Override diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/RleDecoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/RleDecoder.java index 4fbcc509e..6724f9b71 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/RleDecoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/RleDecoder.java @@ -23,7 +23,7 @@ import org.apache.tsfile.common.conf.TSFileDescriptor; import org.apache.tsfile.exception.encoding.TsFileDecodingException; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -221,7 +221,7 @@ public double readDouble(ByteBuffer buffer) { } @Override - public Binary readBinary(ByteBuffer buffer) { + public PooledBinary readBinary(ByteBuffer buffer) { throw new TsFileDecodingException("Method readBinary is not supproted by RleDecoder"); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/DictionaryEncoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/DictionaryEncoder.java index 4a6fde552..9c7f975a0 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/DictionaryEncoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/DictionaryEncoder.java @@ -20,7 +20,7 @@ package org.apache.tsfile.encoding.encoder; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.slf4j.Logger; @@ -45,8 +45,8 @@ public class DictionaryEncoder extends Encoder { private static final Logger logger = LoggerFactory.getLogger(DictionaryEncoder.class); - private HashMap entryIndex; - private List indexEntry; + private HashMap entryIndex; + private List indexEntry; private IntRleEncoder valuesEncoder; private long mapSize; @@ -60,7 +60,7 @@ public DictionaryEncoder() { } @Override - public void encode(Binary value, ByteArrayOutputStream out) { + public void encode(PooledBinary value, ByteArrayOutputStream out) { int i = entryIndex.computeIfAbsent( value, @@ -97,9 +97,9 @@ public long getMaxByteSize() { private void writeMap(ByteArrayOutputStream out) throws IOException { ReadWriteForEncodingUtils.writeVarInt(indexEntry.size(), out); - for (Binary value : indexEntry) { + for (PooledBinary value : indexEntry) { ReadWriteForEncodingUtils.writeVarInt(value.getLength(), out); - out.write(value.getValues()); + out.write(value.getValues(), 0, value.getLength()); } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/Encoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/Encoder.java index afdbe1640..6926c2fa3 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/Encoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/Encoder.java @@ -20,7 +20,7 @@ import org.apache.tsfile.exception.encoding.TsFileEncodingException; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -73,7 +73,7 @@ public void encode(double value, ByteArrayOutputStream out) { throw new TsFileEncodingException("Method encode double is not supported by Encoder"); } - public void encode(Binary value, ByteArrayOutputStream out) { + public void encode(PooledBinary value, ByteArrayOutputStream out) { throw new TsFileEncodingException("Method encode Binary is not supported by Encoder"); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/PlainEncoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/PlainEncoder.java index 09c28cbef..ba08a9cf1 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/PlainEncoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/PlainEncoder.java @@ -23,14 +23,13 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.encoding.TsFileEncodingException; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayOutputStream; -import java.io.IOException; import java.math.BigDecimal; public class PlainEncoder extends Encoder { @@ -87,16 +86,11 @@ public void encode(double value, ByteArrayOutputStream out) { } @Override - public void encode(Binary value, ByteArrayOutputStream out) { - try { - // write the length of the bytes - encode(value.getLength(), out); - // write value - out.write(value.getValues()); - } catch (IOException e) { - logger.error( - "tsfile-encoding PlainEncoder: error occurs when encode Binary value {}", value, e); - } + public void encode(PooledBinary value, ByteArrayOutputStream out) { + // write the length of the bytes + encode(value.getLength(), out); + // write value + out.write(value.getValues(), 0, value.getLength()); } @Override diff --git a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/RleEncoder.java b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/RleEncoder.java index 9121244ba..77a7b59b0 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/RleEncoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/RleEncoder.java @@ -23,7 +23,7 @@ import org.apache.tsfile.common.conf.TSFileDescriptor; import org.apache.tsfile.exception.encoding.TsFileEncodingException; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.slf4j.Logger; @@ -320,7 +320,7 @@ public void encode(double value, ByteArrayOutputStream out) { } @Override - public void encode(Binary value, ByteArrayOutputStream out) { + public void encode(PooledBinary value, ByteArrayOutputStream out) { throw new TsFileEncodingException(getClass().getName()); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/BinaryStatistics.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/BinaryStatistics.java index 34db11b93..2bb624ebd 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/BinaryStatistics.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/BinaryStatistics.java @@ -22,7 +22,7 @@ import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.filter.StatisticsClassException; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -35,16 +35,16 @@ import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfCharArray; /** Statistics for string type. */ -public class BinaryStatistics extends Statistics { +public class BinaryStatistics extends Statistics { public static final long INSTANCE_SIZE = RamUsageEstimator.shallowSizeOfInstance(BinaryStatistics.class) - + 2 * RamUsageEstimator.shallowSizeOfInstance(Binary.class); + + 2 * RamUsageEstimator.shallowSizeOfInstance(PooledBinary.class); - private static final Binary EMPTY_VALUE = new Binary("", TSFileConfig.STRING_CHARSET); + private static final PooledBinary EMPTY_VALUE = new PooledBinary("", TSFileConfig.STRING_CHARSET); - private Binary firstValue = EMPTY_VALUE; - private Binary lastValue = EMPTY_VALUE; + private PooledBinary firstValue = EMPTY_VALUE; + private PooledBinary lastValue = EMPTY_VALUE; @Override public TSDataType getType() { @@ -54,7 +54,7 @@ public TSDataType getType() { /** The output of this method should be identical to the method "serializeStats(outputStream)". */ @Override public int getStatsSize() { - return 4 + firstValue.getValues().length + 4 + lastValue.getValues().length; + return 4 + firstValue.getLength() + 4 + lastValue.getLength(); } @Override @@ -70,16 +70,17 @@ public long getRetainedSizeInBytes() { * @param first the first value * @param last the last value */ - public void initializeStats(Binary first, Binary last) { + public void initializeStats(PooledBinary first, PooledBinary last) { this.firstValue = first; this.lastValue = last; } - private void updateLastStats(Binary lastValue) { + private void updateLastStats(PooledBinary lastValue) { this.lastValue = lastValue; } - private void updateStats(Binary firstValue, Binary lastValue, long startTime, long endTime) { + private void updateStats( + PooledBinary firstValue, PooledBinary lastValue, long startTime, long endTime) { // only if endTime greater or equals to the current endTime need we update the last value // only if startTime less or equals to the current startTime need we update the first value // otherwise, just ignore @@ -92,24 +93,24 @@ private void updateStats(Binary firstValue, Binary lastValue, long startTime, lo } @Override - public Binary getMinValue() { + public PooledBinary getMinValue() { throw new StatisticsClassException( String.format(STATS_UNSUPPORTED_MSG, TSDataType.TEXT, "min")); } @Override - public Binary getMaxValue() { + public PooledBinary getMaxValue() { throw new StatisticsClassException( String.format(STATS_UNSUPPORTED_MSG, TSDataType.TEXT, "max")); } @Override - public Binary getFirstValue() { + public PooledBinary getFirstValue() { return firstValue; } @Override - public Binary getLastValue() { + public PooledBinary getLastValue() { return lastValue; } @@ -126,7 +127,7 @@ public long getSumLongValue() { } @Override - protected void mergeStatisticsValue(Statistics stats) { + protected void mergeStatisticsValue(Statistics stats) { BinaryStatistics stringStats = (BinaryStatistics) stats; if (isEmpty) { initializeStats(stringStats.getFirstValue(), stringStats.getLastValue()); @@ -141,7 +142,7 @@ protected void mergeStatisticsValue(Statistics stats) { } @Override - void updateStats(Binary value) { + void updateStats(PooledBinary value) { if (isEmpty) { initializeStats(value, value); isEmpty = false; @@ -151,7 +152,7 @@ void updateStats(Binary value) { } @Override - void updateStats(Binary[] values, int batchSize) { + void updateStats(PooledBinary[] values, int batchSize) { for (int i = 0; i < batchSize; i++) { updateStats(values[i]); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/BlobStatistics.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/BlobStatistics.java index f8cb18fa5..89b275e56 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/BlobStatistics.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/BlobStatistics.java @@ -21,7 +21,7 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.filter.StatisticsClassException; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.RamUsageEstimator; import java.io.IOException; @@ -29,7 +29,7 @@ import java.io.OutputStream; import java.nio.ByteBuffer; -public class BlobStatistics extends Statistics { +public class BlobStatistics extends Statistics { public static final long INSTANCE_SIZE = RamUsageEstimator.shallowSizeOfInstance(BlobStatistics.class); @@ -57,7 +57,7 @@ int serializeStats(OutputStream outputStream) throws IOException { return 0; } - public void updateStats(Binary value) { + public void updateStats(PooledBinary value) { if (isEmpty) { isEmpty = false; } @@ -74,25 +74,25 @@ public void deserialize(ByteBuffer byteBuffer) { } @Override - public Binary getMinValue() { + public PooledBinary getMinValue() { throw new StatisticsClassException( String.format(STATS_UNSUPPORTED_MSG, TSDataType.BLOB, "min")); } @Override - public Binary getMaxValue() { + public PooledBinary getMaxValue() { throw new StatisticsClassException( String.format(STATS_UNSUPPORTED_MSG, TSDataType.BLOB, "max")); } @Override - public Binary getFirstValue() { + public PooledBinary getFirstValue() { throw new StatisticsClassException( String.format(STATS_UNSUPPORTED_MSG, TSDataType.BLOB, "first")); } @Override - public Binary getLastValue() { + public PooledBinary getLastValue() { throw new StatisticsClassException( String.format(STATS_UNSUPPORTED_MSG, TSDataType.BLOB, "last")); } @@ -111,7 +111,7 @@ public long getSumLongValue() { } @Override - protected void mergeStatisticsValue(Statistics stats) { + protected void mergeStatisticsValue(Statistics stats) { // do nothing if (isEmpty) { isEmpty = false; diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/Statistics.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/Statistics.java index 56b3bf7ae..b37c3fb25 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/Statistics.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/Statistics.java @@ -23,7 +23,7 @@ import org.apache.tsfile.exception.filter.StatisticsClassException; import org.apache.tsfile.exception.write.UnknownColumnTypeException; import org.apache.tsfile.read.filter.basic.Filter; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -250,7 +250,7 @@ public void update(long time, double value) { updateStats(value); } - public void update(long time, Binary value) { + public void update(long time, PooledBinary value) { update(time); updateStats(value); } @@ -290,7 +290,7 @@ public void update(long[] time, double[] values, int batchSize) { updateStats(values, batchSize); } - public void update(long[] time, Binary[] values, int batchSize) { + public void update(long[] time, PooledBinary[] values, int batchSize) { update(time, batchSize); updateStats(values, batchSize); } @@ -345,7 +345,7 @@ void updateStats(double value) { throw new UnsupportedOperationException(); } - void updateStats(Binary value) { + void updateStats(PooledBinary value) { throw new UnsupportedOperationException(); } @@ -369,7 +369,7 @@ void updateStats(double[] values, int batchSize) { throw new UnsupportedOperationException(); } - void updateStats(Binary[] values, int batchSize) { + void updateStats(PooledBinary[] values, int batchSize) { throw new UnsupportedOperationException(); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/StringStatistics.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/StringStatistics.java index 5997fb9b4..007189326 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/StringStatistics.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/StringStatistics.java @@ -22,7 +22,7 @@ import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.filter.StatisticsClassException; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.ReadWriteIOUtils; @@ -34,17 +34,17 @@ import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfCharArray; -public class StringStatistics extends Statistics { +public class StringStatistics extends Statistics { public static final long INSTANCE_SIZE = RamUsageEstimator.shallowSizeOfInstance(StringStatistics.class) - + 4 * RamUsageEstimator.shallowSizeOfInstance(Binary.class); + + 4 * RamUsageEstimator.shallowSizeOfInstance(PooledBinary.class); - private static final Binary EMPTY_VALUE = new Binary("", TSFileConfig.STRING_CHARSET); + private static final PooledBinary EMPTY_VALUE = new PooledBinary("", TSFileConfig.STRING_CHARSET); - private Binary firstValue = EMPTY_VALUE; - private Binary lastValue = EMPTY_VALUE; - private Binary minValue = EMPTY_VALUE; - private Binary maxValue = EMPTY_VALUE; + private PooledBinary firstValue = EMPTY_VALUE; + private PooledBinary lastValue = EMPTY_VALUE; + private PooledBinary minValue = EMPTY_VALUE; + private PooledBinary maxValue = EMPTY_VALUE; @Override public TSDataType getType() { @@ -55,10 +55,10 @@ public TSDataType getType() { @Override public int getStatsSize() { return 4 * 4 - + firstValue.getValues().length - + lastValue.getValues().length - + minValue.getValues().length - + maxValue.getValues().length; + + firstValue.getLength() + + lastValue.getLength() + + minValue.getLength() + + maxValue.getLength(); } @Override @@ -70,14 +70,15 @@ public long getRetainedSizeInBytes() { + sizeOfCharArray(maxValue.getLength()); } - public void initializeStats(Binary first, Binary last, Binary min, Binary max) { + public void initializeStats( + PooledBinary first, PooledBinary last, PooledBinary min, PooledBinary max) { this.firstValue = first; this.lastValue = last; this.minValue = min; this.maxValue = max; } - private void updateStats(Binary minValue, Binary maxValue, Binary lastValue) { + private void updateStats(PooledBinary minValue, PooledBinary maxValue, PooledBinary lastValue) { if (this.minValue.compareTo(minValue) > 0) { this.minValue = minValue; } @@ -88,10 +89,10 @@ private void updateStats(Binary minValue, Binary maxValue, Binary lastValue) { } private void updateStats( - Binary firstValue, - Binary lastValue, - Binary minValue, - Binary maxValue, + PooledBinary firstValue, + PooledBinary lastValue, + PooledBinary minValue, + PooledBinary maxValue, long startTime, long endTime) { // only if endTime greater or equals to the current endTime need we update the last value @@ -112,22 +113,22 @@ private void updateStats( } @Override - public Binary getMinValue() { + public PooledBinary getMinValue() { return minValue; } @Override - public Binary getMaxValue() { + public PooledBinary getMaxValue() { return maxValue; } @Override - public Binary getFirstValue() { + public PooledBinary getFirstValue() { return firstValue; } @Override - public Binary getLastValue() { + public PooledBinary getLastValue() { return lastValue; } @@ -144,7 +145,7 @@ public long getSumLongValue() { } @Override - protected void mergeStatisticsValue(Statistics stats) { + protected void mergeStatisticsValue(Statistics stats) { StringStatistics stringStats = (StringStatistics) stats; if (isEmpty) { initializeStats( @@ -165,7 +166,7 @@ protected void mergeStatisticsValue(Statistics stats) { } @Override - void updateStats(Binary value) { + void updateStats(PooledBinary value) { if (isEmpty) { initializeStats(value, value, value, value); isEmpty = false; @@ -175,7 +176,7 @@ void updateStats(Binary value) { } @Override - void updateStats(Binary[] values, int batchSize) { + void updateStats(PooledBinary[] values, int batchSize) { for (int i = 0; i < batchSize; i++) { updateStats(values[i]); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/BatchData.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/BatchData.java index 504f7a9cb..dd86af4d6 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/BatchData.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/BatchData.java @@ -23,7 +23,7 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.read.TimeValuePair; import org.apache.tsfile.read.reader.IPointReader; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsPrimitiveType; import org.apache.tsfile.utils.TsPrimitiveType.TsBinary; import org.apache.tsfile.utils.TsPrimitiveType.TsBoolean; @@ -82,7 +82,7 @@ public class BatchData { protected List longRet; protected List floatRet; protected List doubleRet; - protected List binaryRet; + protected List binaryRet; protected List vectorRet; public BatchData() { @@ -232,7 +232,7 @@ public void init(TSDataType type) { case BLOB: case STRING: binaryRet = new ArrayList<>(); - binaryRet.add(new Binary[capacity]); + binaryRet.add(new PooledBinary[capacity]); break; case VECTOR: vectorRet = new ArrayList<>(); @@ -423,18 +423,18 @@ public void putDouble(long t, double v) { * @param t timestamp * @param v binary data. */ - public void putBinary(long t, Binary v) { + public void putBinary(long t, PooledBinary v) { if (writeCurArrayIndex == capacity) { if (capacity >= CAPACITY_THRESHOLD) { timeRet.add(new long[capacity]); - binaryRet.add(new Binary[capacity]); + binaryRet.add(new PooledBinary[capacity]); writeCurListIndex++; writeCurArrayIndex = 0; } else { int newCapacity = capacity << 1; long[] newTimeData = new long[newCapacity]; - Binary[] newValueData = new Binary[newCapacity]; + PooledBinary[] newValueData = new PooledBinary[newCapacity]; System.arraycopy(timeRet.get(0), 0, newTimeData, 0, capacity); System.arraycopy(binaryRet.get(0), 0, newValueData, 0, capacity); @@ -527,11 +527,11 @@ public void setDouble(double v) { this.doubleRet.get(readCurListIndex)[readCurArrayIndex] = v; } - public Binary getBinary() { + public PooledBinary getBinary() { return this.binaryRet.get(readCurListIndex)[readCurArrayIndex]; } - public void setBinary(Binary v) { + public void setBinary(PooledBinary v) { this.binaryRet.get(readCurListIndex)[readCurArrayIndex] = v; } @@ -575,7 +575,7 @@ public void putAnObject(long t, Object v) { case TEXT: case BLOB: case STRING: - putBinary(t, (Binary) v); + putBinary(t, (PooledBinary) v); break; case VECTOR: putVector(t, (TsPrimitiveType[]) v); @@ -615,7 +615,7 @@ public float getFloatByIndex(int idx) { } /** Get the idx th binary value by the time ascending order */ - public Binary getBinaryByIndex(int idx) { + public PooledBinary getBinaryByIndex(int idx) { return binaryRet.get(idx / capacity)[idx % capacity]; } @@ -701,9 +701,9 @@ public void serializeData(DataOutputStream outputStream) throws IOException { case STRING: for (int i = 0; i < length(); i++) { outputStream.writeLong(getTimeByIndex(i)); - Binary binary = getBinaryByIndex(i); + PooledBinary binary = getBinaryByIndex(i); outputStream.writeInt(binary.getLength()); - outputStream.write(binary.getValues()); + outputStream.write(binary.getValues(), 0, binary.getLength()); } break; case INT64: @@ -744,9 +744,9 @@ public void serializeData(DataOutputStream outputStream) throws IOException { case TEXT: case BLOB: case STRING: - Binary binary = value.getBinary(); + PooledBinary binary = value.getBinary(); outputStream.writeInt(binary.getLength()); - outputStream.write(binary.getValues()); + outputStream.write(binary.getValues(), 0, binary.getLength()); break; case INT64: case TIMESTAMP: diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/DescReadWriteBatchData.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/DescReadWriteBatchData.java index 1fd65740c..3cb31e150 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/DescReadWriteBatchData.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/DescReadWriteBatchData.java @@ -20,7 +20,7 @@ package org.apache.tsfile.read.common; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsPrimitiveType; import org.apache.tsfile.write.UnSupportedDataTypeException; @@ -76,7 +76,7 @@ public DescReadWriteBatchData(TSDataType dataType) { case BLOB: case STRING: binaryRet = new LinkedList<>(); - binaryRet.add(new Binary[capacity]); + binaryRet.add(new PooledBinary[capacity]); break; case VECTOR: vectorRet = new LinkedList<>(); @@ -279,18 +279,18 @@ public void putDouble(long t, double v) { * @param v binary data. */ @Override - public void putBinary(long t, Binary v) { + public void putBinary(long t, PooledBinary v) { if (writeCurArrayIndex == -1) { if (capacity >= CAPACITY_THRESHOLD) { ((LinkedList) timeRet).addFirst(new long[capacity]); - ((LinkedList) binaryRet).addFirst(new Binary[capacity]); + ((LinkedList) binaryRet).addFirst(new PooledBinary[capacity]); writeCurListIndex++; writeCurArrayIndex = capacity - 1; } else { int newCapacity = capacity << 1; long[] newTimeData = new long[newCapacity]; - Binary[] newValueData = new Binary[newCapacity]; + PooledBinary[] newValueData = new PooledBinary[newCapacity]; System.arraycopy(timeRet.get(0), 0, newTimeData, newCapacity - capacity, capacity); System.arraycopy(binaryRet.get(0), 0, newValueData, newCapacity - capacity, capacity); @@ -399,7 +399,7 @@ public float getFloatByIndex(int idx) { } @Override - public Binary getBinaryByIndex(int idx) { + public PooledBinary getBinaryByIndex(int idx) { return binaryRet .get((idx + writeCurArrayIndex + 1) / capacity)[(idx + writeCurArrayIndex + 1) % capacity]; } @@ -442,9 +442,9 @@ public void serializeData(DataOutputStream outputStream) throws IOException { case STRING: for (int i = length() - 1; i >= 0; i--) { outputStream.writeLong(getTimeByIndex(i)); - Binary binary = getBinaryByIndex(i); + PooledBinary binary = getBinaryByIndex(i); outputStream.writeInt(binary.getLength()); - outputStream.write(binary.getValues()); + outputStream.write(binary.getValues(), 0, binary.getLength()); } break; case INT64: @@ -485,9 +485,9 @@ public void serializeData(DataOutputStream outputStream) throws IOException { case TEXT: case BLOB: case STRING: - Binary binary = value.getBinary(); + PooledBinary binary = value.getBinary(); outputStream.writeInt(binary.getLength()); - outputStream.write(binary.getValues()); + outputStream.write(binary.getValues(), 0, binary.getLength()); break; case INT64: case TIMESTAMP: diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/Field.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/Field.java index 01d4dcdbc..a4fac49d8 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/Field.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/Field.java @@ -21,9 +21,9 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.NullFieldException; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.BytesUtils; import org.apache.tsfile.utils.DateUtils; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsPrimitiveType; import org.apache.tsfile.write.UnSupportedDataTypeException; @@ -41,7 +41,7 @@ public class Field { private long longV; private float floatV; private double doubleV; - private Binary binaryV; + private PooledBinary binaryV; public Field(TSDataType dataType) { this.dataType = dataType; @@ -140,14 +140,14 @@ public void setDoubleV(double doubleV) { this.doubleV = doubleV; } - public Binary getBinaryV() { + public PooledBinary getBinaryV() { if (dataType == null) { throw new NullFieldException(); } return binaryV; } - public void setBinaryV(Binary binaryV) { + public void setBinaryV(PooledBinary binaryV) { this.binaryV = binaryV; } @@ -184,7 +184,7 @@ public String getStringValue() { case STRING: return binaryV.toString(); case BLOB: - return BytesUtils.parseBlobByteArrayToString(binaryV.getValues()); + return BytesUtils.parseBlobByteArrayToString(binaryV.getValues(), 0, binaryV.getLength()); default: throw new UnSupportedDataTypeException(dataType.toString()); } @@ -248,7 +248,7 @@ public static Field getField(Object value, TSDataType dataType) { case TEXT: case BLOB: case STRING: - field.setBinaryV((Binary) value); + field.setBinaryV((PooledBinary) value); break; default: throw new UnSupportedDataTypeException(dataType.toString()); diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java index 918551d9b..e0db1e5a2 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java @@ -33,7 +33,7 @@ import org.apache.tsfile.read.common.block.column.LongColumnBuilder; import org.apache.tsfile.read.common.block.column.TimeColumn; import org.apache.tsfile.read.common.block.column.TimeColumnBuilder; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.util.List; @@ -346,7 +346,8 @@ public void writeNullableText(int columnIndex, String value) { if (value == null) { getColumnBuilder(columnIndex).appendNull(); } else { - getColumnBuilder(columnIndex).writeBinary(new Binary(value, TSFileConfig.STRING_CHARSET)); + getColumnBuilder(columnIndex) + .writeBinary(new PooledBinary(value, TSFileConfig.STRING_CHARSET)); } } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryArrayColumnEncoder.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryArrayColumnEncoder.java index c4bb38336..6da8c013f 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryArrayColumnEncoder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryArrayColumnEncoder.java @@ -21,7 +21,7 @@ import org.apache.tsfile.block.column.Column; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.io.DataOutputStream; import java.io.IOException; @@ -50,13 +50,13 @@ public Column readColumn(ByteBuffer input, TSDataType dataType, int positionCoun } boolean[] nullIndicators = ColumnEncoder.deserializeNullIndicators(input, positionCount); - Binary[] values = new Binary[positionCount]; + PooledBinary[] values = new PooledBinary[positionCount]; if (nullIndicators == null) { for (int i = 0; i < positionCount; i++) { int length = input.getInt(); byte[] value = new byte[length]; input.get(value); - values[i] = new Binary(value); + values[i] = new PooledBinary(value); } } else { for (int i = 0; i < positionCount; i++) { @@ -64,7 +64,7 @@ public Column readColumn(ByteBuffer input, TSDataType dataType, int positionCoun int length = input.getInt(); byte[] value = new byte[length]; input.get(value); - values[i] = new Binary(value); + values[i] = new PooledBinary(value); } } } @@ -81,9 +81,9 @@ public void writeColumn(DataOutputStream output, Column column) throws IOExcepti if (TSDataType.TEXT.equals(dataType)) { for (int i = 0; i < positionCount; i++) { if (!column.isNull(i)) { - Binary binary = column.getBinary(i); + PooledBinary binary = column.getBinary(i); output.writeInt(binary.getLength()); - output.write(binary.getValues()); + output.write(binary.getValues(), 0, binary.getLength()); } } } else { diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java index 0be88efe2..810805581 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java @@ -22,7 +22,7 @@ import org.apache.tsfile.block.column.Column; import org.apache.tsfile.block.column.ColumnEncoding; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.TsPrimitiveType; @@ -41,19 +41,19 @@ public class BinaryColumn implements Column { private final int arrayOffset; private int positionCount; private boolean[] valueIsNull; - private final Binary[] values; + private final PooledBinary[] values; private final long retainedSizeInBytes; public BinaryColumn(int initialCapacity) { - this(0, 0, null, new Binary[initialCapacity]); + this(0, 0, null, new PooledBinary[initialCapacity]); } - public BinaryColumn(int positionCount, Optional valueIsNull, Binary[] values) { + public BinaryColumn(int positionCount, Optional valueIsNull, PooledBinary[] values) { this(0, positionCount, valueIsNull.orElse(null), values); } - BinaryColumn(int arrayOffset, int positionCount, boolean[] valueIsNull, Binary[] values) { + BinaryColumn(int arrayOffset, int positionCount, boolean[] valueIsNull, PooledBinary[] values) { if (arrayOffset < 0) { throw new IllegalArgumentException("arrayOffset is negative"); } @@ -89,12 +89,12 @@ public ColumnEncoding getEncoding() { } @Override - public Binary getBinary(int position) { + public PooledBinary getBinary(int position) { return values[position + arrayOffset]; } @Override - public Binary[] getBinaries() { + public PooledBinary[] getBinaries() { return values; } @@ -152,7 +152,7 @@ public Column getRegionCopy(int positionOffset, int length) { int to = from + length; boolean[] valueIsNullCopy = valueIsNull != null ? Arrays.copyOfRange(valueIsNull, from, to) : null; - Binary[] valuesCopy = Arrays.copyOfRange(values, from, to); + PooledBinary[] valuesCopy = Arrays.copyOfRange(values, from, to); return new BinaryColumn(0, length, valueIsNullCopy, valuesCopy); } @@ -175,7 +175,7 @@ public Column subColumnCopy(int fromIndex) { int from = arrayOffset + fromIndex; boolean[] valueIsNullCopy = valueIsNull != null ? Arrays.copyOfRange(valueIsNull, from, positionCount) : null; - Binary[] valuesCopy = Arrays.copyOfRange(values, from, positionCount); + PooledBinary[] valuesCopy = Arrays.copyOfRange(values, from, positionCount); int length = positionCount - fromIndex; return new BinaryColumn(0, length, valueIsNullCopy, valuesCopy); @@ -184,7 +184,7 @@ public Column subColumnCopy(int fromIndex) { @Override public void reverse() { for (int i = arrayOffset, j = arrayOffset + positionCount - 1; i < j; i++, j--) { - Binary valueTmp = values[i]; + PooledBinary valueTmp = values[i]; values[i] = values[j]; values[j] = valueTmp; } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java index 917c6e5f3..658c19c61 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java @@ -23,7 +23,7 @@ import org.apache.tsfile.block.column.ColumnBuilder; import org.apache.tsfile.block.column.ColumnBuilderStatus; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.TsPrimitiveType; import org.apache.tsfile.write.UnSupportedDataTypeException; @@ -42,7 +42,7 @@ public class BinaryColumnBuilder implements ColumnBuilder { private final ColumnBuilderStatus columnBuilderStatus; public static final BinaryColumn NULL_VALUE_BLOCK = - new BinaryColumn(0, 1, new boolean[] {true}, new Binary[1]); + new BinaryColumn(0, 1, new boolean[] {true}, new PooledBinary[1]); private boolean initialized; private final int initialEntryCount; @@ -53,7 +53,7 @@ public class BinaryColumnBuilder implements ColumnBuilder { // it is assumed that these arrays are the same length private boolean[] valueIsNull = new boolean[0]; - private Binary[] values = new Binary[0]; + private PooledBinary[] values = new PooledBinary[0]; private long arraysRetainedSizeInBytes; @@ -64,7 +64,7 @@ public BinaryColumnBuilder(ColumnBuilderStatus columnBuilderStatus, int expected } @Override - public ColumnBuilder writeBinary(Binary value) { + public ColumnBuilder writeBinary(PooledBinary value) { if (values.length <= positionCount) { growCapacity(); } @@ -79,8 +79,8 @@ public ColumnBuilder writeBinary(Binary value) { /** Write an Object to the current entry, which should be the Binary type; */ @Override public ColumnBuilder writeObject(Object value) { - if (value instanceof Binary) { - writeBinary((Binary) value); + if (value instanceof PooledBinary) { + writeBinary((PooledBinary) value); return this; } throw new UnSupportedDataTypeException("BinaryColumn only support Binary data type"); diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/RunLengthEncodedColumn.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/RunLengthEncodedColumn.java index d20cc4436..bb5f4145f 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/RunLengthEncodedColumn.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/RunLengthEncodedColumn.java @@ -22,7 +22,7 @@ import org.apache.tsfile.block.column.Column; import org.apache.tsfile.block.column.ColumnEncoding; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.RamUsageEstimator; import org.apache.tsfile.utils.TsPrimitiveType; @@ -101,7 +101,7 @@ public double getDouble(int position) { } @Override - public Binary getBinary(int position) { + public PooledBinary getBinary(int position) { return value.getBinary(0); } @@ -146,8 +146,8 @@ public double[] getDoubles() { } @Override - public Binary[] getBinaries() { - Binary[] res = new Binary[positionCount]; + public PooledBinary[] getBinaries() { + PooledBinary[] res = new PooledBinary[positionCount]; Arrays.fill(res, value.getBinary(0)); return res; } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractVarcharType.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractVarcharType.java index d09ed07c6..38254924d 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractVarcharType.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/AbstractVarcharType.java @@ -22,19 +22,19 @@ import org.apache.tsfile.block.column.Column; import org.apache.tsfile.block.column.ColumnBuilder; import org.apache.tsfile.read.common.block.column.BinaryColumnBuilder; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.util.Collections; import java.util.List; public abstract class AbstractVarcharType extends AbstractType { @Override - public Binary getBinary(Column c, int position) { + public PooledBinary getBinary(Column c, int position) { return c.getBinary(position); } @Override - public void writeBinary(ColumnBuilder builder, Binary value) { + public void writeBinary(ColumnBuilder builder, PooledBinary value) { builder.writeBinary(value); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BlobType.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BlobType.java index d02ca7168..db5cccf15 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BlobType.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/BlobType.java @@ -22,7 +22,7 @@ import org.apache.tsfile.block.column.Column; import org.apache.tsfile.block.column.ColumnBuilder; import org.apache.tsfile.read.common.block.column.BinaryColumnBuilder; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.util.Collections; import java.util.List; @@ -34,12 +34,12 @@ public class BlobType extends AbstractType { private BlobType() {} @Override - public Binary getBinary(Column c, int position) { + public PooledBinary getBinary(Column c, int position) { return c.getBinary(position); } @Override - public void writeBinary(ColumnBuilder builder, Binary value) { + public void writeBinary(ColumnBuilder builder, PooledBinary value) { builder.writeBinary(value); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/Type.java b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/Type.java index cb6b60944..1e042f171 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/Type.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/Type.java @@ -21,7 +21,7 @@ import org.apache.tsfile.block.column.Column; import org.apache.tsfile.block.column.ColumnBuilder; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.util.List; @@ -53,7 +53,7 @@ default double getDouble(Column c, int position) { } /** Gets a Binary at {@code position}. */ - default Binary getBinary(Column c, int position) { + default PooledBinary getBinary(Column c, int position) { throw new UnsupportedOperationException(getClass().getName()); } @@ -88,7 +88,7 @@ default void writeDouble(ColumnBuilder builder, double value) { } /** Write a Binary to the current entry; */ - default void writeBinary(ColumnBuilder builder, Binary value) { + default void writeBinary(ColumnBuilder builder, PooledBinary value) { throw new UnsupportedOperationException(getClass().getName()); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/Filter.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/Filter.java index cc48210d1..605eb02f5 100755 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/Filter.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/Filter.java @@ -31,8 +31,8 @@ import org.apache.tsfile.read.filter.operator.Not; import org.apache.tsfile.read.filter.operator.Or; import org.apache.tsfile.read.filter.operator.TimeFilterOperators; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.FilterDeserialize; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteIOUtils; import java.io.ByteArrayOutputStream; @@ -75,7 +75,7 @@ public abstract class Filter { public abstract boolean satisfyDouble(long time, double value); - public abstract boolean satisfyBinary(long time, Binary value); + public abstract boolean satisfyBinary(long time, PooledBinary value); /** * To examine whether the row(with time and values) is satisfied with the filter. @@ -96,7 +96,7 @@ public abstract class Filter { public abstract boolean satisfyDoubleRow(long time, double[] values); - public abstract boolean satisfyBinaryRow(long time, Binary[] values); + public abstract boolean satisfyBinaryRow(long time, PooledBinary[] values); /** * @deprecated this method is out of date. Use {@link #satisfyTsBlock(boolean[],TsBlock)} instead. diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/TimeFilter.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/TimeFilter.java index 18d444d7c..17c3f32e3 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/TimeFilter.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/TimeFilter.java @@ -22,7 +22,7 @@ import org.apache.tsfile.file.metadata.IMetadata; import org.apache.tsfile.file.metadata.statistics.Statistics; import org.apache.tsfile.read.common.block.TsBlock; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.io.Serializable; @@ -69,7 +69,7 @@ public boolean satisfyDouble(long time, double value) { } @Override - public boolean satisfyBinary(long time, Binary value) { + public boolean satisfyBinary(long time, PooledBinary value) { // only use time to filter return timeSatisfy(time); } @@ -111,7 +111,7 @@ public boolean satisfyDoubleRow(long time, double[] values) { } @Override - public boolean satisfyBinaryRow(long time, Binary[] values) { + public boolean satisfyBinaryRow(long time, PooledBinary[] values) { // only use time to filter return timeSatisfy(time); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/ValueFilter.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/ValueFilter.java index e1ae98bbf..1ea76a778 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/ValueFilter.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/ValueFilter.java @@ -23,7 +23,7 @@ import org.apache.tsfile.file.metadata.statistics.Statistics; import org.apache.tsfile.read.common.TimeRange; import org.apache.tsfile.read.common.block.TsBlock; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.apache.tsfile.write.UnSupportedDataTypeException; @@ -85,7 +85,7 @@ public boolean satisfyDouble(long time, double value) { } @Override - public boolean satisfyBinary(long time, Binary value) { + public boolean satisfyBinary(long time, PooledBinary value) { throw new UnSupportedDataTypeException(getClass().getName()); } @@ -120,7 +120,7 @@ public boolean satisfyDoubleRow(long time, double[] values) { } @Override - public boolean satisfyBinaryRow(long time, Binary[] values) { + public boolean satisfyBinaryRow(long time, PooledBinary[] values) { return satisfyBinary(time, values[measurementIndex]); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/factory/ValueFilterApi.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/factory/ValueFilterApi.java index 53c4b74c2..ff2eb2d4b 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/factory/ValueFilterApi.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/factory/ValueFilterApi.java @@ -31,7 +31,7 @@ import org.apache.tsfile.read.filter.operator.StringFilterOperators; import org.apache.tsfile.read.filter.operator.ValueIsNotNullOperator; import org.apache.tsfile.read.filter.operator.ValueIsNullOperator; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.util.Objects; import java.util.Set; @@ -66,9 +66,9 @@ public static Filter gt(int measurementIndex, Object value, TSDataType type) { return new FloatFilterOperators.ValueGt(measurementIndex, (float) value); case TEXT: case BLOB: - return new BinaryFilterOperators.ValueGt(measurementIndex, (Binary) value); + return new BinaryFilterOperators.ValueGt(measurementIndex, (PooledBinary) value); case STRING: - return new StringFilterOperators.ValueGt(measurementIndex, (Binary) value); + return new StringFilterOperators.ValueGt(measurementIndex, (PooledBinary) value); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -92,9 +92,9 @@ public static Filter gtEq(int measurementIndex, Object value, TSDataType type) { return new FloatFilterOperators.ValueGtEq(measurementIndex, (float) value); case TEXT: case BLOB: - return new BinaryFilterOperators.ValueGtEq(measurementIndex, (Binary) value); + return new BinaryFilterOperators.ValueGtEq(measurementIndex, (PooledBinary) value); case STRING: - return new StringFilterOperators.ValueGtEq(measurementIndex, (Binary) value); + return new StringFilterOperators.ValueGtEq(measurementIndex, (PooledBinary) value); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -118,9 +118,9 @@ public static Filter lt(int measurementIndex, Object value, TSDataType type) { return new FloatFilterOperators.ValueLt(measurementIndex, (float) value); case TEXT: case BLOB: - return new BinaryFilterOperators.ValueLt(measurementIndex, (Binary) value); + return new BinaryFilterOperators.ValueLt(measurementIndex, (PooledBinary) value); case STRING: - return new StringFilterOperators.ValueLt(measurementIndex, (Binary) value); + return new StringFilterOperators.ValueLt(measurementIndex, (PooledBinary) value); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -144,9 +144,9 @@ public static Filter ltEq(int measurementIndex, Object value, TSDataType type) { return new FloatFilterOperators.ValueLtEq(measurementIndex, (float) value); case TEXT: case BLOB: - return new BinaryFilterOperators.ValueLtEq(measurementIndex, (Binary) value); + return new BinaryFilterOperators.ValueLtEq(measurementIndex, (PooledBinary) value); case STRING: - return new StringFilterOperators.ValueLtEq(measurementIndex, (Binary) value); + return new StringFilterOperators.ValueLtEq(measurementIndex, (PooledBinary) value); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -170,9 +170,9 @@ public static Filter eq(int measurementIndex, Object value, TSDataType type) { return new FloatFilterOperators.ValueEq(measurementIndex, (float) value); case TEXT: case BLOB: - return new BinaryFilterOperators.ValueEq(measurementIndex, (Binary) value); + return new BinaryFilterOperators.ValueEq(measurementIndex, (PooledBinary) value); case STRING: - return new StringFilterOperators.ValueEq(measurementIndex, (Binary) value); + return new StringFilterOperators.ValueEq(measurementIndex, (PooledBinary) value); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -196,9 +196,9 @@ public static Filter notEq(int measurementIndex, Object value, TSDataType type) return new FloatFilterOperators.ValueNotEq(measurementIndex, (float) value); case TEXT: case BLOB: - return new BinaryFilterOperators.ValueNotEq(measurementIndex, (Binary) value); + return new BinaryFilterOperators.ValueNotEq(measurementIndex, (PooledBinary) value); case STRING: - return new StringFilterOperators.ValueNotEq(measurementIndex, (Binary) value); + return new StringFilterOperators.ValueNotEq(measurementIndex, (PooledBinary) value); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -238,10 +238,10 @@ public static Filter between( case TEXT: case BLOB: return new BinaryFilterOperators.ValueBetweenAnd( - measurementIndex, (Binary) value1, (Binary) value2); + measurementIndex, (PooledBinary) value1, (PooledBinary) value2); case STRING: return new StringFilterOperators.ValueBetweenAnd( - measurementIndex, (Binary) value1, (Binary) value2); + measurementIndex, (PooledBinary) value1, (PooledBinary) value2); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -273,10 +273,10 @@ public static Filter notBetween( case TEXT: case BLOB: return new BinaryFilterOperators.ValueNotBetweenAnd( - measurementIndex, (Binary) value1, (Binary) value2); + measurementIndex, (PooledBinary) value1, (PooledBinary) value2); case STRING: return new StringFilterOperators.ValueNotBetweenAnd( - measurementIndex, (Binary) value1, (Binary) value2); + measurementIndex, (PooledBinary) value1, (PooledBinary) value2); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -401,9 +401,9 @@ public static > Filter in( return new DoubleFilterOperators.ValueIn(measurementIndex, (Set) values); case TEXT: case BLOB: - return new BinaryFilterOperators.ValueIn(measurementIndex, (Set) values); + return new BinaryFilterOperators.ValueIn(measurementIndex, (Set) values); case STRING: - return new StringFilterOperators.ValueIn(measurementIndex, (Set) values); + return new StringFilterOperators.ValueIn(measurementIndex, (Set) values); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } @@ -428,9 +428,9 @@ public static > Filter notIn( return new DoubleFilterOperators.ValueNotIn(measurementIndex, (Set) values); case TEXT: case BLOB: - return new BinaryFilterOperators.ValueNotIn(measurementIndex, (Set) values); + return new BinaryFilterOperators.ValueNotIn(measurementIndex, (Set) values); case STRING: - return new StringFilterOperators.ValueNotIn(measurementIndex, (Set) values); + return new StringFilterOperators.ValueNotIn(measurementIndex, (Set) values); default: throw new UnsupportedOperationException("Unsupported data type: " + type); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/And.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/And.java index de0f3381b..5445902b9 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/And.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/And.java @@ -25,7 +25,7 @@ import org.apache.tsfile.read.filter.basic.BinaryLogicalFilter; import org.apache.tsfile.read.filter.basic.Filter; import org.apache.tsfile.read.filter.basic.OperatorType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -73,7 +73,7 @@ public boolean satisfyDouble(long time, double value) { } @Override - public boolean satisfyBinary(long time, Binary value) { + public boolean satisfyBinary(long time, PooledBinary value) { return left.satisfyBinary(time, value) && right.satisfyBinary(time, value); } @@ -108,7 +108,7 @@ public boolean satisfyDoubleRow(long time, double[] values) { } @Override - public boolean satisfyBinaryRow(long time, Binary[] values) { + public boolean satisfyBinaryRow(long time, PooledBinary[] values) { return left.satisfyBinaryRow(time, values) && right.satisfyBinaryRow(time, values); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/Not.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/Not.java index 00918915b..3960aa192 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/Not.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/Not.java @@ -24,7 +24,7 @@ import org.apache.tsfile.read.common.block.TsBlock; import org.apache.tsfile.read.filter.basic.Filter; import org.apache.tsfile.read.filter.basic.OperatorType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.io.DataOutputStream; import java.io.IOException; @@ -81,7 +81,7 @@ public boolean satisfyDouble(long time, double value) { } @Override - public boolean satisfyBinary(long time, Binary value) { + public boolean satisfyBinary(long time, PooledBinary value) { return !filter.satisfyBinary(time, value); } @@ -116,7 +116,7 @@ public boolean satisfyDoubleRow(long time, double[] values) { } @Override - public boolean satisfyBinaryRow(long time, Binary[] values) { + public boolean satisfyBinaryRow(long time, PooledBinary[] values) { return !filter.satisfyBinaryRow(time, values); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/Or.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/Or.java index f0f1c2f12..11c08e48a 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/Or.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/Or.java @@ -25,7 +25,7 @@ import org.apache.tsfile.read.filter.basic.BinaryLogicalFilter; import org.apache.tsfile.read.filter.basic.Filter; import org.apache.tsfile.read.filter.basic.OperatorType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -73,7 +73,7 @@ public boolean satisfyDouble(long time, double value) { } @Override - public boolean satisfyBinary(long time, Binary value) { + public boolean satisfyBinary(long time, PooledBinary value) { return left.satisfyBinary(time, value) || right.satisfyBinary(time, value); } @@ -108,7 +108,7 @@ public boolean satisfyDoubleRow(long time, double[] values) { } @Override - public boolean satisfyBinaryRow(long time, Binary[] values) { + public boolean satisfyBinaryRow(long time, PooledBinary[] values) { return left.satisfyBinaryRow(time, values) || right.satisfyBinaryRow(time, values); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/ValueIsNotNullOperator.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/ValueIsNotNullOperator.java index 73ec981c6..0a11d7cba 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/ValueIsNotNullOperator.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/ValueIsNotNullOperator.java @@ -22,7 +22,7 @@ import org.apache.tsfile.read.filter.basic.CompareNullFilter; import org.apache.tsfile.read.filter.basic.Filter; import org.apache.tsfile.read.filter.basic.OperatorType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.io.Serializable; import java.nio.ByteBuffer; @@ -69,7 +69,7 @@ public boolean satisfyDouble(long time, double value) { } @Override - public boolean satisfyBinary(long time, Binary value) { + public boolean satisfyBinary(long time, PooledBinary value) { return value != null; } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/ValueIsNullOperator.java b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/ValueIsNullOperator.java index 3bfc912e9..3ccbb9021 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/ValueIsNullOperator.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/filter/operator/ValueIsNullOperator.java @@ -22,7 +22,7 @@ import org.apache.tsfile.read.filter.basic.CompareNullFilter; import org.apache.tsfile.read.filter.basic.Filter; import org.apache.tsfile.read.filter.basic.OperatorType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import java.io.Serializable; import java.nio.ByteBuffer; @@ -69,7 +69,7 @@ public boolean satisfyDouble(long time, double value) { } @Override - public boolean satisfyBinary(long time, Binary value) { + public boolean satisfyBinary(long time, PooledBinary value) { return value == null; } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java index 6c7a43b62..d39934340 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java @@ -31,7 +31,7 @@ import org.apache.tsfile.read.query.executor.task.DeviceQueryTask; import org.apache.tsfile.read.reader.series.AbstractFileSeriesReader; import org.apache.tsfile.read.reader.series.FileSeriesReader; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsPrimitiveType; import org.slf4j.Logger; @@ -234,7 +234,7 @@ private void fillIdColumn(Column column, Object val, int startPos, int endPos) { switch (column.getDataType()) { case TEXT: if (val instanceof String) { - val = new Binary(((String) val), StandardCharsets.UTF_8); + val = new PooledBinary(((String) val), StandardCharsets.UTF_8); } Arrays.fill(column.getBinaries(), startPos, endPos, val); break; diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java index ee74f815d..424bcc5a4 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java @@ -34,7 +34,7 @@ import org.apache.tsfile.read.filter.factory.FilterFactory; import org.apache.tsfile.read.reader.IPageReader; import org.apache.tsfile.read.reader.series.PaginationController; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.apache.tsfile.write.UnSupportedDataTypeException; @@ -196,7 +196,7 @@ public BatchData getAllSatisfiedPageData(boolean ascending) throws IOException { case TEXT: case BLOB: case STRING: - Binary aBinary = valueDecoder.readBinary(valueBuffer); + PooledBinary aBinary = valueDecoder.readBinary(valueBuffer); if (!isDeleted(timestamp) && (allSatisfy || recordFilter.satisfyBinary(timestamp, aBinary))) { pageData.putBinary(timestamp, aBinary); @@ -341,7 +341,7 @@ public TsBlock getAllSatisfiedData() throws IOException { case STRING: while (timeDecoder.hasNext(timeBuffer)) { long timestamp = timeDecoder.readLong(timeBuffer); - Binary aBinary = valueDecoder.readBinary(valueBuffer); + PooledBinary aBinary = valueDecoder.readBinary(valueBuffer); if (isDeleted(timestamp) || (!allSatisfy && !recordFilter.satisfyBinary(timestamp, aBinary))) { continue; diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java index 317b493c5..043d422af 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.BatchDataFactory; import org.apache.tsfile.read.common.TimeRange; import org.apache.tsfile.read.filter.basic.Filter; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.apache.tsfile.utils.TsPrimitiveType; import org.apache.tsfile.write.UnSupportedDataTypeException; @@ -158,7 +158,7 @@ public BatchData nextBatch(long[] timeBatch, boolean ascending, Filter filter) case TEXT: case BLOB: case STRING: - Binary aBinary = valueDecoder.readBinary(valueBuffer); + PooledBinary aBinary = valueDecoder.readBinary(valueBuffer); if (!isDeleted(timestamp) && (filter == null || filter.satisfyBinary(timestamp, aBinary))) { pageData.putBinary(timestamp, aBinary); @@ -213,7 +213,7 @@ public TsPrimitiveType nextValue(long timestamp, int timeIndex) throws IOExcepti case TEXT: case BLOB: case STRING: - Binary aBinary = valueDecoder.readBinary(valueBuffer); + PooledBinary aBinary = valueDecoder.readBinary(valueBuffer); if (!isDeleted(timestamp)) { resultValue = new TsPrimitiveType.TsBinary(aBinary); } @@ -275,7 +275,7 @@ public TsPrimitiveType[] nextValueBatch(long[] timeBatch) throws IOException { case TEXT: case BLOB: case STRING: - Binary aBinary = valueDecoder.readBinary(valueBuffer); + PooledBinary aBinary = valueDecoder.readBinary(valueBuffer); if (!isDeleted(timeBatch[i])) { valueBatch[i] = new TsPrimitiveType.TsBinary(aBinary); } @@ -362,7 +362,7 @@ public void writeColumnBuilderWithNextBatch( case TEXT: case BLOB: case STRING: - Binary aBinary = valueDecoder.readBinary(valueBuffer); + PooledBinary aBinary = valueDecoder.readBinary(valueBuffer); if (keepCurrentRow[i]) { if (isDeleted[i]) { columnBuilder.appendNull(); @@ -431,7 +431,7 @@ public void writeColumnBuilderWithNextBatch( case TEXT: case BLOB: case STRING: - Binary aBinary = valueDecoder.readBinary(valueBuffer); + PooledBinary aBinary = valueDecoder.readBinary(valueBuffer); if (keepCurrentRow[i]) { columnBuilder.writeBinary(aBinary); } @@ -559,7 +559,7 @@ public void writeColumnBuilderWithNextBatch( columnBuilder.appendNull(); continue; } - Binary aBinary = valueDecoder.readBinary(valueBuffer); + PooledBinary aBinary = valueDecoder.readBinary(valueBuffer); columnBuilder.writeBinary(aBinary); } break; diff --git a/java/tsfile/src/main/java/org/apache/tsfile/utils/BytesUtils.java b/java/tsfile/src/main/java/org/apache/tsfile/utils/BytesUtils.java index f38a0da19..c4ae19a9f 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/utils/BytesUtils.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/utils/BytesUtils.java @@ -928,8 +928,8 @@ public static short bytesToShort(byte[] b) { return s; } - public static Binary valueOf(String value) { - return new Binary(stringToBytes(value)); + public static PooledBinary valueOf(String value) { + return new PooledBinary(stringToBytes(value)); } public static String parseBlobByteArrayToString(byte[] input) { @@ -941,4 +941,14 @@ public static String parseBlobByteArrayToString(byte[] input) { } return hexString.toString(); } + + public static String parseBlobByteArrayToString(byte[] input, int offset, int length) { + StringBuilder hexString = new StringBuilder("0x"); + if (input != null) { + for (int i = offset; i < offset + length; i++) { + hexString.append(String.format("%02x", input[i])); + } + } + return hexString.toString(); + } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/utils/ReadWriteIOUtils.java b/java/tsfile/src/main/java/org/apache/tsfile/utils/ReadWriteIOUtils.java index 50aed1179..6769a93f6 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/utils/ReadWriteIOUtils.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/utils/ReadWriteIOUtils.java @@ -285,9 +285,9 @@ public static int write(short n, ByteBuffer buffer) { * * @return The number of bytes used to represent n. */ - public static int write(Binary n, ByteBuffer buffer) { + public static int write(PooledBinary n, ByteBuffer buffer) { buffer.putInt(n.getLength()); - buffer.put(n.getValues()); + buffer.put(n.getValues(), 0, n.getLength()); return INT_LEN + n.getLength(); } @@ -303,11 +303,11 @@ public static int write(int n, OutputStream outputStream) throws IOException { } /** write the size (int) of the binary and then the bytes in binary */ - public static int write(Binary binary, OutputStream outputStream) throws IOException { - byte[] size = BytesUtils.intToBytes(binary.getValues().length); + public static int write(PooledBinary binary, OutputStream outputStream) throws IOException { + byte[] size = BytesUtils.intToBytes(binary.getLength()); outputStream.write(size); - outputStream.write(binary.getValues()); - return size.length + binary.getValues().length; + outputStream.write(binary.getValues(), 0, binary.getLength()); + return size.length + binary.getLength(); } /** @@ -499,7 +499,7 @@ public static int write(TSEncoding encoding, ByteBuffer buffer) { return write(n, buffer); } - public static int sizeToWrite(Binary n) { + public static int sizeToWrite(PooledBinary n) { return INT_LEN + n.getLength(); } @@ -787,16 +787,16 @@ public static byte[] readBytesWithSelfDescriptionLength(InputStream inputStream) return readBytes(inputStream, length); } - public static Binary readBinary(ByteBuffer buffer) { + public static PooledBinary readBinary(ByteBuffer buffer) { int length = readInt(buffer); byte[] bytes = readBytes(buffer, length); - return new Binary(bytes); + return new PooledBinary(bytes); } - public static Binary readBinary(InputStream inputStream) throws IOException { + public static PooledBinary readBinary(InputStream inputStream) throws IOException { int length = readInt(inputStream); byte[] bytes = readBytes(inputStream, length); - return new Binary(bytes); + return new PooledBinary(bytes); } /** @@ -983,12 +983,12 @@ public static Set readDoubleSet(ByteBuffer buffer) { return set; } - public static Set readBinarySet(ByteBuffer buffer) { + public static Set readBinarySet(ByteBuffer buffer) { int size = readInt(buffer); if (size <= 0) { return Collections.emptySet(); } - Set set = new HashSet<>(); + Set set = new HashSet<>(); for (int i = 0; i < size; i++) { set.add(readBinary(buffer)); } @@ -1070,10 +1070,10 @@ public static void writeDoubleSet(Set set, DataOutputStream outputStream } } - public static void writeBinarySet(Set set, DataOutputStream outputStream) + public static void writeBinarySet(Set set, DataOutputStream outputStream) throws IOException { write(set.contains(null) ? set.size() - 1 : set.size(), outputStream); - for (Binary e : set) { + for (PooledBinary e : set) { if (e != null) { write(e, outputStream); } @@ -1160,11 +1160,11 @@ public static void writeObject(Object value, DataOutputStream outputStream) { } else if (value instanceof Float) { outputStream.write(FLOAT.ordinal()); outputStream.writeFloat((Float) value); - } else if (value instanceof Binary) { + } else if (value instanceof PooledBinary) { outputStream.write(BINARY.ordinal()); - byte[] bytes = ((Binary) value).getValues(); - outputStream.writeInt(bytes.length); - outputStream.write(bytes); + PooledBinary binary = ((PooledBinary) value); + outputStream.writeInt(binary.getLength()); + outputStream.write(binary.getValues(), 0, binary.getLength()); } else if (value instanceof Boolean) { outputStream.write(BOOLEAN.ordinal()); outputStream.write(Boolean.TRUE.equals(value) ? 1 : 0); @@ -1194,11 +1194,11 @@ public static void writeObject(Object value, ByteBuffer byteBuffer) { } else if (value instanceof Float) { byteBuffer.putInt(FLOAT.ordinal()); byteBuffer.putFloat((Float) value); - } else if (value instanceof Binary) { + } else if (value instanceof PooledBinary) { byteBuffer.putInt(BINARY.ordinal()); - byte[] bytes = ((Binary) value).getValues(); - byteBuffer.putInt(bytes.length); - byteBuffer.put(bytes); + PooledBinary binary = ((PooledBinary) value); + byteBuffer.putInt(binary.getLength()); + byteBuffer.put(binary.getValues(), 0, binary.getLength()); } else if (value instanceof Boolean) { byteBuffer.putInt(BOOLEAN.ordinal()); byteBuffer.put(Boolean.TRUE.equals(value) ? (byte) 1 : (byte) 0); @@ -1229,7 +1229,7 @@ public static Object readObject(ByteBuffer buffer) { int length = buffer.getInt(); byte[] bytes = new byte[length]; buffer.get(bytes); - return new Binary(bytes); + return new PooledBinary(bytes); case NULL: return null; case STRING: diff --git a/java/tsfile/src/main/java/org/apache/tsfile/utils/TsFileGeneratorUtils.java b/java/tsfile/src/main/java/org/apache/tsfile/utils/TsFileGeneratorUtils.java index 6b87f6e17..1ca542c44 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/utils/TsFileGeneratorUtils.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/utils/TsFileGeneratorUtils.java @@ -93,7 +93,7 @@ public static void writeWithTsRecord( dPoint = new StringDataPoint( schema.getMeasurementName(), - new Binary(String.valueOf(startValue), TSFileConfig.STRING_CHARSET)); + new PooledBinary(String.valueOf(startValue), TSFileConfig.STRING_CHARSET)); break; } tsRecord.addTuple(dPoint); @@ -380,7 +380,8 @@ public static File generateAlignedTsFileWithTextValues( for (IMeasurementSchema schema : alignedMeasurementSchemas) { DataPoint dPoint = new StringDataPoint( - schema.getMeasurementName(), new Binary(value, TSFileConfig.STRING_CHARSET)); + schema.getMeasurementName(), + new PooledBinary(value, TSFileConfig.STRING_CHARSET)); tsRecord.addTuple(dPoint); } // write @@ -438,7 +439,8 @@ public static File generateNonAlignedTsFileWithTextValues( for (IMeasurementSchema schema : measurementSchemas) { DataPoint dPoint = new StringDataPoint( - schema.getMeasurementName(), new Binary(value, TSFileConfig.STRING_CHARSET)); + schema.getMeasurementName(), + new PooledBinary(value, TSFileConfig.STRING_CHARSET)); tsRecord.addTuple(dPoint); } // write diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java index d6dd6c872..e9d797d6c 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java @@ -29,8 +29,8 @@ import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.DateUtils; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.write.UnSupportedDataTypeException; import org.apache.tsfile.write.record.Tablet; import org.apache.tsfile.write.record.Tablet.ColumnCategory; @@ -186,7 +186,7 @@ public int write(long time, List data) throws WriteProcessException, case TEXT: case BLOB: case STRING: - valueChunkWriter.write(time, (Binary) point.getValue(), isNull); + valueChunkWriter.write(time, (PooledBinary) point.getValue(), isNull); break; default: throw new UnSupportedDataTypeException( @@ -277,7 +277,8 @@ public int write(Tablet tablet, int startRowIndex, int endRowIndex) case TEXT: case BLOB: case STRING: - valueChunkWriter.write(time, ((Binary[]) tablet.values[columnIndex])[row], isNull); + valueChunkWriter.write( + time, ((PooledBinary[]) tablet.values[columnIndex])[row], isNull); break; default: throw new UnSupportedDataTypeException( diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java index a82ca2310..8133be5d6 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java @@ -30,7 +30,7 @@ import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; import org.apache.tsfile.read.common.block.column.TimeColumn; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsPrimitiveType; import org.apache.tsfile.write.schema.IMeasurementSchema; import org.apache.tsfile.write.schema.VectorMeasurementSchema; @@ -271,7 +271,7 @@ public void write(long time, double value, boolean isNull) { valueChunkWriterList.get(valueIndex++).write(time, value, isNull); } - public void write(long time, Binary value, boolean isNull) { + public void write(long time, PooledBinary value, boolean isNull) { valueChunkWriterList.get(valueIndex++).write(time, value, isNull); } @@ -295,7 +295,7 @@ public void write(long time, double value, boolean isNull, int valueIndex) { valueChunkWriterList.get(valueIndex).write(time, value, isNull); } - public void write(long time, Binary value, boolean isNull, int valueIndex) { + public void write(long time, PooledBinary value, boolean isNull, int valueIndex) { valueChunkWriterList.get(valueIndex).write(time, value, isNull); } @@ -326,7 +326,9 @@ public void write(long time, TsPrimitiveType[] points) { case STRING: writer.write( time, - point != null ? point.getBinary() : new Binary("".getBytes(StandardCharsets.UTF_8)), + point != null + ? point.getBinary() + : new PooledBinary("".getBytes(StandardCharsets.UTF_8)), point == null); break; } @@ -425,7 +427,7 @@ public void writeByColumn(long time, double value, boolean isNull) { valueChunkWriterList.get(valueIndex).write(time, value, isNull); } - public void writeByColumn(long time, Binary value, boolean isNull) { + public void writeByColumn(long time, PooledBinary value, boolean isNull) { valueChunkWriterList.get(valueIndex).write(time, value, isNull); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java index 2fbab4163..a383d5280 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java @@ -28,7 +28,7 @@ import org.apache.tsfile.file.header.ChunkHeader; import org.apache.tsfile.file.header.PageHeader; import org.apache.tsfile.file.metadata.statistics.Statistics; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.apache.tsfile.write.page.PageWriter; @@ -239,7 +239,7 @@ public void write(long time, double value) { checkPageSizeAndMayOpenANewPage(); } - public void write(long time, Binary value) { + public void write(long time, PooledBinary value) { pageWriter.write(time, value); checkPageSizeAndMayOpenANewPage(); } @@ -281,7 +281,7 @@ public void write(long[] timestamps, double[] values, int batchSize) { checkPageSizeAndMayOpenANewPage(); } - public void write(long[] timestamps, Binary[] values, int batchSize) { + public void write(long[] timestamps, PooledBinary[] values, int batchSize) { pageWriter.write(timestamps, values, batchSize); checkPageSizeAndMayOpenANewPage(); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java index 75e5a9bc8..dbe6871b2 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java @@ -24,8 +24,8 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.exception.write.WriteProcessException; import org.apache.tsfile.file.metadata.IDeviceID; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.DateUtils; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.write.UnSupportedDataTypeException; import org.apache.tsfile.write.record.Tablet; import org.apache.tsfile.write.record.Tablet.ColumnCategory; @@ -156,7 +156,9 @@ public int write(Tablet tablet, int startRowIndex, int endRowIndex) case TEXT: case BLOB: case STRING: - chunkWriters.get(measurementId).write(time, ((Binary[]) tablet.values[column])[row]); + chunkWriters + .get(measurementId) + .write(time, ((PooledBinary[]) tablet.values[column])[row]); break; default: throw new UnSupportedDataTypeException( diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java index 3a3ccfa8c..dbad9baa4 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java @@ -31,7 +31,7 @@ import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; import org.apache.tsfile.file.metadata.statistics.Statistics; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.apache.tsfile.write.page.ValuePageWriter; @@ -158,7 +158,7 @@ public void write(long time, double value, boolean isNull) { pageWriter.write(time, value, isNull); } - public void write(long time, Binary value, boolean isNull) { + public void write(long time, PooledBinary value, boolean isNull) { pageWriter.write(time, value, isNull); } @@ -182,7 +182,8 @@ public void write(long[] timestamps, double[] values, boolean[] isNull, int batc pageWriter.write(timestamps, values, isNull, batchSize, pos); } - public void write(long[] timestamps, Binary[] values, boolean[] isNull, int batchSize, int pos) { + public void write( + long[] timestamps, PooledBinary[] values, boolean[] isNull, int batchSize, int pos) { pageWriter.write(timestamps, values, isNull, batchSize, pos); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java b/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java index 877404304..6905227c3 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java @@ -27,7 +27,7 @@ import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.EncryptionType; import org.apache.tsfile.file.metadata.statistics.Statistics; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.apache.tsfile.write.schema.IMeasurementSchema; @@ -146,7 +146,7 @@ public void write(long time, double value) { } /** write a time value pair into encoder */ - public void write(long time, Binary value) { + public void write(long time, PooledBinary value) { timeEncoder.encode(time, timeOut); valueEncoder.encode(value, valueOut); statistics.update(time, value); @@ -198,7 +198,7 @@ public void write(long[] timestamps, double[] values, int batchSize) { } /** write time series into encoder */ - public void write(long[] timestamps, Binary[] values, int batchSize) { + public void write(long[] timestamps, PooledBinary[] values, int batchSize) { for (int i = 0; i < batchSize; i++) { timeEncoder.encode(timestamps[i], timeOut); valueEncoder.encode(values[i], valueOut); diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java b/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java index 6199171a0..23da4f20d 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java @@ -27,7 +27,7 @@ import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.EncryptionType; import org.apache.tsfile.file.metadata.statistics.Statistics; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; @@ -150,7 +150,7 @@ public void write(long time, double value, boolean isNull) { } /** write a time value pair into encoder */ - public void write(long time, Binary value, boolean isNull) { + public void write(long time, PooledBinary value, boolean isNull) { setBit(isNull); if (!isNull) { valueEncoder.encode(value, valueOut); @@ -231,7 +231,7 @@ public void write( /** write time series into encoder */ public void write( - long[] timestamps, Binary[] values, boolean[] isNull, int batchSize, int arrayOffset) { + long[] timestamps, PooledBinary[] values, boolean[] isNull, int batchSize, int arrayOffset) { for (int i = arrayOffset; i < batchSize + arrayOffset; i++) { setBit(isNull[i]); if (!isNull[i]) { diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/record/TSRecord.java b/java/tsfile/src/main/java/org/apache/tsfile/write/record/TSRecord.java index 68aa126a8..4d605cc9d 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/record/TSRecord.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/record/TSRecord.java @@ -22,7 +22,7 @@ import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.IDeviceID.Factory; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.StringContainer; import org.apache.tsfile.write.record.datapoint.BooleanDataPoint; import org.apache.tsfile.write.record.datapoint.DataPoint; @@ -112,12 +112,12 @@ public TSRecord addPoint(String measurementName, boolean val) { @TsFileApi public TSRecord addPoint(String measurementName, String val) { return addTuple( - new StringDataPoint(measurementName, new Binary(val, TSFileConfig.STRING_CHARSET))); + new StringDataPoint(measurementName, new PooledBinary(val, TSFileConfig.STRING_CHARSET))); } @TsFileApi public TSRecord addPoint(String measurementName, byte[] val) { - return addTuple(new StringDataPoint(measurementName, new Binary(val))); + return addTuple(new StringDataPoint(measurementName, new PooledBinary(val))); } @TsFileApi diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java b/java/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java index 4acf943b1..73f36f5a9 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java @@ -24,10 +24,10 @@ import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.StringArrayDeviceID; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.BitMap; import org.apache.tsfile.utils.BytesUtils; import org.apache.tsfile.utils.DateUtils; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.PublicBAOS; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.apache.tsfile.write.UnSupportedDataTypeException; @@ -294,20 +294,20 @@ private void addValueOfDataType( case STRING: case BLOB: { - if (value != null && !(value instanceof Binary) && !(value instanceof String)) { + if (value != null && !(value instanceof PooledBinary) && !(value instanceof String)) { throw new IllegalArgumentException( String.format( "Expected value of type Binary for data type %s, but got %s", dataType, value.getClass().getName())); } - final Binary[] sensor = (Binary[]) values[indexOfSchema]; - if (value instanceof Binary) { - sensor[rowIndex] = (Binary) value; + final PooledBinary[] sensor = (PooledBinary[]) values[indexOfSchema]; + if (value instanceof PooledBinary) { + sensor[rowIndex] = (PooledBinary) value; } else { sensor[rowIndex] = value != null - ? new Binary(((String) value).getBytes(TSFileConfig.STRING_CHARSET)) - : Binary.EMPTY_VALUE; + ? new PooledBinary(((String) value).getBytes(TSFileConfig.STRING_CHARSET)) + : PooledBinary.EMPTY_VALUE; } break; } @@ -462,8 +462,8 @@ public void addValue(int rowIndex, String measurement, String val) { @TsFileApi public void addValue(int rowIndex, int columnIndex, String val) { - final Binary[] sensor = (Binary[]) values[columnIndex]; - sensor[rowIndex] = new Binary(val, TSFileConfig.STRING_CHARSET); + final PooledBinary[] sensor = (PooledBinary[]) values[columnIndex]; + sensor[rowIndex] = new PooledBinary(val, TSFileConfig.STRING_CHARSET); updateBitMap(rowIndex, columnIndex, false); } @@ -475,8 +475,8 @@ public void addValue(int rowIndex, String measurement, byte[] val) { @TsFileApi public void addValue(int rowIndex, int columnIndex, byte[] val) { - final Binary[] sensor = (Binary[]) values[columnIndex]; - sensor[rowIndex] = new Binary(val); + final PooledBinary[] sensor = (PooledBinary[]) values[columnIndex]; + sensor[rowIndex] = new PooledBinary(val); updateBitMap(rowIndex, columnIndex, false); } @@ -588,7 +588,7 @@ private Object createValueColumnOfDataType(TSDataType dataType) { case TEXT: case STRING: case BLOB: - valueColumn = new Binary[maxRowNumber]; + valueColumn = new PooledBinary[maxRowNumber]; break; case DATE: valueColumn = new LocalDate[maxRowNumber]; @@ -656,7 +656,8 @@ private void writeBitMaps(DataOutputStream stream) throws IOException { } else { ReadWriteIOUtils.write(BytesUtils.boolToByte(true), stream); ReadWriteIOUtils.write(rowSize, stream); - ReadWriteIOUtils.write(new Binary(bitMaps[i].getTruncatedByteArray(rowSize)), stream); + ReadWriteIOUtils.write( + new PooledBinary(bitMaps[i].getTruncatedByteArray(rowSize)), stream); } } } @@ -720,7 +721,7 @@ private void serializeColumn( case TEXT: case STRING: case BLOB: - Binary[] binaryValues = (Binary[]) column; + PooledBinary[] binaryValues = (PooledBinary[]) column; for (int j = 0; j < rowSize; j++) { ReadWriteIOUtils.write(BytesUtils.boolToByte(binaryValues[j] != null), stream); if (binaryValues[j] != null) { @@ -795,7 +796,7 @@ public static BitMap[] readBitMapsFromBuffer(ByteBuffer byteBuffer, int columns) boolean hasBitMap = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer)); if (hasBitMap) { final int size = ReadWriteIOUtils.readInt(byteBuffer); - final Binary valueBinary = ReadWriteIOUtils.readBinary(byteBuffer); + final PooledBinary valueBinary = ReadWriteIOUtils.readBinary(byteBuffer); bitMaps[i] = new BitMap(size, valueBinary.getValues()); } } @@ -867,13 +868,13 @@ public static Object[] readTabletValuesFromBuffer( case TEXT: case STRING: case BLOB: - Binary[] binaryValues = new Binary[rowSize]; + PooledBinary[] binaryValues = new PooledBinary[rowSize]; for (int index = 0; index < rowSize; index++) { boolean isNotNull = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer)); if (isNotNull) { binaryValues[index] = ReadWriteIOUtils.readBinary(byteBuffer); } else { - binaryValues[index] = Binary.EMPTY_VALUE; + binaryValues[index] = PooledBinary.EMPTY_VALUE; } } values[i] = binaryValues; @@ -1024,8 +1025,8 @@ public boolean equals(Object o) { case TEXT: case STRING: case BLOB: - Binary[] thisBinaryValues = (Binary[]) values[i]; - Binary[] thatBinaryValues = (Binary[]) thatValues[i]; + PooledBinary[] thisBinaryValues = (PooledBinary[]) values[i]; + PooledBinary[] thatBinaryValues = (PooledBinary[]) thatValues[i]; if (thisBinaryValues.length < rowSize || thatBinaryValues.length < rowSize) { return false; } @@ -1119,7 +1120,7 @@ public Object getValue(int i, int j) { case BLOB: case TEXT: case STRING: - return ((Binary[]) values[j])[i]; + return ((PooledBinary[]) values[j])[i]; case INT32: return ((int[]) values[j])[i]; case FLOAT: diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/record/datapoint/DataPoint.java b/java/tsfile/src/main/java/org/apache/tsfile/write/record/datapoint/DataPoint.java index 80e617ca2..577ea3250 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/record/datapoint/DataPoint.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/record/datapoint/DataPoint.java @@ -21,8 +21,8 @@ import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.DateUtils; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.StringContainer; import org.apache.tsfile.write.UnSupportedDataTypeException; import org.apache.tsfile.write.chunk.ChunkWriterImpl; @@ -89,7 +89,8 @@ public static DataPoint getDataPoint(TSDataType dataType, String measurementId, case BLOB: case STRING: dataPoint = - new StringDataPoint(measurementId, new Binary(value, TSFileConfig.STRING_CHARSET)); + new StringDataPoint( + measurementId, new PooledBinary(value, TSFileConfig.STRING_CHARSET)); break; default: throw new UnSupportedDataTypeException( @@ -150,7 +151,7 @@ public void setDouble(double value) { throw new UnsupportedOperationException("set Double not support in DataPoint"); } - public void setString(Binary value) { + public void setString(PooledBinary value) { throw new UnsupportedOperationException("set String not support in DataPoint"); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/write/record/datapoint/StringDataPoint.java b/java/tsfile/src/main/java/org/apache/tsfile/write/record/datapoint/StringDataPoint.java index 667543abf..6b5a62943 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/write/record/datapoint/StringDataPoint.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/write/record/datapoint/StringDataPoint.java @@ -19,7 +19,7 @@ package org.apache.tsfile.write.record.datapoint; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.write.chunk.ChunkWriterImpl; import org.slf4j.Logger; @@ -35,10 +35,10 @@ public class StringDataPoint extends DataPoint { private static final Logger LOG = LoggerFactory.getLogger(StringDataPoint.class); /** actual value. */ - private Binary value; + private PooledBinary value; /** constructor of StringDataPoint, the value type will be set automatically. */ - public StringDataPoint(String measurementId, Binary v) { + public StringDataPoint(String measurementId, PooledBinary v) { super(TSDataType.TEXT, measurementId); this.value = v; } @@ -58,7 +58,7 @@ public Object getValue() { } @Override - public void setString(Binary value) { + public void setString(PooledBinary value) { this.value = value; } } diff --git a/java/tsfile/src/test/java/org/apache/tsfile/common/block/BinaryArrayColumnEncoderTest.java b/java/tsfile/src/test/java/org/apache/tsfile/common/block/BinaryArrayColumnEncoderTest.java index dfbda8e63..fccc75693 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/common/block/BinaryArrayColumnEncoderTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/common/block/BinaryArrayColumnEncoderTest.java @@ -24,7 +24,7 @@ import org.apache.tsfile.read.common.block.column.BinaryColumn; import org.apache.tsfile.read.common.block.column.ColumnEncoder; import org.apache.tsfile.read.common.block.column.ColumnEncoderFactory; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Assert; import org.junit.Test; @@ -44,14 +44,14 @@ public void testBinaryColumn() { Random random = new Random(); boolean[] nullIndicators = new boolean[positionCount]; - Binary[] values = new Binary[positionCount]; + PooledBinary[] values = new PooledBinary[positionCount]; for (int i = 0; i < positionCount; i++) { nullIndicators[i] = i % 2 == 0; if (i % 2 != 0) { int length = random.nextInt(1024) + 1; byte[] value = new byte[length]; random.nextBytes(value); - values[i] = new Binary(value); + values[i] = new PooledBinary(value); } } BinaryColumn input = new BinaryColumn(positionCount, Optional.of(nullIndicators), values); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/common/block/RunLengthColumnEncoderTest.java b/java/tsfile/src/test/java/org/apache/tsfile/common/block/RunLengthColumnEncoderTest.java index f02d32c08..ecf4a568a 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/common/block/RunLengthColumnEncoderTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/common/block/RunLengthColumnEncoderTest.java @@ -31,7 +31,7 @@ import org.apache.tsfile.read.common.block.column.IntColumn; import org.apache.tsfile.read.common.block.column.LongColumn; import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Assert; import org.junit.Test; @@ -99,6 +99,8 @@ public void testDoubleColumn() { public void testTextColumn() { testInternal( new BinaryColumn( - 1, Optional.empty(), new Binary[] {new Binary("foo", TSFileConfig.STRING_CHARSET)})); + 1, + Optional.empty(), + new PooledBinary[] {new PooledBinary("foo", TSFileConfig.STRING_CHARSET)})); } } diff --git a/java/tsfile/src/test/java/org/apache/tsfile/common/block/TsBlockSerdeTest.java b/java/tsfile/src/test/java/org/apache/tsfile/common/block/TsBlockSerdeTest.java index cfedb3809..04cee2b43 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/common/block/TsBlockSerdeTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/common/block/TsBlockSerdeTest.java @@ -28,7 +28,7 @@ import org.apache.tsfile.read.common.block.column.BinaryColumn; import org.apache.tsfile.read.common.block.column.TimeColumn; import org.apache.tsfile.read.common.block.column.TsBlockSerde; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteIOUtils; import org.junit.Test; @@ -71,7 +71,7 @@ public void testSerializeAndDeserialize() { longColumnBuilder.writeLong(i); doubleColumnBuilder.writeDouble(i + i / 10D); booleanColumnBuilder.writeBoolean(true); - binaryColumnBuilder.writeBinary(new Binary("foo", TSFileConfig.STRING_CHARSET)); + binaryColumnBuilder.writeBinary(new PooledBinary("foo", TSFileConfig.STRING_CHARSET)); tsBlockBuilder.declarePosition(); } @@ -137,7 +137,9 @@ public void testSerializeAndDeserialize2() { new TsBlock( new TimeColumn(1, new long[] {0}), new BinaryColumn( - 1, Optional.empty(), new Binary[] {new Binary(outputStream.toByteArray())})); + 1, + Optional.empty(), + new PooledBinary[] {new PooledBinary(outputStream.toByteArray())})); TsBlockSerde tsBlockSerde = new TsBlockSerde(); try { @@ -172,7 +174,7 @@ public void testSerializeAndDeserialize3() { new BinaryColumn( 1, Optional.of(new boolean[] {false}), - new Binary[] {new Binary(outputStream.toByteArray())})); + new PooledBinary[] {new PooledBinary(outputStream.toByteArray())})); TsBlockSerde tsBlockSerde = new TsBlockSerde(); try { diff --git a/java/tsfile/src/test/java/org/apache/tsfile/common/block/TsBlockTest.java b/java/tsfile/src/test/java/org/apache/tsfile/common/block/TsBlockTest.java index 47db65626..4befc6e8c 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/common/block/TsBlockTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/common/block/TsBlockTest.java @@ -31,7 +31,7 @@ import org.apache.tsfile.read.common.block.column.IntColumn; import org.apache.tsfile.read.common.block.column.LongColumn; import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Assert; import org.junit.Test; @@ -157,12 +157,12 @@ public void testDoubleTsBlock() { @Test public void testBinaryTsBlock() { long[] timeArray = {1L, 2L, 3L, 4L, 5L}; - Binary[] valueArray = { - new Binary("10", TSFileConfig.STRING_CHARSET), - new Binary("20", TSFileConfig.STRING_CHARSET), - new Binary("30", TSFileConfig.STRING_CHARSET), - new Binary("40", TSFileConfig.STRING_CHARSET), - new Binary("50", TSFileConfig.STRING_CHARSET) + PooledBinary[] valueArray = { + new PooledBinary("10", TSFileConfig.STRING_CHARSET), + new PooledBinary("20", TSFileConfig.STRING_CHARSET), + new PooledBinary("30", TSFileConfig.STRING_CHARSET), + new PooledBinary("40", TSFileConfig.STRING_CHARSET), + new PooledBinary("50", TSFileConfig.STRING_CHARSET) }; TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(TSDataType.TEXT)); for (int i = 0; i < timeArray.length; i++) { @@ -242,12 +242,12 @@ public void testMultiColumnTsBlockWithNull() { boolean[] floatIsNull = {false, false, true, true, false}; double[] doubleValueArray = {10000.0, 20000.0, 30000.0, 40000.0, 50000.0}; boolean[] doubleIsNull = {true, false, false, true, false}; - Binary[] binaryValueArray = { - new Binary("19970909", TSFileConfig.STRING_CHARSET), - new Binary("ty", TSFileConfig.STRING_CHARSET), - new Binary("love", TSFileConfig.STRING_CHARSET), - new Binary("zm", TSFileConfig.STRING_CHARSET), - new Binary("19950421", TSFileConfig.STRING_CHARSET) + PooledBinary[] binaryValueArray = { + new PooledBinary("19970909", TSFileConfig.STRING_CHARSET), + new PooledBinary("ty", TSFileConfig.STRING_CHARSET), + new PooledBinary("love", TSFileConfig.STRING_CHARSET), + new PooledBinary("zm", TSFileConfig.STRING_CHARSET), + new PooledBinary("19950421", TSFileConfig.STRING_CHARSET) }; boolean[] binaryIsNull = {false, false, false, false, false}; diff --git a/java/tsfile/src/test/java/org/apache/tsfile/encoding/decoder/DictionaryDecoderTest.java b/java/tsfile/src/test/java/org/apache/tsfile/encoding/decoder/DictionaryDecoderTest.java index 0cdb86d2b..bc60b603b 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/encoding/decoder/DictionaryDecoderTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/encoding/decoder/DictionaryDecoderTest.java @@ -21,7 +21,7 @@ import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.encoding.encoder.DictionaryEncoder; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Test; @@ -69,7 +69,7 @@ public void testMixed() { private void testAll(String... all) { for (String s : all) { - encoder.encode(new Binary(s, TSFileConfig.STRING_CHARSET), baos); + encoder.encode(new PooledBinary(s, TSFileConfig.STRING_CHARSET), baos); } encoder.flush(baos); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/file/metadata/statistics/StringStatisticsTest.java b/java/tsfile/src/test/java/org/apache/tsfile/file/metadata/statistics/StringStatisticsTest.java index 6183d0ba2..e448f00e7 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/file/metadata/statistics/StringStatisticsTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/file/metadata/statistics/StringStatisticsTest.java @@ -19,7 +19,7 @@ package org.apache.tsfile.file.metadata.statistics; import org.apache.tsfile.common.conf.TSFileConfig; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Test; @@ -30,10 +30,10 @@ public class StringStatisticsTest { @Test public void testUpdate() { - Statistics binaryStats = new BinaryStatistics(); - binaryStats.updateStats(new Binary("aaa", TSFileConfig.STRING_CHARSET)); + Statistics binaryStats = new BinaryStatistics(); + binaryStats.updateStats(new PooledBinary("aaa", TSFileConfig.STRING_CHARSET)); assertFalse(binaryStats.isEmpty()); - binaryStats.updateStats(new Binary("bbb", TSFileConfig.STRING_CHARSET)); + binaryStats.updateStats(new PooledBinary("bbb", TSFileConfig.STRING_CHARSET)); assertFalse(binaryStats.isEmpty()); assertEquals("aaa", binaryStats.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET)); assertEquals("bbb", binaryStats.getLastValue().getStringValue(TSFileConfig.STRING_CHARSET)); @@ -41,19 +41,19 @@ public void testUpdate() { @Test public void testMerge() { - Statistics stringStats1 = new BinaryStatistics(); + Statistics stringStats1 = new BinaryStatistics(); stringStats1.setStartTime(0); stringStats1.setEndTime(2); - Statistics stringStats2 = new BinaryStatistics(); + Statistics stringStats2 = new BinaryStatistics(); stringStats2.setStartTime(3); stringStats2.setEndTime(5); - stringStats1.updateStats(new Binary("aaa", TSFileConfig.STRING_CHARSET)); - stringStats1.updateStats(new Binary("ccc", TSFileConfig.STRING_CHARSET)); + stringStats1.updateStats(new PooledBinary("aaa", TSFileConfig.STRING_CHARSET)); + stringStats1.updateStats(new PooledBinary("ccc", TSFileConfig.STRING_CHARSET)); - stringStats2.updateStats(new Binary("ddd", TSFileConfig.STRING_CHARSET)); + stringStats2.updateStats(new PooledBinary("ddd", TSFileConfig.STRING_CHARSET)); - Statistics stringStats3 = new BinaryStatistics(); + Statistics stringStats3 = new BinaryStatistics(); stringStats3.mergeStatistics(stringStats1); assertFalse(stringStats3.isEmpty()); assertEquals("aaa", stringStats3.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET)); @@ -63,17 +63,17 @@ public void testMerge() { assertEquals("aaa", stringStats3.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET)); assertEquals("ddd", stringStats3.getLastValue().getStringValue(TSFileConfig.STRING_CHARSET)); - Statistics stringStats4 = new BinaryStatistics(); + Statistics stringStats4 = new BinaryStatistics(); stringStats4.setStartTime(0); stringStats4.setEndTime(5); - Statistics stringStats5 = new BinaryStatistics(); + Statistics stringStats5 = new BinaryStatistics(); stringStats5.setStartTime(1); stringStats5.setEndTime(4); - stringStats4.updateStats(new Binary("eee", TSFileConfig.STRING_CHARSET)); - stringStats4.updateStats(new Binary("fff", TSFileConfig.STRING_CHARSET)); + stringStats4.updateStats(new PooledBinary("eee", TSFileConfig.STRING_CHARSET)); + stringStats4.updateStats(new PooledBinary("fff", TSFileConfig.STRING_CHARSET)); - stringStats5.updateStats(new Binary("ggg", TSFileConfig.STRING_CHARSET)); + stringStats5.updateStats(new PooledBinary("ggg", TSFileConfig.STRING_CHARSET)); stringStats3.mergeStatistics(stringStats4); assertEquals("eee", stringStats3.getFirstValue().getStringValue(TSFileConfig.STRING_CHARSET)); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileReaderTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileReaderTest.java index 7353e59b9..b49b7f172 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileReaderTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileReaderTest.java @@ -40,7 +40,7 @@ import org.apache.tsfile.read.filter.factory.TimeFilterApi; import org.apache.tsfile.read.filter.factory.ValueFilterApi; import org.apache.tsfile.read.query.dataset.QueryDataSet; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsFileGeneratorForTest; import org.apache.tsfile.write.TsFileWriter; import org.apache.tsfile.write.record.TSRecord; @@ -149,7 +149,7 @@ private void queryTest(int rowCount) throws IOException { Filter filter2 = ValueFilterApi.gt( DEFAULT_MEASUREMENT_INDEX, - new Binary("dog", TSFileConfig.STRING_CHARSET), + new PooledBinary("dog", TSFileConfig.STRING_CHARSET), TSDataType.TEXT); Filter filter3 = FilterFactory.and(TimeFilterApi.gtEq(1480562618000L), TimeFilterApi.ltEq(1480562618100L)); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/BinaryOperatorsTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/BinaryOperatorsTest.java index 9b53e8097..5074fb57e 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/BinaryOperatorsTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/BinaryOperatorsTest.java @@ -17,7 +17,7 @@ import org.apache.tsfile.common.regexp.LikePattern; import org.apache.tsfile.read.filter.basic.Filter; import org.apache.tsfile.read.filter.factory.ValueFilterApi; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Assert; import org.junit.Test; @@ -36,49 +36,56 @@ public class BinaryOperatorsTest { @Test public void testEq() { - Filter eq = ValueFilterApi.eq(DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TEXT); - Assert.assertTrue(eq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("a", STRING_CHARSET))); - Assert.assertFalse(eq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("b", STRING_CHARSET))); + Filter eq = + ValueFilterApi.eq(DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TEXT); + Assert.assertTrue(eq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("a", STRING_CHARSET))); + Assert.assertFalse(eq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("b", STRING_CHARSET))); } @Test public void testNotEq() { Filter notEq = - ValueFilterApi.notEq(DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TEXT); - Assert.assertTrue(notEq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("b", STRING_CHARSET))); - Assert.assertFalse(notEq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("a", STRING_CHARSET))); + ValueFilterApi.notEq( + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TEXT); + Assert.assertTrue( + notEq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("b", STRING_CHARSET))); + Assert.assertFalse( + notEq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("a", STRING_CHARSET))); } @Test public void testGt() { - Filter gt = ValueFilterApi.gt(DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TEXT); - Assert.assertTrue(gt.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("b", STRING_CHARSET))); - Assert.assertFalse(gt.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("a", STRING_CHARSET))); + Filter gt = + ValueFilterApi.gt(DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TEXT); + Assert.assertTrue(gt.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("b", STRING_CHARSET))); + Assert.assertFalse(gt.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("a", STRING_CHARSET))); } @Test public void testGtEq() { Filter gtEq = - ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TEXT); - Assert.assertTrue(gtEq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("a", STRING_CHARSET))); - Assert.assertTrue(gtEq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("b", STRING_CHARSET))); - Assert.assertTrue(gtEq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("c", STRING_CHARSET))); + ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TEXT); + Assert.assertTrue(gtEq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("a", STRING_CHARSET))); + Assert.assertTrue(gtEq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("b", STRING_CHARSET))); + Assert.assertTrue(gtEq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("c", STRING_CHARSET))); } @Test public void testLt() { - Filter lt = ValueFilterApi.lt(DEFAULT_MEASUREMENT_INDEX, new Binary("b", STRING_CHARSET), TEXT); - Assert.assertTrue(lt.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("a", STRING_CHARSET))); - Assert.assertFalse(lt.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("b", STRING_CHARSET))); + Filter lt = + ValueFilterApi.lt(DEFAULT_MEASUREMENT_INDEX, new PooledBinary("b", STRING_CHARSET), TEXT); + Assert.assertTrue(lt.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("a", STRING_CHARSET))); + Assert.assertFalse(lt.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("b", STRING_CHARSET))); } @Test public void testLtEq() { Filter ltEq = - ValueFilterApi.ltEq(DEFAULT_MEASUREMENT_INDEX, new Binary("b", STRING_CHARSET), TEXT); - Assert.assertTrue(ltEq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("a", STRING_CHARSET))); - Assert.assertTrue(ltEq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("b", STRING_CHARSET))); - Assert.assertFalse(ltEq.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("c", STRING_CHARSET))); + ValueFilterApi.ltEq(DEFAULT_MEASUREMENT_INDEX, new PooledBinary("b", STRING_CHARSET), TEXT); + Assert.assertTrue(ltEq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("a", STRING_CHARSET))); + Assert.assertTrue(ltEq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("b", STRING_CHARSET))); + Assert.assertFalse( + ltEq.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("c", STRING_CHARSET))); } @Test @@ -86,11 +93,13 @@ public void testBetweenAnd() { Filter between = ValueFilterApi.between( DEFAULT_MEASUREMENT_INDEX, - new Binary("a", STRING_CHARSET), - new Binary("c", STRING_CHARSET), + new PooledBinary("a", STRING_CHARSET), + new PooledBinary("c", STRING_CHARSET), TEXT); - Assert.assertTrue(between.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("b", STRING_CHARSET))); - Assert.assertFalse(between.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("d", STRING_CHARSET))); + Assert.assertTrue( + between.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("b", STRING_CHARSET))); + Assert.assertFalse( + between.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("d", STRING_CHARSET))); } @Test @@ -98,12 +107,13 @@ public void testNotBetweenAnd() { Filter notBetween = ValueFilterApi.notBetween( DEFAULT_MEASUREMENT_INDEX, - new Binary("a", STRING_CHARSET), - new Binary("c", STRING_CHARSET), + new PooledBinary("a", STRING_CHARSET), + new PooledBinary("c", STRING_CHARSET), TEXT); - Assert.assertTrue(notBetween.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("d", STRING_CHARSET))); + Assert.assertTrue( + notBetween.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("d", STRING_CHARSET))); Assert.assertFalse( - notBetween.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("b", STRING_CHARSET))); + notBetween.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("b", STRING_CHARSET))); } @Test @@ -112,10 +122,11 @@ public void testIn() { ValueFilterApi.in( DEFAULT_MEASUREMENT_INDEX, new HashSet<>( - Arrays.asList(new Binary("a", STRING_CHARSET), new Binary("b", STRING_CHARSET))), + Arrays.asList( + new PooledBinary("a", STRING_CHARSET), new PooledBinary("b", STRING_CHARSET))), TEXT); - Assert.assertTrue(in.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("a", STRING_CHARSET))); - Assert.assertFalse(in.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("c", STRING_CHARSET))); + Assert.assertTrue(in.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("a", STRING_CHARSET))); + Assert.assertFalse(in.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("c", STRING_CHARSET))); } @Test @@ -124,17 +135,20 @@ public void testNotIn() { ValueFilterApi.notIn( DEFAULT_MEASUREMENT_INDEX, new HashSet<>( - Arrays.asList(new Binary("a", STRING_CHARSET), new Binary("b", STRING_CHARSET))), + Arrays.asList( + new PooledBinary("a", STRING_CHARSET), new PooledBinary("b", STRING_CHARSET))), TEXT); - Assert.assertTrue(in.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("c", STRING_CHARSET))); - Assert.assertFalse(in.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("a", STRING_CHARSET))); + Assert.assertTrue(in.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("c", STRING_CHARSET))); + Assert.assertFalse(in.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("a", STRING_CHARSET))); } @Test public void testRegexp() { Filter regexp = ValueFilterApi.regexp(DEFAULT_MEASUREMENT_INDEX, Pattern.compile("a.*"), TEXT); - Assert.assertTrue(regexp.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("abc", STRING_CHARSET))); - Assert.assertFalse(regexp.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("bcd", STRING_CHARSET))); + Assert.assertTrue( + regexp.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("abc", STRING_CHARSET))); + Assert.assertFalse( + regexp.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("bcd", STRING_CHARSET))); } @Test @@ -142,9 +156,9 @@ public void testNotRegexp() { Filter notRegexp = ValueFilterApi.notRegexp(DEFAULT_MEASUREMENT_INDEX, Pattern.compile("a.*"), TEXT); Assert.assertTrue( - notRegexp.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("bcd", STRING_CHARSET))); + notRegexp.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("bcd", STRING_CHARSET))); Assert.assertFalse( - notRegexp.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("abc", STRING_CHARSET))); + notRegexp.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("abc", STRING_CHARSET))); } @Test @@ -152,8 +166,10 @@ public void testLike() { Filter regexp = ValueFilterApi.like( DEFAULT_MEASUREMENT_INDEX, LikePattern.compile("a%", Optional.empty()), TEXT); - Assert.assertTrue(regexp.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("abc", STRING_CHARSET))); - Assert.assertFalse(regexp.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("bcd", STRING_CHARSET))); + Assert.assertTrue( + regexp.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("abc", STRING_CHARSET))); + Assert.assertFalse( + regexp.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("bcd", STRING_CHARSET))); } @Test @@ -162,9 +178,9 @@ public void testNotLike() { ValueFilterApi.notLike( DEFAULT_MEASUREMENT_INDEX, LikePattern.compile("a%", Optional.empty()), TEXT); Assert.assertTrue( - notRegexp.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("bcd", STRING_CHARSET))); + notRegexp.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("bcd", STRING_CHARSET))); Assert.assertFalse( - notRegexp.satisfyBinary(DEFAULT_TIMESTAMP, new Binary("abc", STRING_CHARSET))); + notRegexp.satisfyBinary(DEFAULT_TIMESTAMP, new PooledBinary("abc", STRING_CHARSET))); } @Test diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/FilterSerializeTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/FilterSerializeTest.java index bf2aa1348..ba2f1acfe 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/FilterSerializeTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/FilterSerializeTest.java @@ -24,7 +24,7 @@ import org.apache.tsfile.read.filter.factory.FilterFactory; import org.apache.tsfile.read.filter.factory.TimeFilterApi; import org.apache.tsfile.read.filter.factory.ValueFilterApi; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TimeDuration; import org.junit.Test; @@ -321,26 +321,26 @@ public void testBinaryFilter() throws IOException { Filter[] filters = new Filter[] { ValueFilterApi.gt( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.TEXT), + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("test", STRING_CHARSET), TSDataType.TEXT), ValueFilterApi.gtEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.TEXT), + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("test", STRING_CHARSET), TSDataType.TEXT), ValueFilterApi.lt( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.TEXT), + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("test", STRING_CHARSET), TSDataType.TEXT), ValueFilterApi.ltEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.TEXT), + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("test", STRING_CHARSET), TSDataType.TEXT), ValueFilterApi.eq( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.TEXT), + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("test", STRING_CHARSET), TSDataType.TEXT), ValueFilterApi.notEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.TEXT), + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("test", STRING_CHARSET), TSDataType.TEXT), ValueFilterApi.between( DEFAULT_MEASUREMENT_INDEX, - new Binary("test", STRING_CHARSET), - new Binary("string", STRING_CHARSET), + new PooledBinary("test", STRING_CHARSET), + new PooledBinary("string", STRING_CHARSET), TSDataType.TEXT), ValueFilterApi.notBetween( DEFAULT_MEASUREMENT_INDEX, - new Binary("test", STRING_CHARSET), - new Binary("string", STRING_CHARSET), + new PooledBinary("test", STRING_CHARSET), + new PooledBinary("string", STRING_CHARSET), TSDataType.TEXT), ValueFilterApi.like( DEFAULT_MEASUREMENT_INDEX, @@ -357,13 +357,15 @@ DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.TEXT), DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("test", STRING_CHARSET), new Binary("string", STRING_CHARSET))), + new PooledBinary("test", STRING_CHARSET), + new PooledBinary("string", STRING_CHARSET))), TSDataType.TEXT), ValueFilterApi.notIn( DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("test", STRING_CHARSET), new Binary("string", STRING_CHARSET))), + new PooledBinary("test", STRING_CHARSET), + new PooledBinary("string", STRING_CHARSET))), TSDataType.TEXT), }; for (Filter filter : filters) { @@ -376,26 +378,38 @@ public void testStringFilter() throws IOException { Filter[] filters = new Filter[] { ValueFilterApi.gt( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.STRING), + DEFAULT_MEASUREMENT_INDEX, + new PooledBinary("test", STRING_CHARSET), + TSDataType.STRING), ValueFilterApi.gtEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.STRING), + DEFAULT_MEASUREMENT_INDEX, + new PooledBinary("test", STRING_CHARSET), + TSDataType.STRING), ValueFilterApi.lt( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.STRING), + DEFAULT_MEASUREMENT_INDEX, + new PooledBinary("test", STRING_CHARSET), + TSDataType.STRING), ValueFilterApi.ltEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.STRING), + DEFAULT_MEASUREMENT_INDEX, + new PooledBinary("test", STRING_CHARSET), + TSDataType.STRING), ValueFilterApi.eq( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.STRING), + DEFAULT_MEASUREMENT_INDEX, + new PooledBinary("test", STRING_CHARSET), + TSDataType.STRING), ValueFilterApi.notEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.STRING), + DEFAULT_MEASUREMENT_INDEX, + new PooledBinary("test", STRING_CHARSET), + TSDataType.STRING), ValueFilterApi.between( DEFAULT_MEASUREMENT_INDEX, - new Binary("test", STRING_CHARSET), - new Binary("string", STRING_CHARSET), + new PooledBinary("test", STRING_CHARSET), + new PooledBinary("string", STRING_CHARSET), TSDataType.STRING), ValueFilterApi.notBetween( DEFAULT_MEASUREMENT_INDEX, - new Binary("test", STRING_CHARSET), - new Binary("string", STRING_CHARSET), + new PooledBinary("test", STRING_CHARSET), + new PooledBinary("string", STRING_CHARSET), TSDataType.STRING), ValueFilterApi.like( DEFAULT_MEASUREMENT_INDEX, @@ -413,13 +427,15 @@ DEFAULT_MEASUREMENT_INDEX, new Binary("test", STRING_CHARSET), TSDataType.STRING DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("test", STRING_CHARSET), new Binary("string", STRING_CHARSET))), + new PooledBinary("test", STRING_CHARSET), + new PooledBinary("string", STRING_CHARSET))), TSDataType.STRING), ValueFilterApi.notIn( DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("test", STRING_CHARSET), new Binary("string", STRING_CHARSET))), + new PooledBinary("test", STRING_CHARSET), + new PooledBinary("string", STRING_CHARSET))), TSDataType.STRING), }; for (Filter filter : filters) { diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/OperatorTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/OperatorTest.java index b164a4cce..2903740e4 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/OperatorTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/OperatorTest.java @@ -24,7 +24,7 @@ import org.apache.tsfile.read.filter.factory.FilterFactory; import org.apache.tsfile.read.filter.factory.TimeFilterApi; import org.apache.tsfile.read.filter.factory.ValueFilterApi; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Assert; import org.junit.Test; @@ -75,14 +75,14 @@ public void testGt() { Filter binaryFilter = ValueFilterApi.gt( DEFAULT_MEASUREMENT_INDEX, - new Binary("test1", TSFileConfig.STRING_CHARSET), + new PooledBinary("test1", TSFileConfig.STRING_CHARSET), TSDataType.TEXT); Assert.assertTrue( binaryFilter.satisfyBinary( - TESTED_TIMESTAMP, new Binary("test2", TSFileConfig.STRING_CHARSET))); + TESTED_TIMESTAMP, new PooledBinary("test2", TSFileConfig.STRING_CHARSET))); Assert.assertFalse( binaryFilter.satisfyBinary( - TESTED_TIMESTAMP, new Binary("test0", TSFileConfig.STRING_CHARSET))); + TESTED_TIMESTAMP, new PooledBinary("test0", TSFileConfig.STRING_CHARSET))); } @Test diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/PredicateRemoveNotRewriterTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/PredicateRemoveNotRewriterTest.java index 62656d5cf..90087aaf5 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/PredicateRemoveNotRewriterTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/PredicateRemoveNotRewriterTest.java @@ -25,7 +25,7 @@ import org.apache.tsfile.read.filter.factory.FilterFactory; import org.apache.tsfile.read.filter.factory.TimeFilterApi; import org.apache.tsfile.read.filter.factory.ValueFilterApi; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Assert; import org.junit.Test; @@ -83,15 +83,15 @@ public void testReverse() { DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("a", TSFileConfig.STRING_CHARSET), - new Binary("b", TSFileConfig.STRING_CHARSET))), + new PooledBinary("a", TSFileConfig.STRING_CHARSET), + new PooledBinary("b", TSFileConfig.STRING_CHARSET))), TSDataType.TEXT), ValueFilterApi.notIn( DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("a", TSFileConfig.STRING_CHARSET), - new Binary("b", TSFileConfig.STRING_CHARSET))), + new PooledBinary("a", TSFileConfig.STRING_CHARSET), + new PooledBinary("b", TSFileConfig.STRING_CHARSET))), TSDataType.TEXT) .reverse()); Assert.assertEquals( @@ -99,15 +99,15 @@ public void testReverse() { DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("a", TSFileConfig.STRING_CHARSET), - new Binary("b", TSFileConfig.STRING_CHARSET))), + new PooledBinary("a", TSFileConfig.STRING_CHARSET), + new PooledBinary("b", TSFileConfig.STRING_CHARSET))), TSDataType.TEXT), ValueFilterApi.notIn( DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("a", TSFileConfig.STRING_CHARSET), - new Binary("b", TSFileConfig.STRING_CHARSET))), + new PooledBinary("a", TSFileConfig.STRING_CHARSET), + new PooledBinary("b", TSFileConfig.STRING_CHARSET))), TSDataType.TEXT) .reverse()); Assert.assertEquals( @@ -115,15 +115,15 @@ public void testReverse() { DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("a", TSFileConfig.STRING_CHARSET), - new Binary("b", TSFileConfig.STRING_CHARSET))), + new PooledBinary("a", TSFileConfig.STRING_CHARSET), + new PooledBinary("b", TSFileConfig.STRING_CHARSET))), TSDataType.TEXT), ValueFilterApi.in( DEFAULT_MEASUREMENT_INDEX, new HashSet<>( Arrays.asList( - new Binary("a", TSFileConfig.STRING_CHARSET), - new Binary("b", TSFileConfig.STRING_CHARSET))), + new PooledBinary("a", TSFileConfig.STRING_CHARSET), + new PooledBinary("b", TSFileConfig.STRING_CHARSET))), TSDataType.TEXT) .reverse()); Assert.assertEquals(TimeFilterApi.gt(1), FilterFactory.not(TimeFilterApi.gt(1)).reverse()); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/StatisticsFilterTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/StatisticsFilterTest.java index c81c3b5cb..202fb6ff6 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/StatisticsFilterTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/StatisticsFilterTest.java @@ -27,7 +27,7 @@ import org.apache.tsfile.read.filter.factory.FilterFactory; import org.apache.tsfile.read.filter.factory.TimeFilterApi; import org.apache.tsfile.read.filter.factory.ValueFilterApi; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Assert; import org.junit.Before; @@ -82,16 +82,16 @@ public void before() { statistic3.update(10L, 10L); StringStatistics statistic4 = new StringStatistics(); - statistic4.update(100L, new Binary("a", STRING_CHARSET)); - statistic4.update(200L, new Binary("a", STRING_CHARSET)); + statistic4.update(100L, new PooledBinary("a", STRING_CHARSET)); + statistic4.update(200L, new PooledBinary("a", STRING_CHARSET)); StringStatistics statistic5 = new StringStatistics(); - statistic5.update(100L, new Binary("b", STRING_CHARSET)); - statistic5.update(200L, new Binary("b", STRING_CHARSET)); + statistic5.update(100L, new PooledBinary("b", STRING_CHARSET)); + statistic5.update(200L, new PooledBinary("b", STRING_CHARSET)); StringStatistics statistic6 = new StringStatistics(); - statistic6.update(100L, new Binary("a", STRING_CHARSET)); - statistic6.update(200L, new Binary("b", STRING_CHARSET)); + statistic6.update(100L, new PooledBinary("a", STRING_CHARSET)); + statistic6.update(200L, new PooledBinary("b", STRING_CHARSET)); metadata1 = newMetadata(statistic1); metadata2 = newMetadata(statistic2); @@ -126,7 +126,7 @@ public void testEq() { Filter stringEq = ValueFilterApi.eq( - DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TSDataType.STRING); + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TSDataType.STRING); Assert.assertFalse(stringEq.canSkip(metadata4)); Assert.assertTrue(stringEq.canSkip(metadata5)); Assert.assertFalse(stringEq.canSkip(metadata6)); @@ -154,7 +154,7 @@ public void testNotEq() { Filter stringNotEq = ValueFilterApi.notEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TSDataType.STRING); + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TSDataType.STRING); Assert.assertTrue(stringNotEq.canSkip(metadata4)); Assert.assertFalse(stringNotEq.canSkip(metadata5)); Assert.assertFalse(stringNotEq.canSkip(metadata6)); @@ -180,7 +180,7 @@ public void testGt() { Filter stringGt = ValueFilterApi.gt( - DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TSDataType.STRING); + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TSDataType.STRING); Assert.assertTrue(stringGt.canSkip(metadata4)); Assert.assertFalse(stringGt.canSkip(metadata5)); Assert.assertFalse(stringGt.canSkip(metadata6)); @@ -206,7 +206,7 @@ public void testGtEq() { Filter stringGtEq = ValueFilterApi.gtEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TSDataType.STRING); + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TSDataType.STRING); Assert.assertFalse(stringGtEq.canSkip(metadata4)); Assert.assertFalse(stringGtEq.canSkip(metadata5)); Assert.assertFalse(stringGtEq.canSkip(metadata6)); @@ -232,7 +232,7 @@ public void testLt() { Filter stringLt = ValueFilterApi.lt( - DEFAULT_MEASUREMENT_INDEX, new Binary("b", STRING_CHARSET), TSDataType.STRING); + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("b", STRING_CHARSET), TSDataType.STRING); Assert.assertFalse(stringLt.canSkip(metadata4)); Assert.assertTrue(stringLt.canSkip(metadata5)); Assert.assertFalse(stringLt.canSkip(metadata6)); @@ -256,7 +256,7 @@ public void testLtEq() { Filter stringLtEq = ValueFilterApi.ltEq( - DEFAULT_MEASUREMENT_INDEX, new Binary("a", STRING_CHARSET), TSDataType.STRING); + DEFAULT_MEASUREMENT_INDEX, new PooledBinary("a", STRING_CHARSET), TSDataType.STRING); Assert.assertFalse(stringLtEq.canSkip(metadata4)); Assert.assertTrue(stringLtEq.canSkip(metadata5)); Assert.assertFalse(stringLtEq.canSkip(metadata6)); @@ -334,8 +334,8 @@ public void testBetweenAnd() { Filter stringBetweenAnd = ValueFilterApi.between( DEFAULT_MEASUREMENT_INDEX, - new Binary("a", STRING_CHARSET), - new Binary("b", STRING_CHARSET), + new PooledBinary("a", STRING_CHARSET), + new PooledBinary("b", STRING_CHARSET), TSDataType.STRING); Assert.assertFalse(stringBetweenAnd.canSkip(metadata4)); Assert.assertFalse(stringBetweenAnd.canSkip(metadata5)); @@ -368,8 +368,8 @@ public void testNotBetweenAnd() { Filter stringNotBetweenAnd = ValueFilterApi.notBetween( DEFAULT_MEASUREMENT_INDEX, - new Binary("b", STRING_CHARSET), - new Binary("c", STRING_CHARSET), + new PooledBinary("b", STRING_CHARSET), + new PooledBinary("c", STRING_CHARSET), TSDataType.STRING); Assert.assertFalse(stringNotBetweenAnd.canSkip(metadata4)); Assert.assertTrue(stringNotBetweenAnd.canSkip(metadata5)); @@ -459,7 +459,8 @@ public void testIn() { ValueFilterApi.in( DEFAULT_MEASUREMENT_INDEX, new HashSet<>( - Arrays.asList(new Binary("a", STRING_CHARSET), new Binary("b", STRING_CHARSET))), + Arrays.asList( + new PooledBinary("a", STRING_CHARSET), new PooledBinary("b", STRING_CHARSET))), TSDataType.STRING); Assert.assertFalse(stringIn.canSkip(metadata4)); Assert.assertFalse(stringIn.canSkip(metadata5)); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/TsBlockFilterTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/TsBlockFilterTest.java index a4b7f3c8d..32c60b960 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/filter/TsBlockFilterTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/filter/TsBlockFilterTest.java @@ -26,7 +26,7 @@ import org.apache.tsfile.read.common.block.column.TimeColumn; import org.apache.tsfile.read.filter.basic.Filter; import org.apache.tsfile.read.filter.factory.ValueFilterApi; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.junit.Assert; import org.junit.Before; @@ -79,11 +79,11 @@ public void before() { long[] longs = new long[] {0L, 100L, -100L}; float[] floats = new float[] {0.0f, -100.1f, 100.1f}; double[] doubles = new double[] {0.0d, -100.2d, 100.2d}; - Binary[] binaries = - new Binary[] { - new Binary("a", STRING_CHARSET), - new Binary(null, STRING_CHARSET), - new Binary("c", STRING_CHARSET), + PooledBinary[] binaries = + new PooledBinary[] { + new PooledBinary("a", STRING_CHARSET), + new PooledBinary(null, STRING_CHARSET), + new PooledBinary("c", STRING_CHARSET), }; BooleanColumn booleanColumn = @@ -99,7 +99,7 @@ public void before() { new BinaryColumn( 3, Optional.of(new boolean[] {true, false, true}), - new Binary[] {null, new Binary("a", STRING_CHARSET), null}); + new PooledBinary[] {null, new PooledBinary("a", STRING_CHARSET), null}); timeColumn = new TimeColumn(timestamps.length, timestamps); valueColumn[getMeasurementId(TSDataType.BOOLEAN)] = booleanColumn; @@ -155,7 +155,9 @@ public void testDouble() { public void testBinary() { Filter binaryFilter = ValueFilterApi.eq( - getMeasurementId(TSDataType.TEXT), new Binary("a", STRING_CHARSET), TSDataType.TEXT); + getMeasurementId(TSDataType.TEXT), + new PooledBinary("a", STRING_CHARSET), + TSDataType.TEXT); boolean[] expected = new boolean[] {true, false, false}; Assert.assertArrayEquals(expected, binaryFilter.satisfyTsBlock(selection, tsBlock)); } @@ -164,7 +166,9 @@ public void testBinary() { public void testString() { Filter stringFilter = ValueFilterApi.eq( - getMeasurementId(TSDataType.TEXT), new Binary("a", STRING_CHARSET), TSDataType.STRING); + getMeasurementId(TSDataType.TEXT), + new PooledBinary("a", STRING_CHARSET), + TSDataType.STRING); boolean[] expected = new boolean[] {true, false, false}; Assert.assertArrayEquals(expected, stringFilter.satisfyTsBlock(selection, tsBlock)); } diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/query/executor/QueryExecutorTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/query/executor/QueryExecutorTest.java index 9806486dc..45a0cd276 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/query/executor/QueryExecutorTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/query/executor/QueryExecutorTest.java @@ -37,7 +37,7 @@ import org.apache.tsfile.read.filter.factory.TimeFilterApi; import org.apache.tsfile.read.filter.factory.ValueFilterApi; import org.apache.tsfile.read.query.dataset.QueryDataSet; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsFileGeneratorForTest; import org.junit.After; @@ -80,7 +80,7 @@ public void query1() throws IOException { Filter filter2 = ValueFilterApi.gt( DEFAULT_MEASUREMENT_INDEX, - new Binary("dog", TSFileConfig.STRING_CHARSET), + new PooledBinary("dog", TSFileConfig.STRING_CHARSET), TSDataType.TEXT); IExpression IExpression = diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/query/timegenerator/TimeGeneratorTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/query/timegenerator/TimeGeneratorTest.java index 2b916d673..ab2ab6e64 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/query/timegenerator/TimeGeneratorTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/query/timegenerator/TimeGeneratorTest.java @@ -33,7 +33,7 @@ import org.apache.tsfile.read.filter.factory.FilterFactory; import org.apache.tsfile.read.filter.factory.TimeFilterApi; import org.apache.tsfile.read.filter.factory.ValueFilterApi; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsFileGeneratorForTest; import org.junit.After; @@ -74,7 +74,7 @@ public void testTimeGenerator() throws IOException { Filter filter2 = ValueFilterApi.gt( DEFAULT_MEASUREMENT_INDEX, - new Binary("dog", TSFileConfig.STRING_CHARSET), + new PooledBinary("dog", TSFileConfig.STRING_CHARSET), TSDataType.TEXT); Filter filter3 = FilterFactory.and(TimeFilterApi.gtEq(1480562618000L), TimeFilterApi.ltEq(1480562618100L)); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/read/reader/PageReaderTest.java b/java/tsfile/src/test/java/org/apache/tsfile/read/reader/PageReaderTest.java index 7b0258f2d..6335f7b25 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/read/reader/PageReaderTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/read/reader/PageReaderTest.java @@ -37,7 +37,7 @@ import org.apache.tsfile.read.common.BatchData; import org.apache.tsfile.read.common.TimeRange; import org.apache.tsfile.read.reader.page.PageReader; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.write.page.PageWriter; import org.junit.Assert; @@ -177,7 +177,7 @@ public void testBinary() { POINTS_COUNT_IN_ONE_PAGE) { @Override public Object generateValueByIndex(int i) { - return new Binary("TEST TEXT" + i, TSFileConfig.STRING_CHARSET); + return new PooledBinary("TEST TEXT" + i, TSFileConfig.STRING_CHARSET); } }; test.test(TSDataType.TEXT); @@ -290,7 +290,7 @@ private void writeData() { pageWriter.write(i, (Double) generateValueByIndex(i)); break; case TEXT: - pageWriter.write(i, (Binary) generateValueByIndex(i)); + pageWriter.write(i, (PooledBinary) generateValueByIndex(i)); break; } } diff --git a/java/tsfile/src/test/java/org/apache/tsfile/tableview/TableViewTest.java b/java/tsfile/src/test/java/org/apache/tsfile/tableview/TableViewTest.java index c525e3102..659c24517 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/tableview/TableViewTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/tableview/TableViewTest.java @@ -40,7 +40,7 @@ import org.apache.tsfile.read.query.executor.TableQueryExecutor.TableQueryOrdering; import org.apache.tsfile.read.query.executor.TsFileExecutor; import org.apache.tsfile.read.reader.block.TsBlockReader; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsFileSketchTool; import org.apache.tsfile.write.TsFileWriter; import org.apache.tsfile.write.record.TSRecord; @@ -516,7 +516,7 @@ public static Object getValue(TSDataType dataType, int i) { case INT64: return (long) i; case TEXT: - return new Binary(String.valueOf(i), StandardCharsets.UTF_8); + return new PooledBinary(String.valueOf(i), StandardCharsets.UTF_8); default: return i; } diff --git a/java/tsfile/src/test/java/org/apache/tsfile/utils/TsPrimitiveTypeTest.java b/java/tsfile/src/test/java/org/apache/tsfile/utils/TsPrimitiveTypeTest.java index d74847b38..712b20d4b 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/utils/TsPrimitiveTypeTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/utils/TsPrimitiveTypeTest.java @@ -52,9 +52,12 @@ public void testNewAndGet() { Assert.assertEquals(456d, doubleValue.getDouble(), 0.01); TsPrimitiveType textValue = - TsPrimitiveType.getByType(TSDataType.TEXT, new Binary("123", TSFileConfig.STRING_CHARSET)); - Assert.assertEquals(new TsBinary(new Binary("123", TSFileConfig.STRING_CHARSET)), textValue); - Assert.assertEquals(new Binary("123", TSFileConfig.STRING_CHARSET), textValue.getBinary()); + TsPrimitiveType.getByType( + TSDataType.TEXT, new PooledBinary("123", TSFileConfig.STRING_CHARSET)); + Assert.assertEquals( + new TsBinary(new PooledBinary("123", TSFileConfig.STRING_CHARSET)), textValue); + Assert.assertEquals( + new PooledBinary("123", TSFileConfig.STRING_CHARSET), textValue.getBinary()); TsPrimitiveType booleanValue = TsPrimitiveType.getByType(TSDataType.BOOLEAN, true); Assert.assertEquals(new TsBoolean(true), booleanValue); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/write/TsFileWriteApiTest.java b/java/tsfile/src/test/java/org/apache/tsfile/write/TsFileWriteApiTest.java index f43359393..cc51b1d12 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/write/TsFileWriteApiTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/write/TsFileWriteApiTest.java @@ -37,7 +37,7 @@ import org.apache.tsfile.read.common.Path; import org.apache.tsfile.read.expression.QueryExpression; import org.apache.tsfile.read.query.dataset.QueryDataSet; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsFileGeneratorUtils; import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl; import org.apache.tsfile.write.chunk.ChunkWriterImpl; @@ -415,8 +415,8 @@ public void writeNonAlignedWithTabletWithNullValue() { tablet.bitMaps[i].mark((int) r % tablet.getMaxRowNumber()); continue; } - Binary[] textSensor = (Binary[]) values[i]; - textSensor[row] = new Binary("testString.........", TSFileConfig.STRING_CHARSET); + PooledBinary[] textSensor = (PooledBinary[]) values[i]; + textSensor[row] = new PooledBinary("testString.........", TSFileConfig.STRING_CHARSET); } if (r > 1000) { tablet.bitMaps[sensorNum - 1].mark((int) r % tablet.getMaxRowNumber()); @@ -468,8 +468,8 @@ public void writeNonAlignedWithTabletWithNegativeTimestamps() { tablet.bitMaps[i].mark((int) r % tablet.getMaxRowNumber()); continue; } - Binary[] textSensor = (Binary[]) values[i]; - textSensor[row] = new Binary("testString.........", TSFileConfig.STRING_CHARSET); + PooledBinary[] textSensor = (PooledBinary[]) values[i]; + textSensor[row] = new PooledBinary("testString.........", TSFileConfig.STRING_CHARSET); } if (r > 1000) { tablet.bitMaps[sensorNum - 1].mark((int) r % tablet.getMaxRowNumber()); @@ -522,8 +522,8 @@ public void writeAlignedWithTabletWithNullValue() { tablet.bitMaps[i].mark((int) r % tablet.getMaxRowNumber()); continue; } - Binary[] textSensor = (Binary[]) values[i]; - textSensor[row] = new Binary("testString.........", TSFileConfig.STRING_CHARSET); + PooledBinary[] textSensor = (PooledBinary[]) values[i]; + textSensor[row] = new PooledBinary("testString.........", TSFileConfig.STRING_CHARSET); } if (r > 1000) { tablet.bitMaps[sensorNum - 1].mark((int) r % tablet.getMaxRowNumber()); @@ -575,8 +575,8 @@ public void writeDataToTabletsWithNegativeTimestamps() { tablet.bitMaps[i].mark((int) r % tablet.getMaxRowNumber()); continue; } - Binary[] textSensor = (Binary[]) values[i]; - textSensor[row] = new Binary("testString.........", TSFileConfig.STRING_CHARSET); + PooledBinary[] textSensor = (PooledBinary[]) values[i]; + textSensor[row] = new PooledBinary("testString.........", TSFileConfig.STRING_CHARSET); } if (r > 1000) { tablet.bitMaps[sensorNum - 1].mark((int) r % tablet.getMaxRowNumber()); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/write/record/TabletTest.java b/java/tsfile/src/test/java/org/apache/tsfile/write/record/TabletTest.java index 64572c8c1..5351aecb5 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/write/record/TabletTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/write/record/TabletTest.java @@ -22,8 +22,8 @@ import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.BitMap; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.write.schema.IMeasurementSchema; import org.apache.tsfile.write.schema.MeasurementSchema; @@ -155,7 +155,7 @@ public void testSerializationAndDeSerializationWithMoreData() { tablet.addValue( measurementSchemas.get(7).getMeasurementName(), i, - new Binary(String.valueOf(i), TSFileConfig.STRING_CHARSET)); + new PooledBinary(String.valueOf(i), TSFileConfig.STRING_CHARSET)); tablet.addValue(measurementSchemas.get(8).getMeasurementName(), i, (long) i); tablet.addValue( measurementSchemas.get(9).getMeasurementName(), diff --git a/java/tsfile/src/test/java/org/apache/tsfile/write/writer/PageWriterTest.java b/java/tsfile/src/test/java/org/apache/tsfile/write/writer/PageWriterTest.java index 9de6e6a1f..dc9d91616 100755 --- a/java/tsfile/src/test/java/org/apache/tsfile/write/writer/PageWriterTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/write/writer/PageWriterTest.java @@ -24,7 +24,7 @@ import org.apache.tsfile.encoding.encoder.PlainEncoder; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Binary; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.ReadWriteForEncodingUtils; import org.apache.tsfile.write.page.PageWriter; import org.apache.tsfile.write.schema.MeasurementSchema; @@ -167,7 +167,7 @@ public void testWriteBinary() { String value = "I have a dream"; int timeCount = 0; try { - writer.write(timeCount++, new Binary(value, TSFileConfig.STRING_CHARSET)); + writer.write(timeCount++, new PooledBinary(value, TSFileConfig.STRING_CHARSET)); assertEquals(23, writer.estimateMaxMemSize()); ByteBuffer buffer1 = writer.getUncompressedBytes(); ByteBuffer buffer = ByteBuffer.wrap(buffer1.array()); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java b/java/tsfile/src/test/java/org/apache/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java index 77ffdab0c..fa38f1083 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/write/writer/TsFileIOWriterMemoryControlTest.java @@ -31,8 +31,8 @@ import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; import org.apache.tsfile.read.common.Path; -import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.Pair; +import org.apache.tsfile.utils.PooledBinary; import org.apache.tsfile.utils.TsPrimitiveType; import org.apache.tsfile.write.TsFileIntegrityCheckingTool; import org.apache.tsfile.write.chunk.AlignedChunkWriterImpl; @@ -1337,7 +1337,8 @@ private AlignedChunkWriterImpl generateVectorData( case 5: points[j] = new TsPrimitiveType.TsBinary( - new Binary(String.valueOf(random.nextDouble()), TSFileConfig.STRING_CHARSET)); + new PooledBinary( + String.valueOf(random.nextDouble()), TSFileConfig.STRING_CHARSET)); break; } } @@ -1355,7 +1356,8 @@ private ChunkWriterImpl generateTextData( new ChunkWriterImpl(new MeasurementSchema(sortedSeriesId.get(idx), TSDataType.TEXT)); Random random = new Random(); for (long i = startTime; i < startTime + TEST_CHUNK_SIZE; ++i) { - Binary val = new Binary(String.valueOf(random.nextDouble()), TSFileConfig.STRING_CHARSET); + PooledBinary val = + new PooledBinary(String.valueOf(random.nextDouble()), TSFileConfig.STRING_CHARSET); chunkWriter.write(i, val); record.add(new Pair<>(i, new TsPrimitiveType.TsBinary(val))); }