Skip to content

Commit c3c12e9

Browse files
committed
remove ignore test and use try_from_array
1 parent 58d433c commit c3c12e9

7 files changed

Lines changed: 7 additions & 48 deletions

File tree

native/spark-expr/src/datetime_funcs/extract_date_part.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
// under the License.
1717

1818
use crate::utils::array_with_timezone;
19-
use arrow::array::{Array, Int32Array};
2019
use arrow::compute::{date_part, DatePart};
2120
use arrow::datatypes::{DataType, TimeUnit::Microsecond};
2221
use datafusion::common::{internal_datafusion_err, ScalarValue};
@@ -103,16 +102,7 @@ macro_rules! extract_date_part {
103102
)),
104103
)?;
105104
let result = date_part(&array, DatePart::$date_part_variant)?;
106-
let result_arr = result
107-
.as_any()
108-
.downcast_ref::<Int32Array>()
109-
.expect(concat!($fn_name, " should return Int32Array"));
110-
111-
let scalar_result = if result_arr.is_null(0) {
112-
ScalarValue::Int32(None)
113-
} else {
114-
ScalarValue::Int32(Some(result_arr.value(0)))
115-
};
105+
let scalar_result = ScalarValue::try_from_array(&result, 0)?;
116106

117107
Ok(ColumnarValue::Scalar(scalar_result))
118108
}

native/spark-expr/src/datetime_funcs/unix_timestamp.rs

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
// under the License.
1717

1818
use crate::utils::array_with_timezone;
19-
use arrow::array::{Array, AsArray, Int64Array, PrimitiveArray};
19+
use arrow::array::{Array, AsArray, PrimitiveArray};
2020
use arrow::compute::cast;
2121
use arrow::datatypes::{DataType, Int64Type, TimeUnit::Microsecond};
2222
use datafusion::common::{internal_datafusion_err, DataFusionError, ScalarValue};
@@ -95,16 +95,7 @@ impl ScalarUDFImpl for SparkUnixTimestamp {
9595
}
9696
};
9797

98-
let int64_array = result_array
99-
.as_any()
100-
.downcast_ref::<Int64Array>()
101-
.expect("unix_timestamp should return Int64Array");
102-
103-
let scalar_result = if int64_array.is_null(0) {
104-
ScalarValue::Int64(None)
105-
} else {
106-
ScalarValue::Int64(Some(int64_array.value(0)))
107-
};
98+
let scalar_result = ScalarValue::try_from_array(&result_array, 0)?;
10899

109100
Ok(ColumnarValue::Scalar(scalar_result))
110101
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ query
2727
SELECT hour(ts) FROM test_hour
2828

2929
-- literal arguments
30-
query ignore(https://github.com/apache/datafusion-comet/issues/3336)
30+
query
3131
SELECT hour(timestamp('2024-01-15 00:00:00')), hour(timestamp('2024-01-15 12:30:45')), hour(timestamp('2024-01-15 23:59:59'))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ query
2727
SELECT minute(ts) FROM test_minute
2828

2929
-- literal arguments
30-
query ignore(https://github.com/apache/datafusion-comet/issues/3336)
30+
query
3131
SELECT minute(timestamp('2024-01-15 10:00:00')), minute(timestamp('2024-01-15 10:30:00')), minute(timestamp('2024-01-15 10:59:59'))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ query
2727
SELECT second(ts) FROM test_second
2828

2929
-- literal arguments
30-
query ignore(https://github.com/apache/datafusion-comet/issues/3336)
30+
query
3131
SELECT second(timestamp('2024-01-15 10:30:00')), second(timestamp('2024-01-15 10:30:30')), second(timestamp('2024-01-15 10:30:59'))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ query
2727
SELECT unix_timestamp(ts) FROM test_unix_ts
2828

2929
-- literal arguments
30-
query ignore(https://github.com/apache/datafusion-comet/issues/3336)
30+
query
3131
SELECT unix_timestamp(timestamp('1970-01-01 00:00:00')), unix_timestamp(timestamp('2024-06-15 10:30:45'))

spark/src/test/scala/org/apache/comet/CometExpressionSuite.scala

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -572,28 +572,6 @@ class CometExpressionSuite extends CometTestBase with AdaptiveSparkPlanHelper {
572572
}
573573
}
574574

575-
test("scalar hour/minute/second/unix_timestamp with ConstantFolding disabled") {
576-
withSQLConf(
577-
SQLConf.OPTIMIZER_EXCLUDED_RULES.key ->
578-
"org.apache.spark.sql.catalyst.optimizer.ConstantFolding",
579-
SESSION_LOCAL_TIMEZONE.key -> "UTC") {
580-
val df = spark.sql("""
581-
|SELECT
582-
| hour(timestamp('2026-04-18 04:18:45')) AS h,
583-
| minute(timestamp('2026-04-18 04:18:45')) AS m,
584-
| second(timestamp('2026-04-18 04:18:45')) AS s,
585-
| unix_timestamp(timestamp('2020-01-01 00:00:00')) AS u
586-
|""".stripMargin)
587-
588-
val Row(h: Int, m: Int, s: Int, u: Long) = df.head()
589-
590-
assert(h == 4)
591-
assert(m == 18)
592-
assert(s == 45)
593-
assert(u == 1577836800L)
594-
}
595-
}
596-
597575
test("hour on int96 timestamp column") {
598576
import testImplicits._
599577

0 commit comments

Comments
 (0)