Concurrent limiting rule fails to activate after deleting uppercase rule and re-creating lowercase rule
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 2.9k
- Forks
- 342
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 53
Description
Environment
Version information from bin/observer -V:
Starting seekdb (OceanBase seekdb) source revision 1-210636544cac7e10193998a38d7ce8e36cd031ad.
seekdb (OceanBase seekdb)
REVISION: 1-210636544cac7e10193998a38d7ce8e36cd031ad
BUILD_BRANCH: master
BUILD_TIME: Mar 27 2026 02:11:59
BUILD_FLAGS: RelWithDebInfo
BUILD_INFO:
Copyright (c) 2011-present OceanBase Inc.
Description / Steps to Reproduce
After creating a lowercase concurrent limiting rule, deleting a rule with the same name in uppercase, and then re-creating the lowercase rule, the concurrent limiting rule does not take effect. The expected error ERROR 11087 (HY000): SQL reach max ccl rule ccl_t1_rule_cafe, concurrent num 0 is not reported.
Reproduction Steps (using mysqltest on macOS)
-
Set up the environment and run the test:
cd /Users/admin/jingtu/macbranch/oceanbase-lite/tools/deploy source activate_obd.sh sh deploy_android_seekdb.sh export OCEANBASE_HOME=/Users/admin/jingtu/macbranch/oceanbase-lite obd test mysqltest android_seekdb \ --mysqltest-bin=${OCEANBASE_HOME}/deps/3rd/u01/obclient/bin/mysqltest \ --obclient-bin=${OCEANBASE_HOME}/deps/3rd/u01/obclient/bin/obclient \ --init-only \ --init-sql-dir=${OCEANBASE_HOME}/tools/deploy \ --init-sql-files='init.sql,init_user.sql|root@sys|test' obd test mysqltest android_seekdb \ --mysqltest-bin=${OCEANBASE_HOME}/deps/3rd/u01/obclient/bin/mysqltest \ --obclient-bin=${OCEANBASE_HOME}/deps/3rd/u01/obclient/bin/obclient \ --disable-reboot \ --test-set=ccl.ccl_other_mysql -
The test SQL (
ccl.ccl_other_mysql) includes the following sequence:drop table ccl_t1; create table ccl_t1 (c1 int, c2 varchar(32)); insert into ccl_t1 values(1, '123'); insert into ccl_t1 values(2, '456'); insert into ccl_t1 values(3, '789'); select * from ccl_t1 where c2 = 123; -- By default *lower_case_table_names = 1* -- 1 -- 1.1 lower-upper case CREATE CONCURRENT_LIMITING_RULE ccl_t1_rule_cafe ON test.ccl_t1 TO '%'@'%' FOR select WITH MAX_CONCURRENCY = 0; -- Upper rule name, should drop successfully DROP CONCURRENT_LIMITING_RULE CCL_t1_rule_cafe; -- 1.2 special character -- cafe and café are the same in mysql CREATE CONCURRENT_LIMITING_RULE ccl_t1_rule_café ON test.ccl_t1 TO '%'@'%' FOR select WITH MAX_CONCURRENCY = 0; -- rule name should be "ccl_t1_rule_café" select ccl_rule_name from oceanbase.DBA_OB_CCL_RULES; DROP CONCURRENT_LIMITING_RULE ccl_t1_rule_cafe; -- 2 -- 2.1 By default, the behavior of affect table name controled by *lower_case_table_names* CREATE CONCURRENT_LIMITING_RULE ccl_t1_rule_cafe ON test.CCL_t1 TO '%'@'%' FOR select WITH MAX_CONCURRENCY = 0; --sleep 5; -- compare is not lower case sensitive --error 0,11087 select * from ccl_t1; -
The test output shows the
select * from ccl_t1;query succeeds when it should fail with error 11087.

Note
Mapping between the "Target Branch" and "Iteration" attributes on the right side: https://work.oceanbase-dev.com/automerge/iteration-branch-map
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the ccl.ccl_other_mysql mysqltest case and the setup commands under tools/deploy. Reproduce the rule deletion and recreation sequence, then trace the concurrent limiting rule handling involved in the test. Done means the final SELECT reports error 11087 after the lowercase rule is recreated.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- mysql
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100