@@ -438,4 +438,46 @@ public actor SparkConnectClient {
438
438
public func clearTags( ) {
439
439
tags. removeAll ( )
440
440
}
441
+
442
+ /// Parse a DDL string to ``Spark_Connect_DataType`` instance.
443
+ /// - Parameter ddlString: A string to parse.
444
+ /// - Returns: A ``Spark_Connect_DataType`` instance.
445
+ func ddlParse( _ ddlString: String ) async throws -> Spark_Connect_DataType {
446
+ try await withGRPCClient (
447
+ transport: . http2NIOPosix(
448
+ target: . dns( host: self . host, port: self . port) ,
449
+ transportSecurity: . plaintext
450
+ )
451
+ ) { client in
452
+ let service = SparkConnectService . Client ( wrapping: client)
453
+ let request = analyze ( self . sessionID!, {
454
+ var ddlParse = AnalyzePlanRequest . DDLParse ( )
455
+ ddlParse. ddlString = ddlString
456
+ return OneOf_Analyze . ddlParse ( ddlParse)
457
+ } )
458
+ let response = try await service. analyzePlan ( request)
459
+ return response. ddlParse. parsed
460
+ }
461
+ }
462
+
463
+ /// Convert an JSON string to a DDL string.
464
+ /// - Parameter jsonString: A JSON string.
465
+ /// - Returns: A DDL string.
466
+ func jsonToDdl( _ jsonString: String ) async throws -> String {
467
+ try await withGRPCClient (
468
+ transport: . http2NIOPosix(
469
+ target: . dns( host: self . host, port: self . port) ,
470
+ transportSecurity: . plaintext
471
+ )
472
+ ) { client in
473
+ let service = SparkConnectService . Client ( wrapping: client)
474
+ let request = analyze ( self . sessionID!, {
475
+ var jsonToDDL = AnalyzePlanRequest . JsonToDDL ( )
476
+ jsonToDDL. jsonString = jsonString
477
+ return OneOf_Analyze . jsonToDdl ( jsonToDDL)
478
+ } )
479
+ let response = try await service. analyzePlan ( request)
480
+ return response. jsonToDdl. ddlString
481
+ }
482
+ }
441
483
}
0 commit comments