On Tue, Jan 10, 2017 at 11:10 AM, Akalanka Pagoda Arachchi <
[email protected]> wrote:

> Replacing an empty string with a space is generally a bad practice in
> database perspective due to few reasons.
>
> 1. Issues with visibility (a DBA cannot tell the difference by directly
> looking at it)
> 2. As Madhawa pointed out, space is a different character and when we
> really want to represent a space in the column and differentiate between
> the empty and the space, it will be impossible.
> 3. Adds processing complexity
>
> The suggestion to use a space for empty strings is actually to denote an
> empty string by a special character since empty string is not supported in
> Oracle. Therefore instead of using a meaningless space character which
> introduces more complexity why not use a special string such as NULL or
> EMPTY?
>
If we select a special string we should ensure that those will never come
as a user input; I am doubtful we can assume that always.. Otherwise if a
user give "NULL" as an input, it will come back as "" right?

>
> Thanks,
> Akalanka.
>
> On Tue, Jan 10, 2017 at 11:01 AM, Madhawa Gunasekara <[email protected]>
> wrote:
>
>> So what will happen if the user sends a space? So It's better to add a
>> configuration to avoid these situations. then user can handle this. WDYT ?
>>
>> On Tue, Jan 10, 2017 at 10:54 AM, Uvindra Dias Jayasinha <
>> [email protected]> wrote:
>>
>>> To be more precise, if a user explicitly sends "" then we will set the
>>> value to space, enabling us to convert back to "".
>>>
>>> But if the field is not set(ignored by the user) then the default NULL
>>> will be saved. This will make things consistant across all DB's.
>>>
>>> On 10 January 2017 at 10:41, Uvindra Dias Jayasinha <[email protected]>
>>> wrote:
>>>
>>>> Note that there is a clear break in the UX of the REST API if we allow
>>>> pass empty strings to Oracle(due to the conversion to NULL). Oracle treats
>>>> "" as NULL but this is incorrect in the REST/JSON world.
>>>>
>>>> If a user enters an empty string "" they will expect to get "" back,
>>>> which will not happen with Oracles default behaviour. Therefore in order to
>>>> keep consistency of the REST API I dont see an alternative other than
>>>> having space as the default value. We can get rid of the space when
>>>> returning by simply trimming the String so we don't need to have any
>>>> special filtering logic.
>>>>
>>>> On 10 January 2017 at 10:34, Akalanka Pagoda Arachchi <
>>>> [email protected]> wrote:
>>>>
>>>>> +1 to keep default as NULL instead of a space.
>>>>>
>>>>> Having a space will require adding trimming logic to the underlying
>>>>> code and methods like 'isNullOrEmpty' will bypass this string if there's a
>>>>> space.
>>>>>
>>>>> Thanks,
>>>>> Akalanka.
>>>>>
>>>>> On Tue, Jan 10, 2017 at 10:23 AM, Lahiru Cooray <[email protected]>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jan 9, 2017 at 7:54 AM, Isuru Haththotuwa <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Jan 6, 2017 at 5:19 PM, Uvindra Dias Jayasinha <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Setting a default value for empty fields being sent seems to be
>>>>>>>> best.
>>>>>>>>
>>>>>>>> Furthermore we can have default values set in our DTO objects in
>>>>>>>> case a given field is omitted altogether.
>>>>>>>>
>>>>>>>> So handling both the above scenarios can overcome the limitation in
>>>>>>>> Oracle.
>>>>>>>>
>>>>>>>> But I dont know if this is good for the REST API user experience,
>>>>>>>> when retrieving data that contains these default values.
>>>>>>>>
>>>>>>> Additionally this could affect the user experience in UIs as well.
>>>>>>>
>>>>>>> How about we just keep a default value to NULL in DB level and then
>>>>>>> filter it from UI? Since anyway Oracle treats zero length String as 
>>>>>>> NULLs,
>>>>>>> even if the user enters an empty String it will then be automatically. 
>>>>>>> The
>>>>>>> rest API will still return the default value if invoked directly though.
>>>>>>>
>>>>>>
>>>>>> +1 to keep default as NULL which is more natural
>>>>>> Further rather than filtering in the UI, how about directly do it in
>>>>>> the query itself using COALESCE() built-in function (which is an ANSI
>>>>>> standard and better performing than IS NULL)
>>>>>>
>>>>>> eg: SELECT COALESCE(field_name,'')  as field_name  //if the field
>>>>>> value is null it will map to empty
>>>>>>
>>>>>>
>>>>>>
>>>>>>>> On 6 January 2017 at 15:28, Tharindu Dharmarathna <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Jan 6, 2017 at 3:26 PM, Tharindu Dharmarathna <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi All,
>>>>>>>>>>
>>>>>>>>>> I faced $Subject in Oracle database while running integration
>>>>>>>>>> test on C5 on top.
>>>>>>>>>>
>>>>>>>>>> *Observation*
>>>>>>>>>>
>>>>>>>>>> when insert empty string ("") it was save as null in database.
>>>>>>>>>>
>>>>>>>>>> While going through SO I had found [1] , which did happen in
>>>>>>>>>> oracle database.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> We have come up with several ways to handle empty strings which
>>>>>>>>>> user sends through the rest api.
>>>>>>>>>>
>>>>>>>>>> 1.  Validate the request and send error when giving empty strings
>>>>>>>>>> 2.  Set default value like "N/A" into the fields which send as
>>>>>>>>>> empty.
>>>>>>>>>>
>>>>>>>>>> Is there any other way to handle this problem ?.
>>>>>>>>>>
>>>>>>>>>> [1] - http://stackoverflow.com/questions/13278773/null-vs-empty-
>>>>>>>>>> string-in-oracle
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Tharindu Dharmarathna*Software Engineer
>>>>>>>>>> WSO2 Inc.; http://wso2.com
>>>>>>>>>> lean.enterprise.middleware
>>>>>>>>>>
>>>>>>>>>> mobile: *+94779109091 <+94%2077%20910%209091>*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> *Tharindu Dharmarathna*Software Engineer
>>>>>>>>> WSO2 Inc.; http://wso2.com
>>>>>>>>> lean.enterprise.middleware
>>>>>>>>>
>>>>>>>>> mobile: *+94779109091 <+94%2077%20910%209091>*
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Regards,
>>>>>>>> Uvindra
>>>>>>>>
>>>>>>>> Mobile: 777733962
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Thanks and Regards,
>>>>>>>
>>>>>>> Isuru H.
>>>>>>> +94 716 358 048 <+94%2071%20635%208048>* <http://wso2.com/>*
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Dev mailing list
>>>>>>> [email protected]
>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Lahiru Cooray*
>>>>>> Software Engineer
>>>>>> WSO2, Inc.;http://wso2.com/
>>>>>> lean.enterprise.middleware
>>>>>>
>>>>>> Mobile: +94 715 654154 <+94%2071%20565%204154>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> [email protected]
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Darshana Akalanka Pagoda Arachchi,*
>>>>> *Senior Software Engineer, WSO2*
>>>>> *+94777118016 <+94%2077%20711%208016>*
>>>>>
>>>>> _______________________________________________
>>>>> Dev mailing list
>>>>> [email protected]
>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> Uvindra
>>>>
>>>> Mobile: 777733962
>>>>
>>>
>>>
>>>
>>> --
>>> Regards,
>>> Uvindra
>>>
>>> Mobile: 777733962
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> [email protected]
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>> *Madhawa Gunasekara*
>> Software Engineer
>> WSO2 Inc.; http://wso2.com
>> lean.enterprise.middleware
>>
>> mobile: +94 719411002 <+94+719411002>
>> blog: *http://madhawa-gunasekara.blogspot.com
>> <http://madhawa-gunasekara.blogspot.com>*
>> linkedin: *http://lk.linkedin.com/in/mgunasekara
>> <http://lk.linkedin.com/in/mgunasekara>*
>>
>
>
>
> --
> *Darshana Akalanka Pagoda Arachchi,*
> *Senior Software Engineer, WSO2*
> *+94777118016 <+94%2077%20711%208016>*
>
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
Malintha Amarasinghe
Software Engineer
*WSO2, Inc. - lean | enterprise | middleware*
http://wso2.com/

Mobile : +94 712383306 <+94%2071%20238%203306>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to