parser: support do some adminStmt in read-only mode (#37635)

close pingcap/tidb#37631
This commit is contained in:
Hangjie Mo
2022-09-06 13:48:55 +08:00
committed by GitHub
parent 4a88efc9c9
commit c824784c9a
3 changed files with 16 additions and 0 deletions

View File

@ -4308,6 +4308,7 @@ func TestAdminShowDDLJobs(t *testing.T) {
require.NoError(t, err)
err = meta.NewMeta(txn).AddHistoryDDLJob(job, true)
require.NoError(t, err)
tk.Session().StmtCommit()
re = tk.MustQuery("admin show ddl jobs 1")
row = re.Rows()[0]

View File

@ -55,6 +55,15 @@ func IsReadOnly(node Node) bool {
}
}
return true
case *AdminStmt:
switch node.(*AdminStmt).Tp {
case AdminShowTelemetry, AdminShowDDL, AdminShowDDLJobs, AdminShowSlow,
AdminCaptureBindings, AdminShowNextRowID, AdminShowDDLJobQueries,
AdminShowDDLJobQueriesWithRange:
return true
default:
return false
}
default:
return false
}

View File

@ -155,6 +155,12 @@ func TestRestriction(t *testing.T) {
require.Error(t, err)
require.Equal(t, err.Error(), PriviledgedErrMsg)
// can do some Admin stmts
_, err = s.udb.Exec("admin show ddl jobs")
require.NoError(t, err)
_, err = s.udb.Exec("admin show slow recent 1")
require.NoError(t, err)
// turn off tidb_restricted_read_only does not affect tidb_super_read_only
setVariableNoError(t, s.db, TiDBRestrictedReadOnly, 0)