[ https://issues.apache.org/jira/browse/HIVE-16731?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Teddy Choi updated HIVE-16731: ------------------------------ Attachment: HIVE-16731.1.patch The existing implementation handled only one simple case. It's two of columns or non-null constants, such as "CASE WHEN bool1 THEN column1 ELSE value1 END". It's easy to translate into an equivalent IF expression, "IF(bool1, column1, value1)". So I made it to handle multiple WHEN clauses and an optional ELSE clause with a recursive method. Null values are common in WHEN clauses, but they are excluded in vectorization process. So I made IfNullColumn and IfColumnNull classes to support them. It's hard to include the classes in VectorizedExpressions annotation in GenericUDFIf class, because description treats void as a member of integer family, which is already existing one. But it's possible to handle them in VectorizedContext.getIfExpression. > Vectorization: Make "CASE WHEN (day_name='Sunday') THEN column1 ELSE null > end" that involves a column name or expression THEN or ELSE vectorize > ----------------------------------------------------------------------------------------------------------------------------------------------- > > Key: HIVE-16731 > URL: https://issues.apache.org/jira/browse/HIVE-16731 > Project: Hive > Issue Type: Bug > Reporter: Matt McCline > Assignee: Teddy Choi > Priority: Critical > Attachments: HIVE-16731.1.patch > > > Currently, CASE WHEN statements like that become VectorUDFAdaptor expressions. -- This message was sent by Atlassian JIRA (v6.4.14#64029)