1+ import Atomics
12import Logging
23import XCTest
34import PostgresNIO
@@ -46,6 +47,32 @@ final class AsyncPostgresConnectionTests: XCTestCase {
4647 }
4748 }
4849
50+ func testSelect10kRowsAndConsume( ) async throws {
51+ let eventLoopGroup = MultiThreadedEventLoopGroup ( numberOfThreads: 1 )
52+ defer { XCTAssertNoThrow ( try eventLoopGroup. syncShutdownGracefully ( ) ) }
53+ let eventLoop = eventLoopGroup. next ( )
54+
55+ let start = 1
56+ let end = 10000
57+
58+ try await withTestConnection ( on: eventLoop) { connection in
59+ let rows = try await connection. query ( " SELECT generate_series( \( start) , \( end) ); " , logger: . psqlTest)
60+
61+ let counter = ManagedAtomic ( 0 )
62+ let metadata = try await rows. consume { row in
63+ let element = try row. decode ( Int . self)
64+ let newCounter = counter. wrappingIncrementThenLoad ( ordering: . relaxed)
65+ XCTAssertEqual ( element, newCounter)
66+ }
67+
68+ XCTAssertEqual ( metadata. command, " SELECT " )
69+ XCTAssertEqual ( metadata. oid, nil )
70+ XCTAssertEqual ( metadata. rows, 10000 )
71+
72+ XCTAssertEqual ( counter. load ( ordering: . relaxed) , end)
73+ }
74+ }
75+
4976 func testSelect10kRowsAndCollect( ) async throws {
5077 let eventLoopGroup = MultiThreadedEventLoopGroup ( numberOfThreads: 1 )
5178 defer { XCTAssertNoThrow ( try eventLoopGroup. syncShutdownGracefully ( ) ) }
@@ -63,6 +90,7 @@ final class AsyncPostgresConnectionTests: XCTestCase {
6390 XCTAssertEqual ( element, counter + 1 )
6491 counter += 1
6592 }
93+
6694 XCTAssertEqual ( metadata. command, " SELECT " )
6795 XCTAssertEqual ( metadata. oid, nil )
6896 XCTAssertEqual ( metadata. rows, 10000 )
0 commit comments