Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestChangeColumn.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestChangeColumn.java?rev=629708&r1=629707&r2=629708&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestChangeColumn.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestChangeColumn.java Wed Feb 20 23:57:25 2008
@@ -20,6 +20,10 @@
*/
import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.util.Date;
import java.util.List;
import junit.framework.Test;
@@ -30,6 +34,10 @@
/**
* Tests changing columns, e.g. changing the data type or size.
*
+ * TODO:
+ * - more type conversion tests (parameterized ?)
+ * - more size change tests (parameterized ?)
+ *
* @version $Revision: $
*/
public class TestChangeColumn extends RoundtripTestBase
@@ -44,17 +52,26 @@
return getTests(TestChangeColumn.class);
}
+// - change default value (add default, remove default, change default)
+// - combined changes, e.g
+// - type & size
+// - type & auto increment status
+// - type & required
+// - size & required
+// - required & default value
+// - for each of the above: normal column, pk column, fk column (local), index column, unique index column
+
/**
- * Tests the alteration of a column datatype.
+ * Tests the alteration of a column datatype change from integer to double.
*/
- public void testChangeDatatype1()
+ public void testColumnTypeIntegerToDouble()
{
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
final String model2Xml =
@@ -62,7 +79,7 @@
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
@@ -77,20 +94,21 @@
List beans = getRows("roundtrip");
+ assertEquals(new Integer(1), beans.get(0), "pk");
assertEquals(new Double(2.0), beans.get(0), "avalue");
}
/**
- * Tests the alteration of a column datatype.
+ * Tests the alteration of a column datatype change from smallint to varchar.
*/
- public void testChangeDatatype2()
+ public void testColumnTypeSmallintToVarchar()
{
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
final String model2Xml =
@@ -98,7 +116,7 @@
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
@@ -119,78 +137,98 @@
{
bean.set("avalue", ((String)bean.get("avalue")).trim());
}
- assertEquals((Object)"2", beans.get(0), "avalue");
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals((Object)"2", beans.get(0), "avalue");
}
/**
- * Tests the alteration of the datatypes of PK and FK columns.
+ * Tests the alteration of a pk column datatype change from integer to double.
*/
- public void testChangePKAndFKDatatypes()
+ public void testPKColumnTypeIntegerToDouble()
{
final String model1Xml =
"\n"+
"\n"+
- " \n"+
- " \n"+
+ " \n"+
" \n"+
- " \n"+
- " \n"+
- " \n"+
- " \n"+
"
\n"+
"";
final String model2Xml =
"\n"+
"\n"+
- " \n"+
- " \n"+
+ " \n"+
- " \n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Double(2.0) });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Double(2.0), beans.get(0), "pk");
+ }
+
+ /**
+ * Tests the alteration of a pk column datatype change from integer to varchar.
+ */
+ public void testPKColumnTypeIntegerToVarchar()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
" \n"+
- " \n"+
- " \n"+
- " \n"+
- " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip1", new Object[] { new Integer(1) });
- insertRow("roundtrip2", new Object[] { new Integer(1), new Integer(1) });
+ insertRow("roundtrip", new Object[] { new Integer(1) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip2");
+ List beans = getRows("roundtrip");
DynaBean bean = (DynaBean)beans.get(0);
// Some databases (e.g. DB2) pad the string for some reason, so we manually trim it
- if (bean.get("fk") instanceof String)
+ if (bean.get("pk") instanceof String)
{
- bean.set("fk", ((String)bean.get("fk")).trim());
+ bean.set("pk", ((String)bean.get("pk")).trim());
}
- assertEquals((Object)"1", bean, "fk");
+ assertEquals((Object)"1", beans.get(0), "pk");
}
/**
- * Tests the alteration of the sizes of PK and FK columns.
+ * Tests the change of the datatypes of PK and FK columns from integer to varchar.
*/
- public void testChangePKAndFKSizes()
+ public void testPKAndFKColumnTypesIntegerToVarchar()
{
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
" \n"+
" \n"+
" \n"+
@@ -213,25 +251,38 @@
createDatabase(model1Xml);
- insertRow("roundtrip1", new Object[] { "test" });
- insertRow("roundtrip2", new Object[] { new Integer(1), "test" });
+ insertRow("roundtrip1", new Object[] { new Integer(1) });
+ insertRow("roundtrip2", new Object[] { new Integer(1), new Integer(1) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip2");
- DynaBean bean = (DynaBean)beans.get(0);
+ List beans1 = getRows("roundtrip1");
+ List beans2 = getRows("roundtrip2");
+ DynaBean bean1 = (DynaBean)beans1.get(0);
+ DynaBean bean2 = (DynaBean)beans2.get(0);
- assertEquals((Object)"test", bean, "fk");
+ // Some databases (e.g. DB2) pad the string for some reason, so we manually trim it
+ if (bean1.get("pk") instanceof String)
+ {
+ bean1.set("pk", ((String)bean1.get("pk")).trim());
+ }
+ if (bean2.get("fk") instanceof String)
+ {
+ bean2.set("fk", ((String)bean2.get("fk")).trim());
+ }
+ assertEquals((Object)"1", bean1, "pk");
+ assertEquals(new Integer(1), bean2, "pk");
+ assertEquals((Object)"1", bean2, "fk");
}
/**
* Tests the alteration of the datatypes of columns of a PK and FK that
* will be dropped.
*/
- public void testChangeDroppedPKAndFKDatatypes()
+ public void testPKAndFKColumnTypesAndDropFK()
{
final String model1Xml =
"\n"+
@@ -269,21 +320,29 @@
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip2");
- DynaBean bean = (DynaBean)beans.get(0);
+ List beans1 = getRows("roundtrip1");
+ List beans2 = getRows("roundtrip2");
+ DynaBean bean1 = (DynaBean)beans1.get(0);
+ DynaBean bean2 = (DynaBean)beans2.get(0);
// Some databases (e.g. DB2) pad the string for some reason, so we manually trim it
- if (bean.get("fk") instanceof String)
+ if (bean1.get("pk") instanceof String)
{
- bean.set("fk", ((String)bean.get("fk")).trim());
+ bean1.set("pk", ((String)bean1.get("pk")).trim());
}
- assertEquals((Object)"1", bean, "fk");
+ if (bean2.get("fk") instanceof String)
+ {
+ bean2.set("fk", ((String)bean2.get("fk")).trim());
+ }
+ assertEquals((Object)"1", bean1, "pk");
+ assertEquals(new Integer(1), bean2, "pk");
+ assertEquals((Object)"1", bean2, "fk");
}
-
+
/**
- * Tests the alteration of the datatypes of a column that is indexed.
+ * Tests the alteration of an indexed column datatype change from integer to double.
*/
- public void testChangeIndexColumnDatatype()
+ public void testIndexColumnTypeIntegerToDouble()
{
if (!getPlatformInfo().isIndicesSupported())
{
@@ -295,9 +354,11 @@
"\n"+
" \n"+
" \n"+
- " \n"+
- " \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
" \n"+
"
\n"+
"";
@@ -306,17 +367,18 @@
"\n"+
" \n"+
" \n"+
- " \n"+
- " \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
" \n"+
"
\n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1), new Integer(1) });
- insertRow("roundtrip", new Object[] { new Integer(2), new Integer(10) });
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text" });
alterDatabase(model2Xml);
@@ -325,24 +387,31 @@
List beans = getRows("roundtrip");
- assertEquals(new Integer(1), beans.get(0), "avalue");
- assertEquals(new Integer(10), beans.get(1), "avalue");
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new Double(2.0), beans.get(0), "avalue1");
+ assertEquals((Object)"text", beans.get(0), "avalue2");
}
/**
- * Tests the alteration of the datatypes of an indexed column where
- * the index will be dropped.
+ * Tests the alteration of an indexed column datatype change from smallint to varchar.
*/
- public void testChangeDroppedIndexColumnDatatype()
+ public void testIndexColumnTypeSmallintToVarchar()
{
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
- " \n"+
- " \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
" \n"+
"
\n"+
"";
@@ -351,37 +420,57 @@
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
"
\n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1), new Integer(1) });
- insertRow("roundtrip", new Object[] { new Integer(2), new Integer(10) });
+ insertRow("roundtrip", new Object[] { new Integer(1), new Short((short)2), new Double(3.0) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip");
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
- assertEquals(new Integer(1), beans.get(0), "avalue");
- assertEquals(new Integer(10), beans.get(1), "avalue");
+ // Some databases (e.g. DB2) pad the string for some reason, so we manually trim it
+ if (bean.get("avalue1") instanceof String)
+ {
+ bean.set("avalue1", ((String)bean.get("avalue1")).trim());
+ }
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals((Object)"2", beans.get(0), "avalue1");
+ assertEquals(new Double(3.0), beans.get(0), "avalue2");
}
/**
- * Tests the alteration of a column size.
+ * Tests the alteration of the datatype of an indexed column where
+ * the index will be dropped.
*/
- public void testChangeSize()
+ public void testIndexColumnTypeAndDropIndex()
{
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
"
\n"+
"";
final String model2Xml =
@@ -389,13 +478,14 @@
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1), "test" });
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(1) });
+ insertRow("roundtrip", new Object[] { new Integer(2), new Integer(10) });
alterDatabase(model2Xml);
@@ -404,20 +494,33 @@
List beans = getRows("roundtrip");
- assertEquals((Object)"test", beans.get(0), "avalue");
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new Integer(1), beans.get(0), "avalue");
+ assertEquals(new Integer(2), beans.get(1), "pk");
+ assertEquals(new Integer(10), beans.get(1), "avalue");
}
/**
- * Tests the alteration of a column's datatype and size.
+ * Tests the alteration of an indexed column datatype change from integer to double.
*/
- public void testChangeDatatypeAndSize()
+ public void testUniqueIndexColumnTypeIntegerToDouble()
{
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
"
\n"+
"";
final String model2Xml =
@@ -425,13 +528,18 @@
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
"
\n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1), "test" });
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text" });
alterDatabase(model2Xml);
@@ -440,20 +548,32 @@
List beans = getRows("roundtrip");
- assertEquals((Object)"test", beans.get(0), "avalue");
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new Double(2.0), beans.get(0), "avalue1");
+ assertEquals((Object)"text", beans.get(0), "avalue2");
}
/**
- * Tests the alteration of a column null constraint.
+ * Tests the alteration of an indexed column datatype change from smallint to varchar.
*/
- public void testChangeNull()
+ public void testUniqueIndexColumnTypeSmallintToVarchar()
{
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
"
\n"+
"";
final String model2Xml =
@@ -461,35 +581,48 @@
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
"
\n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2) });
+ insertRow("roundtrip", new Object[] { new Integer(1), new Short((short)2), new Double(3.0) });
- alterDatabase(model2Xml);
+ alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip");
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
- assertEquals(new Integer(2), beans.get(0), "avalue");
+ // Some databases (e.g. DB2) pad the string for some reason, so we manually trim it
+ if (bean.get("avalue1") instanceof String)
+ {
+ bean.set("avalue1", ((String)bean.get("avalue1")).trim());
+ }
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals((Object)"2", beans.get(0), "avalue1");
+ assertEquals(new Double(3.0), beans.get(0), "avalue2");
}
/**
- * Tests the addition of a column's default value.
+ * Tests increasng the size of a column.
*/
- public void testAddDefault()
+ public void testColumnIncreaseSize()
{
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
final String model2Xml =
@@ -497,35 +630,36 @@
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1), new Double(2.0) });
+ insertRow("roundtrip", new Object[] { new Integer(1), "test" });
- alterDatabase(model2Xml);
+ alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
- assertEquals(new Double(2.0), beans.get(0), "avalue");
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals((Object)"test", beans.get(0), "avalue");
}
/**
- * Tests the change of a column default value.
+ * Tests decreasing the size of a column.
*/
- public void testChangeDefault()
+ public void testColumnDecreaseSize()
{
final String model1Xml =
"\n"+
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
final String model2Xml =
@@ -533,203 +667,3656 @@
"\n"+
" \n"+
" \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2) });
+ insertRow("roundtrip", new Object[] { new Integer(1), "12345678901234567890123456789012" });
- alterDatabase(model2Xml);
+ alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip");
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
- assertEquals(new Integer(2), beans.get(0), "avalue");
+ assertEquals(new Integer(1), bean, "pk");
+ assertTrue("12345678901234567890123456789012".equals(bean.get("avalue")) || "1234567890123456".equals(bean.get("avalue")));
}
/**
- * Tests the removal of a column default value.
+ * Tests increasing the size of a primary key column.
*/
- public void testDropDefault()
+ public void testPKColumnIncreaseSize()
{
final String model1Xml =
"\n"+
"\n"+
" \n"+
- " \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
final String model2Xml =
"\n"+
"\n"+
" \n"+
- " \n"+
- " \n"+
+ " \n"+
"
\n"+
"";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1) });
+ insertRow("roundtrip", new Object[] { "test" });
- alterDatabase(model2Xml);
+ alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip");
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
- assertEquals((Object)"test", beans.get(0), "avalue");
+ assertEquals("test", ((String)bean.get("pk")).trim());
}
/**
- * Tests the change of a column's auto-increment state.
+ * Tests decreasing the size of a column.
*/
- public void testMakeAutoIncrement()
+ public void testPKColumnDecreaseSize()
{
- if (!getPlatformInfo().isNonPrimaryKeyIdentityColumnsSupported())
- {
- return;
- }
- // Sybase does not like INTEGER auto-increment columns
- if (SybasePlatform.DATABASENAME.equals(getPlatform().getName()))
- {
- String model1Xml =
- "\n"+
- "\n"+
- " \n"+
- " \n"+
- " \n"+
- "
\n"+
- "";
- String model2Xml =
- "\n"+
- "\n"+
- " \n"+
- " \n"+
- " \n"+
- "
\n"+
- "";
-
- createDatabase(model1Xml);
-
- insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal(2) });
-
- alterDatabase(model2Xml);
-
- assertEquals(getAdjustedModel(),
- readModelFromDatabase("roundtriptest"));
-
- List beans = getRows("roundtrip");
-
- assertEquals(new BigDecimal(2), beans.get(0), "avalue");
- }
- else
- {
- String model1Xml =
- "\n"+
- "\n"+
- " \n"+
- " \n"+
- " \n"+
- "
\n"+
- "";
- String model2Xml=
- "\n"+
- "\n"+
- " \n"+
- " \n"+
- " \n"+
- "
\n"+
- "";
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
- createDatabase(model1Xml);
+ createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2) });
+ insertRow("roundtrip", new Object[] { "12345678901234567890123456789012" });
- alterDatabase(model2Xml);
+ alterDatabase(model2Xml);
- assertEquals(getAdjustedModel(),
- readModelFromDatabase("roundtriptest"));
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip");
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
- assertEquals(new Integer(2), beans.get(0), "avalue");
- }
+ assertTrue("12345678901234567890123456789012".equals(bean.get("pk")) || "1234567890123456".equals(bean.get("pk")));
}
/**
- * Tests the removal the column auto-increment status.
+ * Tests increasing the sizes of PK and FK columns.
*/
- public void testDropAutoIncrement()
+ public void testPKAndFKColumnIncreaseSize()
{
- if (!getPlatformInfo().isNonPrimaryKeyIdentityColumnsSupported())
- {
- return;
- }
-
- boolean isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
- final String model1Xml;
- final String model2Xml;
-
- if (isSybase)
- {
- model1Xml = "\n"+
- "\n"+
- " \n"+
- " \n"+
- " \n"+
- "
\n"+
- "";
- model2Xml = "\n"+
- "\n"+
- " \n"+
- " \n"+
- " \n"+
- "
\n"+
- "";
- }
- else
- {
- model1Xml = "\n"+
- "\n"+
- " \n"+
- " \n"+
- " \n"+
- "
\n"+
- "";
- model2Xml = "\n"+
- "\n"+
- " \n"+
- " \n"+
- " \n"+
- "
\n"+
- "";
- }
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
createDatabase(model1Xml);
- insertRow("roundtrip", new Object[] { new Integer(1) });
+ insertRow("roundtrip1", new Object[] { "test" });
+ insertRow("roundtrip2", new Object[] { new Integer(1), "test" });
- alterDatabase(model2Xml);
+ alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
- List beans = getRows("roundtrip");
+ List beans1 = getRows("roundtrip1");
+ List beans2 = getRows("roundtrip2");
- if (isSybase)
- {
- assertEquals(new BigDecimal(1), beans.get(0), "avalue");
- }
- else
- {
- assertEquals(new Integer(1), beans.get(0), "avalue");
- }
+ assertEquals((Object)"test", beans1.get(0), "pk");
+ assertEquals(new Integer(1), beans2.get(0), "pk");
+ assertEquals((Object)"test", beans2.get(0), "fk");
+ }
+
+ /**
+ * Tests decreasing the sizes of PK and FK columns.
+ */
+ public void testPKAndFKColumnDecreaseSize()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip1", new Object[] { "test" });
+ insertRow("roundtrip2", new Object[] { new Integer(1), "test" });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans1 = getRows("roundtrip1");
+ List beans2 = getRows("roundtrip2");
+ DynaBean bean1 = (DynaBean)beans1.get(0);
+ DynaBean bean2 = (DynaBean)beans2.get(0);
+
+ assertEquals("test", ((String)bean1.get("pk")).trim());
+ assertEquals(new Integer(1), bean2, "pk");
+ assertEquals("test", ((String)bean2.get("fk")).trim());
+ }
+
+ /**
+ * Tests increasing the size of an indexed column.
+ */
+ public void testIndexColumnIncreaseSize()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text" });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new Integer(2), beans.get(0), "avalue1");
+ assertEquals((Object)"text", beans.get(0), "avalue2");
+ }
+
+ /**
+ * Tests decreasing the size of an indexed column.
+ */
+ public void testIndexColumnDecreaseSize()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text" });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
+
+ assertEquals(new Integer(1), bean, "pk");
+ assertEquals(new Integer(2), bean, "avalue1");
+ assertEquals((Object)"text", ((String)bean.get("avalue2")).trim());
+ }
+
+ /**
+ * Tests increasing the size of an indexed column.
+ */
+ public void testUniqueIndexColumnIncreaseSize()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text" });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
+
+ assertEquals(new Integer(1), bean, "pk");
+ assertEquals(new Integer(2), bean, "avalue1");
+ assertEquals((Object)"text", ((String)bean.get("avalue2")).trim());
+ }
+
+ /**
+ * Tests decreasing the size of an indexed column.
+ */
+ public void testUniqueIndexColumnDecreaseSize()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text" });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new Integer(2), beans.get(0), "avalue1");
+ assertEquals((Object)"text", beans.get(0), "avalue2");
+ }
+
+ /**
+ * Tests increasing the precision of a column.
+ */
+ public void testColumnIncreasePrecision()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal("12345.12345") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new BigDecimal("12345.12345"), beans.get(0), "avalue");
+ }
+
+ /**
+ * Tests decreasng the precision of a column.
+ */
+ public void testColumnDecreasePrecision()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal("12345.12345") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new BigDecimal("12345.12345"), beans.get(0), "avalue");
+ }
+
+ /**
+ * Tests increasing the precision of a primary key column.
+ */
+ public void testPKColumnIncreasePrecision()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new BigDecimal("12345.12345") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new BigDecimal("12345.12345"), beans.get(0), "pk");
+ }
+
+ /**
+ * Tests decreasing the precision of a primary key column.
+ */
+ public void testPKColumnDecreasePrecision()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new BigDecimal("12345.12345") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new BigDecimal("12345.12345"), beans.get(0), "pk");
+ }
+
+ /**
+ * Tests increasing the precision of PK and FK columns.
+ */
+ public void testPKAndFKColumnIncreasePrecision()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip1", new Object[] { new BigDecimal("123456.12") });
+ insertRow("roundtrip2", new Object[] { new Integer(1), new BigDecimal("123456.12") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans1 = getRows("roundtrip1");
+ List beans2 = getRows("roundtrip2");
+
+ assertEquals(new BigDecimal("123456.12"), beans1.get(0), "pk");
+ assertEquals(new Integer(1), beans2.get(0), "pk");
+ assertEquals(new BigDecimal("123456.12"), beans2.get(0), "fk");
+ }
+
+ /**
+ * Tests decreasing the precision of PK and FK columns.
+ */
+ public void testPKAndFKColumnDecreasePrecision()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip1", new Object[] { new BigDecimal("123456.12") });
+ insertRow("roundtrip2", new Object[] { new Integer(1), new BigDecimal("123456.12") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans1 = getRows("roundtrip1");
+ List beans2 = getRows("roundtrip2");
+
+ assertEquals(new BigDecimal("123456.12"), beans1.get(0), "pk");
+ assertEquals(new Integer(1), beans2.get(0), "pk");
+ assertEquals(new BigDecimal("123456.12"), beans2.get(0), "fk");
+ }
+
+ /**
+ * Tests increasing the precision of an indexed column.
+ */
+ public void testIndexColumnIncreasePrecision()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal("123456.12"), new Integer(2) });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new BigDecimal("123456.12"), beans.get(0), "avalue1");
+ assertEquals(new Integer(2), beans.get(0), "avalue2");
+ }
+
+ /**
+ * Tests decreasing the precision of an indexed column.
+ */
+ public void testIndexColumnDecreasePrecision()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal("123456.12"), new Integer(2) });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new BigDecimal("123456.12"), beans.get(0), "avalue1");
+ assertEquals(new Integer(2), beans.get(0), "avalue2");
+ }
+
+ /**
+ * Tests increasing the precision of an indexed column.
+ */
+ public void testUniqueIndexColumnIncreasePrecision()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), new BigDecimal("123456.12") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new Integer(2), beans.get(0), "avalue1");
+ assertEquals(new BigDecimal("123456.12"), beans.get(0), "avalue2");
+ }
+
+ /**
+ * Tests decreasing the precision of an indexed column.
+ */
+ public void testUniqueIndexColumnDecreasePrecision()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), new BigDecimal("123456.12") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new Integer(2), beans.get(0), "avalue1");
+ assertEquals(new BigDecimal("123456.12"), beans.get(0), "avalue2");
+ }
+
+ /**
+ * Tests increasing the scale of a column.
+ */
+ public void testColumnIncreaseScale()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal("12345.1234") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
+
+ assertEquals(new Integer(1), bean, "pk");
+ // Some DBs return the BigDecimal with the five digits scale, some don't
+ assertTrue(bean.get("avalue").equals(new BigDecimal("12345.1234")) ||
+ bean.get("avalue").equals(new BigDecimal("12345.12340")));
+ }
+
+ /**
+ * Tests decreasing the scale of a column.
+ */
+ public void testColumnDecreaseScale()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal("12345.123") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new BigDecimal("12345.123"), beans.get(0), "avalue");
+ }
+
+ /**
+ * Tests increasing the scale of a primary key column.
+ */
+ public void testPKColumnIncreaseScale()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new BigDecimal("12345.123") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
+
+ // Some DBs return the BigDecimal with the three digits scale, some don't
+ assertTrue(bean.get("pk").equals(new BigDecimal("12345.123")) ||
+ bean.get("pk").equals(new BigDecimal("12345.12300")));
+ }
+
+ /**
+ * Tests decreasing the scale of a primary key column.
+ */
+ public void testPKColumnDecreaseScale()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new BigDecimal("12345.123") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new BigDecimal("12345.123"), beans.get(0), "pk");
+ }
+
+ /**
+ * Tests increasing the scale of PK and FK columns.
+ */
+ public void testPKAndFKColumnIncreaseScale()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip1", new Object[] { new BigDecimal("123456.12") });
+ insertRow("roundtrip2", new Object[] { new Integer(1), new BigDecimal("123456.12") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans1 = getRows("roundtrip1");
+ List beans2 = getRows("roundtrip2");
+ DynaBean bean1 = (DynaBean)beans1.get(0);
+ DynaBean bean2 = (DynaBean)beans2.get(0);
+
+ // Some DBs return the BigDecimal with the three digits scale, some don't
+ assertTrue(bean1.get("pk").equals(new BigDecimal("123456.12")) ||
+ bean1.get("pk").equals(new BigDecimal("123456.12000")));
+ assertEquals(new Integer(1), beans2.get(0), "pk");
+ assertTrue(bean2.get("fk").equals(new BigDecimal("123456.12")) ||
+ bean2.get("fk").equals(new BigDecimal("123456.12000")));
+ }
+
+ /**
+ * Tests decreasing the scale of PK and FK columns.
+ */
+ public void testPKAndFKColumnDecreaseScale()
+ {
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip1", new Object[] { new BigDecimal("123456.12") });
+ insertRow("roundtrip2", new Object[] { new Integer(1), new BigDecimal("123456.12") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans1 = getRows("roundtrip1");
+ List beans2 = getRows("roundtrip2");
+
+ assertEquals(new BigDecimal("123456.12"), beans1.get(0), "pk");
+ assertEquals(new Integer(1), beans2.get(0), "pk");
+ assertEquals(new BigDecimal("123456.12"), beans2.get(0), "fk");
+ }
+
+ /**
+ * Tests increasing the scale of an indexed column.
+ */
+ public void testIndexColumnIncreaseScale()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal("123456.12"), new Integer(2) });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
+
+ assertEquals(new Integer(1), bean, "pk");
+ assertEquals(new Integer(2), bean, "avalue2");
+ assertTrue(new BigDecimal("123456.12").equals(bean.get("avalue1")) || new BigDecimal("123456.12000").equals(bean.get("avalue1")));
+ }
+
+ /**
+ * Tests decreasing the scale of an indexed column.
+ */
+ public void testIndexColumnDecreaseScale()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal("123456.12"), new Integer(2) });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(new Integer(1), beans.get(0), "pk");
+ assertEquals(new BigDecimal("123456.12"), beans.get(0), "avalue1");
+ assertEquals(new Integer(2), beans.get(0), "avalue2");
+ }
+
+ /**
+ * Tests increasing the scale of an indexed column.
+ */
+ public void testUniqueIndexColumnIncreaseScale()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+ final String model2Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ " \n"+
+ "
\n"+
+ "";
+
+ createDatabase(model1Xml);
+
+ insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), new BigDecimal("123456.12") });
+
+ alterDatabase(model2Xml);
+
+ assertEquals(getAdjustedModel(),
+ readModelFromDatabase("roundtriptest"));
+
+ List beans = getRows("roundtrip");
+ DynaBean bean = (DynaBean)beans.get(0);
+
+ assertEquals(new Integer(1), bean, "pk");
+ assertEquals(new Integer(2), bean, "avalue1");
+ assertTrue(new BigDecimal("123456.12").equals(bean.get("avalue2")) || new BigDecimal("123456.12000").equals(bean.get("avalue2")));
+ }
+
+ /**
+ * Tests decreasing the scale of an indexed column.
+ */
+ public void testUniqueIndexColumnDecreaseScale()
+ {
+ if (!getPlatformInfo().isIndicesSupported())
+ {
+ return;
+ }
+
+ final String model1Xml =
+ "\n"+
+ "\n"+
+ " \n"+
+ " \n"+
+ " \n"+
[... 2352 lines stripped ...]