From 173dbec0920f276ab08d8029df72c077e84949ee Mon Sep 17 00:00:00 2001 From: guihuawen Date: Sun, 31 May 2026 14:44:54 +0800 Subject: [PATCH 01/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan scenarios --- .../sql/auron/hudi/HudiConvertProvider.scala | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala index ceef69c24..e155ea553 100644 --- a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala +++ b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala @@ -40,6 +40,10 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { major <- maybeMajor minor <- maybeMinor } yield major == 3 && minor >= 0 && minor <= 5).getOrElse(false) + assert( + SparkAuronConfiguration.ENABLE_HUDI_SCAN.get(), + "Conversion disabled: auron.enable.hudi.scan=false") + assert(supported, "Supported Spark versions: 3.0 to 3.5.") SparkAuronConfiguration.ENABLE_HUDI_SCAN.get() && supported case _ => false } @@ -49,7 +53,9 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { exec match { case scan: FileSourceScanExec => // Only handle Hudi-backed file scans; other scans fall through. - HudiScanSupport.supportedFileFormat(scan).nonEmpty + val isSupportedFileFormat = HudiScanSupport.supportedFileFormat(scan).nonEmpty + assert(isSupportedFileFormat, "FileFormat is not supported.") + isSupportedFileFormat case _ => false } } @@ -59,9 +65,9 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { case scan: FileSourceScanExec => HudiScanSupport.supportedFileFormat(scan) match { case Some(HudiScanSupport.ParquetFormat) => - if (!SparkAuronConfiguration.ENABLE_SCAN_PARQUET.get()) { - return exec - } + assert( + SparkAuronConfiguration.ENABLE_SCAN_PARQUET.get(), + "Conversion disabled: auron.enable.scan.parquet=false") // Hudi falls back to Spark when timestamp scanning is disabled. if (!SparkAuronConfiguration.ENABLE_SCAN_PARQUET_TIMESTAMP.get()) { if (scan.requiredSchema.exists(e => @@ -72,16 +78,22 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { logDebug(s"Applying native parquet scan for Hudi: ${scan.relation.location}") AuronConverters.addRenameColumnsExec(Shims.get.createNativeParquetScanExec(scan)) case Some(HudiScanSupport.OrcFormat) => - if (!SparkAuronConfiguration.ENABLE_SCAN_ORC.get()) { - return exec - } + assert( + SparkAuronConfiguration.ENABLE_SCAN_PARQUET.get(), + "Conversion disabled: auron.enable.scan.orc=false") // ORC follows the same timestamp fallback rule as Parquet. + assert( + SparkAuronConfiguration.ENABLE_SCAN_ORC_TIMESTAMP.get(), + "Conversion disabled: auron.enable.scan.orc.timestamp=false.") if (!SparkAuronConfiguration.ENABLE_SCAN_ORC_TIMESTAMP.get()) { if (scan.requiredSchema.exists(e => NativeConverters.existTimestampType(e.dataType))) { - return exec + assert( + false, + "Conversion disabled: ORC follows the same timestamp fallback rule as Parquet.") } } + logDebug(s"Applying native ORC scan for Hudi: ${scan.relation.location}") AuronConverters.addRenameColumnsExec(Shims.get.createNativeOrcScanExec(scan)) case None => exec From 883de9d62e98f68d5ac0a4008847f078161710d9 Mon Sep 17 00:00:00 2001 From: guihuawen Date: Sun, 31 May 2026 18:17:45 +0800 Subject: [PATCH 02/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan scenarios --- .../org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala index e155ea553..589b3cad4 100644 --- a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala +++ b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala @@ -54,7 +54,7 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { case scan: FileSourceScanExec => // Only handle Hudi-backed file scans; other scans fall through. val isSupportedFileFormat = HudiScanSupport.supportedFileFormat(scan).nonEmpty - assert(isSupportedFileFormat, "FileFormat is not supported.") + assert(!isSupportedFileFormat, "FileFormat is not supported.") isSupportedFileFormat case _ => false } From 881897fb2fc4cf56b45fb3cc0e99d05af1ad4e7c Mon Sep 17 00:00:00 2001 From: guihuawen Date: Sun, 31 May 2026 19:06:27 +0800 Subject: [PATCH 03/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan scenarios --- .../spark/sql/auron/AuronConverters.scala | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConverters.scala b/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConverters.scala index deb3c4f3f..a97ededc3 100644 --- a/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConverters.scala +++ b/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConverters.scala @@ -212,9 +212,20 @@ object AuronConverters extends Logging { case e: BroadcastExchangeExec if enableBroadcastExchange => tryConvert(e, convertBroadcastExchangeExec) case e: FileSourceScanExec if enableScan => // scan - extConvertProviders.find(p => p.isEnabled(e) && p.isSupported(e)) match { - case Some(provider) => tryConvert(e, provider.convert) - case None => tryConvert(e, convertFileSourceScanExec) + try { + extConvertProviders.find(p => p.isEnabled(e) && p.isSupported(e)) match { + case Some(provider) => tryConvert(e, provider.convert) + case None => tryConvert(e, convertFileSourceScanExec) + } + } catch { + case e @ (_: NotImplementedError | _: AssertionError | _: Exception) => + exec.setTagValue(convertToNonNativeTag, true) + exec.setTagValue(convertibleTag, false) + exec.setTagValue(convertStrategyTag, NeverConvert) + exec.setTagValue( + neverConvertReasonTag, + s"${e.getMessage.replaceFirst("^assertion failed: ?", "")}") + exec } case e: ProjectExec if enableProject => // project tryConvert(e, convertProjectExec) From b443a2144e321b96983bbf8a4746ce9261611483 Mon Sep 17 00:00:00 2001 From: guihuawen Date: Sun, 31 May 2026 20:25:29 +0800 Subject: [PATCH 04/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan scenarios --- .../org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala index 589b3cad4..e155ea553 100644 --- a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala +++ b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala @@ -54,7 +54,7 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { case scan: FileSourceScanExec => // Only handle Hudi-backed file scans; other scans fall through. val isSupportedFileFormat = HudiScanSupport.supportedFileFormat(scan).nonEmpty - assert(!isSupportedFileFormat, "FileFormat is not supported.") + assert(isSupportedFileFormat, "FileFormat is not supported.") isSupportedFileFormat case _ => false } From 34624f5810c71344722e7c8149213d0e6dcfd946 Mon Sep 17 00:00:00 2001 From: guihuawen Date: Sun, 31 May 2026 21:14:49 +0800 Subject: [PATCH 05/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan scenarios --- .../sql/auron/hudi/HudiConvertProvider.scala | 16 +++++++--------- .../sql/auron/hudi/HudiScanSupportSuite.scala | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala index e155ea553..295dcf020 100644 --- a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala +++ b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala @@ -42,8 +42,8 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { } yield major == 3 && minor >= 0 && minor <= 5).getOrElse(false) assert( SparkAuronConfiguration.ENABLE_HUDI_SCAN.get(), - "Conversion disabled: auron.enable.hudi.scan=false") - assert(supported, "Supported Spark versions: 3.0 to 3.5.") + "Conversion disabled: auron.enable.hudi.scan=false.") + assert(supported, "Conversion disabled: Supported Spark versions: 3.0 to 3.5.") SparkAuronConfiguration.ENABLE_HUDI_SCAN.get() && supported case _ => false } @@ -54,7 +54,7 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { case scan: FileSourceScanExec => // Only handle Hudi-backed file scans; other scans fall through. val isSupportedFileFormat = HudiScanSupport.supportedFileFormat(scan).nonEmpty - assert(isSupportedFileFormat, "FileFormat is not supported.") + assert(isSupportedFileFormat, "Conversion disabled: FileFormat is not supported.") isSupportedFileFormat case _ => false } @@ -67,12 +67,12 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { case Some(HudiScanSupport.ParquetFormat) => assert( SparkAuronConfiguration.ENABLE_SCAN_PARQUET.get(), - "Conversion disabled: auron.enable.scan.parquet=false") + "Conversion disabled: auron.enable.scan.parquet=false.") // Hudi falls back to Spark when timestamp scanning is disabled. if (!SparkAuronConfiguration.ENABLE_SCAN_PARQUET_TIMESTAMP.get()) { if (scan.requiredSchema.exists(e => NativeConverters.existTimestampType(e.dataType))) { - return exec + assert(false, "Conversion disabled: Has timestamp type.") } } logDebug(s"Applying native parquet scan for Hudi: ${scan.relation.location}") @@ -80,7 +80,7 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { case Some(HudiScanSupport.OrcFormat) => assert( SparkAuronConfiguration.ENABLE_SCAN_PARQUET.get(), - "Conversion disabled: auron.enable.scan.orc=false") + "Conversion disabled: auron.enable.scan.orc=false.") // ORC follows the same timestamp fallback rule as Parquet. assert( SparkAuronConfiguration.ENABLE_SCAN_ORC_TIMESTAMP.get(), @@ -88,9 +88,7 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { if (!SparkAuronConfiguration.ENABLE_SCAN_ORC_TIMESTAMP.get()) { if (scan.requiredSchema.exists(e => NativeConverters.existTimestampType(e.dataType))) { - assert( - false, - "Conversion disabled: ORC follows the same timestamp fallback rule as Parquet.") + assert(false, "Conversion disabled: Has timestamp type.") } } diff --git a/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala b/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala index dbb1f0c46..b7c4eb778 100644 --- a/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala +++ b/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala @@ -25,6 +25,8 @@ import org.apache.spark.SparkConf import org.apache.spark.SparkFunSuite import org.apache.spark.sql.{DataFrame, Row} import org.apache.spark.sql.catalyst.expressions.Expression +import org.apache.spark.sql.catalyst.trees.TreeNodeTag +import org.apache.spark.sql.execution.ExplainUtils.collectFirst import org.apache.spark.sql.execution.FileSourceScanExec import org.apache.spark.sql.execution.auron.plan.NativeOrcScanBase import org.apache.spark.sql.execution.auron.plan.NativeParquetScanBase @@ -530,4 +532,20 @@ class HudiScanSupportSuite extends SparkFunSuite with SharedSparkSession { assertFilterReferences(filteredScan.dataFilters, "id", "data") } } + + test("hudi: when falls back, check never convert reason") { + withTable("hudi_ts") { + spark.sql("create table hudi_ts (id int, ts timestamp) using hudi") + spark.sql("insert into hudi_ts values (1, timestamp('2026-01-01 00:00:00'))") + val df = spark.sql("select * from hudi_ts") + // Timestamp columns are not supported when native timestamp scanning is disabled. + logFileFormats(df) + df.collect() + val neverConvertReasonTag: TreeNodeTag[String] = TreeNodeTag("auron.never.convert.reason") + assert(collectFirst(df.queryExecution.executedPlan) { + case fileSourceScanExec: FileSourceScanExec => + fileSourceScanExec.getTagValue(neverConvertReasonTag) + }.get.get.equals("Conversion disabled: FileFormat is not supported.")) + } + } } From 5e4adccbbd188663c138ad0a247f43b3e20faab4 Mon Sep 17 00:00:00 2001 From: guihuawen Date: Sun, 31 May 2026 22:16:19 +0800 Subject: [PATCH 06/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan --- .../spark/sql/auron/AuronConvertStrategy.scala | 8 +++++--- .../spark/sql/auron/hudi/HudiScanSupportSuite.scala | 12 ++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConvertStrategy.scala b/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConvertStrategy.scala index 77e4c6632..546c6561d 100644 --- a/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConvertStrategy.scala +++ b/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConvertStrategy.scala @@ -68,9 +68,11 @@ object AuronConvertStrategy extends Logging { case _ => exec.setTagValue(convertibleTag, false) exec.setTagValue(convertStrategyTag, NeverConvert) - exec.setTagValue( - neverConvertReasonTag, - s"${exec.getClass.getSimpleName} is not supported yet.") + if (!exec.getTagValue(neverConvertReasonTag).isDefined) { + exec.setTagValue( + neverConvertReasonTag, + s"${exec.getClass.getSimpleName} is not supported yet.") + } } danglingChildren = newDangling :+ converted } diff --git a/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala b/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala index b7c4eb778..61c7790d3 100644 --- a/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala +++ b/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala @@ -542,10 +542,14 @@ class HudiScanSupportSuite extends SparkFunSuite with SharedSparkSession { logFileFormats(df) df.collect() val neverConvertReasonTag: TreeNodeTag[String] = TreeNodeTag("auron.never.convert.reason") - assert(collectFirst(df.queryExecution.executedPlan) { - case fileSourceScanExec: FileSourceScanExec => - fileSourceScanExec.getTagValue(neverConvertReasonTag) - }.get.get.equals("Conversion disabled: FileFormat is not supported.")) + assert( + collectFirst(df.queryExecution.executedPlan) { + case fileSourceScanExec: FileSourceScanExec => + fileSourceScanExec.getTagValue(neverConvertReasonTag) + }.get.get.equals( + "Falling back exec: FileSourceScanExec: assertion failed: Conversion disabled: Has timestamp type." + ) + ) // Some(Some(FileSourceScanExec is not supported yet.)) } } } From 4fbb6ed2f96c988f0623b9553fcc4384af1d46b0 Mon Sep 17 00:00:00 2001 From: guihuawen Date: Mon, 1 Jun 2026 13:12:33 +0800 Subject: [PATCH 07/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan --- .../apache/spark/sql/auron/hudi/HudiConvertProvider.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala index 295dcf020..ba47e2a6a 100644 --- a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala +++ b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala @@ -42,7 +42,7 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { } yield major == 3 && minor >= 0 && minor <= 5).getOrElse(false) assert( SparkAuronConfiguration.ENABLE_HUDI_SCAN.get(), - "Conversion disabled: auron.enable.hudi.scan=false.") + s"Conversion disabled: ${SparkAuronConfiguration.ENABLE_HUDI_SCAN.key()} is false.") assert(supported, "Conversion disabled: Supported Spark versions: 3.0 to 3.5.") SparkAuronConfiguration.ENABLE_HUDI_SCAN.get() && supported case _ => false @@ -67,7 +67,7 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { case Some(HudiScanSupport.ParquetFormat) => assert( SparkAuronConfiguration.ENABLE_SCAN_PARQUET.get(), - "Conversion disabled: auron.enable.scan.parquet=false.") + s"Conversion disabled: ${SparkAuronConfiguration.ENABLE_SCAN_PARQUET.key()} is false.") // Hudi falls back to Spark when timestamp scanning is disabled. if (!SparkAuronConfiguration.ENABLE_SCAN_PARQUET_TIMESTAMP.get()) { if (scan.requiredSchema.exists(e => @@ -80,11 +80,11 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { case Some(HudiScanSupport.OrcFormat) => assert( SparkAuronConfiguration.ENABLE_SCAN_PARQUET.get(), - "Conversion disabled: auron.enable.scan.orc=false.") + s"Conversion disabled: ${SparkAuronConfiguration.ENABLE_SCAN_PARQUET.key()} is false.") // ORC follows the same timestamp fallback rule as Parquet. assert( SparkAuronConfiguration.ENABLE_SCAN_ORC_TIMESTAMP.get(), - "Conversion disabled: auron.enable.scan.orc.timestamp=false.") + s"Conversion disabled: ${SparkAuronConfiguration.ENABLE_SCAN_ORC_TIMESTAMP.key()} is false.") if (!SparkAuronConfiguration.ENABLE_SCAN_ORC_TIMESTAMP.get()) { if (scan.requiredSchema.exists(e => NativeConverters.existTimestampType(e.dataType))) { From ab84134f137d71c76e351cb8d53e0aa0b7be6f30 Mon Sep 17 00:00:00 2001 From: guihuawen Date: Mon, 1 Jun 2026 13:19:27 +0800 Subject: [PATCH 08/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan --- .../apache/spark/sql/auron/AuronConverters.scala | 10 ++++++---- .../spark/sql/auron/hudi/HudiScanSupportSuite.scala | 13 +++++-------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConverters.scala b/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConverters.scala index a97ededc3..b07237988 100644 --- a/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConverters.scala +++ b/spark-extension/src/main/scala/org/apache/spark/sql/auron/AuronConverters.scala @@ -218,13 +218,15 @@ object AuronConverters extends Logging { case None => tryConvert(e, convertFileSourceScanExec) } } catch { - case e @ (_: NotImplementedError | _: AssertionError | _: Exception) => + case err @ (_: NotImplementedError | _: AssertionError | _: Exception) => + val msg = + Option(err.getMessage) + .getOrElse(err.toString) + .replaceFirst("^assertion failed: ?", "") exec.setTagValue(convertToNonNativeTag, true) exec.setTagValue(convertibleTag, false) exec.setTagValue(convertStrategyTag, NeverConvert) - exec.setTagValue( - neverConvertReasonTag, - s"${e.getMessage.replaceFirst("^assertion failed: ?", "")}") + exec.setTagValue(neverConvertReasonTag, msg) exec } case e: ProjectExec if enableProject => // project diff --git a/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala b/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala index 61c7790d3..786c4ea63 100644 --- a/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala +++ b/thirdparty/auron-hudi/src/test/scala/org/apache/spark/sql/auron/hudi/HudiScanSupportSuite.scala @@ -542,14 +542,11 @@ class HudiScanSupportSuite extends SparkFunSuite with SharedSparkSession { logFileFormats(df) df.collect() val neverConvertReasonTag: TreeNodeTag[String] = TreeNodeTag("auron.never.convert.reason") - assert( - collectFirst(df.queryExecution.executedPlan) { - case fileSourceScanExec: FileSourceScanExec => - fileSourceScanExec.getTagValue(neverConvertReasonTag) - }.get.get.equals( - "Falling back exec: FileSourceScanExec: assertion failed: Conversion disabled: Has timestamp type." - ) - ) // Some(Some(FileSourceScanExec is not supported yet.)) + assert(collectFirst(df.queryExecution.executedPlan) { + case fileSourceScanExec: FileSourceScanExec => + fileSourceScanExec.getTagValue(neverConvertReasonTag) + }.get.get.equals( + "Falling back exec: FileSourceScanExec: assertion failed: Conversion disabled: Has timestamp type.")) } } } From f34ea8385e2661ea6e47d80776f8d13bd1f91f14 Mon Sep 17 00:00:00 2001 From: guihuawen Date: Mon, 1 Jun 2026 23:22:53 +0800 Subject: [PATCH 09/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan --- .../org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala index ba47e2a6a..5792a2860 100644 --- a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala +++ b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala @@ -79,8 +79,8 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { AuronConverters.addRenameColumnsExec(Shims.get.createNativeParquetScanExec(scan)) case Some(HudiScanSupport.OrcFormat) => assert( - SparkAuronConfiguration.ENABLE_SCAN_PARQUET.get(), - s"Conversion disabled: ${SparkAuronConfiguration.ENABLE_SCAN_PARQUET.key()} is false.") + SparkAuronConfiguration.ENABLE_SCAN_ORC.get(), + s"Conversion disabled: ${SparkAuronConfiguration.ENABLE_SCAN_ORC.key()} is false.") // ORC follows the same timestamp fallback rule as Parquet. assert( SparkAuronConfiguration.ENABLE_SCAN_ORC_TIMESTAMP.get(), From ab1264d73484f5caa837a3e03e1b89c7880b055c Mon Sep 17 00:00:00 2001 From: guihuawen Date: Tue, 2 Jun 2026 00:46:04 +0800 Subject: [PATCH 10/10] [AURON #2252] Add support for auron.never.convert.reason in Hudi scan --- .../org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala index 5792a2860..ed0b6c055 100644 --- a/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala +++ b/thirdparty/auron-hudi/src/main/scala/org/apache/spark/sql/auron/hudi/HudiConvertProvider.scala @@ -43,7 +43,7 @@ class HudiConvertProvider extends AuronConvertProvider with Logging { assert( SparkAuronConfiguration.ENABLE_HUDI_SCAN.get(), s"Conversion disabled: ${SparkAuronConfiguration.ENABLE_HUDI_SCAN.key()} is false.") - assert(supported, "Conversion disabled: Supported Spark versions: 3.0 to 3.5.") + assert(supported, "Conversion disabled: Only supported Spark versions: 3.0 to 3.5.") SparkAuronConfiguration.ENABLE_HUDI_SCAN.get() && supported case _ => false }