Skip to content

Commit 339dd5b

Browse files
cloud-fandongjoon-hyun
authored andcommitted
[SPARK-49791][SQL] Make DelegatingCatalogExtension more extendable
### What changes were proposed in this pull request? This PR updates `DelegatingCatalogExtension` so that it's more extendable - `initialize` becomes not final, so that sub-classes can overwrite it - `delegate` becomes `protected`, so that sub-classes can access it In addition, this PR fixes a mistake that `DelegatingCatalogExtension` is just a convenient default implementation, it's actually the `CatalogExtension` interface that indicates this catalog implementation will delegate requests to the Spark session catalog. #47724 should use `CatalogExtension` instead. ### Why are the changes needed? Unblock the Iceberg extension. ### Does this PR introduce _any_ user-facing change? no ### How was this patch tested? existing tests ### Was this patch authored or co-authored using generative AI tooling? no Closes #48257 from cloud-fan/catalog. Lead-authored-by: Wenchen Fan <[email protected]> Co-authored-by: Wenchen Fan <[email protected]> Signed-off-by: Dongjoon Hyun <[email protected]>
1 parent 54e62a1 commit 339dd5b

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

sql/catalyst/src/main/java/org/apache/spark/sql/connector/catalog/DelegatingCatalogExtension.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
@Evolving
3939
public abstract class DelegatingCatalogExtension implements CatalogExtension {
4040

41-
private CatalogPlugin delegate;
41+
protected CatalogPlugin delegate;
4242

4343
@Override
4444
public final void setDelegateCatalog(CatalogPlugin delegate) {
@@ -51,7 +51,7 @@ public String name() {
5151
}
5252

5353
@Override
54-
public final void initialize(String name, CaseInsensitiveStringMap options) {}
54+
public void initialize(String name, CaseInsensitiveStringMap options) {}
5555

5656
@Override
5757
public Set<TableCatalogCapability> capabilities() {

sql/core/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveSessionCatalog.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import org.apache.spark.sql.catalyst.plans.logical._
2828
import org.apache.spark.sql.catalyst.rules.Rule
2929
import org.apache.spark.sql.catalyst.util.{quoteIfNeeded, toPrettySQL, ResolveDefaultColumns => DefaultCols}
3030
import org.apache.spark.sql.catalyst.util.ResolveDefaultColumns._
31-
import org.apache.spark.sql.connector.catalog.{CatalogManager, CatalogPlugin, CatalogV2Util, DelegatingCatalogExtension, LookupCatalog, SupportsNamespaces, V1Table}
31+
import org.apache.spark.sql.connector.catalog.{CatalogExtension, CatalogManager, CatalogPlugin, CatalogV2Util, LookupCatalog, SupportsNamespaces, V1Table}
3232
import org.apache.spark.sql.connector.expressions.Transform
3333
import org.apache.spark.sql.errors.QueryCompilationErrors
3434
import org.apache.spark.sql.execution.command._
@@ -706,6 +706,6 @@ class ResolveSessionCatalog(val catalogManager: CatalogManager)
706706
private def supportsV1Command(catalog: CatalogPlugin): Boolean = {
707707
isSessionCatalog(catalog) && (
708708
SQLConf.get.getConf(SQLConf.V2_SESSION_CATALOG_IMPLEMENTATION).isEmpty ||
709-
catalog.isInstanceOf[DelegatingCatalogExtension])
709+
catalog.isInstanceOf[CatalogExtension])
710710
}
711711
}

sql/core/src/main/scala/org/apache/spark/sql/internal/DataFrameWriterImpl.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ final class DataFrameWriterImpl[T] private[sql](ds: Dataset[T]) extends DataFram
429429
val canUseV2 = lookupV2Provider().isDefined || (df.sparkSession.sessionState.conf.getConf(
430430
SQLConf.V2_SESSION_CATALOG_IMPLEMENTATION).isDefined &&
431431
!df.sparkSession.sessionState.catalogManager.catalog(CatalogManager.SESSION_CATALOG_NAME)
432-
.isInstanceOf[DelegatingCatalogExtension])
432+
.isInstanceOf[CatalogExtension])
433433

434434
session.sessionState.sqlParser.parseMultipartIdentifier(tableName) match {
435435
case nameParts @ NonSessionCatalogAndIdentifier(catalog, ident) =>

0 commit comments

Comments
 (0)