|
| 1 | +drop table if exists t1; |
| 2 | +create table t1 (a int); |
| 3 | +insert into t1 values (1),(2); |
| 4 | +set global rds_sql_select_filter= "+"; |
| 5 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '+' |
| 6 | +set global rds_sql_select_filter= "+,1"; |
| 7 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '+,1' |
| 8 | +set global rds_sql_select_filter= "+,1,"; |
| 9 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '+,1,' |
| 10 | +set global rds_sql_select_filter= "+,1,~"; |
| 11 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '+,1,~' |
| 12 | +set global rds_sql_select_filter= "+,0,a=1~"; |
| 13 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '+,0,a=1~' |
| 14 | +set global rds_sql_update_filter= "+"; |
| 15 | +ERROR 42000: Variable 'rds_sql_update_filter' can't be set to the value of '+' |
| 16 | +set global rds_sql_update_filter= "+,1"; |
| 17 | +ERROR 42000: Variable 'rds_sql_update_filter' can't be set to the value of '+,1' |
| 18 | +set global rds_sql_update_filter= "+,1,"; |
| 19 | +ERROR 42000: Variable 'rds_sql_update_filter' can't be set to the value of '+,1,' |
| 20 | +set global rds_sql_update_filter= "+,1,~"; |
| 21 | +ERROR 42000: Variable 'rds_sql_update_filter' can't be set to the value of '+,1,~' |
| 22 | +set global rds_sql_update_filter= "+,0,a=1~"; |
| 23 | +ERROR 42000: Variable 'rds_sql_update_filter' can't be set to the value of '+,0,a=1~' |
| 24 | +set global rds_sql_delete_filter= "+"; |
| 25 | +ERROR 42000: Variable 'rds_sql_delete_filter' can't be set to the value of '+' |
| 26 | +set global rds_sql_delete_filter= "+,1"; |
| 27 | +ERROR 42000: Variable 'rds_sql_delete_filter' can't be set to the value of '+,1' |
| 28 | +set global rds_sql_delete_filter= "+,1,"; |
| 29 | +ERROR 42000: Variable 'rds_sql_delete_filter' can't be set to the value of '+,1,' |
| 30 | +set global rds_sql_delete_filter= "+,1,~"; |
| 31 | +ERROR 42000: Variable 'rds_sql_delete_filter' can't be set to the value of '+,1,~' |
| 32 | +set global rds_sql_delete_filter= "+,0,a=1~"; |
| 33 | +ERROR 42000: Variable 'rds_sql_delete_filter' can't be set to the value of '+,0,a=1~' |
| 34 | +set global rds_sql_select_filter= "+,1,a=1~a=2"; |
| 35 | +show sql_filters; |
| 36 | +type item_id cur_conc max_conc key_num key_str |
| 37 | +SELECT 1 0 1 2 +,1,a=1~a=2 |
| 38 | +select * from t1 where a=2 or a=1; |
| 39 | +a |
| 40 | +1 |
| 41 | +2 |
| 42 | +set global rds_sql_select_filter= "+,0,a=1~a=2"; |
| 43 | +set global rds_sql_delete_filter= "+,0,a=1"; |
| 44 | +set global rds_sql_update_filter= "+,0,a= 16~a= 1"; |
| 45 | +show variables like 'rds_sql_%_filter'; |
| 46 | +Variable_name Value |
| 47 | +rds_sql_delete_filter +,0,a=1 |
| 48 | +rds_sql_select_filter +,0,a=1~a=2 |
| 49 | +rds_sql_update_filter +,0,a= 16~a= 1 |
| 50 | +select * from information_schema.sql_filter_info; |
| 51 | +TYPE ITEM_ID CUR_CONC MAX_CONC KEY_NUM KEY_STR |
| 52 | +SELECT 2 0 0 2 +,0,a=1~a=2 |
| 53 | +SELECT 1 0 1 2 +,1,a=1~a=2 |
| 54 | +UPDATE 4 0 0 2 +,0,a= 16~a= 1 |
| 55 | +DELETE 3 0 0 1 +,0,a=1 |
| 56 | +select * from t1 where a=2 or a=1; |
| 57 | +ERROR 70100: Query execution was interrupted |
| 58 | +update t1 set a= 16 where a= 1; |
| 59 | +ERROR 70100: Query execution was interrupted |
| 60 | +delete from t1 where a=1; |
| 61 | +ERROR 70100: Query execution was interrupted |
| 62 | +set global rds_filter_key_cmp_in_order = 1; |
| 63 | +select * from t1 where a=2 or a=1; |
| 64 | +a |
| 65 | +1 |
| 66 | +2 |
| 67 | +show sql_filters; |
| 68 | +type item_id cur_conc max_conc key_num key_str |
| 69 | +SELECT 2 0 0 2 +,0,a=1~a=2 |
| 70 | +SELECT 1 0 1 2 +,1,a=1~a=2 |
| 71 | +UPDATE 4 0 0 2 +,0,a= 16~a= 1 |
| 72 | +DELETE 3 0 0 1 +,0,a=1 |
| 73 | +set global rds_sql_select_filter= "-,1,2"; |
| 74 | +show sql_filters; |
| 75 | +type item_id cur_conc max_conc key_num key_str |
| 76 | +UPDATE 4 0 0 2 +,0,a= 16~a= 1 |
| 77 | +DELETE 3 0 0 1 +,0,a=1 |
| 78 | +create table t2 (a int); |
| 79 | +set global rds_sql_update_filter= "+,0,t1~t2"; |
| 80 | +update t1 as a,t2 as b set b.a=1 where a.a = b.a; |
| 81 | +ERROR 70100: Query execution was interrupted |
| 82 | +update t2 as b,t1 as a set b.a=1 where a.a = b.a; |
| 83 | +set global rds_sql_delete_filter= "+,0,t1~t2"; |
| 84 | +delete a from t1 as a,t2 as b where a.a = b.a; |
| 85 | +ERROR 70100: Query execution was interrupted |
| 86 | +delete a from t2 as b,t1 as a where a.a = b.a; |
| 87 | +set global rds_reset_all_filter= 1; |
| 88 | +set global rds_sql_select_filter= "+,0,a=1"; |
| 89 | +set global rds_sql_select_filter= "+,1,a=1"; |
| 90 | +select * from t1 where a=1; |
| 91 | +a |
| 92 | +1 |
| 93 | +set global rds_reset_all_filter= 1; |
| 94 | +set global rds_sql_select_filter= "+,1,a=1"; |
| 95 | +set global rds_sql_select_filter= "+,0,a=1"; |
| 96 | +select * from t1 where a=1; |
| 97 | +ERROR 70100: Query execution was interrupted |
| 98 | +set global rds_reset_all_filter= 1; |
| 99 | +set global rds_sql_select_filter= "+,1,a=1"; |
| 100 | +select * from t1 where sleep(1)=1 and a=1; |
| 101 | +select * from information_schema.sql_filter_info; |
| 102 | +TYPE ITEM_ID CUR_CONC MAX_CONC KEY_NUM KEY_STR |
| 103 | +SELECT 11 1 1 1 +,1,a=1 |
| 104 | +select * from t1 where a=1; |
| 105 | +ERROR 70100: Query execution was interrupted |
| 106 | +a |
| 107 | +set global rds_reset_all_filter= 1; |
| 108 | +set global rds_sql_update_filter= "+,1,a=1"; |
| 109 | +update t1 set a=2 where sleep(1)=1 and a=1; |
| 110 | +select * from information_schema.sql_filter_info; |
| 111 | +TYPE ITEM_ID CUR_CONC MAX_CONC KEY_NUM KEY_STR |
| 112 | +UPDATE 12 1 1 1 +,1,a=1 |
| 113 | +update t1 set a=1 where a=1; |
| 114 | +ERROR 70100: Query execution was interrupted |
| 115 | +set global rds_reset_all_filter= 1; |
| 116 | +set global rds_sql_delete_filter= "+,1,a=1"; |
| 117 | +delete from t1 where sleep(1)=1 and a=1; |
| 118 | +select * from information_schema.sql_filter_info; |
| 119 | +TYPE ITEM_ID CUR_CONC MAX_CONC KEY_NUM KEY_STR |
| 120 | +DELETE 13 1 1 1 +,1,a=1 |
| 121 | +delete from t1 where a=2 and a=1; |
| 122 | +ERROR 70100: Query execution was interrupted |
| 123 | +grant usage on test.* to user1@localhost; |
| 124 | +show sql_filters; |
| 125 | +ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation |
| 126 | +drop user user1@localhost; |
| 127 | +set global debug= "+d,sql_filter_fil_schema_error"; |
| 128 | +select * from information_schema.sql_filter_info; |
| 129 | +ERROR HY000: Unknown error |
| 130 | +set global debug= default; |
| 131 | +set global rds_reset_all_filter= 0; |
| 132 | +set global rds_sql_select_filter= concat('+,1,', repeat('a', 10241)); |
| 133 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '+,1,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' |
| 134 | +set global rds_sql_select_filter= '+,a=1'; |
| 135 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '+,a=1' |
| 136 | +set global rds_sql_select_filter= '-,'; |
| 137 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '-,' |
| 138 | +set global rds_sql_select_filter= '-,a=1'; |
| 139 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '-,a=1' |
| 140 | +set global rds_sql_select_filter= '+,0,a=1'; |
| 141 | +show sql_filters; |
| 142 | +type item_id cur_conc max_conc key_num key_str |
| 143 | +SELECT 14 0 0 1 +,0,a=1 |
| 144 | +DELETE 13 0 1 1 +,1,a=1 |
| 145 | +set global rds_sql_select_filter= '-,98,a=1'; |
| 146 | +ERROR 42000: Variable 'rds_sql_select_filter' can't be set to the value of '-,98,a=1' |
| 147 | +set global rds_reset_all_filter= 1; |
| 148 | +set global rds_sql_select_filter= '-,99'; |
| 149 | +set global debug= "+d,create_filter_item_error_0"; |
| 150 | +set global rds_sql_select_filter= '+,0,a=1'; |
| 151 | +ERROR HY000: Incorrect arguments to SET |
| 152 | +show sql_filters; |
| 153 | +type item_id cur_conc max_conc key_num key_str |
| 154 | +set global debug= default; |
| 155 | +set global debug= "+d,create_filter_item_error_1"; |
| 156 | +set global rds_sql_select_filter= '+,0,a1~a2'; |
| 157 | +ERROR HY000: Incorrect arguments to SET |
| 158 | +show sql_filters; |
| 159 | +type item_id cur_conc max_conc key_num key_str |
| 160 | +set global debug= default; |
| 161 | +set global debug= "+d,create_filter_item_error_2"; |
| 162 | +set global rds_sql_select_filter= '+,0,a1~a2'; |
| 163 | +ERROR HY000: Incorrect arguments to SET |
| 164 | +show sql_filters; |
| 165 | +type item_id cur_conc max_conc key_num key_str |
| 166 | +set global debug= default; |
| 167 | +set global debug= "+d,add_filter_item_error_0"; |
| 168 | +set global rds_sql_select_filter= '+,0,a1~a2'; |
| 169 | +ERROR HY000: Incorrect arguments to SET |
| 170 | +set global rds_sql_update_filter= '+,0,a1~a2'; |
| 171 | +ERROR HY000: Incorrect arguments to SET |
| 172 | +set global rds_sql_delete_filter= '+,0,a1~a2'; |
| 173 | +ERROR HY000: Incorrect arguments to SET |
| 174 | +show sql_filters; |
| 175 | +type item_id cur_conc max_conc key_num key_str |
| 176 | +set global debug= default; |
| 177 | +SET DEBUG_SYNC= 'find_matched_filter_and_update_after_get_cur_conc WAIT_FOR go'; |
| 178 | +set global rds_sql_select_filter= '+,2,a1a1'; |
| 179 | +show sql_filters; |
| 180 | +type item_id cur_conc max_conc key_num key_str |
| 181 | +SELECT 20 0 2 1 +,2,a1a1 |
| 182 | +select 'a1a1';; |
| 183 | +select 'a1a1' or sleep(2);; |
| 184 | +show sql_filters; |
| 185 | +type item_id cur_conc max_conc key_num key_str |
| 186 | +SELECT 20 1 2 1 +,2,a1a1 |
| 187 | +SET DEBUG_SYNC= 'now SIGNAL go'; |
| 188 | +a1a1 |
| 189 | +a1a1 |
| 190 | +show sql_filters; |
| 191 | +type item_id cur_conc max_conc key_num key_str |
| 192 | +SELECT 20 1 2 1 +,2,a1a1 |
| 193 | +set global rds_reset_all_filter= 1; |
| 194 | +'a1a1' or sleep(2) |
| 195 | +0 |
| 196 | +Warnings: |
| 197 | +Warning 1292 Truncated incorrect DOUBLE value: 'a1a1' |
| 198 | +set global debug= "+d,check_lock_filter_list_sync"; |
| 199 | +set global rds_sql_select_filter= '+,2,a1a1'; |
| 200 | +show sql_filters; |
| 201 | +type item_id cur_conc max_conc key_num key_str |
| 202 | +SELECT 21 0 2 1 +,2,a1a1 |
| 203 | +select 'a1a1';; |
| 204 | +set @tbegin = unix_timestamp(now()); |
| 205 | +set global rds_sql_select_filter= '+,2,a2a2'; |
| 206 | +set @tend = unix_timestamp(now()); |
| 207 | +select @tend - @tbegin; |
| 208 | +@tend - @tbegin |
| 209 | +2 |
| 210 | +a1a1 |
| 211 | +a1a1 |
| 212 | +set global debug= default; |
| 213 | +set global rds_sql_select_filter= ''; |
| 214 | +set global rds_sql_update_filter= ''; |
| 215 | +set global rds_sql_delete_filter= ''; |
| 216 | +set global rds_reset_all_filter= 1; |
| 217 | +set global rds_filter_key_cmp_in_order = 0; |
| 218 | +drop table t1; |
| 219 | +drop table t2; |
0 commit comments