|
|
@@ -63,7 +63,7 @@ func init() {
|
|
|
addr = env("MYSQL_TEST_ADDR", "localhost:3306")
|
|
|
dbname = env("MYSQL_TEST_DBNAME", "gotest")
|
|
|
netAddr = fmt.Sprintf("%s(%s)", prot, addr)
|
|
|
- dsn = fmt.Sprintf("%s:%s@%s/%s?timeout=30s&strict=true", user, pass, netAddr, dbname)
|
|
|
+ dsn = fmt.Sprintf("%s:%s@%s/%s?timeout=30s", user, pass, netAddr, dbname)
|
|
|
c, err := net.Dial(prot, addr)
|
|
|
if err == nil {
|
|
|
available = true
|
|
|
@@ -1170,82 +1170,6 @@ func TestFoundRows(t *testing.T) {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-func TestStrict(t *testing.T) {
|
|
|
- // ALLOW_INVALID_DATES to get rid of stricter modes - we want to test for warnings, not errors
|
|
|
- relaxedDsn := dsn + "&sql_mode='ALLOW_INVALID_DATES,NO_AUTO_CREATE_USER'"
|
|
|
- // make sure the MySQL version is recent enough with a separate connection
|
|
|
- // before running the test
|
|
|
- conn, err := MySQLDriver{}.Open(relaxedDsn)
|
|
|
- if conn != nil {
|
|
|
- conn.Close()
|
|
|
- }
|
|
|
- // Error 1231: Variable 'sql_mode' can't be set to the value of
|
|
|
- // 'ALLOW_INVALID_DATES' => skip test, MySQL server version is too old
|
|
|
- maybeSkip(t, err, 1231)
|
|
|
- runTests(t, relaxedDsn, func(dbt *DBTest) {
|
|
|
- dbt.mustExec("CREATE TABLE test (a TINYINT NOT NULL, b CHAR(4))")
|
|
|
-
|
|
|
- var queries = [...]struct {
|
|
|
- in string
|
|
|
- codes []string
|
|
|
- }{
|
|
|
- {"DROP TABLE IF EXISTS no_such_table", []string{"1051"}},
|
|
|
- {"INSERT INTO test VALUES(10,'mysql'),(NULL,'test'),(300,'Open Source')", []string{"1265", "1048", "1264", "1265"}},
|
|
|
- }
|
|
|
- var err error
|
|
|
-
|
|
|
- var checkWarnings = func(err error, mode string, idx int) {
|
|
|
- if err == nil {
|
|
|
- dbt.Errorf("expected STRICT error on query [%s] %s", mode, queries[idx].in)
|
|
|
- }
|
|
|
-
|
|
|
- if warnings, ok := err.(MySQLWarnings); ok {
|
|
|
- var codes = make([]string, len(warnings))
|
|
|
- for i := range warnings {
|
|
|
- codes[i] = warnings[i].Code
|
|
|
- }
|
|
|
- if len(codes) != len(queries[idx].codes) {
|
|
|
- dbt.Errorf("unexpected STRICT error count on query [%s] %s: Wanted %v, Got %v", mode, queries[idx].in, queries[idx].codes, codes)
|
|
|
- }
|
|
|
-
|
|
|
- for i := range warnings {
|
|
|
- if codes[i] != queries[idx].codes[i] {
|
|
|
- dbt.Errorf("unexpected STRICT error codes on query [%s] %s: Wanted %v, Got %v", mode, queries[idx].in, queries[idx].codes, codes)
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- dbt.Errorf("unexpected error on query [%s] %s: %s", mode, queries[idx].in, err.Error())
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // text protocol
|
|
|
- for i := range queries {
|
|
|
- _, err = dbt.db.Exec(queries[i].in)
|
|
|
- checkWarnings(err, "text", i)
|
|
|
- }
|
|
|
-
|
|
|
- var stmt *sql.Stmt
|
|
|
-
|
|
|
- // binary protocol
|
|
|
- for i := range queries {
|
|
|
- stmt, err = dbt.db.Prepare(queries[i].in)
|
|
|
- if err != nil {
|
|
|
- dbt.Errorf("error on preparing query %s: %s", queries[i].in, err.Error())
|
|
|
- }
|
|
|
-
|
|
|
- _, err = stmt.Exec()
|
|
|
- checkWarnings(err, "binary", i)
|
|
|
-
|
|
|
- err = stmt.Close()
|
|
|
- if err != nil {
|
|
|
- dbt.Errorf("error on closing stmt for query %s: %s", queries[i].in, err.Error())
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
-}
|
|
|
-
|
|
|
func TestTLS(t *testing.T) {
|
|
|
tlsTest := func(dbt *DBTest) {
|
|
|
if err := dbt.db.Ping(); err != nil {
|
|
|
@@ -1762,7 +1686,7 @@ func TestCustomDial(t *testing.T) {
|
|
|
return net.Dial(prot, addr)
|
|
|
})
|
|
|
|
|
|
- db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@mydial(%s)/%s?timeout=30s&strict=true", user, pass, addr, dbname))
|
|
|
+ db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@mydial(%s)/%s?timeout=30s", user, pass, addr, dbname))
|
|
|
if err != nil {
|
|
|
t.Fatalf("error connecting: %s", err.Error())
|
|
|
}
|
|
|
@@ -1859,7 +1783,7 @@ func TestUnixSocketAuthFail(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
t.Logf("socket: %s", socket)
|
|
|
- badDSN := fmt.Sprintf("%s:%s@unix(%s)/%s?timeout=30s&strict=true", user, badPass, socket, dbname)
|
|
|
+ badDSN := fmt.Sprintf("%s:%s@unix(%s)/%s?timeout=30s", user, badPass, socket, dbname)
|
|
|
db, err := sql.Open("mysql", badDSN)
|
|
|
if err != nil {
|
|
|
t.Fatalf("error connecting: %s", err.Error())
|