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

Reply via email to