[
https://issues.apache.org/jira/browse/DERBY-3330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anurag Shekhar updated DERBY-3330:
----------------------------------
Attachment: derby-3330.diff
I am running the tests and will be updating the patch based on the test results.
Description of patch
modified files
java/engine/org/apache/derby/impl/sql/compile/CreateIndexNode.java
java/engine/org/apache/derby/impl/sql/compile/TableElementList.java
java/engine/org/apache/derby/impl/sql/execute/GenericConstantActionFactory.java
Added new methods to support almost unique index for unique constraint
java/engine/org/apache/derby/impl/sql/execute/CreateIndexConstantAction.java
Added new CreateIndexConstantAction method to support a new parameter (almost
unique) for indexes. This property is stored and used while executing this
action.
execute method of this class uses this property to use
AlmostUniqueIndexSortObserver and AlmostUniqueMergeSort. This two classes
provide special sorting routine which considers two row as duplicate only if
all the key parts are non null.
java/engine/org/apache/derby/impl/store/access/sort/MergeSort.java
changed the scope of few attributes to protected so that AlmostUniqueMergeSort
can access them.
java/engine/org/apache/derby/impl/store/access/sort/ExternalSortFactory.java
removed final to allow AlmostUniqueExternalSortFactory to extend from it.
moved creation of MergeSort to a protected method so that extending class
can return a different class.
java/engine/org/apache/derby/impl/store/access/btree/BTree.java
added a new property almostUnique and getter and setters for the same.
java/engine/org/apache/derby/impl/store/access/btree/BTreeController.java
added a new private method to compare the record with immediate left and right
records to check for duplicate.
java/engine/org/apache/derby/impl/store/access/btree/index/B2I.java
added code to store and retrieve new attribute "almostUnique" to the file
system.
java/engine/org/apache/derby/iapi/store/access/AccessFactoryGlobals.java
added property string for AlmostUniqueExternalSortFactory.
java/engine/org/apache/derby/modules.properties
Added entry for AlmostUniqueExternalSortFactory.
New files
java/engine/org/apache/derby/impl/sql/execute/AlmostUniqueIndexSortObserver.java
This class implements duplicate checking routine to reject non null duplicate
keys.
java/engine/org/apache/derby/impl/store/access/sort/AlmostUniqueExternalSortFactory.java
This class extends from ExternalSortFactory and overrides getMergeSort methods
to return AlmostUniqueMergeSort.
java/engine/org/apache/derby/impl/store/access/sort/AlmostUniqueMergeSort.java
This class extends MergeSort and overrides compare methods to ignore last
keypart (location) while checking for duplicate keys.
> provide support for unique constraint over nullable columns
> -----------------------------------------------------------
>
> Key: DERBY-3330
> URL: https://issues.apache.org/jira/browse/DERBY-3330
> Project: Derby
> Issue Type: New Feature
> Components: Store
> Affects Versions: 10.4.0.0
> Environment: all
> Reporter: Anurag Shekhar
> Assignee: Anurag Shekhar
> Attachments: derby-3330.diff
>
>
> Allow unique constraint over nullable field. Right now derby support unique
> constraint only over not null columns.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.