Skip to content

Commit 1858e54

Browse files
committed
handle literal
1 parent d294b54 commit 1858e54

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

spark/src/main/scala/org/apache/comet/serde/literals.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import com.google.protobuf.ByteString
3232
import org.apache.comet.CometSparkSessionExtensions.withInfo
3333
import org.apache.comet.DataTypeSupport.isComplexType
3434
import org.apache.comet.serde.{CometExpressionSerde, Compatible, ExprOuterClass, LiteralOuterClass, SupportLevel, Unsupported}
35-
import org.apache.comet.serde.QueryPlanSerde.{serializeDataType, supportedDataType}
35+
import org.apache.comet.serde.QueryPlanSerde.{isTimeType, serializeDataType, supportedDataType}
3636
import org.apache.comet.serde.Types.ListLiteral
3737

3838
object CometLiteral extends CometExpressionSerde[Literal] with Logging {
@@ -80,6 +80,8 @@ object CometLiteral extends CometExpressionSerde[Literal] with Logging {
8080
case _: IntegerType | _: DateType => exprBuilder.setIntVal(value.asInstanceOf[Int])
8181
case _: LongType | _: TimestampType | _: TimestampNTZType =>
8282
exprBuilder.setLongVal(value.asInstanceOf[Long])
83+
case dt if isTimeType(dt) =>
84+
exprBuilder.setLongVal(value.asInstanceOf[Long])
8385
case _: FloatType => exprBuilder.setFloatVal(value.asInstanceOf[Float])
8486
case _: DoubleType => exprBuilder.setDoubleVal(value.asInstanceOf[Double])
8587
case _: StringType =>

spark/src/test/resources/sql-tests/expressions/datetime/make_time.sql

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,14 @@ SELECT make_time(0, 0, -1.0)
128128
-- overflow seconds
129129
query expect_error(SecondOfMinute)
130130
SELECT make_time(1, 18, 4294967297.999999)
131+
132+
-- time literal in comparison (make_time with all literals is constant-folded to a Time literal)
133+
query
134+
SELECT make_time(12, 30, 0) > make_time(11, 0, 0)
135+
136+
query
137+
SELECT make_time(0, 0, 0) = make_time(0, 0, 0)
138+
139+
-- current_time() is foldable and produces a Time literal
140+
query
141+
SELECT current_time() IS NOT NULL

0 commit comments

Comments
 (0)