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

Rick Hillegas updated DERBY-590:
--------------------------------

    Attachment: derby-590-26-ac-backupRestore.diff

Attaching derby-590-26-ac-backupRestore.diff. This patch adds backup/restore 
support for Lucene indexes. I will run regression tests. I will also hold off 
committing this patch for a couple days to give people an opportunity to 
suggest alternative approaches.

Code is added to BasicDatabase to perform the backup. The backup() methods in 
BasicDatabase check to see if the database's top level directory contains a 
LUCENE subdirectory. If so, the LUCENE directory is recursively copied to the 
backup directory.

Similarly, code is added to BaseDataFileFactory to perform the restoration. The 
loop which checks for seg* subdirectories now checks to see if the backup 
contains a LUCENE subdirectory. If so, it is recursively copied to the restored 
location.

I am happy to move this code elsewhere if people think there is an 
architecturally better spot.

Touches the following files:

---------------

M       java/engine/org/apache/derby/iapi/util/StringUtil.java

Encapsulated a scrap of code which takes the canonical name of the database and 
extracts the database directory name from it. This method is now used both by 
the RawStore backup code to figure out where to copy the seg* files and this 
method is used by BasicDatabase to figure out where to copy the LUCENE 
directory.

I'm open to suggestions for a better place to put this code. Nothing better 
jumped out at me.

---------------

M       java/engine/org/apache/derby/impl/db/BasicDatabase.java

The new code to backup the LUCENE directory.

---------------

M       java/engine/org/apache/derby/impl/io/vfmem/DataStore.java

This fixes a bug in the in-memory storage factory. When asked to list its child 
directories, an in-memory directory used to list its grandchildren and all 
other descendants. This has been fixed so that only the child directories are 
returned.

---------------

M       java/engine/org/apache/derby/impl/store/raw/RawStore.java

Amended to use the shared method which extracts the database directory name 
from the canonical name.

---------------

M       
java/engine/org/apache/derby/impl/store/raw/data/BaseDataFileFactory.java

Adds logic to restore the LUCENE directory.

---------------

M       java/engine/org/apache/derby/database/Database.java

The constant identifying the name of the LUCENE directory is moved to this 
interface so that it can be used by BasicDatabase.

---------------

M       java/optional/org/apache/derby/optional/lucene/DerbyLuceneDir.java
M       java/optional/org/apache/derby/optional/lucene/LuceneSupport.java
M       java/optional/org/apache/derby/optional/lucene/LuceneListIndexesVTI.java

I reworked how the Lucene index path is recursively created.

---------------

A       
java/testing/org/apache/derbyTesting/functionTests/tests/lang/LuceneBackupTest.java
M       
java/testing/org/apache/derbyTesting/functionTests/tests/lang/luceneSupport.policy
M       
java/testing/org/apache/derbyTesting/functionTests/tests/lang/LuceneSuite.java

Added a test for backup/restore of Lucene indexes.


> How to integrate Derby with Lucene API?
> ---------------------------------------
>
>                 Key: DERBY-590
>                 URL: https://issues.apache.org/jira/browse/DERBY-590
>             Project: Derby
>          Issue Type: Improvement
>          Components: Documentation, SQL
>            Reporter: Abhijeet Mahesh
>              Labels: derby_triage10_11
>         Attachments: LucenePlugin.html, 
> derby-590-01-ag-publicAccessToLuceneRoutines.diff, 
> derby-590-01-ah-publicAccessToLuceneRoutines.diff, 
> derby-590-01-am-publicAccessToLuceneRoutines.diff, 
> derby-590-02-aa-cleanupFindbugsErrors.diff, 
> derby-590-03-aa-removeTestingDiagnostic.diff, 
> derby-590-04-aa-removeIDFromListIndexes.diff, 
> derby-590-05-aa-accessDeclaredMembers.diff, 
> derby-590-06-aa-suppressAccessChecks.diff, 
> derby-590-07-aa-accessClassInPackage.sun.misc.diff, 
> derby-590-08-aa-omitLuceneFlag.diff, 
> derby-590-09-aa-localeSensitiveAnalysis.diff, 
> derby-590-10-aa-fixLocaleTest.diff, derby-590-11-aa-moveCode.diff, 
> derby-590-12-aa-newJar.diff, derby-590-13-aa-indexViews.diff, 
> derby-590-14-aa-coarseGrainedAuthorization.diff, 
> derby-590-15-aa-requireHardUpgrade.diff, 
> derby-590-16-aa-adjustUpgradeTest.diff, 
> derby-590-17-aa-closeInputStreamOnPropertiesFile.diff, 
> derby-590-18-aa-cleanupAPI.diff, derby-590-19-aa-cleanupAPI2.diff, 
> derby-590-20-aa-customQueryParser.diff, derby-590-21-aa-noTimeTravel.diff, 
> derby-590-22-aa-cleanupPrivacy.diff, derby-590-23-aa-correctTestLocale.diff, 
> derby-590-24-ad-luceneDirectory.diff, derby-590-26-ac-backupRestore.diff, 
> lucene_demo.diff, lucene_demo_2.diff
>
>
> In order to use derby with lucene API what should be the steps to be taken? 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to