parser: support do some adminStmt in read-only mode (#37635)
close pingcap/tidb#37631
This commit is contained in:
@ -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]
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user