@@ -7,6 +7,7 @@ var payload = 'привет, мир';
7
7
8
8
function tryEncoding ( encoding , cb ) {
9
9
connection . query ( 'set character_set_results = ?' , [ encoding ] , function ( err ) {
10
+ assert . ifError ( err ) ;
10
11
connection . query ( 'SELECT ?' , [ payload ] , function ( err , rows , fields ) {
11
12
assert . ifError ( err ) ;
12
13
var iconvEncoding = encoding ;
@@ -21,11 +22,38 @@ function tryEncoding (encoding, cb) {
21
22
} ) ;
22
23
}
23
24
25
+ function tryEncodingExecute ( encoding , cb ) {
26
+ connection . execute ( 'set character_set_results = ?' , [ encoding ] , function ( err ) {
27
+ assert . ifError ( err ) ;
28
+ connection . execute ( 'SELECT ? as n' , [ payload ] , function ( err , rows , fields ) {
29
+ assert . ifError ( err ) ;
30
+ var iconvEncoding = encoding ;
31
+ if ( encoding == 'utf8mb4' ) {
32
+ iconvEncoding = 'utf8' ;
33
+ }
34
+ assert . equal ( mysql . CharsetToEncoding [ fields [ 0 ] . characterSet ] , iconvEncoding ) ;
35
+ // TODO: figure out correct metadata encodings setup for binary protocol
36
+ // assert.equal(fields[0].name, payload);
37
+ assert . equal ( rows [ 0 ] [ fields [ 0 ] . name ] , payload ) ;
38
+ cb ( ) ;
39
+ } ) ;
40
+ } ) ;
41
+ }
42
+
43
+ // christmas tree!!! :)
24
44
tryEncoding ( 'cp1251' , function ( ) {
25
45
tryEncoding ( 'koi8r' , function ( ) {
26
46
tryEncoding ( 'cp866' , function ( ) {
27
47
tryEncoding ( 'utf8mb4' , function ( ) {
28
- connection . end ( ) ;
48
+ tryEncodingExecute ( 'cp1251' , function ( ) {
49
+ tryEncodingExecute ( 'koi8r' , function ( ) {
50
+ tryEncodingExecute ( 'cp866' , function ( ) {
51
+ tryEncodingExecute ( 'utf8mb4' , function ( ) {
52
+ connection . end ( ) ;
53
+ } ) ;
54
+ } ) ;
55
+ } ) ;
56
+ } ) ;
29
57
} ) ;
30
58
} ) ;
31
59
} ) ;
0 commit comments