aboutsummaryrefslogtreecommitdiffstats
path: root/test/src/java
diff options
context:
space:
mode:
authorJames Ahlborn <jtahlborn@yahoo.com>2007-05-08 03:32:44 +0000
committerJames Ahlborn <jtahlborn@yahoo.com>2007-05-08 03:32:44 +0000
commited6ff8410bf61859e2569905c2326e5b7270f1cd (patch)
treeb0c89d1517dd00c305c161ca7555448e25fa9331 /test/src/java
parent0df6bc796d4e6a6f0485df2c9774ddab6cd3f7d1 (diff)
downloadjackcess-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.java38
-rw-r--r--test/src/java/com/healthmarketscience/jackcess/TableTest.java2
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;