diff options
author | James Ahlborn <jtahlborn@yahoo.com> | 2007-05-08 03:32:44 +0000 |
---|---|---|
committer | James Ahlborn <jtahlborn@yahoo.com> | 2007-05-08 03:32:44 +0000 |
commit | ed6ff8410bf61859e2569905c2326e5b7270f1cd (patch) | |
tree | b0c89d1517dd00c305c161ca7555448e25fa9331 /test/src/java | |
parent | 0df6bc796d4e6a6f0485df2c9774ddab6cd3f7d1 (diff) | |
download | jackcess-ed6ff8410bf61859e2569905c2326e5b7270f1cd.tar.gz jackcess-ed6ff8410bf61859e2569905c2326e5b7270f1cd.zip |
when writing table definition, set things up so long variable length columns are written after normal variable length columns. this makes it more likely that all the data can be written sucessfully because long var columns can be written in separate data pages (fix bug [1675522]); tweak row writing to account for deleted columns
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@143 f203690c-595d-4dc9-a70b-905162fa7fd2
Diffstat (limited to 'test/src/java')
-rw-r--r-- | test/src/java/com/healthmarketscience/jackcess/DatabaseTest.java | 38 | ||||
-rw-r--r-- | test/src/java/com/healthmarketscience/jackcess/TableTest.java | 2 |
2 files changed, 40 insertions, 0 deletions
diff --git a/test/src/java/com/healthmarketscience/jackcess/DatabaseTest.java b/test/src/java/com/healthmarketscience/jackcess/DatabaseTest.java index 92cbb47..449424d 100644 --- a/test/src/java/com/healthmarketscience/jackcess/DatabaseTest.java +++ b/test/src/java/com/healthmarketscience/jackcess/DatabaseTest.java @@ -12,6 +12,7 @@ import java.io.OutputStream; import java.io.PrintWriter; import java.math.BigDecimal; import java.nio.ByteBuffer; +import java.sql.Types; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -555,6 +556,34 @@ public class DatabaseTest extends TestCase { assertEquals(7, countRows(table)); } + + public void testLongValueAsMiddleColumn() throws Exception + { + + Database db = create(); + Column a = new Column(); + a.setName("a"); + a.setSQLType(Types.INTEGER); + Column b = new Column(); + b.setName("b"); + b.setSQLType(Types.LONGVARCHAR); + Column c = new Column(); + c.setName("c"); + c.setSQLType(Types.VARCHAR); + db.createTable("NewTable", Arrays.asList(a, b, c)); + Table newTable = db.getTable("NewTable"); + + String lval = createString(2000); // "--2000 chars long text--"; + String tval = createString(40); // "--40chars long text--"; + newTable.addRow(new Integer(1), lval, tval); + + newTable = db.getTable("NewTable"); + Map<String, Object> readRow = newTable.getNextRow(); + assertEquals(new Integer(1), readRow.get("a")); + assertEquals(lval, readRow.get("b")); + assertEquals(tval, readRow.get("c")); + + } static Object[] createTestRow(String col1Val) { return new Object[] {col1Val, "R", "McCune", 1234, (byte) 0xad, 555.66d, @@ -606,6 +635,15 @@ public class DatabaseTest extends TestCase { db.createTable("test", columns); } + static String createString(int len) { + StringBuilder builder = new StringBuilder(len); + for(int i = 0; i < len; ++i) { + builder.append((char)('a' + (i % 26))); + } + String str = builder.toString(); + return str; + } + static int countRows(Table table) throws Exception { int rtn = 0; for(Map<String, Object> row : table) { diff --git a/test/src/java/com/healthmarketscience/jackcess/TableTest.java b/test/src/java/com/healthmarketscience/jackcess/TableTest.java index 29178f9..96d33fa 100644 --- a/test/src/java/com/healthmarketscience/jackcess/TableTest.java +++ b/test/src/java/com/healthmarketscience/jackcess/TableTest.java @@ -27,6 +27,8 @@ public class TableTest extends TestCase { col = new Column(); col.setType(DataType.TEXT); columns.add(col); + col = new Column(); + col.setType(DataType.TEXT); columns.add(col); table.setColumns(columns); int colCount = 3; |