|
|
@@ -1,82 +1,86 @@
|
|
|
-- ============================================================
|
|
|
-- 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'))
|
|
|
**/
|
|
|
;
|
|
|
|
|
|
-insert into /test/aaa/test_ext (e_name, e_value, e_text) values ('beforerun_set', 1, {%s,myvar})
|
|
|
-/**
|
|
|
-onerror(continue,'JsonKeyValue')
|
|
|
-**/
|
|
|
+/** sleep(2s) **/
|
|
|
;
|
|
|
|
|
|
select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_set'
|
|
|
/**
|
|
|
output()
|
|
|
-onerror(continue)
|
|
|
+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))
|
|
|
**/
|
|
|
;
|
|
|
|
|
|
-insert into /test/aaa/test_ext (e_name, e_value, e_text) values (concat('beforerun_add_', {%d,counter}), {%d,counter}, 'add test')
|
|
|
-/**
|
|
|
-onerror(continue)
|
|
|
-**/
|
|
|
+/** sleep(2s) **/
|
|
|
;
|
|
|
|
|
|
-select e_name, e_value from /test/aaa/test_ext where e_name=^'beforerun_add'
|
|
|
+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))
|
|
|
**/
|
|
|
;
|
|
|
|
|
|
-insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_time', concat('ct=', {%t,ct}))
|
|
|
+/** sleep(2s) **/
|
|
|
+;
|
|
|
+
|
|
|
+select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_time'
|
|
|
/**
|
|
|
-onerror(continue)
|
|
|
+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))
|
|
|
**/
|
|
|
;
|
|
|
|
|
|
-insert into /test/aaa/test_ext (e_name, e_value, e_text) values (concat('beforerun_mod_', {%d,mod_val}), {%d,mod_val}, 'mod test 17%5')
|
|
|
-/**
|
|
|
-onerror(continue)
|
|
|
-**/
|
|
|
+/** sleep(2s) **/
|
|
|
;
|
|
|
|
|
|
-select e_name, e_value from /test/aaa/test_ext where e_name=^'beforerun_mod'
|
|
|
+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')))
|
|
|
**/
|
|
|
;
|
|
|
|
|
|
-insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_yes', {%s,case_result})
|
|
|
+/** sleep(2s) **/
|
|
|
;
|
|
|
|
|
|
select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_case_yes'
|
|
|
@@ -87,15 +91,15 @@ 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')))
|
|
|
**/
|
|
|
;
|
|
|
|
|
|
-insert into /test/aaa/test_ext (e_name, e_text) values ('beforerun_case_no', {%s,case_result})
|
|
|
+/** sleep(2s) **/
|
|
|
;
|
|
|
|
|
|
select e_name, e_text from /test/aaa/test_ext where e_name='beforerun_case_no'
|
|
|
/**
|
|
|
output()
|