@@ -69,16 +69,20 @@ struct DataFrameTests {
69
69
let spark = try await SparkSession . builder. getOrCreate ( )
70
70
71
71
let schema1 = try await spark. sql ( " SELECT 'a' as col1 " ) . schema
72
- #expect(
73
- schema1
74
- == #"{"struct":{"fields":[{"name":"col1","dataType":{"string":{"collation":"UTF8_BINARY"}}}]}}"#
75
- )
72
+ let answer1 = if await spark. version. starts ( with: " 4. " ) {
73
+ #"{"struct":{"fields":[{"name":"col1","dataType":{"string":{"collation":"UTF8_BINARY"}}}]}}"#
74
+ } else {
75
+ #"{"struct":{"fields":[{"name":"col1","dataType":{"string":{}}}]}}"#
76
+ }
77
+ #expect( schema1 == answer1)
76
78
77
79
let schema2 = try await spark. sql ( " SELECT 'a' as col1, 'b' as col2 " ) . schema
78
- #expect(
79
- schema2
80
- == #"{"struct":{"fields":[{"name":"col1","dataType":{"string":{"collation":"UTF8_BINARY"}}},{"name":"col2","dataType":{"string":{"collation":"UTF8_BINARY"}}}]}}"#
81
- )
80
+ let answer2 = if await spark. version. starts ( with: " 4. " ) {
81
+ #"{"struct":{"fields":[{"name":"col1","dataType":{"string":{"collation":"UTF8_BINARY"}}},{"name":"col2","dataType":{"string":{"collation":"UTF8_BINARY"}}}]}}"#
82
+ } else {
83
+ #"{"struct":{"fields":[{"name":"col1","dataType":{"string":{}}},{"name":"col2","dataType":{"string":{}}}]}}"#
84
+ }
85
+ #expect( schema2 == answer2)
82
86
83
87
let emptySchema = try await spark. sql ( " DROP TABLE IF EXISTS nonexistent " ) . schema
84
88
#expect( emptySchema == #"{"struct":{}}"# )
@@ -319,11 +323,12 @@ struct DataFrameTests {
319
323
let spark = try await SparkSession . builder. getOrCreate ( )
320
324
#expect( try await spark. sql ( " DROP TABLE IF EXISTS t " ) . count ( ) == 0 )
321
325
#expect( try await spark. sql ( " SHOW TABLES " ) . count ( ) == 0 )
322
- #expect( try await spark. sql ( " CREATE TABLE IF NOT EXISTS t(a INT) " ) . count ( ) == 0 )
326
+ #expect( try await spark. sql ( " CREATE TABLE IF NOT EXISTS t(a INT) USING ORC " ) . count ( ) == 0 )
323
327
#expect( try await spark. sql ( " SHOW TABLES " ) . count ( ) == 1 )
324
328
#expect( try await spark. sql ( " SELECT * FROM t " ) . count ( ) == 0 )
325
329
#expect( try await spark. sql ( " INSERT INTO t VALUES (1), (2), (3) " ) . count ( ) == 0 )
326
330
#expect( try await spark. sql ( " SELECT * FROM t " ) . count ( ) == 3 )
331
+ #expect( try await spark. sql ( " DROP TABLE IF EXISTS t " ) . count ( ) == 0 )
327
332
await spark. stop ( )
328
333
}
329
334
@@ -482,20 +487,22 @@ struct DataFrameTests {
482
487
@Test
483
488
func lateralJoin( ) async throws {
484
489
let spark = try await SparkSession . builder. getOrCreate ( )
485
- let df1 = try await spark. sql ( " SELECT * FROM VALUES ('a', '1'), ('b', '2') AS T(a, b) " )
486
- let df2 = try await spark. sql ( " SELECT * FROM VALUES ('c', '2'), ('d', '3') AS S(c, b) " )
487
- let expectedCross = [
488
- Row ( " a " , " 1 " , " c " , " 2 " ) ,
489
- Row ( " a " , " 1 " , " d " , " 3 " ) ,
490
- Row ( " b " , " 2 " , " c " , " 2 " ) ,
491
- Row ( " b " , " 2 " , " d " , " 3 " ) ,
492
- ]
493
- #expect( try await df1. lateralJoin ( df2) . collect ( ) == expectedCross)
494
- #expect( try await df1. lateralJoin ( df2, joinType: " inner " ) . collect ( ) == expectedCross)
495
-
496
- let expected = [ Row ( " b " , " 2 " , " c " , " 2 " ) ]
497
- #expect( try await df1. lateralJoin ( df2, joinExprs: " T.b = S.b " ) . collect ( ) == expected)
498
- #expect( try await df1. lateralJoin ( df2, joinExprs: " T.b = S.b " , joinType: " inner " ) . collect ( ) == expected)
490
+ if await spark. version. starts ( with: " 4. " ) {
491
+ let df1 = try await spark. sql ( " SELECT * FROM VALUES ('a', '1'), ('b', '2') AS T(a, b) " )
492
+ let df2 = try await spark. sql ( " SELECT * FROM VALUES ('c', '2'), ('d', '3') AS S(c, b) " )
493
+ let expectedCross = [
494
+ Row ( " a " , " 1 " , " c " , " 2 " ) ,
495
+ Row ( " a " , " 1 " , " d " , " 3 " ) ,
496
+ Row ( " b " , " 2 " , " c " , " 2 " ) ,
497
+ Row ( " b " , " 2 " , " d " , " 3 " ) ,
498
+ ]
499
+ #expect( try await df1. lateralJoin ( df2) . collect ( ) == expectedCross)
500
+ #expect( try await df1. lateralJoin ( df2, joinType: " inner " ) . collect ( ) == expectedCross)
501
+
502
+ let expected = [ Row ( " b " , " 2 " , " c " , " 2 " ) ]
503
+ #expect( try await df1. lateralJoin ( df2, joinExprs: " T.b = S.b " ) . collect ( ) == expected)
504
+ #expect( try await df1. lateralJoin ( df2, joinExprs: " T.b = S.b " , joinType: " inner " ) . collect ( ) == expected)
505
+ }
499
506
await spark. stop ( )
500
507
}
501
508
0 commit comments