@@ -542,6 +542,63 @@ public async Task SendLongData(int dataLength, int chunkLength, bool isAsync)
542
542
Assert . True ( data . AsSpan ( ) . SequenceEqual ( readData ) ) ; // much faster than Assert.Equal
543
543
}
544
544
}
545
+
546
+ [ Theory ]
547
+ [ InlineData ( false ) ]
548
+ [ InlineData ( true ) ]
549
+ public async Task SendLongDataMultipleStatements ( bool isAsync )
550
+ {
551
+ using MySqlConnection connection = new MySqlConnection ( AppConfig . ConnectionString ) ;
552
+ connection . Open ( ) ;
553
+ connection . Execute ( """
554
+ drop table if exists insert_mysql_long_data;
555
+ create table insert_mysql_long_data(rowid integer not null primary key auto_increment, value longblob);
556
+ """ ) ;
557
+
558
+ var data1 = new byte [ 1000 ] ;
559
+ var data2 = new byte [ 2000 ] ;
560
+ var data3 = new byte [ 3000 ] ;
561
+ var random = new Random ( 1 ) ;
562
+ random . NextBytes ( data1 ) ;
563
+ random . NextBytes ( data2 ) ;
564
+ random . NextBytes ( data3 ) ;
565
+
566
+ using var chunkStream1 = new ChunkStream ( data1 , int . MaxValue ) ;
567
+ using var chunkStream2 = new ChunkStream ( data2 , int . MaxValue ) ;
568
+ using var chunkStream3 = new ChunkStream ( data3 , int . MaxValue ) ;
569
+
570
+ using var writeCommand = new MySqlCommand ( """
571
+ insert into insert_mysql_long_data(rowid, value) values(1, @value1);
572
+ insert into insert_mysql_long_data(rowid, value) values(2, @value2);
573
+ insert into insert_mysql_long_data(rowid, value) values(3, @value3);
574
+ """ , connection ) ;
575
+ writeCommand . Parameters . AddWithValue ( "@value1" , chunkStream1 ) ;
576
+ writeCommand . Parameters . AddWithValue ( "@value2" , chunkStream2 ) ;
577
+ writeCommand . Parameters . AddWithValue ( "@value3" , chunkStream3 ) ;
578
+ writeCommand . Prepare ( ) ;
579
+ if ( isAsync )
580
+ await writeCommand . ExecuteNonQueryAsync ( ) ;
581
+ else
582
+ writeCommand . ExecuteNonQuery ( ) ;
583
+
584
+ using var readCommand = new MySqlCommand ( "select value from insert_mysql_long_data order by rowid;" , connection ) ;
585
+ using ( var reader = readCommand . ExecuteReader ( ) )
586
+ {
587
+ Assert . True ( reader . Read ( ) ) ;
588
+ var readData = ( byte [ ] ) reader . GetValue ( 0 ) ;
589
+ Assert . True ( data1 . AsSpan ( ) . SequenceEqual ( readData ) ) ;
590
+
591
+ Assert . True ( reader . Read ( ) ) ;
592
+ readData = ( byte [ ] ) reader . GetValue ( 0 ) ;
593
+ Assert . True ( data2 . AsSpan ( ) . SequenceEqual ( readData ) ) ;
594
+
595
+ Assert . True ( reader . Read ( ) ) ;
596
+ readData = ( byte [ ] ) reader . GetValue ( 0 ) ;
597
+ Assert . True ( data3 . AsSpan ( ) . SequenceEqual ( readData ) ) ;
598
+
599
+ Assert . False ( reader . Read ( ) ) ;
600
+ }
601
+ }
545
602
#endif
546
603
547
604
[ Theory ]
0 commit comments