From 4aae259be18d31dc93ce5bc4ae1fcd04704ec250 Mon Sep 17 00:00:00 2001 From: James Ahlborn Date: Sat, 31 Jul 2010 17:33:36 +0000 Subject: [PATCH] add more jet3 tests, disable index lookups for jet3 git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@476 f203690c-595d-4dc9-a70b-905162fa7fd2 --- .../healthmarketscience/jackcess/Cursor.java | 7 ++++++ .../jackcess/JetFormat.java | 11 ++++++++++ test/data/V1997/indexTestV1997.mdb | Bin 0 -> 112640 bytes .../jackcess/IndexTest.java | 20 +++++++++++++++--- .../jackcess/RelationshipTest.java | 8 +++++-- 5 files changed, 41 insertions(+), 5 deletions(-) create mode 100755 test/data/V1997/indexTestV1997.mdb diff --git a/src/java/com/healthmarketscience/jackcess/Cursor.java b/src/java/com/healthmarketscience/jackcess/Cursor.java index f05c689..ed08160 100644 --- a/src/java/com/healthmarketscience/jackcess/Cursor.java +++ b/src/java/com/healthmarketscience/jackcess/Cursor.java @@ -176,6 +176,11 @@ public abstract class Cursor implements Iterable> throw new IllegalArgumentException( "Given index is not for given table: " + index + ", " + table); } + if(!table.getFormat().INDEXES_SUPPORTED) { + throw new IllegalArgumentException( + "JetFormat " + table.getFormat() + + " does not currently support index lookups"); + } return new IndexCursor(table, index, index.cursor(startRow, startInclusive, endRow, endInclusive)); @@ -1163,6 +1168,8 @@ public abstract class Cursor implements Iterable> super(new Id(table, index), table, new IndexPosition(entryCursor.getFirstEntry()), new IndexPosition(entryCursor.getLastEntry())); + + index.initialize(); _entryCursor = entryCursor; } diff --git a/src/java/com/healthmarketscience/jackcess/JetFormat.java b/src/java/com/healthmarketscience/jackcess/JetFormat.java index 8265d77..8041dbb 100644 --- a/src/java/com/healthmarketscience/jackcess/JetFormat.java +++ b/src/java/com/healthmarketscience/jackcess/JetFormat.java @@ -95,6 +95,9 @@ public abstract class JetFormat { /** the read/write mode of this format */ public final boolean READ_ONLY; + /** whether or not we can use indexes in this format */ + public final boolean INDEXES_SUPPORTED; + /** Database page size in bytes */ public final int PAGE_SIZE; public final long MAX_DATABASE_SIZE; @@ -210,6 +213,7 @@ public abstract class JetFormat { _name = name; READ_ONLY = defineReadOnly(); + INDEXES_SUPPORTED = defineIndexesSupported(); PAGE_SIZE = definePageSize(); MAX_DATABASE_SIZE = defineMaxDatabaseSize(); @@ -294,6 +298,7 @@ public abstract class JetFormat { } protected abstract boolean defineReadOnly(); + protected abstract boolean defineIndexesSupported(); protected abstract int definePageSize(); protected abstract long defineMaxDatabaseSize(); @@ -392,6 +397,9 @@ public abstract class JetFormat { @Override protected boolean defineReadOnly() { return true; } + @Override + protected boolean defineIndexesSupported() { return false; } + @Override protected int definePageSize() { return 2048; } @@ -565,6 +573,9 @@ public abstract class JetFormat { @Override protected boolean defineReadOnly() { return false; } + @Override + protected boolean defineIndexesSupported() { return true; } + @Override protected int definePageSize() { return 4096; } diff --git a/test/data/V1997/indexTestV1997.mdb b/test/data/V1997/indexTestV1997.mdb new file mode 100755 index 0000000000000000000000000000000000000000..3441d239b3f918a8a0a167db2b7ff48cadcba8cf GIT binary patch literal 112640 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≻e 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 literal 0 HcmV?d00001 diff --git a/test/src/java/com/healthmarketscience/jackcess/IndexTest.java b/test/src/java/com/healthmarketscience/jackcess/IndexTest.java index 504a3b8..1738b07 100644 --- a/test/src/java/com/healthmarketscience/jackcess/IndexTest.java +++ b/test/src/java/com/healthmarketscience/jackcess/IndexTest.java @@ -112,8 +112,10 @@ public class IndexTest extends TestCase { checkIndexColumns(table, "id", "id", "PrimaryKey", "id", - "Table2Table1", "otherfk1", - "Table3Table1", "otherfk2"); + getRelationshipName(testDB.getExpectedFormat(), + "Table2Table1"), "otherfk1", + getRelationshipName(testDB.getExpectedFormat(), + "Table3Table1"), "otherfk2"); table = mdb.getTable("Table2"); for(Index idx : table.getIndexes()) { @@ -417,5 +419,17 @@ public class IndexTest extends TestCase { } } } - + + static String getRelationshipName(JetFormat format, String name) + { + if(format == JetFormat.VERSION_3) { + if(name.equals("Table2Table1")) { + return "{150B6687-5C64-4DC0-B934-A8CF92FF73FF}"; + } + if(name.equals("Table3Table1")) { + return "{D039E343-97A1-471F-B2E3-8DFCF1EEC597}"; + } + } + return name; + } } diff --git a/test/src/java/com/healthmarketscience/jackcess/RelationshipTest.java b/test/src/java/com/healthmarketscience/jackcess/RelationshipTest.java index 0311088..81c1fb0 100644 --- a/test/src/java/com/healthmarketscience/jackcess/RelationshipTest.java +++ b/test/src/java/com/healthmarketscience/jackcess/RelationshipTest.java @@ -54,7 +54,9 @@ public class RelationshipTest extends TestCase { List rels = db.getRelationships(t1, t2); assertEquals(1, rels.size()); Relationship rel = rels.get(0); - assertEquals("Table2Table1", rel.getName()); + assertEquals(IndexTest.getRelationshipName(testDB.getExpectedFormat(), + "Table2Table1"), + rel.getName()); assertEquals(t2, rel.getFromTable()); assertEquals(Arrays.asList(t2.getColumn("id")), rel.getFromColumns()); @@ -72,7 +74,9 @@ public class RelationshipTest extends TestCase { rels = db.getRelationships(t1, t3); assertEquals(1, rels.size()); rel = rels.get(0); - assertEquals("Table3Table1", rel.getName()); + assertEquals(IndexTest.getRelationshipName(testDB.getExpectedFormat(), + "Table3Table1"), + rel.getName()); assertEquals(t3, rel.getFromTable()); assertEquals(Arrays.asList(t3.getColumn("id")), rel.getFromColumns()); -- 2.39.5