[ 
https://issues.apache.org/jira/browse/DERBY-2557?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mamta A. Satoor updated DERBY-2557:
-----------------------------------

    Attachment: 
DERBY2557_getObject_Using_CollationType_FormatID_interface_on_DVF_v2_stat.txt
                
DERBY2557_getObject_Using_CollationType_FormatID_interface_on_DVF_v2_diff.txt

Based on feedback from Dan, changing the implementation of the new interface 
DVF.getNull so that it bypasses the InstanceGetter. This implementation is much 
simpler than the old one because there is no InstanceGetter involved. The patch 
is attached as 
DERBY2557_getObject_Using_CollationType_FormatID_interface_on_DVF_v2_diff.txt I 
am running the tests and will commit the patch after successful runs of the 
tests.

The changes made in the patch are as follows
1)DataValueFactory
Changed the name of the new interface from 
getInstanceUsingFormatIdAndCollationType to getNull. This interface now returns 
a DVD rather than an Object. The functionality of the interface remains the 
same but the implementation has changed.
2)DataValueFactoryImpl
a)Removed the class level array and the code associated with InstanceGetter.
b)Added a new static method called getNullDVDWithUCS_BASICcollation(int 
formatId). This static method handles all the format ids associated with DVDs 
with the exception of Decimals. The class to be returned for Decimals depends 
on what VM is being used. This dependency on the VM is handled by 
getNullDecimal defined on DVF. But since getNullDecimal is not a static method, 
it can't be called by static method getNullDVDWithUCS_BASICcollation. I could 
go the path of defining getNullDecimal as static but that will require changes 
in NumericTypeCompiler.nullMethodName method. Also, all the other getNullXXX on 
DVF are non-static So, the code for returning the right DVD for Decimal is not 
in getNullDVDWithUCS_BASICcollation. Rather it is in the calling method, 
getNull. For other format ids associated with DVDs, getNull will check if the 
DVD is of type StringDataValue and the collation type is territory based and if 
so, then it will return 
((StringDataValue)returnDVD).getValue(getCharacterCollator(collationType));
3)DTSClassInfo
This class now calls the static method in DVF to get the DVDs. But if the 
format id is not for a DVD, then it checks if it needs to return TypeId.

I will go ahead and commit it after the tests run successfully. Does anyone 
have any comments on the patch? 

> Provide a new interface on DataValueFactory(DVF) called getNull(formatId, 
> collationType) which returns a DVD with proper collation association. 
> ------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-2557
>                 URL: https://issues.apache.org/jira/browse/DERBY-2557
>             Project: Derby
>          Issue Type: New Feature
>          Components: SQL
>    Affects Versions: 10.3.0.0
>            Reporter: Mamta A. Satoor
>         Assigned To: Mamta A. Satoor
>         Attachments: DERBY2535_Return_Collator_api_On_DVD_v1_diff.txt, 
> DERBY2535_Return_Collator_api_On_DVD_v1_stat.txt, 
> DERBY2557_getObject_Using_CollationType_FormatID_interface_on_DVF_v1_diff.txt,
>  
> DERBY2557_getObject_Using_CollationType_FormatID_interface_on_DVF_v1_stat.txt,
>  
> DERBY2557_getObject_Using_CollationType_FormatID_interface_on_DVF_v2_diff.txt,
>  DERBY2557_getObject_Using_CollationType_FormatID_interface_on_DVF_v2_stat.txt
>
>
> Provide a new interface, called 
> getInstanceUsingFormatIdAndCollationType(formatId, collationType) on DVF. 
> Store will call this interface to create empty DVD objects and then load 
> these DVD objects using readExternal. For performance efficiency, when Store 
> needs more of the same base DVD, then on subsequent needs, it will call 
> DVD.getNewNull rather than calling 
> DVF.getInstanceUsingFormatIdAndCollationType again. This work is required for 
> DERBY-2537.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to