]> source.dussan.org Git - jackcess.git/commitdiff
add some notes on unique indexes
authorJames Ahlborn <jtahlborn@yahoo.com>
Mon, 17 Mar 2008 15:31:26 +0000 (15:31 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Mon, 17 Mar 2008 15:31:26 +0000 (15:31 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@279 f203690c-595d-4dc9-a70b-905162fa7fd2

src/java/com/healthmarketscience/jackcess/Index.java

index d0431db3610aa5555c059789a478cfa78c8f5489..d52db9904bd444e075949a22239dc92eee380714 100644 (file)
@@ -233,10 +233,25 @@ public class Index implements Comparable<Index> {
     return _indexType == FOREIGN_KEY_INDEX_TYPE;
   }
 
+  /**
+   * Whether or not {@code null} values are actually recorded in the index.
+   */
   public boolean shouldIgnoreNulls() {
     return((_indexFlags & IGNORE_NULLS_INDEX_FLAG) != 0);
   }
-  
+
+  /**
+   * Whether or not index entries must be unique.
+   * <p>
+   * Some notes about uniqueness:
+   * <ul>
+   * <li>Access does not seem to consider multiple {@code null} entries
+   *     invalid for a unique index</li>
+   * <li>text indexes collapse case, and Access seems to compare <b>only</b>
+   *     the index entry bytes, therefore two strings which differ only in
+   *     case <i>will violate</i> the unique constraint</li>
+   * </ul>
+   */
   public boolean isUnique() {
     return(isPrimaryKey() || ((_indexFlags & UNIQUE_INDEX_FLAG) != 0));
   }
@@ -694,8 +709,8 @@ public class Index implements Comparable<Index> {
       idx = missingIndexToInsertionPoint(idx);
 
       // determine if the addition of this entry would break the uniqueness
-      // constraint (note, access does not seem to consider multiple null
-      // entries invalid for a "unique" index)
+      // constraint.  See isUnique() for some notes about uniqueness as
+      // defined by Access.
       if(isUnique() && !isNullEntry &&
          (((idx > 0) &&
            newEntry.equalsEntryBytes(_entries.get(idx - 1))) ||