(KW_IN expressions) -> ^(TOK_FUNCTION KW_IN $precedenceEqualExpression expressions)
expressions : LPAREN expression (COMMA expression)* RPAREN -> expression* ; You should have arguments of IN wrapped by parentheses. But It seemed not possible to use array returning expression in it (type mismatch in current hive). We might extend IN function to accept single array as a argument. 2014-03-11 8:16 GMT+09:00 java8964 <java8...@hotmail.com>: > I don't know from syntax point of view, if Hive will allow to do "columnA IN > UDF(columnB)". > > What I do know that even let's say above work, it won't do the partition > pruning. > > The partition pruning in Hive is strict static, any dynamic values provided > to partition column won't enable partition pruning, even though it is a > feature I missed too. > > Yong > > ________________________________ > Date: Mon, 10 Mar 2014 16:23:01 +0100 > Subject: Using an UDF in the WHERE (IN) clause > From: petter.von.dolw...@gmail.com > To: user@hive.apache.org > > > Hi, > > I'm trying to get the following query to work. The parser don't like it. > Anybody aware of a workaround? > > SELECT * FROM mytable WHERE partitionCol IN my_udf("2014-03-10"); > > partitionCol is my partition column of type INT and I want to achieve early > pruning. I've tried returning an array of INTs from my_udf and also a plain > string in the format (1,2,3). It seems like the parser wont allow me to put > an UDF in this place. > > Any help appreciated. > > Thanks, > Petter