Hi William, Thanks, It is working with coalesce(functionThatMightReturnNull(), now()) without an explicit null;
Phoenix Version is 5.0.0.0 which uses HBase 2.0.5 I have not opened any issue for this, I am not sure how it is suppose to work. I am developing a phoenix driver for metabase <https://metabase.com/> (which is a BI/DataViz tool). It seems for optional query parameter, null values are directly set by the base metabase driver which I am trying to extend. I wish if phoenix can support explicit null values. thanks and regards, -Jestan On Tue, May 14, 2019 at 11:52 PM William Shen <wills...@marinsoftware.com> wrote: > Just took a look at the implementation, seems like Phoenix relies on the > first expression to not be an expression that is not just an explicit > "null" because it needs to evaluate for data type coercion. What's the use > case for specifying an explicit null? > > On the other hand, the following should work: > select coalesce(functionThatMightReturnNull(), now()) as date; > > On Tue, May 14, 2019 at 11:14 AM William Shen <wills...@marinsoftware.com> > wrote: > >> Jestan, >> It seems like a bug to me. What version of Phoenix are you using, and did >> you create a ticket already? >> >> On Tue, May 14, 2019 at 10:26 AM Jestan Nirojan <jestanniro...@gmail.com> >> wrote: >> >>> Hi, >>> >>> I am trying to use COALESCE function to handle default value in WHERE >>> condition like below. >>> >>> select * from table1 where created_date >= coalesce(null, trunc(now(), >>> 'day')); >>> >>> But it throws NullPointerException >>> >>> Caused by: java.lang.NullPointerException >>> at >>> org.apache.phoenix.schema.types.PDataType.equalsAny(PDataType.java:326) >>> at org.apache.phoenix.schema.types.PDate.isCoercibleTo(PDate.java:111) >>> at >>> org.apache.phoenix.expression.function.CoalesceFunction.<init>(CoalesceFunction.java:68) >>> ... 47 more >>> >>> I was able to reproduce the same error with following query >>> >>> select coalesce(null, now()) as date; >>> >>> Here are some other variant of same issue >>> >>> 1. select coalesce(now(), now()) as date; // returns 2019-05-14 >>> 2. select coalesce(now(), null) as date; // returns empty >>> 3. select coalesce(null, now()) as date; // throws exception >>> >>> I have tried the same for INT and VARCHAR, same outcome >>> Am I doing something wrong here or is coalesce suppose to return a non >>> null value ? >>> >>> thanks and regards, >>> -Jestan Nirojan >>> >>