code: func adjustMySQLConfig(conf *mysql.Config) *mysql.Config {
  	// Required to turn DATETIME fields into time.Time
  	conf.ParseTime = true
  
  	// Required to make UPDATE return the number of rows matched,
  	// instead of the number of rows changed by the UPDATE.
  	conf.ClientFoundRows = true
  
  	// Ensures that MySQL/MariaDB warnings are treated as errors. This
  	// avoids a number of nasty edge conditions we could wander into.
  	// Common things this discovers includes places where data being sent
  	// had a different type than what is in the schema, strings being
  	// truncated, writing null to a NOT NULL column, and so on. See
  	// <https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sql-mode-strict>.
  	conf.Params = make(map[string]string)
  	conf.Params["sql_mode"] = "STRICT_ALL_TABLES"
  
  	// If a read timeout is set, we set max_statement_time to 95% of that, and
  	// long_query_time to 80% of that. That way we get logs of queries that are
  	// close to timing out but not yet doing so, and our queries get stopped by
  	// max_statement_time before timing out the read. This generates clearer
  	// errors, and avoids unnecessary reconnects.
  	if conf.ReadTimeout != 0 {
  		// In MariaDB, max_statement_time and long_query_time are both seconds.
  		// Note: in MySQL (which we don't use), max_statement_time is millis.
  		readTimeout := conf.ReadTimeout.Seconds()
  		conf.Params["max_statement_time"] = fmt.Sprintf("%g", readTimeout*0.95)
  		conf.Params["long_query_time"] = fmt.Sprintf("%g", readTimeout*0.80)
  	}
  
  	return conf
  }
docs: // adjustMySQLConfig sets certain flags that we want on every connection.