| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- -- ============================================================
- -- beforerun 函数链:set / add / mod / case
- -- 注意:beforerun 设置的变量作用范围为「当前 mql 请求」(同一条语句),
- -- 因此 beforerun 动作必须与使用变量的语句写在同一条语句内。
- -- 校验前需 sleep 等待 Cassandra 索引可见(index.delay 默认 10s,实测约 2s)。
- -- ============================================================
- -- 1. beforerun set 设置变量(字符串需加引号)
- insert into /test/aaa/test_ext (e_name, e_value, e_text) values ('beforerun_set', 1, '{%s,myvar}')
- /**
- beforerun(set(myvar, 'hello_mql'))
- **/
- ;
- /** sleep(2s) **/
- ;
- select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_set'
- /**
- output()
- match("e_text","hello_mql")
- **/
- ;
- -- 2. beforerun add 累加
- insert into /test/aaa/test_ext (e_name, e_value, e_text) values ('beforerun_add', {%d,counter}, 'add test')
- /**
- beforerun(set(counter, 10), add(counter, 5))
- **/
- ;
- /** sleep(2s) **/
- ;
- select e_name, e_value from /test/aaa/test_ext where e_name='beforerun_add'
- /**
- output()
- match("e_value",15)
- **/
- ;
- -- 3. beforerun add 带单位(时间累加)
- insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_time', '{%t,ct}')
- /**
- beforerun(set(ct, '2024-01-01 00:00:00'), add(ct, 30, second))
- **/
- ;
- /** sleep(2s) **/
- ;
- select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_time'
- /**
- output()
- match("e_text","2024-01-01 00:00:30")
- **/
- ;
- -- 4. beforerun mod 取模
- insert into /test/aaa/test_ext (e_name, e_value, e_text) values ('beforerun_mod', {%d,mod_val}, 'mod test 17%5')
- /**
- beforerun(set(mod_val, 17), mod(mod_val, 5))
- **/
- ;
- /** sleep(2s) **/
- ;
- select e_name, e_value from /test/aaa/test_ext where e_name='beforerun_mod'
- /**
- output()
- match("e_value",2)
- **/
- ;
- -- 5. beforerun case 条件判断(条件匹配)
- insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_yes', '{%s,case_result}')
- /**
- beforerun(set(case_val, 'yes'), set(case_result, 'default'), case(case_val=='yes', set(case_result, 'matched')))
- **/
- ;
- /** sleep(2s) **/
- ;
- select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_case_yes'
- /**
- output()
- match("e_text","matched")
- **/
- ;
- -- 6. beforerun case 条件不匹配
- insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_no', '{%s,case_result}')
- /**
- beforerun(set(case_val, 'no'), set(case_result, 'default'), case(case_val=='yes', set(case_result, 'matched')))
- **/
- ;
- /** sleep(2s) **/
- ;
- select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_case_no'
- /**
- output()
- match("e_text","default")
- **/
- ;
|