This is an automated email from the ASF dual-hosted git repository.

dongjoon-hyun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/spark-connect-swift.git


The following commit(s) were added to refs/heads/main by this push:
     new 12507da  [SPARK-57014] Update `Spark Connect`-generated `Swift` source 
code with `4.2.0-preview5`
12507da is described below

commit 12507da860616c800cd386685a9c974382c687d2
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Fri May 22 14:01:00 2026 -0700

    [SPARK-57014] Update `Spark Connect`-generated `Swift` source code with 
`4.2.0-preview5`
    
    ### What changes were proposed in this pull request?
    
    This PR updates the `Spark Connect`-generated Swift source code by 
regenerating with `4.2.0-preview5`.
    
    - apache/spark#54740
    - apache/spark#55025
    - apache/spark#55139
    - apache/spark#55332
    
    ### Why are the changes needed?
    
    To keep the generated Swift source code in sync with Apache Spark 
`4.2.0-preview5` protobuf definitions and the latest 
`grpc-swift`/`swift-protobuf` code generators.
    
    ```
    $ git clone -b v4.2.0-preview5 https://github.com/apache/spark.git
    $ cd spark/sql/connect/common/src/main/protobuf/
    $ protoc --swift_out=. spark/connect/*.proto
    $ protoc --grpc-swift_out=. spark/connect/*.proto
    
    // Remove empty GRPC files
    $ cd spark/connect
    $ grep 'This file contained no services' * | awk -F: '{print $1}' | xargs rm
    ```
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Pass the CIs.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Generated-by: Claude Opus 4.7
    
    Closes #378 from dongjoon-hyun/SPARK-57014.
    
    Authored-by: Dongjoon Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 Sources/SparkConnect/catalog.pb.swift   | 930 +++++++++++++++++++++++++++++---
 Sources/SparkConnect/pipelines.pb.swift |  63 ++-
 Sources/SparkConnect/relations.pb.swift | 103 +++-
 3 files changed, 1019 insertions(+), 77 deletions(-)

diff --git a/Sources/SparkConnect/catalog.pb.swift 
b/Sources/SparkConnect/catalog.pb.swift
index c9c8068..2f0735f 100644
--- a/Sources/SparkConnect/catalog.pb.swift
+++ b/Sources/SparkConnect/catalog.pb.swift
@@ -252,6 +252,86 @@ nonisolated struct Spark_Connect_Catalog: Sendable {
     set {catType = .listCatalogs(newValue)}
   }
 
+  var dropTable: Spark_Connect_DropTable {
+    get {
+      if case .dropTable(let v)? = catType {return v}
+      return Spark_Connect_DropTable()
+    }
+    set {catType = .dropTable(newValue)}
+  }
+
+  var dropView: Spark_Connect_DropView {
+    get {
+      if case .dropView(let v)? = catType {return v}
+      return Spark_Connect_DropView()
+    }
+    set {catType = .dropView(newValue)}
+  }
+
+  var createDatabase: Spark_Connect_CreateDatabase {
+    get {
+      if case .createDatabase(let v)? = catType {return v}
+      return Spark_Connect_CreateDatabase()
+    }
+    set {catType = .createDatabase(newValue)}
+  }
+
+  var dropDatabase: Spark_Connect_DropDatabase {
+    get {
+      if case .dropDatabase(let v)? = catType {return v}
+      return Spark_Connect_DropDatabase()
+    }
+    set {catType = .dropDatabase(newValue)}
+  }
+
+  var listPartitions: Spark_Connect_ListPartitions {
+    get {
+      if case .listPartitions(let v)? = catType {return v}
+      return Spark_Connect_ListPartitions()
+    }
+    set {catType = .listPartitions(newValue)}
+  }
+
+  var listViews: Spark_Connect_ListViews {
+    get {
+      if case .listViews(let v)? = catType {return v}
+      return Spark_Connect_ListViews()
+    }
+    set {catType = .listViews(newValue)}
+  }
+
+  var getTableProperties: Spark_Connect_GetTableProperties {
+    get {
+      if case .getTableProperties(let v)? = catType {return v}
+      return Spark_Connect_GetTableProperties()
+    }
+    set {catType = .getTableProperties(newValue)}
+  }
+
+  var getCreateTableString: Spark_Connect_GetCreateTableString {
+    get {
+      if case .getCreateTableString(let v)? = catType {return v}
+      return Spark_Connect_GetCreateTableString()
+    }
+    set {catType = .getCreateTableString(newValue)}
+  }
+
+  var truncateTable: Spark_Connect_TruncateTable {
+    get {
+      if case .truncateTable(let v)? = catType {return v}
+      return Spark_Connect_TruncateTable()
+    }
+    set {catType = .truncateTable(newValue)}
+  }
+
+  var analyzeTable: Spark_Connect_AnalyzeTable {
+    get {
+      if case .analyzeTable(let v)? = catType {return v}
+      return Spark_Connect_AnalyzeTable()
+    }
+    set {catType = .analyzeTable(newValue)}
+  }
+
   var unknownFields = SwiftProtobuf.UnknownStorage()
 
   nonisolated enum OneOf_CatType: Equatable, Sendable {
@@ -281,6 +361,16 @@ nonisolated struct Spark_Connect_Catalog: Sendable {
     case currentCatalog(Spark_Connect_CurrentCatalog)
     case setCurrentCatalog(Spark_Connect_SetCurrentCatalog)
     case listCatalogs(Spark_Connect_ListCatalogs)
+    case dropTable(Spark_Connect_DropTable)
+    case dropView(Spark_Connect_DropView)
+    case createDatabase(Spark_Connect_CreateDatabase)
+    case dropDatabase(Spark_Connect_DropDatabase)
+    case listPartitions(Spark_Connect_ListPartitions)
+    case listViews(Spark_Connect_ListViews)
+    case getTableProperties(Spark_Connect_GetTableProperties)
+    case getCreateTableString(Spark_Connect_GetCreateTableString)
+    case truncateTable(Spark_Connect_TruncateTable)
+    case analyzeTable(Spark_Connect_AnalyzeTable)
 
   }
 
@@ -859,13 +949,191 @@ nonisolated struct Spark_Connect_ListCatalogs: Sendable {
   fileprivate var _pattern: String? = nil
 }
 
+/// See `spark.catalog.dropTable`
+nonisolated struct Spark_Connect_DropTable: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var tableName: String = String()
+
+  var ifExists: Bool = false
+
+  var purge: Bool = false
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+/// See `spark.catalog.dropView`
+nonisolated struct Spark_Connect_DropView: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var viewName: String = String()
+
+  var ifExists: Bool = false
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+/// See `spark.catalog.createDatabase`
+nonisolated struct Spark_Connect_CreateDatabase: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var dbName: String = String()
+
+  var ifNotExists: Bool = false
+
+  var properties: Dictionary<String,String> = [:]
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+/// See `spark.catalog.dropDatabase`
+nonisolated struct Spark_Connect_DropDatabase: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var dbName: String = String()
+
+  var ifExists: Bool = false
+
+  var cascade: Bool = false
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+/// See `spark.catalog.listPartitions`
+nonisolated struct Spark_Connect_ListPartitions: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var tableName: String = String()
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+/// See `spark.catalog.listViews`
+nonisolated struct Spark_Connect_ListViews: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Optional)
+  var dbName: String {
+    get {_dbName ?? String()}
+    set {_dbName = newValue}
+  }
+  /// Returns true if `dbName` has been explicitly set.
+  var hasDbName: Bool {self._dbName != nil}
+  /// Clears the value of `dbName`. Subsequent reads from it will return its 
default value.
+  mutating func clearDbName() {self._dbName = nil}
+
+  /// (Optional) The pattern that the view name needs to match
+  var pattern: String {
+    get {_pattern ?? String()}
+    set {_pattern = newValue}
+  }
+  /// Returns true if `pattern` has been explicitly set.
+  var hasPattern: Bool {self._pattern != nil}
+  /// Clears the value of `pattern`. Subsequent reads from it will return its 
default value.
+  mutating func clearPattern() {self._pattern = nil}
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+
+  fileprivate var _dbName: String? = nil
+  fileprivate var _pattern: String? = nil
+}
+
+/// See `spark.catalog.getTableProperties`
+nonisolated struct Spark_Connect_GetTableProperties: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var tableName: String = String()
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+/// See `spark.catalog.getCreateTableString`
+nonisolated struct Spark_Connect_GetCreateTableString: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var tableName: String = String()
+
+  var asSerde: Bool = false
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+/// See `spark.catalog.truncateTable`
+nonisolated struct Spark_Connect_TruncateTable: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var tableName: String = String()
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
+/// See `spark.catalog.analyzeTable`
+nonisolated struct Spark_Connect_AnalyzeTable: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required)
+  var tableName: String = String()
+
+  var noScan: Bool = false
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
 // MARK: - Code below here is support for the SwiftProtobuf runtime.
 
 fileprivate nonisolated let _protobuf_package = "spark.connect"
 
 nonisolated extension Spark_Connect_Catalog: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
   static let protoMessageName: String = _protobuf_package + ".Catalog"
-  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}current_database\0\u{3}set_current_database\0\u{3}list_databases\0\u{3}list_tables\0\u{3}list_functions\0\u{3}list_columns\0\u{3}get_database\0\u{3}get_table\0\u{3}get_function\0\u{3}database_exists\0\u{3}table_exists\0\u{3}function_exists\0\u{3}create_external_table\0\u{3}create_table\0\u{3}drop_temp_view\0\u{3}drop_global_temp_view\0\u{3}recover_partitions\0\u{3}is_cached\0\u{3}cache_table\0\u{3}uncache_table\0\u
 [...]
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}current_database\0\u{3}set_current_database\0\u{3}list_databases\0\u{3}list_tables\0\u{3}list_functions\0\u{3}list_columns\0\u{3}get_database\0\u{3}get_table\0\u{3}get_function\0\u{3}database_exists\0\u{3}table_exists\0\u{3}function_exists\0\u{3}create_external_table\0\u{3}create_table\0\u{3}drop_temp_view\0\u{3}drop_global_temp_view\0\u{3}recover_partitions\0\u{3}is_cached\0\u{3}cache_table\0\u{3}uncache_table\0\u
 [...]
 
   mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
     while let fieldNumber = try decoder.nextFieldNumber() {
@@ -1211,74 +1479,204 @@ nonisolated extension Spark_Connect_Catalog: 
SwiftProtobuf.Message, SwiftProtobu
           self.catType = .listCatalogs(v)
         }
       }()
-      default: break
-      }
-    }
-  }
-
-  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
-    // The use of inline closures is to circumvent an issue where the compiler
-    // allocates stack space for every if/case branch local when no 
optimizations
-    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
-    // https://github.com/apple/swift-protobuf/issues/1182
-    switch self.catType {
-    case .currentDatabase?: try {
-      guard case .currentDatabase(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
-    }()
-    case .setCurrentDatabase?: try {
-      guard case .setCurrentDatabase(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
-    }()
-    case .listDatabases?: try {
-      guard case .listDatabases(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
-    }()
-    case .listTables?: try {
-      guard case .listTables(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
-    }()
-    case .listFunctions?: try {
-      guard case .listFunctions(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 5)
-    }()
-    case .listColumns?: try {
-      guard case .listColumns(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 6)
-    }()
-    case .getDatabase?: try {
-      guard case .getDatabase(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 7)
-    }()
-    case .getTable?: try {
-      guard case .getTable(let v)? = self.catType else { preconditionFailure() 
}
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 8)
-    }()
-    case .getFunction?: try {
-      guard case .getFunction(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 9)
-    }()
-    case .databaseExists?: try {
-      guard case .databaseExists(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 10)
-    }()
-    case .tableExists?: try {
-      guard case .tableExists(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 11)
-    }()
-    case .functionExists?: try {
-      guard case .functionExists(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 12)
-    }()
-    case .createExternalTable?: try {
-      guard case .createExternalTable(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 13)
-    }()
-    case .createTable?: try {
-      guard case .createTable(let v)? = self.catType else { 
preconditionFailure() }
-      try visitor.visitSingularMessageField(value: v, fieldNumber: 14)
-    }()
-    case .dropTempView?: try {
+      case 27: try {
+        var v: Spark_Connect_DropTable?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .dropTable(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .dropTable(v)
+        }
+      }()
+      case 28: try {
+        var v: Spark_Connect_DropView?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .dropView(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .dropView(v)
+        }
+      }()
+      case 29: try {
+        var v: Spark_Connect_CreateDatabase?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .createDatabase(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .createDatabase(v)
+        }
+      }()
+      case 30: try {
+        var v: Spark_Connect_DropDatabase?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .dropDatabase(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .dropDatabase(v)
+        }
+      }()
+      case 31: try {
+        var v: Spark_Connect_ListPartitions?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .listPartitions(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .listPartitions(v)
+        }
+      }()
+      case 32: try {
+        var v: Spark_Connect_ListViews?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .listViews(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .listViews(v)
+        }
+      }()
+      case 33: try {
+        var v: Spark_Connect_GetTableProperties?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .getTableProperties(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .getTableProperties(v)
+        }
+      }()
+      case 34: try {
+        var v: Spark_Connect_GetCreateTableString?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .getCreateTableString(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .getCreateTableString(v)
+        }
+      }()
+      case 35: try {
+        var v: Spark_Connect_TruncateTable?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .truncateTable(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .truncateTable(v)
+        }
+      }()
+      case 36: try {
+        var v: Spark_Connect_AnalyzeTable?
+        var hadOneofValue = false
+        if let current = self.catType {
+          hadOneofValue = true
+          if case .analyzeTable(let m) = current {v = m}
+        }
+        try decoder.decodeSingularMessageField(value: &v)
+        if let v = v {
+          if hadOneofValue {try decoder.handleConflictingOneOf()}
+          self.catType = .analyzeTable(v)
+        }
+      }()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    // The use of inline closures is to circumvent an issue where the compiler
+    // allocates stack space for every if/case branch local when no 
optimizations
+    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
+    // https://github.com/apple/swift-protobuf/issues/1182
+    switch self.catType {
+    case .currentDatabase?: try {
+      guard case .currentDatabase(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
+    }()
+    case .setCurrentDatabase?: try {
+      guard case .setCurrentDatabase(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
+    }()
+    case .listDatabases?: try {
+      guard case .listDatabases(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
+    }()
+    case .listTables?: try {
+      guard case .listTables(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
+    }()
+    case .listFunctions?: try {
+      guard case .listFunctions(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 5)
+    }()
+    case .listColumns?: try {
+      guard case .listColumns(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 6)
+    }()
+    case .getDatabase?: try {
+      guard case .getDatabase(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 7)
+    }()
+    case .getTable?: try {
+      guard case .getTable(let v)? = self.catType else { preconditionFailure() 
}
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 8)
+    }()
+    case .getFunction?: try {
+      guard case .getFunction(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 9)
+    }()
+    case .databaseExists?: try {
+      guard case .databaseExists(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 10)
+    }()
+    case .tableExists?: try {
+      guard case .tableExists(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 11)
+    }()
+    case .functionExists?: try {
+      guard case .functionExists(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 12)
+    }()
+    case .createExternalTable?: try {
+      guard case .createExternalTable(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 13)
+    }()
+    case .createTable?: try {
+      guard case .createTable(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 14)
+    }()
+    case .dropTempView?: try {
       guard case .dropTempView(let v)? = self.catType else { 
preconditionFailure() }
       try visitor.visitSingularMessageField(value: v, fieldNumber: 15)
     }()
@@ -1326,6 +1724,46 @@ nonisolated extension Spark_Connect_Catalog: 
SwiftProtobuf.Message, SwiftProtobu
       guard case .listCatalogs(let v)? = self.catType else { 
preconditionFailure() }
       try visitor.visitSingularMessageField(value: v, fieldNumber: 26)
     }()
+    case .dropTable?: try {
+      guard case .dropTable(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 27)
+    }()
+    case .dropView?: try {
+      guard case .dropView(let v)? = self.catType else { preconditionFailure() 
}
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 28)
+    }()
+    case .createDatabase?: try {
+      guard case .createDatabase(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 29)
+    }()
+    case .dropDatabase?: try {
+      guard case .dropDatabase(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 30)
+    }()
+    case .listPartitions?: try {
+      guard case .listPartitions(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 31)
+    }()
+    case .listViews?: try {
+      guard case .listViews(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 32)
+    }()
+    case .getTableProperties?: try {
+      guard case .getTableProperties(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 33)
+    }()
+    case .getCreateTableString?: try {
+      guard case .getCreateTableString(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 34)
+    }()
+    case .truncateTable?: try {
+      guard case .truncateTable(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 35)
+    }()
+    case .analyzeTable?: try {
+      guard case .analyzeTable(let v)? = self.catType else { 
preconditionFailure() }
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 36)
+    }()
     case nil: break
     }
     try unknownFields.traverse(visitor: &visitor)
@@ -2217,3 +2655,357 @@ nonisolated extension Spark_Connect_ListCatalogs: 
SwiftProtobuf.Message, SwiftPr
     return true
   }
 }
+
+nonisolated extension Spark_Connect_DropTable: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DropTable"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}table_name\0\u{3}if_exists\0\u{1}purge\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self.tableName) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.ifExists) 
}()
+      case 3: try { try decoder.decodeSingularBoolField(value: &self.purge) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.tableName.isEmpty {
+      try visitor.visitSingularStringField(value: self.tableName, fieldNumber: 
1)
+    }
+    if self.ifExists != false {
+      try visitor.visitSingularBoolField(value: self.ifExists, fieldNumber: 2)
+    }
+    if self.purge != false {
+      try visitor.visitSingularBoolField(value: self.purge, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_DropTable, rhs: Spark_Connect_DropTable) 
-> Bool {
+    if lhs.tableName != rhs.tableName {return false}
+    if lhs.ifExists != rhs.ifExists {return false}
+    if lhs.purge != rhs.purge {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_DropView: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DropView"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}view_name\0\u{3}if_exists\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self.viewName) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.ifExists) 
}()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.viewName.isEmpty {
+      try visitor.visitSingularStringField(value: self.viewName, fieldNumber: 
1)
+    }
+    if self.ifExists != false {
+      try visitor.visitSingularBoolField(value: self.ifExists, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_DropView, rhs: Spark_Connect_DropView) -> 
Bool {
+    if lhs.viewName != rhs.viewName {return false}
+    if lhs.ifExists != rhs.ifExists {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_CreateDatabase: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".CreateDatabase"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}db_name\0\u{3}if_not_exists\0\u{1}properties\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.dbName) 
}()
+      case 2: try { try decoder.decodeSingularBoolField(value: 
&self.ifNotExists) }()
+      case 3: try { try decoder.decodeMapField(fieldType: 
SwiftProtobuf._ProtobufMap<SwiftProtobuf.ProtobufString,SwiftProtobuf.ProtobufString>.self,
 value: &self.properties) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.dbName.isEmpty {
+      try visitor.visitSingularStringField(value: self.dbName, fieldNumber: 1)
+    }
+    if self.ifNotExists != false {
+      try visitor.visitSingularBoolField(value: self.ifNotExists, fieldNumber: 
2)
+    }
+    if !self.properties.isEmpty {
+      try visitor.visitMapField(fieldType: 
SwiftProtobuf._ProtobufMap<SwiftProtobuf.ProtobufString,SwiftProtobuf.ProtobufString>.self,
 value: self.properties, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_CreateDatabase, rhs: 
Spark_Connect_CreateDatabase) -> Bool {
+    if lhs.dbName != rhs.dbName {return false}
+    if lhs.ifNotExists != rhs.ifNotExists {return false}
+    if lhs.properties != rhs.properties {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_DropDatabase: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".DropDatabase"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}db_name\0\u{3}if_exists\0\u{1}cascade\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: &self.dbName) 
}()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.ifExists) 
}()
+      case 3: try { try decoder.decodeSingularBoolField(value: &self.cascade) 
}()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.dbName.isEmpty {
+      try visitor.visitSingularStringField(value: self.dbName, fieldNumber: 1)
+    }
+    if self.ifExists != false {
+      try visitor.visitSingularBoolField(value: self.ifExists, fieldNumber: 2)
+    }
+    if self.cascade != false {
+      try visitor.visitSingularBoolField(value: self.cascade, fieldNumber: 3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_DropDatabase, rhs: 
Spark_Connect_DropDatabase) -> Bool {
+    if lhs.dbName != rhs.dbName {return false}
+    if lhs.ifExists != rhs.ifExists {return false}
+    if lhs.cascade != rhs.cascade {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_ListPartitions: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".ListPartitions"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}table_name\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self.tableName) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.tableName.isEmpty {
+      try visitor.visitSingularStringField(value: self.tableName, fieldNumber: 
1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_ListPartitions, rhs: 
Spark_Connect_ListPartitions) -> Bool {
+    if lhs.tableName != rhs.tableName {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_ListViews: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".ListViews"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}db_name\0\u{1}pattern\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self._dbName) }()
+      case 2: try { try decoder.decodeSingularStringField(value: 
&self._pattern) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    // The use of inline closures is to circumvent an issue where the compiler
+    // allocates stack space for every if/case branch local when no 
optimizations
+    // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
+    // https://github.com/apple/swift-protobuf/issues/1182
+    try { if let v = self._dbName {
+      try visitor.visitSingularStringField(value: v, fieldNumber: 1)
+    } }()
+    try { if let v = self._pattern {
+      try visitor.visitSingularStringField(value: v, fieldNumber: 2)
+    } }()
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_ListViews, rhs: Spark_Connect_ListViews) 
-> Bool {
+    if lhs._dbName != rhs._dbName {return false}
+    if lhs._pattern != rhs._pattern {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_GetTableProperties: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + 
".GetTableProperties"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}table_name\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self.tableName) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.tableName.isEmpty {
+      try visitor.visitSingularStringField(value: self.tableName, fieldNumber: 
1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_GetTableProperties, rhs: 
Spark_Connect_GetTableProperties) -> Bool {
+    if lhs.tableName != rhs.tableName {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_GetCreateTableString: 
SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, 
SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + 
".GetCreateTableString"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}table_name\0\u{3}as_serde\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self.tableName) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.asSerde) 
}()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.tableName.isEmpty {
+      try visitor.visitSingularStringField(value: self.tableName, fieldNumber: 
1)
+    }
+    if self.asSerde != false {
+      try visitor.visitSingularBoolField(value: self.asSerde, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_GetCreateTableString, rhs: 
Spark_Connect_GetCreateTableString) -> Bool {
+    if lhs.tableName != rhs.tableName {return false}
+    if lhs.asSerde != rhs.asSerde {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_TruncateTable: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".TruncateTable"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}table_name\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self.tableName) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.tableName.isEmpty {
+      try visitor.visitSingularStringField(value: self.tableName, fieldNumber: 
1)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_TruncateTable, rhs: 
Spark_Connect_TruncateTable) -> Bool {
+    if lhs.tableName != rhs.tableName {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
+nonisolated extension Spark_Connect_AnalyzeTable: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".AnalyzeTable"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}table_name\0\u{3}no_scan\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self.tableName) }()
+      case 2: try { try decoder.decodeSingularBoolField(value: &self.noScan) 
}()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.tableName.isEmpty {
+      try visitor.visitSingularStringField(value: self.tableName, fieldNumber: 
1)
+    }
+    if self.noScan != false {
+      try visitor.visitSingularBoolField(value: self.noScan, fieldNumber: 2)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_AnalyzeTable, rhs: 
Spark_Connect_AnalyzeTable) -> Bool {
+    if lhs.tableName != rhs.tableName {return false}
+    if lhs.noScan != rhs.noScan {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
diff --git a/Sources/SparkConnect/pipelines.pb.swift 
b/Sources/SparkConnect/pipelines.pb.swift
index ce85abe..357e971 100644
--- a/Sources/SparkConnect/pipelines.pb.swift
+++ b/Sources/SparkConnect/pipelines.pb.swift
@@ -811,7 +811,11 @@ nonisolated struct Spark_Connect_PipelineCommand: Sendable 
{
     // `Message` and `Message+*Additions` files in the SwiftProtobuf library 
for
     // methods supported on all messages.
 
-    /// The fully qualified name of the flow being updated.
+    /// (Deprecated) The fully qualified name of the flow being updated.
+    ///
+    /// This field is deprecated since Spark 4.2+. Use flow_identifier field 
instead.
+    ///
+    /// NOTE: This field was marked as deprecated in the .proto file.
     var flowName: String {
       get {_flowName ?? String()}
       set {_flowName = newValue}
@@ -821,6 +825,16 @@ nonisolated struct Spark_Connect_PipelineCommand: Sendable 
{
     /// Clears the value of `flowName`. Subsequent reads from it will return 
its default value.
     mutating func clearFlowName() {self._flowName = nil}
 
+    /// The fully qualified identifier of the flow being updated.
+    var flowIdentifier: Spark_Connect_ResolvedIdentifier {
+      get {_flowIdentifier ?? Spark_Connect_ResolvedIdentifier()}
+      set {_flowIdentifier = newValue}
+    }
+    /// Returns true if `flowIdentifier` has been explicitly set.
+    var hasFlowIdentifier: Bool {self._flowIdentifier != nil}
+    /// Clears the value of `flowIdentifier`. Subsequent reads from it will 
return its default value.
+    mutating func clearFlowIdentifier() {self._flowIdentifier = nil}
+
     /// The ID of the graph this flow belongs to.
     var dataflowGraphID: String {
       get {_dataflowGraphID ?? String()}
@@ -846,6 +860,7 @@ nonisolated struct Spark_Connect_PipelineCommand: Sendable {
     init() {}
 
     fileprivate var _flowName: String? = nil
+    fileprivate var _flowIdentifier: Spark_Connect_ResolvedIdentifier? = nil
     fileprivate var _dataflowGraphID: String? = nil
     fileprivate var _relation: Spark_Connect_Relation? = nil
   }
@@ -1076,8 +1091,16 @@ nonisolated struct 
Spark_Connect_PipelineQueryFunctionExecutionSignal: Sendable
   // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
   // methods supported on all messages.
 
+  /// (Deprecated) The name of flows that are ready to be re-evaluated.
+  ///
+  /// This field is deprecated since Spark 4.2+. Use flow_identifiers field 
instead.
+  ///
+  /// NOTE: This field was marked as deprecated in the .proto file.
   var flowNames: [String] = []
 
+  /// The identifier of flows that are ready to be re-evaluated
+  var flowIdentifiers: [Spark_Connect_ResolvedIdentifier] = []
+
   var unknownFields = SwiftProtobuf.UnknownStorage()
 
   init() {}
@@ -1109,7 +1132,11 @@ nonisolated struct 
Spark_Connect_PipelineAnalysisContext: Sendable {
   /// Clears the value of `definitionPath`. Subsequent reads from it will 
return its default value.
   mutating func clearDefinitionPath() {self._definitionPath = nil}
 
-  /// The name of the Flow involved in this analysis
+  /// (Deprecated) The name of the Flow involved in this analysis
+  ///
+  /// This field is deprecated since Spark 4.2+. Use flow_identifier field 
instead.
+  ///
+  /// NOTE: This field was marked as deprecated in the .proto file.
   var flowName: String {
     get {_flowName ?? String()}
     set {_flowName = newValue}
@@ -1119,6 +1146,16 @@ nonisolated struct 
Spark_Connect_PipelineAnalysisContext: Sendable {
   /// Clears the value of `flowName`. Subsequent reads from it will return its 
default value.
   mutating func clearFlowName() {self._flowName = nil}
 
+  /// The identifier of the Flow involved in this analysis
+  var flowIdentifier: Spark_Connect_ResolvedIdentifier {
+    get {_flowIdentifier ?? Spark_Connect_ResolvedIdentifier()}
+    set {_flowIdentifier = newValue}
+  }
+  /// Returns true if `flowIdentifier` has been explicitly set.
+  var hasFlowIdentifier: Bool {self._flowIdentifier != nil}
+  /// Clears the value of `flowIdentifier`. Subsequent reads from it will 
return its default value.
+  mutating func clearFlowIdentifier() {self._flowIdentifier = nil}
+
   /// Reserved field for protocol extensions.
   var `extension`: [SwiftProtobuf.Google_Protobuf_Any] = []
 
@@ -1129,6 +1166,7 @@ nonisolated struct Spark_Connect_PipelineAnalysisContext: 
Sendable {
   fileprivate var _dataflowGraphID: String? = nil
   fileprivate var _definitionPath: String? = nil
   fileprivate var _flowName: String? = nil
+  fileprivate var _flowIdentifier: Spark_Connect_ResolvedIdentifier? = nil
 }
 
 // MARK: - Code below here is support for the SwiftProtobuf runtime.
@@ -2057,7 +2095,7 @@ nonisolated extension 
Spark_Connect_PipelineCommand.GetQueryFunctionExecutionSig
 
 nonisolated extension 
Spark_Connect_PipelineCommand.DefineFlowQueryFunctionResult: 
SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, 
SwiftProtobuf._ProtoNameProviding {
   static let protoMessageName: String = 
Spark_Connect_PipelineCommand.protoMessageName + 
".DefineFlowQueryFunctionResult"
-  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}flow_name\0\u{3}dataflow_graph_id\0\u{1}relation\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}flow_name\0\u{3}dataflow_graph_id\0\u{1}relation\0\u{3}flow_identifier\0")
 
   mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
     while let fieldNumber = try decoder.nextFieldNumber() {
@@ -2068,6 +2106,7 @@ nonisolated extension 
Spark_Connect_PipelineCommand.DefineFlowQueryFunctionResul
       case 1: try { try decoder.decodeSingularStringField(value: 
&self._flowName) }()
       case 2: try { try decoder.decodeSingularStringField(value: 
&self._dataflowGraphID) }()
       case 3: try { try decoder.decodeSingularMessageField(value: 
&self._relation) }()
+      case 4: try { try decoder.decodeSingularMessageField(value: 
&self._flowIdentifier) }()
       default: break
       }
     }
@@ -2087,11 +2126,15 @@ nonisolated extension 
Spark_Connect_PipelineCommand.DefineFlowQueryFunctionResul
     try { if let v = self._relation {
       try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
     } }()
+    try { if let v = self._flowIdentifier {
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
+    } }()
     try unknownFields.traverse(visitor: &visitor)
   }
 
   static func ==(lhs: 
Spark_Connect_PipelineCommand.DefineFlowQueryFunctionResult, rhs: 
Spark_Connect_PipelineCommand.DefineFlowQueryFunctionResult) -> Bool {
     if lhs._flowName != rhs._flowName {return false}
+    if lhs._flowIdentifier != rhs._flowIdentifier {return false}
     if lhs._dataflowGraphID != rhs._dataflowGraphID {return false}
     if lhs._relation != rhs._relation {return false}
     if lhs.unknownFields != rhs.unknownFields {return false}
@@ -2409,7 +2452,7 @@ nonisolated extension Spark_Connect_SourceCodeLocation: 
SwiftProtobuf.Message, S
 
 nonisolated extension Spark_Connect_PipelineQueryFunctionExecutionSignal: 
SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, 
SwiftProtobuf._ProtoNameProviding {
   static let protoMessageName: String = _protobuf_package + 
".PipelineQueryFunctionExecutionSignal"
-  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}flow_names\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}flow_names\0\u{3}flow_identifiers\0")
 
   mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
     while let fieldNumber = try decoder.nextFieldNumber() {
@@ -2418,6 +2461,7 @@ nonisolated extension 
Spark_Connect_PipelineQueryFunctionExecutionSignal: SwiftP
       // enabled. https://github.com/apple/swift-protobuf/issues/1034
       switch fieldNumber {
       case 1: try { try decoder.decodeRepeatedStringField(value: 
&self.flowNames) }()
+      case 2: try { try decoder.decodeRepeatedMessageField(value: 
&self.flowIdentifiers) }()
       default: break
       }
     }
@@ -2427,11 +2471,15 @@ nonisolated extension 
Spark_Connect_PipelineQueryFunctionExecutionSignal: SwiftP
     if !self.flowNames.isEmpty {
       try visitor.visitRepeatedStringField(value: self.flowNames, fieldNumber: 
1)
     }
+    if !self.flowIdentifiers.isEmpty {
+      try visitor.visitRepeatedMessageField(value: self.flowIdentifiers, 
fieldNumber: 2)
+    }
     try unknownFields.traverse(visitor: &visitor)
   }
 
   static func ==(lhs: Spark_Connect_PipelineQueryFunctionExecutionSignal, rhs: 
Spark_Connect_PipelineQueryFunctionExecutionSignal) -> Bool {
     if lhs.flowNames != rhs.flowNames {return false}
+    if lhs.flowIdentifiers != rhs.flowIdentifiers {return false}
     if lhs.unknownFields != rhs.unknownFields {return false}
     return true
   }
@@ -2439,7 +2487,7 @@ nonisolated extension 
Spark_Connect_PipelineQueryFunctionExecutionSignal: SwiftP
 
 nonisolated extension Spark_Connect_PipelineAnalysisContext: 
SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, 
SwiftProtobuf._ProtoNameProviding {
   static let protoMessageName: String = _protobuf_package + 
".PipelineAnalysisContext"
-  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}dataflow_graph_id\0\u{3}definition_path\0\u{3}flow_name\0\u{2}d\u{f}extension\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}dataflow_graph_id\0\u{3}definition_path\0\u{3}flow_name\0\u{3}flow_identifier\0\u{2}c\u{f}extension\0")
 
   mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
     while let fieldNumber = try decoder.nextFieldNumber() {
@@ -2450,6 +2498,7 @@ nonisolated extension 
Spark_Connect_PipelineAnalysisContext: SwiftProtobuf.Messa
       case 1: try { try decoder.decodeSingularStringField(value: 
&self._dataflowGraphID) }()
       case 2: try { try decoder.decodeSingularStringField(value: 
&self._definitionPath) }()
       case 3: try { try decoder.decodeSingularStringField(value: 
&self._flowName) }()
+      case 4: try { try decoder.decodeSingularMessageField(value: 
&self._flowIdentifier) }()
       case 999: try { try decoder.decodeRepeatedMessageField(value: 
&self.`extension`) }()
       default: break
       }
@@ -2470,6 +2519,9 @@ nonisolated extension 
Spark_Connect_PipelineAnalysisContext: SwiftProtobuf.Messa
     try { if let v = self._flowName {
       try visitor.visitSingularStringField(value: v, fieldNumber: 3)
     } }()
+    try { if let v = self._flowIdentifier {
+      try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
+    } }()
     if !self.`extension`.isEmpty {
       try visitor.visitRepeatedMessageField(value: self.`extension`, 
fieldNumber: 999)
     }
@@ -2480,6 +2532,7 @@ nonisolated extension 
Spark_Connect_PipelineAnalysisContext: SwiftProtobuf.Messa
     if lhs._dataflowGraphID != rhs._dataflowGraphID {return false}
     if lhs._definitionPath != rhs._definitionPath {return false}
     if lhs._flowName != rhs._flowName {return false}
+    if lhs._flowIdentifier != rhs._flowIdentifier {return false}
     if lhs.`extension` != rhs.`extension` {return false}
     if lhs.unknownFields != rhs.unknownFields {return false}
     return true
diff --git a/Sources/SparkConnect/relations.pb.swift 
b/Sources/SparkConnect/relations.pb.swift
index 3b363a3..d9af61f 100644
--- a/Sources/SparkConnect/relations.pb.swift
+++ b/Sources/SparkConnect/relations.pb.swift
@@ -416,6 +416,14 @@ nonisolated struct Spark_Connect_Relation: @unchecked 
Sendable {
     set {_uniqueStorage()._relType = .chunkedCachedLocalRelation(newValue)}
   }
 
+  var relationChanges: Spark_Connect_RelationChanges {
+    get {
+      if case .relationChanges(let v)? = _storage._relType {return v}
+      return Spark_Connect_RelationChanges()
+    }
+    set {_uniqueStorage()._relType = .relationChanges(newValue)}
+  }
+
   /// NA functions
   var fillNa: Spark_Connect_NAFill {
     get {
@@ -589,6 +597,7 @@ nonisolated struct Spark_Connect_Relation: @unchecked 
Sendable {
     case 
unresolvedTableValuedFunction(Spark_Connect_UnresolvedTableValuedFunction)
     case lateralJoin(Spark_Connect_LateralJoin)
     case chunkedCachedLocalRelation(Spark_Connect_ChunkedCachedLocalRelation)
+    case relationChanges(Spark_Connect_RelationChanges)
     /// NA functions
     case fillNa(Spark_Connect_NAFill)
     case dropNa(Spark_Connect_NADrop)
@@ -1051,6 +1060,33 @@ nonisolated struct Spark_Connect_Read: Sendable {
   init() {}
 }
 
+/// Reads Change Data Capture (CDC) changes for a named table.
+///
+/// This corresponds to the `DataFrameReader.changes()` or 
`DataStreamReader.changes()` API.
+/// CDC-specific options (startingVersion, endingVersion, startingTimestamp, 
endingTimestamp,
+/// deduplicationMode, computeUpdates, etc.) are passed in the options map.
+nonisolated struct Spark_Connect_RelationChanges: Sendable {
+  // SwiftProtobuf.Message conformance is added in an extension below. See the
+  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
+  // methods supported on all messages.
+
+  /// (Required) Unparsed identifier for the table.
+  var unparsedIdentifier: String = String()
+
+  /// Options for the CDC query. The map key is case insensitive.
+  /// Supported keys include: startingVersion, endingVersion, 
startingTimestamp,
+  /// endingTimestamp, deduplicationMode, computeUpdates, 
startingBoundInclusive,
+  /// endingBoundInclusive.
+  var options: Dictionary<String,String> = [:]
+
+  /// (Optional) Indicates if this is a streaming CDC read.
+  var isStreaming: Bool = false
+
+  var unknownFields = SwiftProtobuf.UnknownStorage()
+
+  init() {}
+}
+
 /// Projection of a bag of expressions for a given input relation.
 ///
 /// The input relation must be specified.
@@ -3542,7 +3578,7 @@ nonisolated struct Spark_Connect_Parse: @unchecked 
Sendable {
   /// Clears the value of `schema`. Subsequent reads from it will return its 
default value.
   mutating func clearSchema() {_uniqueStorage()._schema = nil}
 
-  /// Options for the csv/json parser. The map key is case insensitive.
+  /// Options for the csv/json/xml parser. The map key is case insensitive.
   var options: Dictionary<String,String> {
     get {_storage._options}
     set {_uniqueStorage()._options = newValue}
@@ -3555,6 +3591,7 @@ nonisolated struct Spark_Connect_Parse: @unchecked 
Sendable {
     case unspecified // = 0
     case csv // = 1
     case json // = 2
+    case xml // = 3
     case UNRECOGNIZED(Int)
 
     init() {
@@ -3566,6 +3603,7 @@ nonisolated struct Spark_Connect_Parse: @unchecked 
Sendable {
       case 0: self = .unspecified
       case 1: self = .csv
       case 2: self = .json
+      case 3: self = .xml
       default: self = .UNRECOGNIZED(rawValue)
       }
     }
@@ -3575,6 +3613,7 @@ nonisolated struct Spark_Connect_Parse: @unchecked 
Sendable {
       case .unspecified: return 0
       case .csv: return 1
       case .json: return 2
+      case .xml: return 3
       case .UNRECOGNIZED(let i): return i
       }
     }
@@ -3584,6 +3623,7 @@ nonisolated struct Spark_Connect_Parse: @unchecked 
Sendable {
       .unspecified,
       .csv,
       .json,
+      .xml,
     ]
 
   }
@@ -3755,7 +3795,7 @@ fileprivate nonisolated let _protobuf_package = 
"spark.connect"
 
 nonisolated extension Spark_Connect_Relation: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
   static let protoMessageName: String = _protobuf_package + ".Relation"
-  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{1}common\0\u{1}read\0\u{1}project\0\u{1}filter\0\u{1}join\0\u{3}set_op\0\u{1}sort\0\u{1}limit\0\u{1}aggregate\0\u{1}sql\0\u{3}local_relation\0\u{1}sample\0\u{1}offset\0\u{1}deduplicate\0\u{1}range\0\u{3}subquery_alias\0\u{1}repartition\0\u{3}to_df\0\u{3}with_columns_renamed\0\u{3}show_string\0\u{1}drop\0\u{1}tail\0\u{3}with_columns\0\u{1}hint\0\u{1}unpivot\0\u{3}to_schema\0\u{3}repartition_by_expression\0\u{3}map_par
 [...]
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{1}common\0\u{1}read\0\u{1}project\0\u{1}filter\0\u{1}join\0\u{3}set_op\0\u{1}sort\0\u{1}limit\0\u{1}aggregate\0\u{1}sql\0\u{3}local_relation\0\u{1}sample\0\u{1}offset\0\u{1}deduplicate\0\u{1}range\0\u{3}subquery_alias\0\u{1}repartition\0\u{3}to_df\0\u{3}with_columns_renamed\0\u{3}show_string\0\u{1}drop\0\u{1}tail\0\u{3}with_columns\0\u{1}hint\0\u{1}unpivot\0\u{3}to_schema\0\u{3}repartition_by_expression\0\u{3}map_par
 [...]
 
   fileprivate class _StorageClass {
     var _common: Spark_Connect_RelationCommon? = nil
@@ -4363,6 +4403,19 @@ nonisolated extension Spark_Connect_Relation: 
SwiftProtobuf.Message, SwiftProtob
             _storage._relType = .chunkedCachedLocalRelation(v)
           }
         }()
+        case 46: try {
+          var v: Spark_Connect_RelationChanges?
+          var hadOneofValue = false
+          if let current = _storage._relType {
+            hadOneofValue = true
+            if case .relationChanges(let m) = current {v = m}
+          }
+          try decoder.decodeSingularMessageField(value: &v)
+          if let v = v {
+            if hadOneofValue {try decoder.handleConflictingOneOf()}
+            _storage._relType = .relationChanges(v)
+          }
+        }()
         case 90: try {
           var v: Spark_Connect_NAFill?
           var hadOneofValue = false
@@ -4750,6 +4803,10 @@ nonisolated extension Spark_Connect_Relation: 
SwiftProtobuf.Message, SwiftProtob
         guard case .chunkedCachedLocalRelation(let v)? = _storage._relType 
else { preconditionFailure() }
         try visitor.visitSingularMessageField(value: v, fieldNumber: 45)
       }()
+      case .relationChanges?: try {
+        guard case .relationChanges(let v)? = _storage._relType else { 
preconditionFailure() }
+        try visitor.visitSingularMessageField(value: v, fieldNumber: 46)
+      }()
       case .fillNa?: try {
         guard case .fillNa(let v)? = _storage._relType else { 
preconditionFailure() }
         try visitor.visitSingularMessageField(value: v, fieldNumber: 90)
@@ -5556,6 +5613,46 @@ nonisolated extension Spark_Connect_Read.DataSource: 
SwiftProtobuf.Message, Swif
   }
 }
 
+nonisolated extension Spark_Connect_RelationChanges: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
+  static let protoMessageName: String = _protobuf_package + ".RelationChanges"
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{3}unparsed_identifier\0\u{1}options\0\u{3}is_streaming\0")
+
+  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) 
throws {
+    while let fieldNumber = try decoder.nextFieldNumber() {
+      // The use of inline closures is to circumvent an issue where the 
compiler
+      // allocates stack space for every case branch when no optimizations are
+      // enabled. https://github.com/apple/swift-protobuf/issues/1034
+      switch fieldNumber {
+      case 1: try { try decoder.decodeSingularStringField(value: 
&self.unparsedIdentifier) }()
+      case 2: try { try decoder.decodeMapField(fieldType: 
SwiftProtobuf._ProtobufMap<SwiftProtobuf.ProtobufString,SwiftProtobuf.ProtobufString>.self,
 value: &self.options) }()
+      case 3: try { try decoder.decodeSingularBoolField(value: 
&self.isStreaming) }()
+      default: break
+      }
+    }
+  }
+
+  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
+    if !self.unparsedIdentifier.isEmpty {
+      try visitor.visitSingularStringField(value: self.unparsedIdentifier, 
fieldNumber: 1)
+    }
+    if !self.options.isEmpty {
+      try visitor.visitMapField(fieldType: 
SwiftProtobuf._ProtobufMap<SwiftProtobuf.ProtobufString,SwiftProtobuf.ProtobufString>.self,
 value: self.options, fieldNumber: 2)
+    }
+    if self.isStreaming != false {
+      try visitor.visitSingularBoolField(value: self.isStreaming, fieldNumber: 
3)
+    }
+    try unknownFields.traverse(visitor: &visitor)
+  }
+
+  static func ==(lhs: Spark_Connect_RelationChanges, rhs: 
Spark_Connect_RelationChanges) -> Bool {
+    if lhs.unparsedIdentifier != rhs.unparsedIdentifier {return false}
+    if lhs.options != rhs.options {return false}
+    if lhs.isStreaming != rhs.isStreaming {return false}
+    if lhs.unknownFields != rhs.unknownFields {return false}
+    return true
+  }
+}
+
 nonisolated extension Spark_Connect_Project: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
   static let protoMessageName: String = _protobuf_package + ".Project"
   static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{1}input\0\u{2}\u{2}expressions\0")
@@ -9988,7 +10085,7 @@ nonisolated extension Spark_Connect_Parse: 
SwiftProtobuf.Message, SwiftProtobuf.
 }
 
 nonisolated extension Spark_Connect_Parse.ParseFormat: 
SwiftProtobuf._ProtoNameProviding {
-  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{2}\0PARSE_FORMAT_UNSPECIFIED\0\u{1}PARSE_FORMAT_CSV\0\u{1}PARSE_FORMAT_JSON\0")
+  static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: 
"\0\u{2}\0PARSE_FORMAT_UNSPECIFIED\0\u{1}PARSE_FORMAT_CSV\0\u{1}PARSE_FORMAT_JSON\0\u{1}PARSE_FORMAT_XML\0")
 }
 
 nonisolated extension Spark_Connect_AsOfJoin: SwiftProtobuf.Message, 
SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to