db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta A. Satoor (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-2336) Enable collation based ordering for CHAR data type.
Date Fri, 02 Mar 2007 16:46:50 GMT

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

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

    Attachment: DERBY_LocalFinder_CodeCleanup_stat_V01.txt
                DERBY_LocalFinder_CodeCleanup_diff_V01.txt

I am continuing to work on Language Based Ordering. One thing this feature requires is that
character datatypes datatypes should have access to LocaleFinder to know what collation they
need to use. Currently, this gets done by going through DatabaseContext (this code is in SQLChar's
getLocalFinder method. For SQLTime, SQLTimestamp, SQLDate, the code is in setValue(String
theValue) method). But the problem with this code is that during restart recovery time, the
DatabaseContext will not be available and hence locale can't be determined at restart recovery
time. In order to fix that problem, in my attached patch DERBY_LocalFinder_CodeCleanup_diff_V01.txt,
I am removing the LocaleFinder related code from BasicDatabase and instead moving it into
RawStore. This will make sure that during restart recovery time, LocaleFinder info will be
available because store context is available on the context manager at that time.

Another change I am making in this patch is to have the ContextManager keep track of current
LocaleFinder so that character datatypes could get LocalFinder information more quickly rather
than having to go through the store context in ContextManager's stack of contexts.

In addition to the changes mentioned above, I have removed some imports that are not really
used by the classes involved in this patch.

There are no visible end-user effects of any of the above mentioned changes but this groundwork
will be required later on when the collation is enabled for SQLChar datatype.

svn stat -q output is as follows
M      java\engine\org\apache\derby\impl\db\BasicDatabase.java
M      java\engine\org\apache\derby\impl\store\raw\xact\XactFactory.java
M      java\engine\org\apache\derby\impl\store\raw\RawStore.java
M      java\engine\org\apache\derby\iapi\services\context\ContextManager.java
M      java\engine\org\apache\derby\iapi\types\SQLChar.java
M      java\engine\org\apache\derby\iapi\types\SQLDate.java
M      java\engine\org\apache\derby\iapi\types\SQLTime.java
M      java\engine\org\apache\derby\iapi\types\DataValueFactoryImpl.java
M      java\engine\org\apache\derby\iapi\types\SQLTimestamp.java
M      java\engine\org\apache\derby\iapi\db\Database.java
M      java\engine\org\apache\derby\iapi\store\raw\RawStoreFactory.java
M      java\engine\org\apache\derby\database\Database.java

The patch description per class wise is as follows
1)BasicDatabase - 
a)removed unused imports
b)removed code which was implementing LocalFinder methods because this class is not implementing
LocaleFinder anymore. The LocaleFinder implementation will be provided at the store level.

c)I didn't remove the getLocale method from this class becasue we have few tests that rely
on this internal public Derby api. The use of this can be found in functionTests/conn/DefaultLocale.java's
checkDatabaseLocale method. I will file a jira entry for this because I don't think our test
should be going against internal Derby api. 
2)RawStore
a)This class now implements LocaleFinder interface so later in XactFactory, RawStore instance
can be passed to the ContextManager. This way, LocaleFinder info will be available at Derby's
restart recovery time.
b)also removed some unused import statements.
3)XactFactory
The change in this class passes the RawStore instance to ContextManager's setLocaleFinder
info.
4)ContextManager
This class now provides a getLocalFinder method to return the local info. Prior to this, the
callers had to go through the stack of contexts to find the database context to get the LocaleFinder
info.
5)SQLChar, SQLDate, SQLTime, SQLTimestamp, DataValueFactoryImpl
All of these classes now get the LocaleFinder info by directly calling the getLocaleFinder
method on ContextManager.
6)iapi/db/Database.java
This interface doesn't extend LocaleFinder interface anymore. Also, took out some unused import
statements.
7)RawStoreFactory now extends LocaleFinder interface. Also, took out some unused import statements.
8)database/Database.java
The existing getLocale method now can throw exception because it goes through ContextManager
to get the locale info. I will file a jira entry for this method because the only purpose
of this method is to allow some existing tests to get the locale info by calling this internal
api. 


> Enable collation based ordering for CHAR data type.
> ---------------------------------------------------
>
>                 Key: DERBY-2336
>                 URL: https://issues.apache.org/jira/browse/DERBY-2336
>             Project: Derby
>          Issue Type: Sub-task
>          Components: SQL
>    Affects Versions: 10.3.0.0
>            Reporter: Mamta A. Satoor
>         Attachments: DERBY_LocalFinder_CodeCleanup_diff_V01.txt, DERBY_LocalFinder_CodeCleanup_stat_V01.txt
>
>
> I am breaking down the Parent task DERBY-1478 (Add built in language based ordering and
like processing to Derby) into multiple sub tasks. One of them is to concentrate on enabling
the collation based ordering on (hopefully the simplest of all the character data types) CHAR
data type. This task in itself might need subtasks if it is later found that it can be subdivided
into multiple smaller steps.

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


Mime
View raw message