@@ -154,6 +154,117 @@ struct CatalogTests {
154
154
}
155
155
await spark. stop ( )
156
156
}
157
+
158
+ @Test
159
+ func createTempView( ) async throws {
160
+ let spark = try await SparkSession . builder. getOrCreate ( )
161
+ let viewName = " VIEW_ " + UUID( ) . uuidString. replacingOccurrences ( of: " - " , with: " " )
162
+ try await SQLHelper . withTempView ( spark, viewName) ( {
163
+ #expect( try await spark. catalog. tableExists ( viewName) == false )
164
+ try await spark. range ( 1 ) . createTempView ( viewName)
165
+ #expect( try await spark. catalog. tableExists ( viewName) )
166
+
167
+ try await #require( throws: Error . self) {
168
+ try await spark. range ( 1 ) . createTempView ( viewName)
169
+ }
170
+ } )
171
+
172
+ try await #require( throws: Error . self) {
173
+ try await spark. range ( 1 ) . createTempView ( " invalid view name " )
174
+ }
175
+
176
+ await spark. stop ( )
177
+ }
178
+
179
+ @Test
180
+ func createOrReplaceTempView( ) async throws {
181
+ let spark = try await SparkSession . builder. getOrCreate ( )
182
+ let viewName = " VIEW_ " + UUID( ) . uuidString. replacingOccurrences ( of: " - " , with: " " )
183
+ try await SQLHelper . withTempView ( spark, viewName) ( {
184
+ #expect( try await spark. catalog. tableExists ( viewName) == false )
185
+ try await spark. range ( 1 ) . createOrReplaceTempView ( viewName)
186
+ #expect( try await spark. catalog. tableExists ( viewName) )
187
+ try await spark. range ( 1 ) . createOrReplaceTempView ( viewName)
188
+ } )
189
+
190
+ try await #require( throws: Error . self) {
191
+ try await spark. range ( 1 ) . createOrReplaceTempView ( " invalid view name " )
192
+ }
193
+
194
+ await spark. stop ( )
195
+ }
196
+
197
+ @Test
198
+ func createGlobalTempView( ) async throws {
199
+ let spark = try await SparkSession . builder. getOrCreate ( )
200
+ let viewName = " VIEW_ " + UUID( ) . uuidString. replacingOccurrences ( of: " - " , with: " " )
201
+ try await SQLHelper . withGlobalTempView ( spark, viewName) ( {
202
+ #expect( try await spark. catalog. tableExists ( " global_temp. \( viewName) " ) == false )
203
+ try await spark. range ( 1 ) . createGlobalTempView ( viewName)
204
+ #expect( try await spark. catalog. tableExists ( " global_temp. \( viewName) " ) )
205
+
206
+ try await #require( throws: Error . self) {
207
+ try await spark. range ( 1 ) . createGlobalTempView ( viewName)
208
+ }
209
+ } )
210
+ #expect( try await spark. catalog. tableExists ( " global_temp. \( viewName) " ) == false )
211
+
212
+ try await #require( throws: Error . self) {
213
+ try await spark. range ( 1 ) . createGlobalTempView ( " invalid view name " )
214
+ }
215
+
216
+ await spark. stop ( )
217
+ }
218
+
219
+ @Test
220
+ func createOrReplaceGlobalTempView( ) async throws {
221
+ let spark = try await SparkSession . builder. getOrCreate ( )
222
+ let viewName = " VIEW_ " + UUID( ) . uuidString. replacingOccurrences ( of: " - " , with: " " )
223
+ try await SQLHelper . withGlobalTempView ( spark, viewName) ( {
224
+ #expect( try await spark. catalog. tableExists ( " global_temp. \( viewName) " ) == false )
225
+ try await spark. range ( 1 ) . createOrReplaceGlobalTempView ( viewName)
226
+ #expect( try await spark. catalog. tableExists ( " global_temp. \( viewName) " ) )
227
+ try await spark. range ( 1 ) . createOrReplaceGlobalTempView ( viewName)
228
+ } )
229
+ #expect( try await spark. catalog. tableExists ( " global_temp. \( viewName) " ) == false )
230
+
231
+ try await #require( throws: Error . self) {
232
+ try await spark. range ( 1 ) . createOrReplaceGlobalTempView ( " invalid view name " )
233
+ }
234
+
235
+ await spark. stop ( )
236
+ }
237
+
238
+ @Test
239
+ func dropTempView( ) async throws {
240
+ let spark = try await SparkSession . builder. getOrCreate ( )
241
+ let viewName = " VIEW_ " + UUID( ) . uuidString. replacingOccurrences ( of: " - " , with: " " )
242
+ try await SQLHelper . withTempView ( spark, viewName) ( { #expect( try await spark. catalog. tableExists ( viewName) == false )
243
+ try await spark. range ( 1 ) . createTempView ( viewName)
244
+ try await spark. catalog. dropTempView ( viewName)
245
+ #expect( try await spark. catalog. tableExists ( viewName) == false )
246
+ } )
247
+
248
+ #expect( try await spark. catalog. dropTempView ( " non_exist_view " ) == false )
249
+ #expect( try await spark. catalog. dropTempView ( " invalid view name " ) == false )
250
+ await spark. stop ( )
251
+ }
252
+
253
+ @Test
254
+ func dropGlobalTempView( ) async throws {
255
+ let spark = try await SparkSession . builder. getOrCreate ( )
256
+ let viewName = " VIEW_ " + UUID( ) . uuidString. replacingOccurrences ( of: " - " , with: " " )
257
+ try await SQLHelper . withTempView ( spark, viewName) ( { #expect( try await spark. catalog. tableExists ( viewName) == false )
258
+ try await spark. range ( 1 ) . createGlobalTempView ( viewName)
259
+ #expect( try await spark. catalog. tableExists ( " global_temp. \( viewName) " ) )
260
+ try await spark. catalog. dropGlobalTempView ( viewName)
261
+ #expect( try await spark. catalog. tableExists ( " global_temp. \( viewName) " ) == false )
262
+ } )
263
+
264
+ #expect( try await spark. catalog. dropGlobalTempView ( " non_exist_view " ) == false )
265
+ #expect( try await spark. catalog. dropGlobalTempView ( " invalid view name " ) == false )
266
+ await spark. stop ( )
267
+ }
157
268
#endif
158
269
159
270
@Test
0 commit comments