This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new 550c482f Add support for alter column datatype (#567)
550c482f is described below

commit 550c482fcaa26a4b8e6195a75876f289d0b8240f
Author: libo <[email protected]>
AuthorDate: Wed Aug 20 17:26:53 2025 +0800

    Add support for alter column datatype (#567)
    
    * Resolve may happen the problem that type conversion.
    
    * Format code.
    
    * Fix code.
    
    * Fix code.
    
    * Modify functions related type transfer in every operators class via 
template
---
 .../codegen/templates/FilterOperatorsTemplate.ftl  | 100 ++++++++++++++-------
 .../file/metadata/statistics/DoubleStatistics.java |  10 +++
 .../file/metadata/statistics/FloatStatistics.java  |  10 +++
 .../metadata/statistics/IntegerStatistics.java     |  10 +++
 .../file/metadata/statistics/Statistics.java       |  12 +++
 .../tsfile/read/filter/factory/ValueFilterApi.java |  67 +++++++-------
 6 files changed, 147 insertions(+), 62 deletions(-)

diff --git a/java/tsfile/src/main/codegen/templates/FilterOperatorsTemplate.ftl 
b/java/tsfile/src/main/codegen/templates/FilterOperatorsTemplate.ftl
index 77d394d1..0fe475d1 100644
--- a/java/tsfile/src/main/codegen/templates/FilterOperatorsTemplate.ftl
+++ b/java/tsfile/src/main/codegen/templates/FilterOperatorsTemplate.ftl
@@ -137,7 +137,11 @@ public final class ${className} {
 
     @Override
     public boolean valueSatisfy(Object value){
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
       return valueSatisfy((${filter.dataType}) value);
+      <#else>
+      return valueSatisfy(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -167,8 +171,8 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return constant < (${filter.javaBoxName}) statistics.getMinValue()
-          || constant > (${filter.javaBoxName}) statistics.getMaxValue();
+      return constant < ((Number) 
statistics.getMinValue()).${filter.dataType}Value()
+          || constant > ((Number) 
statistics.getMaxValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -190,8 +194,8 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return constant == (${filter.javaBoxName}) statistics.getMinValue()
-          && constant == (${filter.javaBoxName}) statistics.getMaxValue();
+      return constant == ((Number) 
statistics.getMinValue()).${filter.dataType}Value()
+          && constant == ((Number) 
statistics.getMaxValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -218,7 +222,11 @@ public final class ${className} {
 
     @Override
     public boolean valueSatisfy(Object value){
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
       return valueSatisfy((${filter.dataType}) value);
+      <#else>
+      return valueSatisfy(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -249,8 +257,8 @@ public final class ${className} {
         return false;
       }
       // drop if this is a column where min = max = value
-      return constant == (${filter.javaBoxName}) statistics.getMinValue()
-          && constant == (${filter.javaBoxName}) statistics.getMaxValue();
+      return constant == ((Number) 
statistics.getMinValue()).${filter.dataType}Value()
+          && constant == ((Number) 
statistics.getMaxValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -271,8 +279,8 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return constant < (${filter.javaBoxName}) statistics.getMinValue()
-          || constant > (${filter.javaBoxName}) statistics.getMaxValue();
+      return constant < ((Number) 
statistics.getMinValue()).${filter.dataType}Value()
+          || constant > ((Number) 
statistics.getMaxValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -300,7 +308,11 @@ public final class ${className} {
     @Override
     @SuppressWarnings("unchecked")
     public boolean valueSatisfy(Object value){
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
       return valueSatisfy((${filter.dataType}) value);
+      <#else>
+      return valueSatisfy(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -332,7 +344,7 @@ public final class ${className} {
         return false;
       }
       // drop if value <= min
-      return constant <= (${filter.javaBoxName}) statistics.getMinValue();
+      return constant <= ((Number) 
statistics.getMinValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -352,7 +364,7 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return constant > (${filter.javaBoxName}) statistics.getMaxValue();
+      return constant > ((Number) 
statistics.getMaxValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -380,7 +392,11 @@ public final class ${className} {
     @Override
     @SuppressWarnings("unchecked")
     public boolean valueSatisfy(Object value){
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
       return valueSatisfy((${filter.dataType}) value);
+      <#else>
+      return valueSatisfy(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -412,7 +428,7 @@ public final class ${className} {
         return false;
       }
       // drop if value < min
-      return constant < (${filter.javaBoxName}) statistics.getMinValue();
+      return constant < ((Number) 
statistics.getMinValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -432,7 +448,7 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return constant >= (${filter.javaBoxName}) statistics.getMaxValue();
+      return constant >= ((Number) 
statistics.getMaxValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -460,7 +476,11 @@ public final class ${className} {
     @Override
     @SuppressWarnings("unchecked")
     public boolean valueSatisfy(Object value){
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
       return valueSatisfy((${filter.dataType}) value);
+      <#else>
+      return valueSatisfy(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -492,7 +512,7 @@ public final class ${className} {
         return false;
       }
       // drop if value >= max
-      return constant >= (${filter.javaBoxName}) statistics.getMaxValue();
+      return constant >= ((Number) 
statistics.getMaxValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -512,7 +532,7 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return constant < (${filter.javaBoxName}) statistics.getMinValue();
+      return constant < ((Number) 
statistics.getMinValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -540,7 +560,11 @@ public final class ${className} {
     @Override
     @SuppressWarnings("unchecked")
     public boolean valueSatisfy(Object value){
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
       return valueSatisfy((${filter.dataType}) value);
+      <#else>
+      return valueSatisfy(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -572,7 +596,7 @@ public final class ${className} {
         return false;
       }
       // drop if value > max
-      return constant > (${filter.javaBoxName}) statistics.getMaxValue();
+      return constant > ((Number) 
statistics.getMaxValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -592,7 +616,7 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return constant <= (${filter.javaBoxName}) statistics.getMinValue();
+      return constant <= ((Number) 
statistics.getMinValue()).${filter.dataType}Value();
       </#if>
     }
 
@@ -688,7 +712,11 @@ public final class ${className} {
     @Override
     @SuppressWarnings("unchecked")
     public boolean valueSatisfy(Object value){
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
       return valueSatisfy((${filter.dataType}) value);
+      <#else>
+      return valueSatisfy(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -722,8 +750,8 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return (${filter.javaBoxName}) statistics.getMaxValue() < min
-          || (${filter.javaBoxName}) statistics.getMinValue() > max;
+      return ((Number) statistics.getMaxValue()).${filter.dataType}Value() < 
min
+          || ((Number) statistics.getMinValue()).${filter.dataType}Value() > 
max;
       </#if>
     }
 
@@ -744,8 +772,8 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return (${filter.javaBoxName}) statistics.getMinValue() >= min
-          && (${filter.javaBoxName}) statistics.getMaxValue() <= max;
+      return ((Number) statistics.getMinValue()).${filter.dataType}Value() >= 
min
+          && ((Number) statistics.getMaxValue()).${filter.dataType}Value() <= 
max;
       </#if>
     }
 
@@ -773,7 +801,11 @@ public final class ${className} {
     @Override
     @SuppressWarnings("unchecked")
     public boolean valueSatisfy(Object value){
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
       return valueSatisfy((${filter.dataType}) value);
+      <#else>
+      return valueSatisfy(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -806,8 +838,8 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return (${filter.javaBoxName}) statistics.getMinValue() >= min
-          && (${filter.javaBoxName}) statistics.getMaxValue() <= max;
+      return ((Number) statistics.getMinValue()).${filter.dataType}Value() >= 
min
+          && ((Number) statistics.getMaxValue()).${filter.dataType}Value() <= 
max;
       </#if>
     }
 
@@ -828,8 +860,8 @@ public final class ${className} {
       if(statistics.isEmpty()){
         return false;
       }
-      return (${filter.javaBoxName}) statistics.getMinValue() > max
-          || (${filter.javaBoxName}) statistics.getMaxValue() < min;
+      return ((Number) statistics.getMinValue()).${filter.dataType}Value() > 
max
+          || ((Number) statistics.getMaxValue()).${filter.dataType}Value() < 
min;
       </#if>
     }
 
@@ -962,7 +994,11 @@ public final class ${className} {
 
     @Override
     public boolean valueSatisfy(Object value){
-      return candidates.contains((${filter.javaBoxName}) value);
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
+      return candidates.contains((${filter.dataType}) value);
+      <#else>
+      return candidates.contains(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
@@ -994,8 +1030,8 @@ public final class ${className} {
         ${filter.dataType} valuesMin = (${filter.dataType}) stat.getMinValue();
         ${filter.dataType} valuesMax = (${filter.dataType}) stat.getMaxValue();
         <#else>
-        ${filter.javaBoxName} valuesMin = (${filter.javaBoxName}) 
stat.getMinValue();
-        ${filter.javaBoxName} valuesMax = (${filter.javaBoxName}) 
stat.getMaxValue();
+        ${filter.javaBoxName} valuesMin = ((Number) 
stat.getMinValue()).${filter.dataType}Value();
+        ${filter.javaBoxName} valuesMax = ((Number) 
stat.getMaxValue()).${filter.dataType}Value();
         </#if>
         // All values are same
         if (valuesMin.equals(valuesMax)) {
@@ -1048,8 +1084,8 @@ public final class ${className} {
         ${filter.dataType} valuesMin = (${filter.dataType}) stat.getMinValue();
         ${filter.dataType} valuesMax = (${filter.dataType}) stat.getMaxValue();
         <#else>
-        ${filter.javaBoxName} valuesMin = (${filter.javaBoxName}) 
stat.getMinValue();
-        ${filter.javaBoxName} valuesMax = (${filter.javaBoxName}) 
stat.getMaxValue();
+        ${filter.javaBoxName} valuesMin = ((Number) 
stat.getMinValue()).${filter.dataType}Value();
+        ${filter.javaBoxName} valuesMax = ((Number) 
stat.getMaxValue()).${filter.dataType}Value();
         </#if>
         // All values are same
         if (valuesMin.equals(valuesMax)) {
@@ -1106,7 +1142,11 @@ public final class ${className} {
 
     @Override
     public boolean valueSatisfy(Object value){
-      return !candidates.contains((${filter.javaBoxName}) value);
+      <#if filter.dataType == "boolean" || filter.dataType == "Binary" || 
filter.javaBoxName == "String">
+      return !candidates.contains((${filter.dataType}) value);
+      <#else>
+      return !candidates.contains(((Number) value).${filter.dataType}Value());
+      </#if>
     }
 
     @Override
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/DoubleStatistics.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/DoubleStatistics.java
index 1d259ca3..6d406d5f 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/DoubleStatistics.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/DoubleStatistics.java
@@ -128,6 +128,16 @@ public class DoubleStatistics extends Statistics<Double> {
     }
   }
 
+  @Override
+  public void updateStats(double minValue, double maxValue) {
+    if (minValue < this.minValue) {
+      this.minValue = minValue;
+    }
+    if (maxValue > this.maxValue) {
+      this.maxValue = maxValue;
+    }
+  }
+
   @Override
   public Double getMinValue() {
     return minValue;
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/FloatStatistics.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/FloatStatistics.java
index 0d9595a8..fd764349 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/FloatStatistics.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/FloatStatistics.java
@@ -119,6 +119,16 @@ public class FloatStatistics extends Statistics<Float> {
     }
   }
 
+  @Override
+  public void updateStats(float minValue, float maxValue) {
+    if (minValue < this.minValue) {
+      this.minValue = minValue;
+    }
+    if (maxValue > this.maxValue) {
+      this.maxValue = maxValue;
+    }
+  }
+
   @Override
   public Float getMinValue() {
     return minValue;
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/IntegerStatistics.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/IntegerStatistics.java
index 22db0aa9..b5cf408b 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/IntegerStatistics.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/statistics/IntegerStatistics.java
@@ -120,6 +120,16 @@ public class IntegerStatistics extends Statistics<Integer> 
{
     }
   }
 
+  @Override
+  public void updateStats(int minValue, int maxValue) {
+    if (minValue < this.minValue) {
+      this.minValue = minValue;
+    }
+    if (maxValue > this.maxValue) {
+      this.maxValue = maxValue;
+    }
+  }
+
   @Override
   public Integer getMinValue() {
     return minValue;
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 3fc0f714..ee41b063 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
@@ -393,6 +393,18 @@ public abstract class Statistics<T extends Serializable> {
     throw new UnsupportedOperationException();
   }
 
+  public void updateStats(int min, int max) {
+    throw new UnsupportedOperationException();
+  }
+
+  public void updateStats(float min, float max) {
+    throw new UnsupportedOperationException();
+  }
+
+  public void updateStats(double min, double max) {
+    throw new UnsupportedOperationException();
+  }
+
   public long getStartTime() {
     return startTime;
   }
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 6ccec7ec..745d78af 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
@@ -60,14 +60,14 @@ public class ValueFilterApi {
         return new BooleanFilterOperators.ValueGt(measurementIndex, (boolean) 
value);
       case INT32:
       case DATE:
-        return new IntegerFilterOperators.ValueGt(measurementIndex, (int) 
value);
+        return new IntegerFilterOperators.ValueGt(measurementIndex, ((Number) 
value).intValue());
       case INT64:
       case TIMESTAMP:
-        return new LongFilterOperators.ValueGt(measurementIndex, (long) value);
+        return new LongFilterOperators.ValueGt(measurementIndex, ((Number) 
value).longValue());
       case DOUBLE:
-        return new DoubleFilterOperators.ValueGt(measurementIndex, (double) 
value);
+        return new DoubleFilterOperators.ValueGt(measurementIndex, ((Number) 
value).doubleValue());
       case FLOAT:
-        return new FloatFilterOperators.ValueGt(measurementIndex, (float) 
value);
+        return new FloatFilterOperators.ValueGt(measurementIndex, ((Number) 
value).floatValue());
       case TEXT:
       case BLOB:
         return new BinaryFilterOperators.ValueGt(measurementIndex, (Binary) 
value);
@@ -86,14 +86,15 @@ public class ValueFilterApi {
         return new BooleanFilterOperators.ValueGtEq(measurementIndex, 
(boolean) value);
       case INT32:
       case DATE:
-        return new IntegerFilterOperators.ValueGtEq(measurementIndex, (int) 
value);
+        return new IntegerFilterOperators.ValueGtEq(measurementIndex, 
((Number) value).intValue());
       case INT64:
       case TIMESTAMP:
-        return new LongFilterOperators.ValueGtEq(measurementIndex, (long) 
value);
+        return new LongFilterOperators.ValueGtEq(measurementIndex, ((Number) 
value).longValue());
       case DOUBLE:
-        return new DoubleFilterOperators.ValueGtEq(measurementIndex, (double) 
value);
+        return new DoubleFilterOperators.ValueGtEq(
+            measurementIndex, ((Number) value).doubleValue());
       case FLOAT:
-        return new FloatFilterOperators.ValueGtEq(measurementIndex, (float) 
value);
+        return new FloatFilterOperators.ValueGtEq(measurementIndex, ((Number) 
value).floatValue());
       case TEXT:
       case BLOB:
         return new BinaryFilterOperators.ValueGtEq(measurementIndex, (Binary) 
value);
@@ -112,14 +113,14 @@ public class ValueFilterApi {
         return new BooleanFilterOperators.ValueLt(measurementIndex, (boolean) 
value);
       case INT32:
       case DATE:
-        return new IntegerFilterOperators.ValueLt(measurementIndex, (int) 
value);
+        return new IntegerFilterOperators.ValueLt(measurementIndex, ((Number) 
value).intValue());
       case INT64:
       case TIMESTAMP:
-        return new LongFilterOperators.ValueLt(measurementIndex, (long) value);
+        return new LongFilterOperators.ValueLt(measurementIndex, ((Number) 
value).longValue());
       case DOUBLE:
-        return new DoubleFilterOperators.ValueLt(measurementIndex, (double) 
value);
+        return new DoubleFilterOperators.ValueLt(measurementIndex, ((Number) 
value).doubleValue());
       case FLOAT:
-        return new FloatFilterOperators.ValueLt(measurementIndex, (float) 
value);
+        return new FloatFilterOperators.ValueLt(measurementIndex, ((Number) 
value).floatValue());
       case TEXT:
       case BLOB:
         return new BinaryFilterOperators.ValueLt(measurementIndex, (Binary) 
value);
@@ -138,14 +139,15 @@ public class ValueFilterApi {
         return new BooleanFilterOperators.ValueLtEq(measurementIndex, 
(boolean) value);
       case INT32:
       case DATE:
-        return new IntegerFilterOperators.ValueLtEq(measurementIndex, (int) 
value);
+        return new IntegerFilterOperators.ValueLtEq(measurementIndex, 
((Number) value).intValue());
       case INT64:
       case TIMESTAMP:
-        return new LongFilterOperators.ValueLtEq(measurementIndex, (long) 
value);
+        return new LongFilterOperators.ValueLtEq(measurementIndex, ((Number) 
value).longValue());
       case DOUBLE:
-        return new DoubleFilterOperators.ValueLtEq(measurementIndex, (double) 
value);
+        return new DoubleFilterOperators.ValueLtEq(
+            measurementIndex, ((Number) value).doubleValue());
       case FLOAT:
-        return new FloatFilterOperators.ValueLtEq(measurementIndex, (float) 
value);
+        return new FloatFilterOperators.ValueLtEq(measurementIndex, ((Number) 
value).floatValue());
       case TEXT:
       case BLOB:
         return new BinaryFilterOperators.ValueLtEq(measurementIndex, (Binary) 
value);
@@ -164,14 +166,14 @@ public class ValueFilterApi {
         return new BooleanFilterOperators.ValueEq(measurementIndex, (boolean) 
value);
       case INT32:
       case DATE:
-        return new IntegerFilterOperators.ValueEq(measurementIndex, (int) 
value);
+        return new IntegerFilterOperators.ValueEq(measurementIndex, ((Number) 
value).intValue());
       case INT64:
       case TIMESTAMP:
-        return new LongFilterOperators.ValueEq(measurementIndex, (long) value);
+        return new LongFilterOperators.ValueEq(measurementIndex, ((Number) 
value).longValue());
       case DOUBLE:
-        return new DoubleFilterOperators.ValueEq(measurementIndex, (double) 
value);
+        return new DoubleFilterOperators.ValueEq(measurementIndex, ((Number) 
value).doubleValue());
       case FLOAT:
-        return new FloatFilterOperators.ValueEq(measurementIndex, (float) 
value);
+        return new FloatFilterOperators.ValueEq(measurementIndex, ((Number) 
value).floatValue());
       case TEXT:
       case BLOB:
         return new BinaryFilterOperators.ValueEq(measurementIndex, (Binary) 
value);
@@ -190,14 +192,15 @@ public class ValueFilterApi {
         return new BooleanFilterOperators.ValueNotEq(measurementIndex, 
(boolean) value);
       case INT32:
       case DATE:
-        return new IntegerFilterOperators.ValueNotEq(measurementIndex, (int) 
value);
+        return new IntegerFilterOperators.ValueNotEq(measurementIndex, 
((Number) value).intValue());
       case INT64:
       case TIMESTAMP:
-        return new LongFilterOperators.ValueNotEq(measurementIndex, (long) 
value);
+        return new LongFilterOperators.ValueNotEq(measurementIndex, ((Number) 
value).longValue());
       case DOUBLE:
-        return new DoubleFilterOperators.ValueNotEq(measurementIndex, (double) 
value);
+        return new DoubleFilterOperators.ValueNotEq(
+            measurementIndex, ((Number) value).doubleValue());
       case FLOAT:
-        return new FloatFilterOperators.ValueNotEq(measurementIndex, (float) 
value);
+        return new FloatFilterOperators.ValueNotEq(measurementIndex, ((Number) 
value).floatValue());
       case TEXT:
       case BLOB:
         return new BinaryFilterOperators.ValueNotEq(measurementIndex, (Binary) 
value);
@@ -228,17 +231,17 @@ public class ValueFilterApi {
       case INT32:
       case DATE:
         return new IntegerFilterOperators.ValueBetweenAnd(
-            measurementIndex, (int) value1, (int) value2);
+            measurementIndex, ((Number) value1).intValue(), ((Number) 
value2).intValue());
       case INT64:
       case TIMESTAMP:
         return new LongFilterOperators.ValueBetweenAnd(
-            measurementIndex, (long) value1, (long) value2);
+            measurementIndex, ((Number) value1).longValue(), ((Number) 
value2).longValue());
       case DOUBLE:
         return new DoubleFilterOperators.ValueBetweenAnd(
-            measurementIndex, (double) value1, (double) value2);
+            measurementIndex, ((Number) value1).doubleValue(), ((Number) 
value2).doubleValue());
       case FLOAT:
         return new FloatFilterOperators.ValueBetweenAnd(
-            measurementIndex, (float) value1, (float) value2);
+            measurementIndex, ((Number) value1).floatValue(), ((Number) 
value2).floatValue());
       case TEXT:
       case BLOB:
         return new BinaryFilterOperators.ValueBetweenAnd(
@@ -263,17 +266,17 @@ public class ValueFilterApi {
       case INT32:
       case DATE:
         return new IntegerFilterOperators.ValueNotBetweenAnd(
-            measurementIndex, (int) value1, (int) value2);
+            measurementIndex, ((Number) value1).intValue(), ((Number) 
value2).intValue());
       case INT64:
       case TIMESTAMP:
         return new LongFilterOperators.ValueNotBetweenAnd(
-            measurementIndex, (long) value1, (long) value2);
+            measurementIndex, ((Number) value1).longValue(), ((Number) 
value2).longValue());
       case DOUBLE:
         return new DoubleFilterOperators.ValueNotBetweenAnd(
-            measurementIndex, (double) value1, (double) value2);
+            measurementIndex, ((Number) value1).doubleValue(), ((Number) 
value2).doubleValue());
       case FLOAT:
         return new FloatFilterOperators.ValueNotBetweenAnd(
-            measurementIndex, (float) value1, (float) value2);
+            measurementIndex, ((Number) value1).floatValue(), ((Number) 
value2).floatValue());
       case TEXT:
       case BLOB:
         return new BinaryFilterOperators.ValueNotBetweenAnd(

Reply via email to