@@ -767,6 +767,62 @@ public void OutputParameter()
767
767
}
768
768
}
769
769
770
+ [ Fact ]
771
+ public void CharParameter ( )
772
+ {
773
+ m_database . Connection . Execute ( @"drop table if exists char_test;
774
+ create table char_test(id integer not null primary key, char1 char(1) not null, char4 char(4) not null, varchar1 varchar(1) not null, varchar4 varchar(4) not null) collate utf8mb4_bin;
775
+ insert into char_test (id, char1, char4, varchar1, varchar4) VALUES (1, '\'', 'b', 'c', 'Σ'), (2, 'e', '\\', '""', 'h');
776
+ " ) ;
777
+
778
+ using ( var command = new MySqlCommand ( "select id from char_test where char1 = @ch;" , m_database . Connection ) )
779
+ {
780
+ command . Parameters . AddWithValue ( "@ch" , '\' ' ) ;
781
+ using ( var reader = command . ExecuteReader ( ) )
782
+ {
783
+ Assert . True ( reader . Read ( ) ) ;
784
+ Assert . Equal ( 1 , reader . GetInt32 ( 0 ) ) ;
785
+ Assert . False ( reader . Read ( ) ) ;
786
+ }
787
+ }
788
+
789
+ using ( var command = new MySqlCommand ( "select id from char_test where char4 = @ch;" , m_database . Connection ) )
790
+ {
791
+ command . Parameters . AddWithValue ( "@ch" , '\\ ' ) ;
792
+ using ( var reader = command . ExecuteReader ( ) )
793
+ {
794
+ Assert . True ( reader . Read ( ) ) ;
795
+ Assert . Equal ( 2 , reader . GetInt32 ( 0 ) ) ;
796
+ Assert . False ( reader . Read ( ) ) ;
797
+ }
798
+ }
799
+
800
+ using ( var command = new MySqlCommand ( "select id from char_test where varchar1 = @ch;" , m_database . Connection ) )
801
+ {
802
+ command . Parameters . AddWithValue ( "@ch" , '"' ) ;
803
+ using ( var reader = command . ExecuteReader ( ) )
804
+ {
805
+ Assert . True ( reader . Read ( ) ) ;
806
+ Assert . Equal ( 2 , reader . GetInt32 ( 0 ) ) ;
807
+ Assert . False ( reader . Read ( ) ) ;
808
+ }
809
+ }
810
+
811
+ #if ! BASELINE
812
+ // can't repro test failure locally, but it fails on Appveyor
813
+ using ( var command = new MySqlCommand ( "select id from char_test where varchar4 = @ch;" , m_database . Connection ) )
814
+ {
815
+ command . Parameters . AddWithValue ( "@ch" , 'Σ' ) ;
816
+ using ( var reader = command . ExecuteReader ( ) )
817
+ {
818
+ Assert . True ( reader . Read ( ) ) ;
819
+ Assert . Equal ( 1 , reader . GetInt32 ( 0 ) ) ;
820
+ Assert . False ( reader . Read ( ) ) ;
821
+ }
822
+ }
823
+ #endif
824
+ }
825
+
770
826
[ Fact ]
771
827
public void EnumParameter ( )
772
828
{
0 commit comments