diff options
author | James Ahlborn <jtahlborn@yahoo.com> | 2016-05-19 02:43:54 +0000 |
---|---|---|
committer | James Ahlborn <jtahlborn@yahoo.com> | 2016-05-19 02:43:54 +0000 |
commit | aa9555c6679d41a7c6f9d05c7fa2178d2882dd6e (patch) | |
tree | 8f9db0983f9bc2da8678bf01a07cae1157106780 /src/test/java/com/healthmarketscience/jackcess/IndexTest.java | |
parent | 627e22dee739fb737df8fb1443554e243d903222 (diff) | |
download | jackcess-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.java | 51 |
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)) { |