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