Hi Navis,

I suspected that the parser only accepted an expression like (value1,
value2, value3...) as input. I guess one solution as you say would be to
add an array as an allowed argument to IN. I do not know if other SQL
dialects allow this. Another way would be to introduce a new type of UDF
that is expanded before it is sent to the parser (use string as return
type). Much like variables are handled I guess.

Thanks,
Petter


2014-03-11 2:32 GMT+01:00 Navis류승우 <navis....@nexr.com>:

> (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
>

Reply via email to