@@ -29,6 +29,8 @@ define_result!(Error);
29
29
#[ derive( Clone , Copy , Deserialize , Debug , PartialEq , Eq , Hash , Serialize , PartialOrd , Ord ) ]
30
30
pub enum BlockRule {
31
31
QueryWithoutPredicate ,
32
+ AnyQuery ,
33
+ AnyInsert ,
32
34
}
33
35
34
36
#[ derive( Default , Clone , Deserialize , Debug , Serialize ) ]
@@ -43,6 +45,8 @@ impl BlockRule {
43
45
fn should_limit ( & self , plan : & Plan ) -> bool {
44
46
match self {
45
47
BlockRule :: QueryWithoutPredicate => self . is_query_without_predicate ( plan) ,
48
+ BlockRule :: AnyQuery => matches ! ( plan, Plan :: Query ( _) ) ,
49
+ BlockRule :: AnyInsert => matches ! ( plan, Plan :: Insert ( _) ) ,
46
50
}
47
51
}
48
52
@@ -270,6 +274,16 @@ mod tests {
270
274
let insert="INSERT INTO test_table(key1, key2, field1, field2) VALUES('tagk', 1638428434000, 100, 'hello3')" ;
271
275
let insert_plan = sql_to_plan ( & mock, insert) ;
272
276
assert ! ( limiter. try_limit( & insert_plan) . is_ok( ) ) ;
277
+
278
+ let ( mock, limiter) = prepare_limiter_with_rules ( vec ! [ BlockRule :: AnyQuery ] ) ;
279
+ let query = "select * from test_table" ;
280
+ let query_plan = sql_to_plan ( & mock, query) ;
281
+ assert ! ( limiter. try_limit( & query_plan) . is_err( ) ) ;
282
+
283
+ let ( mock, limiter) = prepare_limiter_with_rules ( vec ! [ BlockRule :: AnyInsert ] ) ;
284
+ let insert="INSERT INTO test_table(key1, key2, field1, field2) VALUES('tagk', 1638428434000, 100, 'hello3')" ;
285
+ let insert_plan = sql_to_plan ( & mock, insert) ;
286
+ assert ! ( limiter. try_limit( & insert_plan) . is_err( ) ) ;
273
287
}
274
288
275
289
#[ test]
0 commit comments