Skip to content

Commit 937cacd

Browse files
authored
feat: [iceberg] Native scan by serializing FileScanTasks to iceberg-rust (#2528)
1 parent d09baec commit 937cacd

39 files changed

+13091
-337
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
name: Setup Iceberg Builder
19+
description: 'Setup Apache Iceberg to run Spark SQL tests'
20+
inputs:
21+
iceberg-version:
22+
description: 'The Apache Iceberg version (e.g., 1.8.1) to build'
23+
required: true
24+
runs:
25+
using: "composite"
26+
steps:
27+
- name: Clone Iceberg repo
28+
uses: actions/checkout@v4
29+
with:
30+
repository: apache/iceberg
31+
path: apache-iceberg
32+
ref: apache-iceberg-${{inputs.iceberg-version}}
33+
fetch-depth: 1
34+
35+
- name: Setup Iceberg for Comet
36+
shell: bash
37+
run: |
38+
cd apache-iceberg
39+
git apply ../dev/diffs/iceberg-rust/${{inputs.iceberg-version}}.diff

.github/workflows/iceberg_spark_test.yml

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,120 @@ jobs:
156156
ENABLE_COMET=true ENABLE_COMET_ONHEAP=true ./gradlew -DsparkVersions=${{ matrix.spark-version.short }} -DscalaVersion=${{ matrix.scala-version }} -DflinkVersions= -DkafkaVersions= \
157157
:iceberg-spark:iceberg-spark-runtime-${{ matrix.spark-version.short }}_${{ matrix.scala-version }}:integrationTest \
158158
-Pquick=true -x javadoc
159+
160+
iceberg-spark-rust:
161+
if: contains(github.event.pull_request.title, '[iceberg]')
162+
strategy:
163+
matrix:
164+
os: [ubuntu-24.04]
165+
java-version: [11, 17]
166+
iceberg-version: [{short: '1.8', full: '1.8.1'}, {short: '1.9', full: '1.9.1'}, {short: '1.10', full: '1.10.0'}]
167+
spark-version: [{short: '3.4', full: '3.4.3'}, {short: '3.5', full: '3.5.7'}]
168+
scala-version: ['2.13']
169+
fail-fast: false
170+
name: iceberg-spark-rust/${{ matrix.os }}/iceberg-${{ matrix.iceberg-version.full }}/spark-${{ matrix.spark-version.full }}/scala-${{ matrix.scala-version }}/java-${{ matrix.java-version }}
171+
runs-on: ${{ matrix.os }}
172+
container:
173+
image: amd64/rust
174+
env:
175+
SPARK_LOCAL_IP: localhost
176+
steps:
177+
- uses: actions/checkout@v5
178+
- name: Setup Rust & Java toolchain
179+
uses: ./.github/actions/setup-builder
180+
with:
181+
rust-version: ${{env.RUST_VERSION}}
182+
jdk-version: ${{ matrix.java-version }}
183+
- name: Build Comet
184+
shell: bash
185+
run: |
186+
PROFILES="-Pspark-${{matrix.spark-version.short}} -Pscala-${{matrix.scala-version}}" make release
187+
- name: Setup Iceberg
188+
uses: ./.github/actions/setup-iceberg-rust-builder
189+
with:
190+
iceberg-version: ${{ matrix.iceberg-version.full }}
191+
- name: Run Iceberg Spark tests (Rust)
192+
run: |
193+
cd apache-iceberg
194+
rm -rf /root/.m2/repository/org/apache/parquet # somehow parquet cache requires cleanups
195+
ENABLE_COMET=true ENABLE_COMET_ONHEAP=true ./gradlew -DsparkVersions=${{ matrix.spark-version.short }} -DscalaVersion=${{ matrix.scala-version }} -DflinkVersions= -DkafkaVersions= \
196+
:iceberg-spark:iceberg-spark-${{ matrix.spark-version.short }}_${{ matrix.scala-version }}:test \
197+
-Pquick=true -x javadoc
198+
199+
iceberg-spark-extensions-rust:
200+
if: contains(github.event.pull_request.title, '[iceberg]')
201+
strategy:
202+
matrix:
203+
os: [ubuntu-24.04]
204+
java-version: [11, 17]
205+
iceberg-version: [{short: '1.8', full: '1.8.1'}, {short: '1.9', full: '1.9.1'}, {short: '1.10', full: '1.10.0'}]
206+
spark-version: [{short: '3.4', full: '3.4.3'}, {short: '3.5', full: '3.5.7'}]
207+
scala-version: ['2.13']
208+
fail-fast: false
209+
name: iceberg-spark-extensions-rust/${{ matrix.os }}/iceberg-${{ matrix.iceberg-version.full }}/spark-${{ matrix.spark-version.full }}/scala-${{ matrix.scala-version }}/java-${{ matrix.java-version }}
210+
runs-on: ${{ matrix.os }}
211+
container:
212+
image: amd64/rust
213+
env:
214+
SPARK_LOCAL_IP: localhost
215+
steps:
216+
- uses: actions/checkout@v5
217+
- name: Setup Rust & Java toolchain
218+
uses: ./.github/actions/setup-builder
219+
with:
220+
rust-version: ${{env.RUST_VERSION}}
221+
jdk-version: ${{ matrix.java-version }}
222+
- name: Build Comet
223+
shell: bash
224+
run: |
225+
PROFILES="-Pspark-${{matrix.spark-version.short}} -Pscala-${{matrix.scala-version}}" make release
226+
- name: Setup Iceberg
227+
uses: ./.github/actions/setup-iceberg-rust-builder
228+
with:
229+
iceberg-version: ${{ matrix.iceberg-version.full }}
230+
- name: Run Iceberg Spark extensions tests (Rust)
231+
run: |
232+
cd apache-iceberg
233+
rm -rf /root/.m2/repository/org/apache/parquet # somehow parquet cache requires cleanups
234+
ENABLE_COMET=true ENABLE_COMET_ONHEAP=true ./gradlew -DsparkVersions=${{ matrix.spark-version.short }} -DscalaVersion=${{ matrix.scala-version }} -DflinkVersions= -DkafkaVersions= \
235+
:iceberg-spark:iceberg-spark-extensions-${{ matrix.spark-version.short }}_${{ matrix.scala-version }}:test \
236+
-Pquick=true -x javadoc
237+
238+
iceberg-spark-runtime-rust:
239+
if: contains(github.event.pull_request.title, '[iceberg]')
240+
strategy:
241+
matrix:
242+
os: [ubuntu-24.04]
243+
java-version: [11, 17]
244+
iceberg-version: [{short: '1.8', full: '1.8.1'}, {short: '1.9', full: '1.9.1'}, {short: '1.10', full: '1.10.0'}]
245+
spark-version: [{short: '3.4', full: '3.4.3'}, {short: '3.5', full: '3.5.7'}]
246+
scala-version: ['2.13']
247+
fail-fast: false
248+
name: iceberg-spark-runtime-rust/${{ matrix.os }}/iceberg-${{ matrix.iceberg-version.full }}/spark-${{ matrix.spark-version.full }}/scala-${{ matrix.scala-version }}/java-${{ matrix.java-version }}
249+
runs-on: ${{ matrix.os }}
250+
container:
251+
image: amd64/rust
252+
env:
253+
SPARK_LOCAL_IP: localhost
254+
steps:
255+
- uses: actions/checkout@v5
256+
- name: Setup Rust & Java toolchain
257+
uses: ./.github/actions/setup-builder
258+
with:
259+
rust-version: ${{env.RUST_VERSION}}
260+
jdk-version: ${{ matrix.java-version }}
261+
- name: Build Comet
262+
shell: bash
263+
run: |
264+
PROFILES="-Pspark-${{matrix.spark-version.short}} -Pscala-${{matrix.scala-version}}" make release
265+
- name: Setup Iceberg
266+
uses: ./.github/actions/setup-iceberg-rust-builder
267+
with:
268+
iceberg-version: ${{ matrix.iceberg-version.full }}
269+
- name: Run Iceberg Spark runtime tests (Rust)
270+
run: |
271+
cd apache-iceberg
272+
rm -rf /root/.m2/repository/org/apache/parquet # somehow parquet cache requires cleanups
273+
ENABLE_COMET=true ENABLE_COMET_ONHEAP=true ./gradlew -DsparkVersions=${{ matrix.spark-version.short }} -DscalaVersion=${{ matrix.scala-version }} -DflinkVersions= -DkafkaVersions= \
274+
:iceberg-spark:iceberg-spark-runtime-${{ matrix.spark-version.short }}_${{ matrix.scala-version }}:integrationTest \
275+
-Pquick=true -x javadoc

.github/workflows/pr_build_linux.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ jobs:
103103
value: |
104104
org.apache.comet.CometFuzzTestSuite
105105
org.apache.comet.CometFuzzAggregateSuite
106+
org.apache.comet.CometFuzzIcebergSuite
106107
org.apache.comet.CometFuzzMathSuite
107108
org.apache.comet.DataGeneratorSuite
108109
- name: "shuffle"
@@ -124,6 +125,7 @@ jobs:
124125
org.apache.spark.sql.comet.ParquetDatetimeRebaseV2Suite
125126
org.apache.spark.sql.comet.ParquetEncryptionITCase
126127
org.apache.comet.exec.CometNativeReaderSuite
128+
org.apache.comet.CometIcebergNativeSuite
127129
- name: "exec"
128130
value: |
129131
org.apache.comet.exec.CometAggregateSuite

.github/workflows/pr_build_macos.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ jobs:
6868
value: |
6969
org.apache.comet.CometFuzzTestSuite
7070
org.apache.comet.CometFuzzAggregateSuite
71+
org.apache.comet.CometFuzzIcebergSuite
7172
org.apache.comet.CometFuzzMathSuite
7273
org.apache.comet.DataGeneratorSuite
7374
- name: "shuffle"
@@ -89,6 +90,7 @@ jobs:
8990
org.apache.spark.sql.comet.ParquetDatetimeRebaseV2Suite
9091
org.apache.spark.sql.comet.ParquetEncryptionITCase
9192
org.apache.comet.exec.CometNativeReaderSuite
93+
org.apache.comet.CometIcebergNativeSuite
9294
- name: "exec"
9395
value: |
9496
org.apache.comet.exec.CometAggregateSuite

common/src/main/scala/org/apache/comet/CometConf.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,16 @@ object CometConf extends ShimCometConf {
122122
Set(SCAN_NATIVE_COMET, SCAN_NATIVE_DATAFUSION, SCAN_NATIVE_ICEBERG_COMPAT, SCAN_AUTO))
123123
.createWithEnvVarOrDefault("COMET_PARQUET_SCAN_IMPL", SCAN_AUTO)
124124

125+
val COMET_ICEBERG_NATIVE_ENABLED: ConfigEntry[Boolean] =
126+
conf("spark.comet.scan.icebergNative.enabled")
127+
.category(CATEGORY_SCAN)
128+
.doc(
129+
"Whether to enable native Iceberg table scan using iceberg-rust. When enabled, " +
130+
"Iceberg tables are read directly through native execution, bypassing Spark's " +
131+
"DataSource V2 API for better performance.")
132+
.booleanConf
133+
.createWithDefault(false)
134+
125135
val COMET_RESPECT_PARQUET_FILTER_PUSHDOWN: ConfigEntry[Boolean] =
126136
conf("spark.comet.parquet.respectFilterPushdown")
127137
.category(CATEGORY_PARQUET)

common/src/main/scala/org/apache/comet/objectstore/NativeConfig.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ object NativeConfig {
5656
* consistent and standardized cloud storage support across all providers.
5757
*/
5858
def extractObjectStoreOptions(hadoopConf: Configuration, uri: URI): Map[String, String] = {
59-
val scheme = uri.getScheme.toLowerCase(Locale.ROOT)
59+
val scheme = Option(uri.getScheme).map(_.toLowerCase(Locale.ROOT)).getOrElse("file")
6060

6161
import scala.jdk.CollectionConverters._
6262
val options = scala.collection.mutable.Map[String, String]()

dev/ci/check-suites.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def file_to_class_name(path: Path) -> str | None:
3434
ignore_list = [
3535
"org.apache.comet.parquet.ParquetReadSuite", # abstract
3636
"org.apache.comet.parquet.ParquetReadFromS3Suite", # manual test suite
37+
"org.apache.comet.IcebergReadFromS3Suite", # manual test suite
3738
"org.apache.spark.sql.comet.CometPlanStabilitySuite", # abstract
3839
"org.apache.spark.sql.comet.ParquetDatetimeRebaseSuite", # abstract
3940
"org.apache.comet.exec.CometColumnarShuffleSuite" # abstract

dev/diffs/3.4.3.diff

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/pom.xml b/pom.xml
2-
index d3544881af1..9c174496a4b 100644
2+
index d3544881af1..fbe1c4b9a87 100644
33
--- a/pom.xml
44
+++ b/pom.xml
55
@@ -148,6 +148,8 @@
@@ -513,7 +513,7 @@ index a6b295578d6..91acca4306f 100644
513513

514514
test("SPARK-35884: Explain Formatted") {
515515
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/FileBasedDataSourceSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/FileBasedDataSourceSuite.scala
516-
index 2796b1cf154..4816349d690 100644
516+
index 2796b1cf154..52438178a0e 100644
517517
--- a/sql/core/src/test/scala/org/apache/spark/sql/FileBasedDataSourceSuite.scala
518518
+++ b/sql/core/src/test/scala/org/apache/spark/sql/FileBasedDataSourceSuite.scala
519519
@@ -33,6 +33,7 @@ import org.apache.spark.sql.TestingUDT.{IntervalUDT, NullData, NullUDT}
@@ -536,15 +536,15 @@ index 2796b1cf154..4816349d690 100644
536536

537537
val fileScan = df.queryExecution.executedPlan collectFirst {
538538
case BatchScanExec(_, f: FileScan, _, _, _, _, _, _, _) => f
539-
+ case CometBatchScanExec(BatchScanExec(_, f: FileScan, _, _, _, _, _, _, _), _) => f
539+
+ case CometBatchScanExec(BatchScanExec(_, f: FileScan, _, _, _, _, _, _, _), _, _) => f
540540
}
541541
assert(fileScan.nonEmpty)
542542
assert(fileScan.get.partitionFilters.nonEmpty)
543543
@@ -916,6 +919,7 @@ class FileBasedDataSourceSuite extends QueryTest
544544

545545
val fileScan = df.queryExecution.executedPlan collectFirst {
546546
case BatchScanExec(_, f: FileScan, _, _, _, _, _, _, _) => f
547-
+ case CometBatchScanExec(BatchScanExec(_, f: FileScan, _, _, _, _, _, _, _), _) => f
547+
+ case CometBatchScanExec(BatchScanExec(_, f: FileScan, _, _, _, _, _, _, _), _, _) => f
548548
}
549549
assert(fileScan.nonEmpty)
550550
assert(fileScan.get.partitionFilters.isEmpty)

dev/diffs/3.5.7.diff

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/pom.xml b/pom.xml
2-
index 68e2c422a24..d971894ffe6 100644
2+
index a0e25ce4d8d..7db86212507 100644
33
--- a/pom.xml
44
+++ b/pom.xml
55
@@ -152,6 +152,8 @@
@@ -38,7 +38,7 @@ index 68e2c422a24..d971894ffe6 100644
3838
</dependencyManagement>
3939

4040
diff --git a/sql/core/pom.xml b/sql/core/pom.xml
41-
index f08b33575fc..424e0da32fd 100644
41+
index e3d324c8edb..22342150522 100644
4242
--- a/sql/core/pom.xml
4343
+++ b/sql/core/pom.xml
4444
@@ -77,6 +77,10 @@
@@ -216,7 +216,7 @@ index 0efe0877e9b..423d3b3d76d 100644
216216
-- SELECT_HAVING
217217
-- https://github.com/postgres/postgres/blob/REL_12_BETA2/src/test/regress/sql/select_having.sql
218218
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala
219-
index 9815cb816c9..95b5f9992b0 100644
219+
index e5494726695..00937f025c2 100644
220220
--- a/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala
221221
+++ b/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala
222222
@@ -38,7 +38,7 @@ import org.apache.spark.sql.catalyst.util.DateTimeConstants
@@ -239,7 +239,7 @@ index 9815cb816c9..95b5f9992b0 100644
239239

240240
test("A cached table preserves the partitioning and ordering of its cached SparkPlan") {
241241
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala
242-
index 5a8681aed97..da9d25e2eb4 100644
242+
index 6f3090d8908..c08a60fb0c2 100644
243243
--- a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala
244244
+++ b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala
245245
@@ -28,7 +28,7 @@ import org.apache.spark.sql.catalyst.plans.logical.Expand
@@ -336,7 +336,7 @@ index 7ee18df3756..d09f70e5d99 100644
336336
assert(exchanges.size == 2)
337337
}
338338
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameWindowFunctionsSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameWindowFunctionsSuite.scala
339-
index 47a311c71d5..342e71cfdd4 100644
339+
index a1d5d579338..c201d39cc78 100644
340340
--- a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameWindowFunctionsSuite.scala
341341
+++ b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameWindowFunctionsSuite.scala
342342
@@ -24,8 +24,9 @@ import org.apache.spark.sql.catalyst.expressions.{AttributeReference, Expression
@@ -482,7 +482,7 @@ index a206e97c353..fea1149b67d 100644
482482

483483
test("SPARK-35884: Explain Formatted") {
484484
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/FileBasedDataSourceSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/FileBasedDataSourceSuite.scala
485-
index 93275487f29..01e5c601763 100644
485+
index 93275487f29..33b2e7ad3b1 100644
486486
--- a/sql/core/src/test/scala/org/apache/spark/sql/FileBasedDataSourceSuite.scala
487487
+++ b/sql/core/src/test/scala/org/apache/spark/sql/FileBasedDataSourceSuite.scala
488488
@@ -23,6 +23,7 @@ import java.nio.file.{Files, StandardOpenOption}
@@ -522,15 +522,15 @@ index 93275487f29..01e5c601763 100644
522522

523523
val fileScan = df.queryExecution.executedPlan collectFirst {
524524
case BatchScanExec(_, f: FileScan, _, _, _, _) => f
525-
+ case CometBatchScanExec(BatchScanExec(_, f: FileScan, _, _, _, _), _) => f
525+
+ case CometBatchScanExec(BatchScanExec(_, f: FileScan, _, _, _, _), _, _) => f
526526
}
527527
assert(fileScan.nonEmpty)
528528
assert(fileScan.get.partitionFilters.nonEmpty)
529529
@@ -1056,6 +1062,7 @@ class FileBasedDataSourceSuite extends QueryTest
530530

531531
val fileScan = df.queryExecution.executedPlan collectFirst {
532532
case BatchScanExec(_, f: FileScan, _, _, _, _) => f
533-
+ case CometBatchScanExec(BatchScanExec(_, f: FileScan, _, _, _, _), _) => f
533+
+ case CometBatchScanExec(BatchScanExec(_, f: FileScan, _, _, _, _), _, _) => f
534534
}
535535
assert(fileScan.nonEmpty)
536536
assert(fileScan.get.partitionFilters.isEmpty)
@@ -624,7 +624,7 @@ index 7af826583bd..3c3def1eb67 100644
624624
assert(shuffleMergeJoins.size == 1)
625625
}
626626
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/JoinSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/JoinSuite.scala
627-
index 4d256154c85..66a5473852d 100644
627+
index 44c8cb92fc3..f098beeca26 100644
628628
--- a/sql/core/src/test/scala/org/apache/spark/sql/JoinSuite.scala
629629
+++ b/sql/core/src/test/scala/org/apache/spark/sql/JoinSuite.scala
630630
@@ -31,7 +31,8 @@ import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
@@ -822,7 +822,7 @@ index 4d256154c85..66a5473852d 100644
822822
checkAnswer(fullJoinDF, Row(100))
823823
}
824824
}
825-
@@ -1583,6 +1612,9 @@ class JoinSuite extends QueryTest with SharedSparkSession with AdaptiveSparkPlan
825+
@@ -1611,6 +1640,9 @@ class JoinSuite extends QueryTest with SharedSparkSession with AdaptiveSparkPlan
826826
Seq(semiJoinDF, antiJoinDF).foreach { df =>
827827
assert(collect(df.queryExecution.executedPlan) {
828828
case j: ShuffledHashJoinExec if j.ignoreDuplicatedKey == ignoreDuplicatedKey => true
@@ -832,7 +832,7 @@ index 4d256154c85..66a5473852d 100644
832832
}.size == 1)
833833
}
834834
}
835-
@@ -1627,14 +1659,20 @@ class JoinSuite extends QueryTest with SharedSparkSession with AdaptiveSparkPlan
835+
@@ -1655,14 +1687,20 @@ class JoinSuite extends QueryTest with SharedSparkSession with AdaptiveSparkPlan
836836

837837
test("SPARK-43113: Full outer join with duplicate stream-side references in condition (SMJ)") {
838838
def check(plan: SparkPlan): Unit = {
@@ -855,7 +855,7 @@ index 4d256154c85..66a5473852d 100644
855855
}
856856
dupStreamSideColTest("SHUFFLE_HASH", check)
857857
}
858-
@@ -1770,7 +1808,8 @@ class ThreadLeakInSortMergeJoinSuite
858+
@@ -1798,7 +1836,8 @@ class ThreadLeakInSortMergeJoinSuite
859859
sparkConf.set(SHUFFLE_SPILL_NUM_ELEMENTS_FORCE_SPILL_THRESHOLD, 20))
860860
}
861861

@@ -879,7 +879,7 @@ index c26757c9cff..d55775f09d7 100644
879879
protected val baseResourcePath = {
880880
// use the same way as `SQLQueryTestSuite` to get the resource path
881881
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala
882-
index 793a0da6a86..181bfc16e4b 100644
882+
index 3cf2bfd17ab..49728c35c42 100644
883883
--- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala
884884
+++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala
885885
@@ -1521,7 +1521,8 @@ class SQLQuerySuite extends QueryTest with SharedSparkSession with AdaptiveSpark
@@ -2050,10 +2050,10 @@ index 8e88049f51e..8f3cf8a0f80 100644
20502050
case _ =>
20512051
throw new AnalysisException("Can not match ParquetTable in the query.")
20522052
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetIOSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetIOSuite.scala
2053-
index 4f8a9e39716..fb55ac7a955 100644
2053+
index 8ed9ef1630e..eed2a6f5ad5 100644
20542054
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetIOSuite.scala
20552055
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetIOSuite.scala
2056-
@@ -1335,7 +1335,8 @@ class ParquetIOSuite extends QueryTest with ParquetTest with SharedSparkSession
2056+
@@ -1345,7 +1345,8 @@ class ParquetIOSuite extends QueryTest with ParquetTest with SharedSparkSession
20572057
}
20582058
}
20592059

0 commit comments

Comments
 (0)