If we can fix this without breaking the user experience is ideal. But the
problem I see is how can we manage those changes; are we going to do that
in each and every query? If we miss one place that will introduce a bug. Is
there any way we can manage this in a central manner?

On Tue, Jan 10, 2017 at 11:46 AM, Ishara Cooray <[email protected]> wrote:

> IMO user experience is the most important thing and what ever the logic we
> have implemented should not do any difference in end user experience.
> Hence, keeping things simple, prefer using a space character if and only
> if user has provided an empty string. Otherwise keep the default value.
>
>
>
> Thanks & Regards,
> Ishara Cooray
> Senior Software Engineer
> Mobile : +9477 262 9512 <+94%2077%20262%209512>
> WSO2, Inc. | http://wso2.com/
> Lean . Enterprise . Middleware
>
> On Tue, Jan 10, 2017 at 11:29 AM, Akalanka Pagoda Arachchi <
> [email protected]> wrote:
>
>> We can say that the string we use is a reserved keyword. In any complex
>> system we have to have such restriction in order address these kind of
>> issues.
>>
>> On Tue, Jan 10, 2017 at 11:23 AM, Malintha Amarasinghe <
>> [email protected]> wrote:
>>
>>>
>>>
>>> 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/que
>>>>>>>>>>>>> stions/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>
>>>
>>
>>
>>
>> --
>> *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
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to