Skip to content

Commit fb1a746

Browse files
committed
Merge remote-tracking branch 'apache/main' into ghj
2 parents 7d5eab9 + 0177afc commit fb1a746

5 files changed

Lines changed: 59 additions & 10 deletions

File tree

dev/diffs/3.5.8.diff

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ index 27ae10b3d59..78e69902dfd 100644
7676
val extensionConfClassNames = sparkContext.getConf.get(StaticSQLConf.SPARK_SESSION_EXTENSIONS)
7777
.getOrElse(Seq.empty)
7878
+ val extensionClassNames = extensionConfClassNames ++ loadCometExtension(sparkContext)
79-
extensionConfClassNames.foreach { extensionConfClassName =>
79+
- extensionConfClassNames.foreach { extensionConfClassName =>
80+
+ extensionClassNames.foreach { extensionConfClassName =>
8081
try {
8182
val extensionConfClass = Utils.classForName(extensionConfClassName)
8283
@@ -1396,4 +1405,12 @@ object SparkSession extends Logging {
@@ -3271,7 +3272,38 @@ index f3be79f9022..b4b1ea8dbc4 100644
32713272
+ IgnoreCometNativeDataFusion("https://github.com/apache/datafusion-comet/issues/3312")) {
32723273

32733274
withTempDir { tempDir =>
3274-
3275+
3276+
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SparkSessionExtensionSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SparkSessionExtensionSuite.scala
3277+
index 8b4ac474..3f79f208 100644
3278+
--- a/sql/core/src/test/scala/org/apache/spark/sql/SparkSessionExtensionSuite.scala
3279+
+++ b/sql/core/src/test/scala/org/apache/spark/sql/SparkSessionExtensionSuite.scala
3280+
@@ -223,6 +223,8 @@ class SparkSessionExtensionSuite extends SparkFunSuite with SQLHelper with Adapt
3281+
withSession(extensions) { session =>
3282+
session.conf.set(SQLConf.ADAPTIVE_EXECUTION_ENABLED, true)
3283+
session.conf.set(SQLConf.AUTO_BROADCASTJOIN_THRESHOLD.key, "-1")
3284+
+ // https://github.com/apache/datafusion-comet/issues/1197
3285+
+ session.conf.set("spark.comet.enabled", false)
3286+
assert(session.sessionState.columnarRules.contains(
3287+
MyColumnarRule(PreRuleReplaceAddWithBrokenVersion(), MyPostRule())))
3288+
import session.sqlContext.implicits._
3289+
@@ -281,6 +283,8 @@ class SparkSessionExtensionSuite extends SparkFunSuite with SQLHelper with Adapt
3290+
}
3291+
withSession(extensions) { session =>
3292+
session.conf.set(SQLConf.ADAPTIVE_EXECUTION_ENABLED, enableAQE)
3293+
+ // https://github.com/apache/datafusion-comet/issues/1197
3294+
+ session.conf.set("spark.comet.enabled", false)
3295+
assert(session.sessionState.columnarRules.contains(
3296+
MyColumnarRule(PreRuleReplaceAddWithBrokenVersion(), MyPostRule())))
3297+
import session.sqlContext.implicits._
3298+
@@ -319,6 +323,8 @@ class SparkSessionExtensionSuite extends SparkFunSuite with SQLHelper with Adapt
3299+
val session = SparkSession.builder()
3300+
.master("local[1]")
3301+
.config(COLUMN_BATCH_SIZE.key, 2)
3302+
+ // https://github.com/apache/datafusion-comet/issues/1197
3303+
+ .config("spark.comet.enabled", false)
3304+
.withExtensions { extensions =>
3305+
extensions.injectColumnar(session =>
3306+
MyColumnarRule(PreRuleReplaceAddWithBrokenVersion(), MyPostRule())) }
32753307
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/SQLQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/SQLQuerySuite.scala
32763308
index 6160c3e5f6c..0956d7d9edc 100644
32773309
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/SQLQuerySuite.scala

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

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

1818
use arrow::datatypes::DataType;
19-
use datafusion::common::{utils::take_function_args, DataFusionError, Result, ScalarValue::Utf8};
19+
use datafusion::common::{
20+
utils::take_function_args, DataFusionError, Result, ScalarValue, ScalarValue::Utf8,
21+
};
2022
use datafusion::logical_expr::{
2123
ColumnarValue, ScalarFunctionArgs, ScalarUDFImpl, Signature, Volatility,
2224
};
@@ -76,9 +78,14 @@ impl ScalarUDFImpl for SparkDateTrunc {
7678
let result = date_trunc_array_fmt_dyn(&date, &formats)?;
7779
Ok(ColumnarValue::Array(result))
7880
}
81+
(ColumnarValue::Scalar(date_scalar), ColumnarValue::Scalar(Utf8(Some(format)))) => {
82+
let date_arr = date_scalar.to_array()?;
83+
let result = date_trunc_dyn(&date_arr, format)?;
84+
let scalar = ScalarValue::try_from_array(&result, 0)?;
85+
Ok(ColumnarValue::Scalar(scalar))
86+
}
7987
_ => Err(DataFusionError::Execution(
80-
"Invalid input to function DateTrunc. Expected (PrimitiveArray<Date32>, Scalar) or \
81-
(PrimitiveArray<Date32>, StringArray)".to_string(),
88+
"Invalid input to function DateTrunc. Expected (Date32, Utf8)".to_string(),
8289
)),
8390
}
8491
}

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
use crate::utils::array_with_timezone;
1919
use arrow::datatypes::{DataType, Schema, TimeUnit::Microsecond};
2020
use arrow::record_batch::RecordBatch;
21-
use datafusion::common::{DataFusionError, ScalarValue::Utf8};
21+
use datafusion::common::{DataFusionError, ScalarValue, ScalarValue::Utf8};
2222
use datafusion::logical_expr::ColumnarValue;
2323
use datafusion::physical_expr::PhysicalExpr;
2424
use std::hash::Hash;
@@ -130,10 +130,20 @@ impl PhysicalExpr for TimestampTruncExpr {
130130
let result = timestamp_trunc_array_fmt_dyn(&ts, &formats)?;
131131
Ok(ColumnarValue::Array(result))
132132
}
133+
(ColumnarValue::Scalar(ts_scalar), ColumnarValue::Scalar(Utf8(Some(format)))) => {
134+
let ts_arr = ts_scalar.to_array()?;
135+
let ts = array_with_timezone(
136+
ts_arr,
137+
tz.clone(),
138+
Some(&DataType::Timestamp(Microsecond, Some(tz.into()))),
139+
)?;
140+
let result = timestamp_trunc_dyn(&ts, format)?;
141+
let scalar = ScalarValue::try_from_array(&result, 0)?;
142+
Ok(ColumnarValue::Scalar(scalar))
143+
}
133144
_ => Err(DataFusionError::Execution(
134145
"Invalid input to function TimestampTrunc. \
135-
Expected (PrimitiveArray<TimestampMicrosecondType>, Scalar, String) or \
136-
(PrimitiveArray<TimestampMicrosecondType>, StringArray, String)"
146+
Expected (Timestamp, Utf8)"
137147
.to_string(),
138148
)),
139149
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@ query
3333
SELECT trunc(d, 'quarter') FROM test_trunc_date
3434

3535
-- literal arguments
36-
query ignore(https://github.com/apache/datafusion-comet/issues/3342)
36+
query
3737
SELECT trunc(date('2024-06-15'), 'year'), trunc(date('2024-06-15'), 'month'), trunc(date('2024-06-15'), 'quarter')

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,5 @@ query
3737
SELECT date_trunc('hour', ts) FROM test_trunc_ts
3838

3939
-- literal arguments
40-
query ignore(https://github.com/apache/datafusion-comet/issues/3342)
40+
query
4141
SELECT date_trunc('year', timestamp('2024-06-15 10:30:45')), date_trunc('month', timestamp('2024-06-15 10:30:45')), date_trunc('day', timestamp('2024-06-15 10:30:45'))

0 commit comments

Comments
 (0)