@@ -313,8 +313,6 @@ protected override async Task OnDisposeAsync() =>
313313 public async Task BulkUpsertImporter_HappyPath_AddRows_Flush_Dispose ( )
314314 {
315315 var tableName = $ "BulkImporter_{ Guid . NewGuid ( ) : N} ";
316- var database = new YdbConnectionStringBuilder ( _connectionStringTls ) . Database . TrimEnd ( '/' ) ;
317- var absTablePath = string . IsNullOrEmpty ( database ) ? tableName : $ "{ database } /{ tableName } ";
318316
319317 var conn = new YdbConnection ( _connectionStringTls ) ;
320318 await conn . OpenAsync ( ) ;
@@ -337,7 +335,7 @@ PRIMARY KEY (Id)
337335 new Type { TypeId = Type . Types . PrimitiveTypeId . Utf8 }
338336 } ;
339337
340- await using ( var importer = conn . BeginBulkUpsertImport ( absTablePath , columns , types , maxBytes : 1024 ) )
338+ await using ( var importer = conn . BeginBulkUpsertImport ( tableName , columns , types ) )
341339 {
342340 await importer . AddRowAsync ( YdbValue . MakeInt32 ( 1 ) , YdbValue . MakeUtf8 ( "Alice" ) ) ;
343341 await importer . AddRowAsync ( YdbValue . MakeInt32 ( 2 ) , YdbValue . MakeUtf8 ( "Bob" ) ) ;
@@ -353,7 +351,7 @@ PRIMARY KEY (Id)
353351 Assert . Equal ( 2 , count ) ;
354352 }
355353
356- await using ( var importer = conn . BeginBulkUpsertImport ( absTablePath , columns , types , maxBytes : 1 ) )
354+ await using ( var importer = conn . BeginBulkUpsertImport ( tableName , columns , types ) )
357355 {
358356 var rows = new List < YdbValue [ ] >
359357 {
@@ -409,7 +407,7 @@ PRIMARY KEY (Id)
409407 new Type { TypeId = Type . Types . PrimitiveTypeId . Utf8 }
410408 } ;
411409
412- await using ( var importer = conn . BeginBulkUpsertImport ( tableName , columns , types , maxBytes : 1024 ) )
410+ await using ( var importer = conn . BeginBulkUpsertImport ( tableName , columns , types ) )
413411 {
414412 await Assert . ThrowsAsync < ArgumentException > ( async ( ) =>
415413 {
@@ -438,8 +436,6 @@ await Assert.ThrowsAsync<ArgumentException>(async () =>
438436 public async Task BulkUpsertImporter_DisposeIsIdempotent ( )
439437 {
440438 var tableName = $ "BulkImporter_{ Guid . NewGuid ( ) : N} ";
441- var database = new YdbConnectionStringBuilder ( _connectionStringTls ) . Database . TrimEnd ( '/' ) ;
442- var absTablePath = string . IsNullOrEmpty ( database ) ? tableName : $ "{ database } /{ tableName } ";
443439
444440 var conn = new YdbConnection ( _connectionStringTls ) ;
445441 await conn . OpenAsync ( ) ;
@@ -462,7 +458,7 @@ PRIMARY KEY (Id)
462458 new Type { TypeId = Type . Types . PrimitiveTypeId . Utf8 }
463459 } ;
464460
465- var importer = conn . BeginBulkUpsertImport ( absTablePath , columns , types , maxBytes : 1024 ) ;
461+ var importer = conn . BeginBulkUpsertImport ( tableName , columns , types ) ;
466462 await importer . AddRowAsync ( YdbValue . MakeInt32 ( 1 ) , YdbValue . MakeUtf8 ( "A" ) ) ;
467463 await importer . DisposeAsync ( ) ;
468464
@@ -475,15 +471,12 @@ PRIMARY KEY (Id)
475471 await dropCmd . ExecuteNonQueryAsync ( ) ;
476472 }
477473 }
478-
474+
479475 [ Fact ]
480476 public async Task BulkUpsertImporter_MultipleImporters_Parallel ( )
481477 {
482478 var table1 = $ "BulkImporter_{ Guid . NewGuid ( ) : N} _1";
483479 var table2 = $ "BulkImporter_{ Guid . NewGuid ( ) : N} _2";
484- var database = new YdbConnectionStringBuilder ( _connectionStringTls ) . Database . TrimEnd ( '/' ) ;
485- var absTablePath1 = string . IsNullOrEmpty ( database ) ? table1 : $ "{ database } /{ table1 } ";
486- var absTablePath2 = string . IsNullOrEmpty ( database ) ? table2 : $ "{ database } /{ table2 } ";
487480
488481 var conn = new YdbConnection ( _connectionStringTls ) ;
489482 await conn . OpenAsync ( ) ;
@@ -510,13 +503,13 @@ PRIMARY KEY (Id)
510503 await Task . WhenAll (
511504 Task . Run ( async ( ) =>
512505 {
513- await using var importer = conn . BeginBulkUpsertImport ( absTablePath1 , columns , types , maxBytes : 1024 ) ;
506+ await using var importer = conn . BeginBulkUpsertImport ( table1 , columns , types ) ;
514507 for ( int i = 0 ; i < 20 ; i ++ )
515508 await importer . AddRowAsync ( YdbValue . MakeInt32 ( i ) , YdbValue . MakeUtf8 ( $ "A{ i } ") ) ;
516509 } ) ,
517510 Task . Run ( async ( ) =>
518511 {
519- await using var importer = conn . BeginBulkUpsertImport ( absTablePath2 , columns , types , maxBytes : 1024 ) ;
512+ await using var importer = conn . BeginBulkUpsertImport ( table2 , columns , types ) ;
520513 for ( int i = 0 ; i < 20 ; i ++ )
521514 await importer . AddRowAsync ( YdbValue . MakeInt32 ( i ) , YdbValue . MakeUtf8 ( $ "B{ i } ") ) ;
522515 } )
@@ -540,55 +533,36 @@ await Task.WhenAll(
540533 }
541534 }
542535 }
543-
536+
544537 [ Fact ]
545- public async Task BulkUpsertImporter_TinyMaxBytes_FlushesEveryRow ( )
538+ public async Task BulkUpsertImporter_ThrowsOnNonexistentTable ( )
546539 {
547- var tableName = $ "BulkImporter_{ Guid . NewGuid ( ) : N} ";
548- var database = new YdbConnectionStringBuilder ( _connectionStringTls ) . Database . TrimEnd ( '/' ) ;
549- var absTablePath = string . IsNullOrEmpty ( database ) ? tableName : $ "{ database } /{ tableName } ";
550-
540+ var tableName = $ "Nonexistent_{ Guid . NewGuid ( ) : N} ";
551541 var conn = new YdbConnection ( _connectionStringTls ) ;
552542 await conn . OpenAsync ( ) ;
553- try
543+
544+ var columns = new [ ] { "Id" , "Name" } ;
545+ var types = new [ ]
554546 {
555- await using ( var createCmd = conn . CreateCommand ( ) )
556- {
557- createCmd . CommandText = $@ "
558- CREATE TABLE { tableName } (
559- Id Int32,
560- Name Utf8,
561- PRIMARY KEY (Id)
562- )" ;
563- await createCmd . ExecuteNonQueryAsync ( ) ;
564- }
547+ new Type { TypeId = Type . Types . PrimitiveTypeId . Int32 } ,
548+ new Type { TypeId = Type . Types . PrimitiveTypeId . Utf8 }
549+ } ;
565550
566- var columns = new [ ] { "Id" , "Name" } ;
567- var types = new [ ]
568- {
569- new Type { TypeId = Type . Types . PrimitiveTypeId . Int32 } ,
570- new Type { TypeId = Type . Types . PrimitiveTypeId . Utf8 }
571- } ;
551+ var importer = conn . BeginBulkUpsertImport ( tableName , columns , types ) ;
572552
573- await using ( var importer = conn . BeginBulkUpsertImport ( absTablePath , columns , types , maxBytes : 1 ) )
574- {
575- for ( int i = 0 ; i < 10 ; i ++ )
576- await importer . AddRowAsync ( YdbValue . MakeInt32 ( i ) , YdbValue . MakeUtf8 ( $ "Name{ i } ") ) ;
577- Assert . Empty ( importer . GetBufferedRows ( ) ) ;
578- }
553+ await Assert . ThrowsAsync < YdbException > ( async ( ) =>
554+ {
555+ await importer . AddRowAsync ( YdbValue . MakeInt32 ( 1 ) , YdbValue . MakeUtf8 ( "NotExists" ) ) ;
556+ await importer . FlushAsync ( ) ;
557+ } ) ;
579558
580- await using ( var checkCmd = conn . CreateCommand ( ) )
581- {
582- checkCmd . CommandText = $ "SELECT COUNT(*) FROM { tableName } ";
583- var count = Convert . ToInt32 ( await checkCmd . ExecuteScalarAsync ( ) ) ;
584- Assert . Equal ( 10 , count ) ;
585- }
559+ try
560+ {
561+ await importer . DisposeAsync ( ) ;
586562 }
587- finally
563+ catch ( YdbException )
588564 {
589- await using var dropCmd = conn . CreateCommand ( ) ;
590- dropCmd . CommandText = $ "DROP TABLE { tableName } ";
591- await dropCmd . ExecuteNonQueryAsync ( ) ;
565+ // success
592566 }
593567 }
594568}
0 commit comments