【详述】问题详细描述
在SQL的where条件中,存在一个and条件,and条件内部是几个or条件,尝试执行直接报错
eg:
explain SELECT * from report
where __d >= xxx
and __d < xxx
AND ((network_id IN (4441, 4595, 4844, 4872, 5043, 5132)) or a_bm_id = 746)
报错详细信息:
[2024-11-14 11:51:09] PhysicalOlapScanOperator {table=882034, selectedPartitionId=[10039285], selectedIndexId=9530694, outputColumns=[284: impr_cnt, 285: click_cnt, 286: install_cnt, 287: event_cnt, 288: revenue, 292: ocpa_event_cnt, 359: af_revenue, 187: __time, 200: network_id, 204: app_id], projection=[292: ocpa_event_cnt, 359: af_revenue, 200: network_id, from_unixtime(add(187: __time, 28800), %Y-%m-%d), 204: app_id, 284: impr_cnt, 285: click_cnt, 286: install_cnt, 287: event_cnt, 288: revenue], predicate=200: network_id IN (4441, 4595, 4844, 4872, 5043, 5132), prunedPartitionPredicates=[1: __d >= 2024-10-29, 1: __d < 2024-10-30], limit=-1}Input dependency cols check failed. The required cols {1} cannot obtain from input cols {186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362}.
【背景】做过哪些操作?
因为是部分天分区出现这个问题,将某一天的分区数据重刷之后,检查发现全表正常,但是过了几天又出现一样的问题
目前发现在And条件内部将字段进行一次IFNULL操作之后正常
条件改写:
AND ((ifnull(network_id,0) IN (4441, 4595, 4844, 4872, 5043, 5132)) or ifnull(a_bm_id,0) = 746)
【业务影响】
影响部分业务查询
【是否存算分离】
否
【StarRocks版本】
存算一体 3.2.12-5f81e3e
【集群规模】
3fe+16be
【联系方式】