diff --git a/lance-spark-base_2.12/src/main/java/com/lancedb/lance/spark/read/FilterPushDown.java b/lance-spark-base_2.12/src/main/java/com/lancedb/lance/spark/read/FilterPushDown.java index 76f9e92..612fd84 100644 --- a/lance-spark-base_2.12/src/main/java/com/lancedb/lance/spark/read/FilterPushDown.java +++ b/lance-spark-base_2.12/src/main/java/com/lancedb/lance/spark/read/FilterPushDown.java @@ -32,6 +32,7 @@ import org.apache.spark.sql.sources.StringEndsWith; import org.apache.spark.sql.sources.StringStartsWith; +import java.math.BigDecimal; import java.sql.Date; import java.sql.Timestamp; import java.util.ArrayList; @@ -178,6 +179,10 @@ private static Optional compileFilter(Filter filter) { private static String compileValue(Object value) { if (value instanceof String || value instanceof Timestamp || value instanceof Date) { return "'" + value + "'"; + } else if (value instanceof BigDecimal) { + BigDecimal decimal = (BigDecimal) value; + return String.format( + "CAST (%s AS DECIMAL(%d, %d))", value, decimal.precision(), decimal.scale()); } else if (value instanceof Object[]) { Object[] array = (Object[]) value; StringBuilder sb = new StringBuilder();