luoyuxia created FLINK-27407: -------------------------------- Summary: Exception of "unable to find common type of Boolean and Char(4)" will be thrown when RexSarg contains "Boolean" and "Char(4)" Key: FLINK-27407 URL: https://issues.apache.org/jira/browse/FLINK-27407 Project: Flink Issue Type: Bug Reporter: luoyuxia
For Flink SQL, the following sql can be excuted: {code:java} create table t1 (id bigint, name string, is_normal_play boolean); select * from t1 where (name = '111') and is_normal_play = 'true'; {code} But the following sql will throw exception: {code:java} select * from t1 where (name = '111' or name = '222') and is_normal_play = 'true' {code} After some debuging, I found the reason is the expression "(name = '111' or name = '222') and is_normal_play = 'true' " will be simplified with each operand simplified to SEARCH operator. So is_normal_play = 'true' will be converted to SEARCH(is_normal_play, 'true'); Then during code gen for Search operator in "SearchOperatorGen#generateSearch", it will try to find the common tyoe between Boolean and Char(4) coresponding to is_normal_play, 'true'. But there's no any implicit cast between Boolean and Char(4), so the exception is thrown " org.apache.flink.table.planner.codegen.CodeGenException: Unable to find common type of GeneratedExpression(field$10,isNull$10,,BOOLEAN,None) and Sarg[_UTF-16LE'true']:CHAR(4) CHARACTER SET "UTF-16LE". " . -- This message was sent by Atlassian Jira (v8.20.7#820007)