@@ -148,29 +148,18 @@ func runTests(t *testing.T, dsn string, tests ...func(dbt *DBTest)) {
148
148
defer db2 .Close ()
149
149
}
150
150
151
- dsn3 := dsn + "&multiStatements=true"
152
- var db3 * sql.DB
153
- if _ , err := ParseDSN (dsn3 ); err != errInvalidDSNUnsafeCollation {
154
- db3 , err = sql .Open ("mysql" , dsn3 )
155
- if err != nil {
156
- t .Fatalf ("error connecting: %s" , err .Error ())
157
- }
158
- defer db3 .Close ()
159
- }
160
-
161
- dbt := & DBTest {t , db }
162
- dbt2 := & DBTest {t , db2 }
163
- dbt3 := & DBTest {t , db3 }
164
151
for _ , test := range tests {
165
- test (dbt )
166
- dbt .db .Exec ("DROP TABLE IF EXISTS test" )
152
+ t .Run ("default" , func (t * testing.T ) {
153
+ dbt := & DBTest {t , db }
154
+ test (dbt )
155
+ dbt .db .Exec ("DROP TABLE IF EXISTS test" )
156
+ })
167
157
if db2 != nil {
168
- test (dbt2 )
169
- dbt2 .db .Exec ("DROP TABLE IF EXISTS test" )
170
- }
171
- if db3 != nil {
172
- test (dbt3 )
173
- dbt3 .db .Exec ("DROP TABLE IF EXISTS test" )
158
+ t .Run ("interpolateParams" , func (t * testing.T ) {
159
+ dbt2 := & DBTest {t , db2 }
160
+ test (dbt2 )
161
+ dbt2 .db .Exec ("DROP TABLE IF EXISTS test" )
162
+ })
174
163
}
175
164
}
176
165
}
@@ -316,6 +305,48 @@ func TestCRUD(t *testing.T) {
316
305
})
317
306
}
318
307
308
+ // TestNumbers test that selecting numeric columns.
309
+ // Both of textRows and binaryRows should return same type and value.
310
+ func TestNumbersToAny (t * testing.T ) {
311
+ runTests (t , dsn , func (dbt * DBTest ) {
312
+ dbt .mustExec ("CREATE TABLE `test` (id INT PRIMARY KEY, b BOOL, i8 TINYINT, " +
313
+ "i16 SMALLINT, i32 INT, i64 BIGINT, f32 FLOAT, f64 DOUBLE)" )
314
+ dbt .mustExec ("INSERT INTO `test` VALUES (1, true, 127, 32767, 2147483647, 9223372036854775807, 1.25, 2.5)" )
315
+
316
+ // Use binaryRows for intarpolateParams=false and textRows for intarpolateParams=true.
317
+ rows := dbt .mustQuery ("SELECT b, i8, i16, i32, i64, f32, f64 FROM `test` WHERE id=?" , 1 )
318
+ if ! rows .Next () {
319
+ dbt .Fatal ("no data" )
320
+ }
321
+ var b , i8 , i16 , i32 , i64 , f32 , f64 any
322
+ err := rows .Scan (& b , & i8 , & i16 , & i32 , & i64 , & f32 , & f64 )
323
+ if err != nil {
324
+ dbt .Fatal (err )
325
+ }
326
+ if b .(int64 ) != 1 {
327
+ dbt .Errorf ("b != 1" )
328
+ }
329
+ if i8 .(int64 ) != 127 {
330
+ dbt .Errorf ("i8 != 127" )
331
+ }
332
+ if i16 .(int64 ) != 32767 {
333
+ dbt .Errorf ("i16 != 32767" )
334
+ }
335
+ if i32 .(int64 ) != 2147483647 {
336
+ dbt .Errorf ("i32 != 2147483647" )
337
+ }
338
+ if i64 .(int64 ) != 9223372036854775807 {
339
+ dbt .Errorf ("i64 != 9223372036854775807" )
340
+ }
341
+ if f32 .(float32 ) != 1.25 {
342
+ dbt .Errorf ("f32 != 1.25" )
343
+ }
344
+ if f64 .(float64 ) != 2.5 {
345
+ dbt .Errorf ("f64 != 2.5" )
346
+ }
347
+ })
348
+ }
349
+
319
350
func TestMultiQuery (t * testing.T ) {
320
351
runTestsWithMultiStatement (t , dsn , func (dbt * DBTest ) {
321
352
// Create Table
@@ -1808,13 +1839,13 @@ func TestConcurrent(t *testing.T) {
1808
1839
}
1809
1840
1810
1841
runTests (t , dsn , func (dbt * DBTest ) {
1811
- var version string
1812
- if err := dbt .db .QueryRow ("SELECT @@version" ).Scan (& version ); err != nil {
1813
- dbt .Fatalf ( "%s" , err . Error () )
1814
- }
1815
- if strings .Contains (strings .ToLower (version ), "mariadb" ) {
1816
- t .Skip (`TODO: "fix commands out of sync. Did you run multiple statements at once?" on MariaDB` )
1817
- }
1842
+ // var version string
1843
+ // if err := dbt.db.QueryRow("SELECT @@version").Scan(&version); err != nil {
1844
+ // dbt.Fatal( err)
1845
+ // }
1846
+ // if strings.Contains(strings.ToLower(version), "mariadb") {
1847
+ // t.Skip(`TODO: "fix commands out of sync. Did you run multiple statements at once?" on MariaDB`)
1848
+ // }
1818
1849
1819
1850
var max int
1820
1851
err := dbt .db .QueryRow ("SELECT @@max_connections" ).Scan (& max )
0 commit comments