From 38ce61da403afa084079a3c23b0b7522831c59c9 Mon Sep 17 00:00:00 2001 From: lihangyu <15605149486@163.com> Date: Fri, 22 Mar 2024 18:03:08 +0800 Subject: [PATCH] [Fix](variant) filter with variant access may lead to to parition/tablet prune fall through (#32560) (#32680) Query like `select * from ut_p partitions(p2) where cast(var['a'] as int) > 0` will fall through parition/tablet prunning since it's plan like ``` mysql> explain analyzed plan select * from ut_p where id = 3 and cast(var['a'] as int) = 789; +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Explain String(Nereids Planner) | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | LogicalResultSink[26] ( outputExprs=[id#0, var#1] ) | | +--LogicalProject[25] ( distinct=false, projects=[id#0, var#1], excepts=[] ) | | +--LogicalFilter[24] ( predicates=((cast(var#4 as INT) = 789) AND (id#0 = 3)) ) | | +--LogicalFilter[23] ( predicates=(0 = __DORIS_DELETE_SIGN__#2) ) | | +--LogicalProject[22] ( distinct=false, projects=[id#0, var#1, __DORIS_DELETE_SIGN__#2, __DORIS_VERSION_COL__#3, element_at(var#1, 'a') AS `var`#4], excepts=[] ) | | +--LogicalOlapScan ( qualified=regression_test_variant_p0.ut_p, indexName=, selectedIndexId=10145, preAgg=ON ) | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 6 rows in set (0.01 sec) ``` with an extra LogicalProject on top of LogicalOlapScan, so we should handle such case to prune parition/tablet