@@ -69,16 +69,20 @@ struct DataFrameTests {
6969 let spark = try await SparkSession . builder. getOrCreate ( )
7070
7171 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)
7678
7779 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)
8286
8387 let emptySchema = try await spark. sql ( " DROP TABLE IF EXISTS nonexistent " ) . schema
8488 #expect( emptySchema == #"{"struct":{}}"# )
@@ -319,11 +323,12 @@ struct DataFrameTests {
319323 let spark = try await SparkSession . builder. getOrCreate ( )
320324 #expect( try await spark. sql ( " DROP TABLE IF EXISTS t " ) . count ( ) == 0 )
321325 #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 )
323327 #expect( try await spark. sql ( " SHOW TABLES " ) . count ( ) == 1 )
324328 #expect( try await spark. sql ( " SELECT * FROM t " ) . count ( ) == 0 )
325329 #expect( try await spark. sql ( " INSERT INTO t VALUES (1), (2), (3) " ) . count ( ) == 0 )
326330 #expect( try await spark. sql ( " SELECT * FROM t " ) . count ( ) == 3 )
331+ #expect( try await spark. sql ( " DROP TABLE IF EXISTS t " ) . count ( ) == 0 )
327332 await spark. stop ( )
328333 }
329334
@@ -482,20 +487,22 @@ struct DataFrameTests {
482487 @Test
483488 func lateralJoin( ) async throws {
484489 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+ }
499506 await spark. stop ( )
500507 }
501508
0 commit comments