From a1b9c11f12540ff18fc18733ac697658034618b3 Mon Sep 17 00:00:00 2001 From: Herman van Hovell Date: Thu, 6 Feb 2025 12:48:36 -0400 Subject: [PATCH] Support RuntimeConfig.contains(..) --- .../src/main/scala/org/apache/spark/sql/RuntimeConfig.scala | 5 +++++ .../org/apache/spark/sql/connect/ClientE2ETestSuite.scala | 3 +++ .../scala/org/apache/spark/sql/connect/RuntimeConfig.scala | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/sql/api/src/main/scala/org/apache/spark/sql/RuntimeConfig.scala b/sql/api/src/main/scala/org/apache/spark/sql/RuntimeConfig.scala index 091fbf20a0a7f..7ea5fe9bfb102 100644 --- a/sql/api/src/main/scala/org/apache/spark/sql/RuntimeConfig.scala +++ b/sql/api/src/main/scala/org/apache/spark/sql/RuntimeConfig.scala @@ -99,6 +99,11 @@ abstract class RuntimeConfig { */ private[sql] def get[T](entry: ConfigEntry[T], default: T): T + /** + * Returns whether a particular key is set. + */ + private[sql] def contains(key: String): Boolean + /** * Returns all properties set in this conf. * diff --git a/sql/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/ClientE2ETestSuite.scala b/sql/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/ClientE2ETestSuite.scala index b376a49b4634c..19263cdbed6d5 100644 --- a/sql/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/ClientE2ETestSuite.scala +++ b/sql/connect/client/jvm/src/test/scala/org/apache/spark/sql/connect/ClientE2ETestSuite.scala @@ -1046,6 +1046,9 @@ class ClientE2ETestSuite assert(spark.conf.get(entryWithDefault.key) === "12") assert(spark.conf.get(entryWithDefault) === 12) assert(spark.conf.get(entryWithDefault, 11) === 12) + + assert(spark.conf.contains(entryWithDefault.key)) + assert(!spark.conf.contains("nope")) } test("SparkVersion") { diff --git a/sql/connect/common/src/main/scala/org/apache/spark/sql/connect/RuntimeConfig.scala b/sql/connect/common/src/main/scala/org/apache/spark/sql/connect/RuntimeConfig.scala index 6f258ec2e08e6..4741bfae8208d 100644 --- a/sql/connect/common/src/main/scala/org/apache/spark/sql/connect/RuntimeConfig.scala +++ b/sql/connect/common/src/main/scala/org/apache/spark/sql/connect/RuntimeConfig.scala @@ -86,6 +86,11 @@ class RuntimeConfig private[sql] (client: SparkConnectClient) Option(get(entry.key, null)).map(entry.valueConverter).getOrElse(default) } + /** @inheritdoc */ + override private[sql] def contains(key: String): Boolean = { + get(key, null) != null + } + /** @inheritdoc */ def getAll: Map[String, String] = { val response = executeConfigRequest { builder =>