Crossposting to dev list.
---------- Forwarded message ---------- From: Andrey Mashenkov <amashen...@gridgain.com> Date: Thu, Nov 3, 2016 at 10:04 PM Subject: Re: Null column values - bug To: u...@ignite.apache.org Yes, you are right. This is a bug. It seems there should be smth like this: wasNull == curr.get(colIdx - 1) == null; I've create an issue https://issues.apache.org/jira/browse/IGNITE-4175 Thanks Anil ! On Thu, Nov 3, 2016 at 9:45 PM, Anil <anilk...@gmail.com> wrote: > following code i see in the JdbcResultSet. val is not null for null values > for string types. then val == null is false. correct ? > > T val = cls == String.class ? (T)String.valueOf(curr.get(colIdx - 1)) : > (T)curr.get(colIdx - 1); > > wasNull = val == null; > > On 3 November 2016 at 23:48, Andrey Mashenkov <amashen...@gridgain.com> > wrote: > >> No, wasNull is true if column value is null otherwise false. >> You can have wasNull() is true but getInt() is zero. E.g. getInt() return >> type is primitive and default value (zero) shoud be return for NULL fields. >> >> >> On Thu, Nov 3, 2016 at 9:11 PM, Anil <anilk...@gmail.com> wrote: >> >>> wasNull is false all the time for string types. correct ? >>> >>> On 3 November 2016 at 20:39, Andrey Mashenkov <amashen...@gridgain.com> >>> wrote: >>> >>>> Javadoc says that null value should be returned. >>>> >>>> But from the other side, there is wasNull() method, that should be use >>>> for null checks. >>>> >>>> >>>> >>>> On Thu, Nov 3, 2016 at 5:39 PM, Andrey Gura <ag...@apache.org> wrote: >>>> >>>>> String.valuOf(null) return "null" string by contract. >>>>> >>>>> On Thu, Nov 3, 2016 at 5:33 PM, Anil <anilk...@gmail.com> wrote: >>>>> >>>>>> HI , >>>>>> >>>>>> null values are returned as "null" with ignite jdbc result set. >>>>>> >>>>>> private <T> T getTypedValue(int colIdx, Class<T> cls) throws >>>>>> SQLException { >>>>>> ensureNotClosed(); >>>>>> ensureHasCurrentRow(); >>>>>> >>>>>> try { >>>>>> T val = cls == String.class ? >>>>>> (T)String.valueOf(curr.get(colIdx - 1)) : (T)curr.get(colIdx - 1); >>>>>> >>>>>> wasNull = val == null; >>>>>> >>>>>> return val; >>>>>> } >>>>>> catch (IndexOutOfBoundsException ignored) { >>>>>> throw new SQLException("Invalid column index: " + colIdx); >>>>>> } >>>>>> catch (ClassCastException ignored) { >>>>>> throw new SQLException("Value is an not instance of " + >>>>>> cls.getName()); >>>>>> } >>>>>> } >>>>>> >>>>>> >>>>>> if a column value is null (curr.get(colIdx - 1) return null but >>>>>> String.valueOf( (curr.get(colIdx - 1) ) is not null it is "null". >>>>>> >>>>>> ArrayList<String> obj = new ArrayList<String>(); >>>>>> obj.add(null); >>>>>> System.out.println(null == (String)String.valueOf(obj.get(0))); >>>>>> >>>>>> above Sysout is false. >>>>>> >>>>>> Fix : >>>>>> >>>>>> Object colValue = curr.get(colIdx - 1); >>>>>> >>>>>> T val = cls == String.class ? (String) colValue : (T) colValue; >>>>>> >>>>>> or return (T) colValue >>>>>> >>>>>> >>>>>> please let me know if you see any issues. thanks >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >