Skip to content

Commit 8816b7c

Browse files
committed
[SPARK-53777] Update Spark Connect-generated Swift source code with 4.1.0-preview2
### What changes were proposed in this pull request? This PR aims to update Spark Connect-generated Swift source code with Apache Spark `4.1.0-preview2`. ### Why are the changes needed? There are many changes from Apache Spark 4.1.0. - apache/spark#52342 - apache/spark#52256 - apache/spark#52271 - apache/spark#52242 - apache/spark#51473 - apache/spark#51653 - apache/spark#52072 - apache/spark#51561 - apache/spark#51563 - apache/spark#51489 - apache/spark#51507 - apache/spark#51462 - apache/spark#51464 - apache/spark#51442 To use the latest bug fixes and new messages to develop for new features of `4.1.0-preview2`. ``` $ git clone -b v4.1.0-preview2 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' * catalog.grpc.swift:// This file contained no services. commands.grpc.swift:// This file contained no services. common.grpc.swift:// This file contained no services. example_plugins.grpc.swift:// This file contained no services. expressions.grpc.swift:// This file contained no services. ml_common.grpc.swift:// This file contained no services. ml.grpc.swift:// This file contained no services. pipelines.grpc.swift:// This file contained no services. relations.grpc.swift:// This file contained no services. types.grpc.swift:// This file contained no services. $ rm catalog.grpc.swift commands.grpc.swift common.grpc.swift example_plugins.grpc.swift expressions.grpc.swift ml_common.grpc.swift ml.grpc.swift pipelines.grpc.swift relations.grpc.swift types.grpc.swift ``` ### Does this PR introduce _any_ user-facing change? Pass the CIs. ### How was this patch tested? Pass the CIs. ### Was this patch authored or co-authored using generative AI tooling? No. Closes #250 from dongjoon-hyun/SPARK-53777. Authored-by: Dongjoon Hyun <[email protected]> Signed-off-by: Dongjoon Hyun <[email protected]>
1 parent 775ac57 commit 8816b7c

File tree

6 files changed

+782
-37
lines changed

6 files changed

+782
-37
lines changed

Sources/SparkConnect/SparkConnectClient.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1288,7 +1288,7 @@ public actor SparkConnectClient {
12881288
defineFlow.dataflowGraphID = dataflowGraphID
12891289
defineFlow.flowName = flowName
12901290
defineFlow.targetDatasetName = targetDatasetName
1291-
defineFlow.plan = relation
1291+
defineFlow.relation = relation
12921292

12931293
var pipelineCommand = Spark_Connect_PipelineCommand()
12941294
pipelineCommand.commandType = .defineFlow(defineFlow)

Sources/SparkConnect/base.pb.swift

Lines changed: 288 additions & 3 deletions
Large diffs are not rendered by default.

Sources/SparkConnect/expressions.pb.swift

Lines changed: 259 additions & 2 deletions
Large diffs are not rendered by default.

Sources/SparkConnect/ml.pb.swift

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,14 @@ struct Spark_Connect_MlCommand: Sendable {
116116
set {command = .createSummary(newValue)}
117117
}
118118

119+
var getModelSize: Spark_Connect_MlCommand.GetModelSize {
120+
get {
121+
if case .getModelSize(let v)? = command {return v}
122+
return Spark_Connect_MlCommand.GetModelSize()
123+
}
124+
set {command = .getModelSize(newValue)}
125+
}
126+
119127
var unknownFields = SwiftProtobuf.UnknownStorage()
120128

121129
enum OneOf_Command: Equatable, Sendable {
@@ -128,6 +136,7 @@ struct Spark_Connect_MlCommand: Sendable {
128136
case cleanCache(Spark_Connect_MlCommand.CleanCache)
129137
case getCacheInfo(Spark_Connect_MlCommand.GetCacheInfo)
130138
case createSummary(Spark_Connect_MlCommand.CreateSummary)
139+
case getModelSize(Spark_Connect_MlCommand.GetModelSize)
131140

132141
}
133142

@@ -399,6 +408,28 @@ struct Spark_Connect_MlCommand: Sendable {
399408
fileprivate var _dataset: Spark_Connect_Relation? = nil
400409
}
401410

411+
/// This is for query the model estimated in-memory size
412+
struct GetModelSize: Sendable {
413+
// SwiftProtobuf.Message conformance is added in an extension below. See the
414+
// `Message` and `Message+*Additions` files in the SwiftProtobuf library for
415+
// methods supported on all messages.
416+
417+
var modelRef: Spark_Connect_ObjectRef {
418+
get {return _modelRef ?? Spark_Connect_ObjectRef()}
419+
set {_modelRef = newValue}
420+
}
421+
/// Returns true if `modelRef` has been explicitly set.
422+
var hasModelRef: Bool {return self._modelRef != nil}
423+
/// Clears the value of `modelRef`. Subsequent reads from it will return its default value.
424+
mutating func clearModelRef() {self._modelRef = nil}
425+
426+
var unknownFields = SwiftProtobuf.UnknownStorage()
427+
428+
init() {}
429+
430+
fileprivate var _modelRef: Spark_Connect_ObjectRef? = nil
431+
}
432+
402433
init() {}
403434
}
404435

@@ -532,7 +563,7 @@ fileprivate let _protobuf_package = "spark.connect"
532563

533564
extension Spark_Connect_MlCommand: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
534565
static let protoMessageName: String = _protobuf_package + ".MlCommand"
535-
static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}fit\0\u{1}fetch\0\u{1}delete\0\u{1}write\0\u{1}read\0\u{1}evaluate\0\u{3}clean_cache\0\u{3}get_cache_info\0\u{3}create_summary\0")
566+
static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}fit\0\u{1}fetch\0\u{1}delete\0\u{1}write\0\u{1}read\0\u{1}evaluate\0\u{3}clean_cache\0\u{3}get_cache_info\0\u{3}create_summary\0\u{3}get_model_size\0")
536567

537568
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
538569
while let fieldNumber = try decoder.nextFieldNumber() {
@@ -657,6 +688,19 @@ extension Spark_Connect_MlCommand: SwiftProtobuf.Message, SwiftProtobuf._Message
657688
self.command = .createSummary(v)
658689
}
659690
}()
691+
case 10: try {
692+
var v: Spark_Connect_MlCommand.GetModelSize?
693+
var hadOneofValue = false
694+
if let current = self.command {
695+
hadOneofValue = true
696+
if case .getModelSize(let m) = current {v = m}
697+
}
698+
try decoder.decodeSingularMessageField(value: &v)
699+
if let v = v {
700+
if hadOneofValue {try decoder.handleConflictingOneOf()}
701+
self.command = .getModelSize(v)
702+
}
703+
}()
660704
default: break
661705
}
662706
}
@@ -704,6 +748,10 @@ extension Spark_Connect_MlCommand: SwiftProtobuf.Message, SwiftProtobuf._Message
704748
guard case .createSummary(let v)? = self.command else { preconditionFailure() }
705749
try visitor.visitSingularMessageField(value: v, fieldNumber: 9)
706750
}()
751+
case .getModelSize?: try {
752+
guard case .getModelSize(let v)? = self.command else { preconditionFailure() }
753+
try visitor.visitSingularMessageField(value: v, fieldNumber: 10)
754+
}()
707755
case nil: break
708756
}
709757
try unknownFields.traverse(visitor: &visitor)
@@ -1046,6 +1094,40 @@ extension Spark_Connect_MlCommand.CreateSummary: SwiftProtobuf.Message, SwiftPro
10461094
}
10471095
}
10481096

1097+
extension Spark_Connect_MlCommand.GetModelSize: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
1098+
static let protoMessageName: String = Spark_Connect_MlCommand.protoMessageName + ".GetModelSize"
1099+
static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}model_ref\0")
1100+
1101+
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1102+
while let fieldNumber = try decoder.nextFieldNumber() {
1103+
// The use of inline closures is to circumvent an issue where the compiler
1104+
// allocates stack space for every case branch when no optimizations are
1105+
// enabled. https://github.com/apple/swift-protobuf/issues/1034
1106+
switch fieldNumber {
1107+
case 1: try { try decoder.decodeSingularMessageField(value: &self._modelRef) }()
1108+
default: break
1109+
}
1110+
}
1111+
}
1112+
1113+
func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
1114+
// The use of inline closures is to circumvent an issue where the compiler
1115+
// allocates stack space for every if/case branch local when no optimizations
1116+
// are enabled. https://github.com/apple/swift-protobuf/issues/1034 and
1117+
// https://github.com/apple/swift-protobuf/issues/1182
1118+
try { if let v = self._modelRef {
1119+
try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
1120+
} }()
1121+
try unknownFields.traverse(visitor: &visitor)
1122+
}
1123+
1124+
static func ==(lhs: Spark_Connect_MlCommand.GetModelSize, rhs: Spark_Connect_MlCommand.GetModelSize) -> Bool {
1125+
if lhs._modelRef != rhs._modelRef {return false}
1126+
if lhs.unknownFields != rhs.unknownFields {return false}
1127+
return true
1128+
}
1129+
}
1130+
10491131
extension Spark_Connect_MlCommandResult: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
10501132
static let protoMessageName: String = _protobuf_package + ".MlCommandResult"
10511133
static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}param\0\u{1}summary\0\u{3}operator_info\0")

Sources/SparkConnect/pipelines.pb.swift

Lines changed: 62 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -360,37 +360,26 @@ struct Spark_Connect_PipelineCommand: Sendable {
360360
mutating func clearTargetDatasetName() {self._targetDatasetName = nil}
361361

362362
/// An unresolved relation that defines the dataset's flow.
363-
var plan: Spark_Connect_Relation {
364-
get {return _plan ?? Spark_Connect_Relation()}
365-
set {_plan = newValue}
363+
var relation: Spark_Connect_Relation {
364+
get {return _relation ?? Spark_Connect_Relation()}
365+
set {_relation = newValue}
366366
}
367-
/// Returns true if `plan` has been explicitly set.
368-
var hasPlan: Bool {return self._plan != nil}
369-
/// Clears the value of `plan`. Subsequent reads from it will return its default value.
370-
mutating func clearPlan() {self._plan = nil}
367+
/// Returns true if `relation` has been explicitly set.
368+
var hasRelation: Bool {return self._relation != nil}
369+
/// Clears the value of `relation`. Subsequent reads from it will return its default value.
370+
mutating func clearRelation() {self._relation = nil}
371371

372372
/// SQL configurations set when running this flow.
373373
var sqlConf: Dictionary<String,String> = [:]
374374

375-
/// If true, this flow will only be run once per full refresh.
376-
var once: Bool {
377-
get {return _once ?? false}
378-
set {_once = newValue}
379-
}
380-
/// Returns true if `once` has been explicitly set.
381-
var hasOnce: Bool {return self._once != nil}
382-
/// Clears the value of `once`. Subsequent reads from it will return its default value.
383-
mutating func clearOnce() {self._once = nil}
384-
385375
var unknownFields = SwiftProtobuf.UnknownStorage()
386376

387377
init() {}
388378

389379
fileprivate var _dataflowGraphID: String? = nil
390380
fileprivate var _flowName: String? = nil
391381
fileprivate var _targetDatasetName: String? = nil
392-
fileprivate var _plan: Spark_Connect_Relation? = nil
393-
fileprivate var _once: Bool? = nil
382+
fileprivate var _relation: Spark_Connect_Relation? = nil
394383
}
395384

396385
/// Resolves all datasets and flows and start a pipeline update. Should be called after all
@@ -410,11 +399,40 @@ struct Spark_Connect_PipelineCommand: Sendable {
410399
/// Clears the value of `dataflowGraphID`. Subsequent reads from it will return its default value.
411400
mutating func clearDataflowGraphID() {self._dataflowGraphID = nil}
412401

402+
/// List of dataset to reset and recompute.
403+
var fullRefreshSelection: [String] = []
404+
405+
/// Perform a full graph reset and recompute.
406+
var fullRefreshAll: Bool {
407+
get {return _fullRefreshAll ?? false}
408+
set {_fullRefreshAll = newValue}
409+
}
410+
/// Returns true if `fullRefreshAll` has been explicitly set.
411+
var hasFullRefreshAll: Bool {return self._fullRefreshAll != nil}
412+
/// Clears the value of `fullRefreshAll`. Subsequent reads from it will return its default value.
413+
mutating func clearFullRefreshAll() {self._fullRefreshAll = nil}
414+
415+
/// List of dataset to update.
416+
var refreshSelection: [String] = []
417+
418+
/// If true, the run will not actually execute any flows, but will only validate the graph and
419+
/// check for any errors. This is useful for testing and validation purposes.
420+
var dry: Bool {
421+
get {return _dry ?? false}
422+
set {_dry = newValue}
423+
}
424+
/// Returns true if `dry` has been explicitly set.
425+
var hasDry: Bool {return self._dry != nil}
426+
/// Clears the value of `dry`. Subsequent reads from it will return its default value.
427+
mutating func clearDry() {self._dry = nil}
428+
413429
var unknownFields = SwiftProtobuf.UnknownStorage()
414430

415431
init() {}
416432

417433
fileprivate var _dataflowGraphID: String? = nil
434+
fileprivate var _fullRefreshAll: Bool? = nil
435+
fileprivate var _dry: Bool? = nil
418436
}
419437

420438
/// Parses the SQL file and registers all datasets and flows.
@@ -894,7 +912,7 @@ extension Spark_Connect_PipelineCommand.DefineDataset: SwiftProtobuf.Message, Sw
894912

895913
extension Spark_Connect_PipelineCommand.DefineFlow: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
896914
static let protoMessageName: String = Spark_Connect_PipelineCommand.protoMessageName + ".DefineFlow"
897-
static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}dataflow_graph_id\0\u{3}flow_name\0\u{3}target_dataset_name\0\u{1}plan\0\u{3}sql_conf\0\u{1}once\0")
915+
static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}dataflow_graph_id\0\u{3}flow_name\0\u{3}target_dataset_name\0\u{1}relation\0\u{3}sql_conf\0")
898916

899917
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
900918
while let fieldNumber = try decoder.nextFieldNumber() {
@@ -905,9 +923,8 @@ extension Spark_Connect_PipelineCommand.DefineFlow: SwiftProtobuf.Message, Swift
905923
case 1: try { try decoder.decodeSingularStringField(value: &self._dataflowGraphID) }()
906924
case 2: try { try decoder.decodeSingularStringField(value: &self._flowName) }()
907925
case 3: try { try decoder.decodeSingularStringField(value: &self._targetDatasetName) }()
908-
case 4: try { try decoder.decodeSingularMessageField(value: &self._plan) }()
926+
case 4: try { try decoder.decodeSingularMessageField(value: &self._relation) }()
909927
case 5: try { try decoder.decodeMapField(fieldType: SwiftProtobuf._ProtobufMap<SwiftProtobuf.ProtobufString,SwiftProtobuf.ProtobufString>.self, value: &self.sqlConf) }()
910-
case 6: try { try decoder.decodeSingularBoolField(value: &self._once) }()
911928
default: break
912929
}
913930
}
@@ -927,33 +944,29 @@ extension Spark_Connect_PipelineCommand.DefineFlow: SwiftProtobuf.Message, Swift
927944
try { if let v = self._targetDatasetName {
928945
try visitor.visitSingularStringField(value: v, fieldNumber: 3)
929946
} }()
930-
try { if let v = self._plan {
947+
try { if let v = self._relation {
931948
try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
932949
} }()
933950
if !self.sqlConf.isEmpty {
934951
try visitor.visitMapField(fieldType: SwiftProtobuf._ProtobufMap<SwiftProtobuf.ProtobufString,SwiftProtobuf.ProtobufString>.self, value: self.sqlConf, fieldNumber: 5)
935952
}
936-
try { if let v = self._once {
937-
try visitor.visitSingularBoolField(value: v, fieldNumber: 6)
938-
} }()
939953
try unknownFields.traverse(visitor: &visitor)
940954
}
941955

942956
static func ==(lhs: Spark_Connect_PipelineCommand.DefineFlow, rhs: Spark_Connect_PipelineCommand.DefineFlow) -> Bool {
943957
if lhs._dataflowGraphID != rhs._dataflowGraphID {return false}
944958
if lhs._flowName != rhs._flowName {return false}
945959
if lhs._targetDatasetName != rhs._targetDatasetName {return false}
946-
if lhs._plan != rhs._plan {return false}
960+
if lhs._relation != rhs._relation {return false}
947961
if lhs.sqlConf != rhs.sqlConf {return false}
948-
if lhs._once != rhs._once {return false}
949962
if lhs.unknownFields != rhs.unknownFields {return false}
950963
return true
951964
}
952965
}
953966

954967
extension Spark_Connect_PipelineCommand.StartRun: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
955968
static let protoMessageName: String = Spark_Connect_PipelineCommand.protoMessageName + ".StartRun"
956-
static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}dataflow_graph_id\0")
969+
static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{3}dataflow_graph_id\0\u{3}full_refresh_selection\0\u{3}full_refresh_all\0\u{3}refresh_selection\0\u{1}dry\0")
957970

958971
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
959972
while let fieldNumber = try decoder.nextFieldNumber() {
@@ -962,6 +975,10 @@ extension Spark_Connect_PipelineCommand.StartRun: SwiftProtobuf.Message, SwiftPr
962975
// enabled. https://github.com/apple/swift-protobuf/issues/1034
963976
switch fieldNumber {
964977
case 1: try { try decoder.decodeSingularStringField(value: &self._dataflowGraphID) }()
978+
case 2: try { try decoder.decodeRepeatedStringField(value: &self.fullRefreshSelection) }()
979+
case 3: try { try decoder.decodeSingularBoolField(value: &self._fullRefreshAll) }()
980+
case 4: try { try decoder.decodeRepeatedStringField(value: &self.refreshSelection) }()
981+
case 5: try { try decoder.decodeSingularBoolField(value: &self._dry) }()
965982
default: break
966983
}
967984
}
@@ -975,11 +992,27 @@ extension Spark_Connect_PipelineCommand.StartRun: SwiftProtobuf.Message, SwiftPr
975992
try { if let v = self._dataflowGraphID {
976993
try visitor.visitSingularStringField(value: v, fieldNumber: 1)
977994
} }()
995+
if !self.fullRefreshSelection.isEmpty {
996+
try visitor.visitRepeatedStringField(value: self.fullRefreshSelection, fieldNumber: 2)
997+
}
998+
try { if let v = self._fullRefreshAll {
999+
try visitor.visitSingularBoolField(value: v, fieldNumber: 3)
1000+
} }()
1001+
if !self.refreshSelection.isEmpty {
1002+
try visitor.visitRepeatedStringField(value: self.refreshSelection, fieldNumber: 4)
1003+
}
1004+
try { if let v = self._dry {
1005+
try visitor.visitSingularBoolField(value: v, fieldNumber: 5)
1006+
} }()
9781007
try unknownFields.traverse(visitor: &visitor)
9791008
}
9801009

9811010
static func ==(lhs: Spark_Connect_PipelineCommand.StartRun, rhs: Spark_Connect_PipelineCommand.StartRun) -> Bool {
9821011
if lhs._dataflowGraphID != rhs._dataflowGraphID {return false}
1012+
if lhs.fullRefreshSelection != rhs.fullRefreshSelection {return false}
1013+
if lhs._fullRefreshAll != rhs._fullRefreshAll {return false}
1014+
if lhs.refreshSelection != rhs.refreshSelection {return false}
1015+
if lhs._dry != rhs._dry {return false}
9831016
if lhs.unknownFields != rhs.unknownFields {return false}
9841017
return true
9851018
}

0 commit comments

Comments
 (0)