aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/com/healthmarketscience/jackcess/IndexTest.java
diff options
context:
space:
mode:
authorJames Ahlborn <jtahlborn@yahoo.com>2016-05-19 02:43:54 +0000
committerJames Ahlborn <jtahlborn@yahoo.com>2016-05-19 02:43:54 +0000
commitaa9555c6679d41a7c6f9d05c7fa2178d2882dd6e (patch)
tree8f9db0983f9bc2da8678bf01a07cae1157106780 /src/test/java/com/healthmarketscience/jackcess/IndexTest.java
parent627e22dee739fb737df8fb1443554e243d903222 (diff)
downloadjackcess-aa9555c6679d41a7c6f9d05c7fa2178d2882dd6e.tar.gz
jackcess-aa9555c6679d41a7c6f9d05c7fa2178d2882dd6e.zip
add support for sharing backing index data across indexes during table creation
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/branches/mutateops@994 f203690c-595d-4dc9-a70b-905162fa7fd2
Diffstat (limited to 'src/test/java/com/healthmarketscience/jackcess/IndexTest.java')
-rw-r--r--src/test/java/com/healthmarketscience/jackcess/IndexTest.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/test/java/com/healthmarketscience/jackcess/IndexTest.java b/src/test/java/com/healthmarketscience/jackcess/IndexTest.java
index 28e2ff9..47f7b89 100644
--- a/src/test/java/com/healthmarketscience/jackcess/IndexTest.java
+++ b/src/test/java/com/healthmarketscience/jackcess/IndexTest.java
@@ -462,6 +462,57 @@ public class IndexTest extends TestCase {
}
}
+ public void testIndexCreationSharedData() throws Exception
+ {
+ for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) {
+ Database db = create(fileFormat);
+
+ Table t = new TableBuilder("TestTable")
+ .addColumn(new ColumnBuilder("id", DataType.LONG))
+ .addColumn(new ColumnBuilder("data", DataType.TEXT))
+ .addIndex(new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME)
+ .addColumns("id").setPrimaryKey())
+ .addIndex(new IndexBuilder("Index1").addColumns("id"))
+ .addIndex(new IndexBuilder("Index2").addColumns("id"))
+ .addIndex(new IndexBuilder("Index3").addColumns(false, "id"))
+ .toTable(db);
+
+ assertEquals(4, t.getIndexes().size());
+ IndexImpl idx = (IndexImpl)t.getIndexes().get(0);
+
+ assertEquals(IndexBuilder.PRIMARY_KEY_NAME, idx.getName());
+ assertEquals(1, idx.getColumns().size());
+ assertEquals("id", idx.getColumns().get(0).getName());
+ assertTrue(idx.getColumns().get(0).isAscending());
+ assertTrue(idx.isPrimaryKey());
+ assertTrue(idx.isUnique());
+ assertFalse(idx.shouldIgnoreNulls());
+ assertNull(idx.getReference());
+
+ IndexImpl idx1 = (IndexImpl)t.getIndexes().get(1);
+ IndexImpl idx2 = (IndexImpl)t.getIndexes().get(2);
+ IndexImpl idx3 = (IndexImpl)t.getIndexes().get(3);
+
+ assertNotSame(idx.getIndexData(), idx1.getIndexData());
+ assertSame(idx1.getIndexData(), idx2.getIndexData());
+ assertNotSame(idx2.getIndexData(), idx3.getIndexData());
+
+ t.addRow(2, "row2");
+ t.addRow(1, "row1");
+ t.addRow(3, "row3");
+
+ Cursor c = t.newCursor()
+ .setIndexByName(IndexBuilder.PRIMARY_KEY_NAME).toCursor();
+
+ for(int i = 1; i <= 3; ++i) {
+ Map<String,Object> row = c.getNextRow();
+ assertEquals(i, row.get("id"));
+ assertEquals("row" + i, row.get("data"));
+ }
+ assertFalse(c.moveToNextRow());
+ }
+ }
+
public void testGetForeignKeyIndex() throws Exception
{
for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX, true)) {