Skip to content

Commit 1705550

Browse files
committed
drop read-only transactions support
1 parent 06b17e6 commit 1705550

File tree

2 files changed

+4
-59
lines changed

2 files changed

+4
-59
lines changed

connection_go18.go

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,15 @@ func (mc *mysqlConn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver
4848
if sql.IsolationLevel(opts.Isolation) != sql.LevelDefault {
4949
return nil, errors.New("mysql: isolation levels not supported")
5050
}
51+
if opts.ReadOnly {
52+
return nil, errors.New("mysql: read-only transactions not supported")
53+
}
5154

5255
if err := mc.watchCancel(ctx); err != nil {
5356
return nil, err
5457
}
5558

56-
var err error
57-
var tx driver.Tx
58-
if opts.ReadOnly {
59-
tx, err = mc.beginReadOnly()
60-
} else {
61-
tx, err = mc.Begin()
62-
}
59+
tx, err := mc.Begin()
6360
mc.finish()
6461
if err != nil {
6562
return nil, err
@@ -74,20 +71,6 @@ func (mc *mysqlConn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver
7471
return tx, err
7572
}
7673

77-
func (mc *mysqlConn) beginReadOnly() (driver.Tx, error) {
78-
if mc.isBroken() {
79-
errLog.Print(ErrInvalidConn)
80-
return nil, driver.ErrBadConn
81-
}
82-
// https://dev.mysql.com/doc/refman/5.7/en/innodb-performance-ro-txn.html
83-
err := mc.exec("START TRANSACTION READ ONLY")
84-
if err != nil {
85-
return nil, err
86-
}
87-
88-
return &mysqlTx{mc}, nil
89-
}
90-
9174
func (mc *mysqlConn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) {
9275
dargs, err := namedValueToValue(args)
9376
if err != nil {

driver_go18_test.go

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -466,41 +466,3 @@ func TestContextCancelBegin(t *testing.T) {
466466
}
467467
})
468468
}
469-
470-
func TestContextBeginReadOnly(t *testing.T) {
471-
runTests(t, dsn, func(dbt *DBTest) {
472-
dbt.mustExec("CREATE TABLE test (v INTEGER)")
473-
ctx, cancel := context.WithCancel(context.Background())
474-
defer cancel()
475-
476-
tx, err := dbt.db.BeginTx(ctx, &sql.TxOptions{
477-
ReadOnly: true,
478-
})
479-
if _, ok := err.(*MySQLError); ok {
480-
dbt.Skip("It seems that your MySQL does not support READ ONLY transactions")
481-
return
482-
} else if err != nil {
483-
dbt.Fatal(err)
484-
}
485-
486-
// INSERT queries fail in a READ ONLY transaction.
487-
_, err = tx.ExecContext(ctx, "INSERT INTO test VALUES (1)")
488-
if _, ok := err.(*MySQLError); !ok {
489-
dbt.Errorf("expected MySQLError, got %v", err)
490-
}
491-
492-
// SELECT queries can be executed.
493-
var v int
494-
row := tx.QueryRowContext(ctx, "SELECT COUNT(*) FROM test")
495-
if err := row.Scan(&v); err != nil {
496-
dbt.Fatal(err)
497-
}
498-
if v != 0 {
499-
dbt.Errorf("expected val to be 0, got %d", v)
500-
}
501-
502-
if err := tx.Commit(); err != nil {
503-
dbt.Fatal(err)
504-
}
505-
})
506-
}

0 commit comments

Comments
 (0)