@@ -168,6 +168,31 @@ t('Transaction succeeds on uncaught savepoint', async() => {
168
168
return [ 2 , ( await sql `select count(1) from test` ) [ 0 ] . count ]
169
169
} , ( ) => sql `drop table test` )
170
170
171
+ t ( 'Parallel transactions' , async ( ) => {
172
+ await sql `create table test (a int)`
173
+ return [ '11' , ( await Promise . all ( [
174
+ sql . begin ( sql => sql `select 1` ) ,
175
+ sql . begin ( sql => sql `select 1` ) ,
176
+ ] ) ) . map ( x => x . count ) . join ( '' ) ]
177
+ } , ( ) => sql `drop table test` )
178
+
179
+ t ( 'Transaction waits' , async ( ) => {
180
+ await sql `create table test (a int)`
181
+ await sql . begin ( async sql => {
182
+ await sql `insert into test values(1)`
183
+ await sql . savepoint ( async sql => {
184
+ await sql `insert into test values(2)`
185
+ throw new Error ( 'please rollback' )
186
+ } ) . catch ( ( ) => { /* ignore */ } )
187
+ await sql `insert into test values(3)`
188
+ } )
189
+
190
+ return [ '11' , ( await Promise . all ( [
191
+ sql . begin ( sql => sql `select 1` ) ,
192
+ sql . begin ( sql => sql `select 1` ) ,
193
+ ] ) ) . map ( x => x . count ) . join ( '' ) ]
194
+ } , ( ) => sql `drop table test` )
195
+
171
196
t ( 'Helpers in Transaction' , async ( ) => {
172
197
return [ 1 , ( await sql . begin ( async sql =>
173
198
await sql `select ${ sql ( { x : 1 } ) } `
0 commit comments