add subquery pull up rule group ut: single table part (1) subquery_basic_pullup_basic: basic part (2) subquery_basic_pullup_uk: using unique key (3) subquery_basic_pullup_and: with and (4) subquery_basic_pullup_or: with or (5) subquery_basic_pullup_and_subquery: with and subquery (6) subquery_basic_pullup_or_subquery: with or subquery multi table part (1) subquery_multitable_pullup_basic: basic part (2) subquery_multitable_pullup_and: with and (3) subquery_multitable_pullup_or: with or (4) subquery_multitable_pullup_and_subquery: with and subquery (5) subquery_multitable_pullup_or_subquery: with or subquery top op related, such as group by/having, order by, win func, select list: (1) subquery_topop_pullup_groupby: group by (2) subquery_topop_pullup_having: having (3) subquery_topop_pullup_orderby: order by (4) subquery_topop_pullup_winfunc: window function (5) subquery_topop_pullup_selectlist: select list misc, such as group by correlated, view, dml, etc: (1) subquery_misc_pullup_misc: group by correlated, view, etc (2) subquery_misc_pullup_dml: insert/update/delete
新加case注意事项
-
变量名前要写 def,否则是全局变量,并行跑的 case 的时候可能被其他 case 影响。
Problematic code:
ret = ***Correct code:
def ret = *** -
尽量不要在 case 中 global 的设置 session variable,或者修改集群配置,可能会影响其他 case。
Problematic code:
sql """set global enable_pipeline_x_engine=true;"""Correct code:
sql """set enable_pipeline_x_engine=true;""" -
如果必须要设置 global,或者要改集群配置,可以指定 case 以 nonConcurrent 的方式运行。
-
case 中涉及时间相关的,最好固定时间,不要用类似 now() 函数这种动态值,避免过一段时间后 case 就跑不过了。
Problematic code:
sql """select count(*) from table where created < now();"""Correct code:
sql """select count(*) from table where created < '2023-11-13';"""