diff --git a/core/src/main/scala/org/apache/spark/sql/execution/datasources/hbase/ScanRange.scala b/core/src/main/scala/org/apache/spark/sql/execution/datasources/hbase/ScanRange.scala index 30dcfc58..11533da4 100644 --- a/core/src/main/scala/org/apache/spark/sql/execution/datasources/hbase/ScanRange.scala +++ b/core/src/main/scala/org/apache/spark/sql/execution/datasources/hbase/ScanRange.scala @@ -412,7 +412,7 @@ object BoundRange extends Logging{ Some(BoundRanges(Array(BoundRange(min, b)),Array(BoundRange(b, max)), b)) } - case _: Array[Byte] | _: Byte | _: String | _: UTF8String => + case _: Array[Byte] | _: Byte | _: String | _: UTF8String | _: Boolean => Some(BoundRanges( Array(BoundRange(Array.fill(b.length)(ByteMin), b)), Array(BoundRange(b, Array.fill(b.length)(ByteMax))), b)) diff --git a/core/src/test/scala/org/apache/spark/sql/ScanRangeTestSuite.scala b/core/src/test/scala/org/apache/spark/sql/ScanRangeTestSuite.scala index 0c265671..596db5e1 100644 --- a/core/src/test/scala/org/apache/spark/sql/ScanRangeTestSuite.scala +++ b/core/src/test/scala/org/apache/spark/sql/ScanRangeTestSuite.scala @@ -17,12 +17,11 @@ package org.apache.spark.sql -import org.apache.spark.sql.execution.datasources.hbase.Logging +import org.apache.spark.sql.execution.datasources.hbase.{Bound, BoundRange, Field, Logging, ScanRange} import org.scalatest.{BeforeAndAfterAll, BeforeAndAfterEach, FunSuite} - import org.apache.hadoop.hbase.util.Bytes import org.apache.spark.sql.execution.datasources.hbase -import org.apache.spark.sql.execution.datasources.hbase.{Bound, ScanRange} +import org.apache.spark.sql.execution.datasources.hbase.types.SHCDataTypeFactory import org.apache.spark.sql.types.BinaryType class ScanRangeTestSuite extends FunSuite with BeforeAndAfterEach with BeforeAndAfterAll with Logging { @@ -487,4 +486,13 @@ class ScanRangeTestSuite extends FunSuite with BeforeAndAfterEach with BeforeAn assert(v.size == ret.size && v.toSet == ret) } + + test("Test BoundRange") { + val f = Field("col1", "f", "col1", "PrimitiveType", Some("boolean"), None, -1) + val coder = SHCDataTypeFactory.create(f) + val bBoolean = BoundRange(true.asInstanceOf[Any], f) + + display + assert(!bBoolean.isEmpty && coder.fromBytes(bBoolean.get.value).asInstanceOf[Boolean]) + } }