@@ -1609,35 +1609,32 @@ func TestCollation(t *testing.T) {
1609
1609
t .Skipf ("MySQL server not running on %s" , netAddr )
1610
1610
}
1611
1611
1612
- defaultCollation := "utf8mb4_general_ci"
1612
+ // MariaDB may override collation specified by handshake with `character_set_collations` variable.
1613
+ // https://mariadb.com/kb/en/setting-character-sets-and-collations/#changing-default-collation
1614
+ // https://mariadb.com/kb/en/server-system-variables/#character_set_collations
1615
+ // utf8mb4_general_ci, utf8mb3_general_ci will be overridden by default MariaDB.
1616
+ // Collations other than charasets default are not overridden. So utf8mb4_unicode_ci is safe.
1613
1617
testCollations := []string {
1614
- "" , // do not set
1615
- defaultCollation , // driver default
1616
1618
"latin1_general_ci" ,
1617
1619
"binary" ,
1618
1620
"utf8mb4_unicode_ci" ,
1619
1621
"cp1257_bin" ,
1620
1622
}
1621
1623
1622
1624
for _ , collation := range testCollations {
1623
- var expected , tdsn string
1624
- if collation != "" {
1625
- tdsn = dsn + "&collation=" + collation
1626
- expected = collation
1627
- } else {
1628
- tdsn = dsn
1629
- expected = defaultCollation
1630
- }
1631
-
1632
- runTests (t , tdsn , func (dbt * DBTest ) {
1633
- var got string
1634
- if err := dbt .db .QueryRow ("SELECT @@collation_connection" ).Scan (& got ); err != nil {
1635
- dbt .Fatal (err )
1636
- }
1625
+ t .Run (collation , func (t * testing.T ) {
1626
+ tdsn := dsn + "&collation=" + collation
1627
+ expected := collation
1637
1628
1638
- if got != expected {
1639
- dbt .Fatalf ("expected connection collation %s but got %s" , expected , got )
1640
- }
1629
+ runTests (t , tdsn , func (dbt * DBTest ) {
1630
+ var got string
1631
+ if err := dbt .db .QueryRow ("SELECT @@collation_connection" ).Scan (& got ); err != nil {
1632
+ dbt .Fatal (err )
1633
+ }
1634
+ if got != expected {
1635
+ dbt .Fatalf ("expected connection collation %s but got %s" , expected , got )
1636
+ }
1637
+ })
1641
1638
})
1642
1639
}
1643
1640
}
@@ -1685,16 +1682,16 @@ func TestRawBytesResultExceedsBuffer(t *testing.T) {
1685
1682
}
1686
1683
1687
1684
func TestTimezoneConversion (t * testing.T ) {
1688
- zones := []string {"UTC" , "US/Central " , "US/Pacific " , "Local" }
1685
+ zones := []string {"UTC" , "America/New_York " , "Asia/Hong_Kong " , "Local" }
1689
1686
1690
1687
// Regression test for timezone handling
1691
1688
tzTest := func (dbt * DBTest ) {
1692
1689
// Create table
1693
1690
dbt .mustExec ("CREATE TABLE test (ts TIMESTAMP)" )
1694
1691
1695
1692
// Insert local time into database (should be converted)
1696
- usCentral , _ := time .LoadLocation ("US/Central " )
1697
- reftime := time .Date (2014 , 05 , 30 , 18 , 03 , 17 , 0 , time .UTC ).In (usCentral )
1693
+ newYorkTz , _ := time .LoadLocation ("America/New_York " )
1694
+ reftime := time .Date (2014 , 05 , 30 , 18 , 03 , 17 , 0 , time .UTC ).In (newYorkTz )
1698
1695
dbt .mustExec ("INSERT INTO test VALUE (?)" , reftime )
1699
1696
1700
1697
// Retrieve time from DB
@@ -1713,7 +1710,7 @@ func TestTimezoneConversion(t *testing.T) {
1713
1710
// Check that dates match
1714
1711
if reftime .Unix () != dbTime .Unix () {
1715
1712
dbt .Errorf ("times do not match.\n " )
1716
- dbt .Errorf (" Now(%v)=%v\n " , usCentral , reftime )
1713
+ dbt .Errorf (" Now(%v)=%v\n " , newYorkTz , reftime )
1717
1714
dbt .Errorf (" Now(UTC)=%v\n " , dbTime )
1718
1715
}
1719
1716
}
@@ -3541,6 +3538,15 @@ func TestConnectionAttributes(t *testing.T) {
3541
3538
3542
3539
dbt := & DBTest {t , db }
3543
3540
3541
+ var varName string
3542
+ var varValue string
3543
+ err := dbt .db .QueryRow ("SHOW VARIABLES LIKE 'performance_schema'" ).Scan (& varName , & varValue )
3544
+ if err != nil {
3545
+ t .Fatalf ("error: %s" , err .Error ())
3546
+ }
3547
+ if varValue != "ON" {
3548
+ t .Skipf ("Performance schema is not enabled. skipping" )
3549
+ }
3544
3550
queryString := "SELECT ATTR_NAME, ATTR_VALUE FROM performance_schema.session_account_connect_attrs WHERE PROCESSLIST_ID = CONNECTION_ID()"
3545
3551
rows := dbt .mustQuery (queryString )
3546
3552
defer rows .Close ()
0 commit comments