tuple.isNull(colName) to test for emptiness also seems useful. пн, 12 июл. 2021 г. в 18:20, Alexei Scherbakov <alexey.scherbak...@gmail.com >:
> +1 to make some improvements here. > > Using Optional doesn't make sense to me because it always involves boxing > (and we already have tuple.value(colName)). > > I suggest to add methods similar to: > > tuple.doubleValue("field", double dfltValue) > > which returns default value if the field is null. > > > ср, 7 июл. 2021 г. в 08:34, Ivan Daschinsky <ivanda...@gmail.com>: > >> Function basically returns two values. if value is null, it returns smth >> like false, NaN, otherwise ,smth like true, 4.5. Syntax is a bit weird as >> for me, but it is better than nothing. >> >> >> In golang it looks like this: >> >> if isValid, val:= getVal; isValid { >> .... >> } >> >> >> >> ср, 7 июл. 2021 г., 00:28 Valentin Kulichenko < >> valentin.kuliche...@gmail.com >> >: >> >> > So what happens if the value is NULL? Exception? >> > >> > -Val >> > >> > On Tue, Jul 6, 2021 at 1:52 PM Ivan Daschinsky <ivanda...@gmail.com> >> > wrote: >> > >> > > > Out of curiosity, what would this code do if the value is NULL? >> What is >> > > the >> > > type of the 'weight' variable? >> > > >> > > float of course. >> > > https://www.c-sharpcorner.com/article/out-parameter-in-c-sharp-7/ >> > > >> > > >> > > вт, 6 июл. 2021 г., 22:30 Valentin Kulichenko < >> > > valentin.kuliche...@gmail.com >> > > >: >> > > >> > > > Pavel, >> > > > >> > > > Optionals are available in Java and we can use them. This is still >> > boxing >> > > > though, and I don't know what the performance impact would be. In >> > > addition, >> > > > optional API is redundant for non-nullable fields. Perhaps, we can >> > > provide >> > > > both options (e.g. having intValue() and intValueOptional() >> methods). >> > > > >> > > > Out of curiosity, what would this code do if the value is NULL? >> What is >> > > the >> > > > type of the 'weight' variable? >> > > > >> > > > if (tuple.TryGetFloatValue("weight", out var weight)) >> > > > doSomething(weight) >> > > > >> > > > -Val >> > > > >> > > > On Tue, Jul 6, 2021 at 2:13 AM Ivan Daschinsky <ivanda...@gmail.com >> > >> > > > wrote: >> > > > >> > > > > Ah, I see, you meant Optionals family. Yep, it is worth to think >> > about. >> > > > > >> > > > > вт, 6 июл. 2021 г., 10:06 Pavel Tupitsyn <ptupit...@apache.org>: >> > > > > >> > > > > > Ivan, >> > > > > > >> > > > > > Nothing wrong except for performance concerns. >> > > > > > The following code looks up the column by name twice: >> > > > > > >> > > > > > if (!tuple.isNull("weight")) >> > > > > > doSomething(tuple.floatValue("weight")) >> > > > > > >> > > > > > Whereas in other languages you could do it in one shot: >> > > > > > >> > > > > > if (tuple.TryGetFloatValue("weight", out var weight)) >> > > > > > doSomething(weight) >> > > > > > >> > > > > > or Option<float> weight = tuple.floatValue("weight") and so on. >> > > > > > >> > > > > > On Tue, Jul 6, 2021 at 9:58 AM Ivan Daschinsky < >> > ivanda...@gmail.com> >> > > > > > wrote: >> > > > > > >> > > > > > > Sorry, but what is wrong with simple method isNull() >> > > > > > > >> > > > > > > вт, 6 июл. 2021 г., 09:55 Pavel Tupitsyn < >> ptupit...@apache.org>: >> > > > > > > >> > > > > > > > Val, >> > > > > > > > >> > > > > > > > > I don't think there is a significantly better way >> > > > > > > > > of doing this in Java. >> > > > > > > > >> > > > > > > > Yep looks like there is no way to return two values without >> > > boxing. >> > > > > > > > No ref, no out, no value types. >> > > > > > > > >> > > > > > > > > Schema already provides this information, doesn't it? >> > > > > > > > >> > > > > > > > It does, though we don't have an agreement on how to expose >> > this >> > > on >> > > > > > > public >> > > > > > > > API yet, >> > > > > > > > or do we? >> > > > > > > > >> > > > > > > > On Tue, Jul 6, 2021 at 12:44 AM Valentin Kulichenko < >> > > > > > > > valentin.kuliche...@gmail.com> wrote: >> > > > > > > > >> > > > > > > > > Pavel, >> > > > > > > > > >> > > > > > > > > That's a good point, but I don't think there is a >> > significantly >> > > > > > better >> > > > > > > > way >> > > > > > > > > of doing this in Java. >> > > > > > > > > >> > > > > > > > > There should be a way to check if a field is nullable or >> not >> > > > > though. >> > > > > > > > Schema >> > > > > > > > > already provides this information, doesn't it? >> > > > > > > > > >> > > > > > > > > -Val >> > > > > > > > > >> > > > > > > > > On Mon, Jul 5, 2021 at 11:03 AM Pavel Tupitsyn < >> > > > > ptupit...@apache.org >> > > > > > > >> > > > > > > > > wrote: >> > > > > > > > > >> > > > > > > > > > Igniters, >> > > > > > > > > > >> > > > > > > > > > Looks like Tuple API has no efficient way to tell if a >> > value >> > > > for >> > > > > a >> > > > > > > > > nullable >> > > > > > > > > > column of primitive type is null. >> > > > > > > > > > >> > > > > > > > > > - Tuple#intValue() will return 0 when the actual value >> is >> > > null >> > > > => >> > > > > > not >> > > > > > > > > clear >> > > > > > > > > > if 0 is 0 or null. >> > > > > > > > > > - Tuple#value() works, but is more expensive due to >> boxing >> > > and >> > > > > type >> > > > > > > > > lookup. >> > > > > > > > > > >> > > > > > > > > > Any ideas on how to improve this? >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> > > > -- > > Best regards, > Alexei Scherbakov > -- Best regards, Alexei Scherbakov