1
1
package client
2
2
3
3
import (
4
+ "encoding/json"
4
5
"flag"
5
6
"fmt"
6
7
"strings"
@@ -82,6 +83,7 @@ func (s *clientTestSuite) testConn_CreateTable(c *C) {
82
83
e enum("test1", "test2"),
83
84
u tinyint unsigned,
84
85
i tinyint,
86
+ j json,
85
87
PRIMARY KEY (id)
86
88
) ENGINE=InnoDB DEFAULT CHARSET=utf8`
87
89
@@ -94,6 +96,41 @@ func (s *clientTestSuite) TestConn_Ping(c *C) {
94
96
c .Assert (err , IsNil )
95
97
}
96
98
99
+ func (s * clientTestSuite ) TestConn_SetCapability (c * C ) {
100
+ caps := []uint32 {
101
+ mysql .CLIENT_LONG_PASSWORD ,
102
+ mysql .CLIENT_FOUND_ROWS ,
103
+ mysql .CLIENT_LONG_FLAG ,
104
+ mysql .CLIENT_CONNECT_WITH_DB ,
105
+ mysql .CLIENT_NO_SCHEMA ,
106
+ mysql .CLIENT_COMPRESS ,
107
+ mysql .CLIENT_ODBC ,
108
+ mysql .CLIENT_LOCAL_FILES ,
109
+ mysql .CLIENT_IGNORE_SPACE ,
110
+ mysql .CLIENT_PROTOCOL_41 ,
111
+ mysql .CLIENT_INTERACTIVE ,
112
+ mysql .CLIENT_SSL ,
113
+ mysql .CLIENT_IGNORE_SIGPIPE ,
114
+ mysql .CLIENT_TRANSACTIONS ,
115
+ mysql .CLIENT_RESERVED ,
116
+ mysql .CLIENT_SECURE_CONNECTION ,
117
+ mysql .CLIENT_MULTI_STATEMENTS ,
118
+ mysql .CLIENT_MULTI_RESULTS ,
119
+ mysql .CLIENT_PS_MULTI_RESULTS ,
120
+ mysql .CLIENT_PLUGIN_AUTH ,
121
+ mysql .CLIENT_CONNECT_ATTRS ,
122
+ mysql .CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA ,
123
+ }
124
+
125
+ for _ , cap := range caps {
126
+ c .Assert (s .c .ccaps & cap > 0 , IsFalse )
127
+ s .c .SetCapability (cap )
128
+ c .Assert (s .c .ccaps & cap > 0 , IsTrue )
129
+ s .c .UnsetCapability (cap )
130
+ c .Assert (s .c .ccaps & cap > 0 , IsFalse )
131
+ }
132
+ }
133
+
97
134
// NOTE for MySQL 5.5 and 5.6, server side has to config SSL to pass the TLS test, otherwise, it will throw error that
98
135
// MySQL server does not support TLS required by the client. However, for MySQL 5.7 and above, auto generated certificates
99
136
// are used by default so that manual config is no longer necessary.
@@ -149,6 +186,14 @@ func (s *clientTestSuite) TestConn_Insert(c *C) {
149
186
c .Assert (pkg .AffectedRows , Equals , uint64 (1 ))
150
187
}
151
188
189
+ func (s * clientTestSuite ) TestConn_Insert2 (c * C ) {
190
+ str := `insert into mixer_test_conn (id, j) values(?, ?)`
191
+ j := json .RawMessage (`[]` )
192
+ pkg , err := s .c .Execute (str , []interface {}{2 , j }... )
193
+ c .Assert (err , IsNil )
194
+ c .Assert (pkg .AffectedRows , Equals , uint64 (1 ))
195
+ }
196
+
152
197
func (s * clientTestSuite ) TestConn_Select (c * C ) {
153
198
str := `select str, f, e from mixer_test_conn where id = 1`
154
199
0 commit comments