You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2005/12/28 23:00:41 UTC
svn commit: r359650 - in /db/ddlutils/trunk/src:
java/org/apache/ddlutils/platform/ test/ test/org/apache/ddlutils/io/
Author: tomdz
Date: Wed Dec 28 14:00:28 2005
New Revision: 359650
URL: http://svn.apache.org/viewcvs?rev=359650&view=rev
Log:
Added tests for HsqlDb & fixed HsqlDb platform accordingly
Added:
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbModelReader.java
db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbConstraints.java
db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbDatatypes.java
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java
db/ddlutils/trunk/src/test/jdbc.properties.hsqldb
db/ddlutils/trunk/src/test/org/apache/ddlutils/io/ConstraintsTestBase.java
db/ddlutils/trunk/src/test/org/apache/ddlutils/io/DatatypesTestBase.java
db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyConstraints.java
db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyDatatypes.java
Added: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbModelReader.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbModelReader.java?rev=359650&view=auto
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbModelReader.java (added)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbModelReader.java Wed Dec 28 14:00:28 2005
@@ -0,0 +1,53 @@
+package org.apache.ddlutils.platform;
+
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.ddlutils.PlatformInfo;
+import org.apache.ddlutils.model.Index;
+
+/**
+ * Reads a database model from a HsqlDb database.
+ *
+ * @author Thomas Dudziak
+ * @version $Revision: $
+ */
+public class HsqlDbModelReader extends JdbcModelReader
+{
+ /**
+ * Creates a new model reader for HsqlDb databases.
+ *
+ * @param platformInfo The platform specific settings
+ */
+ public HsqlDbModelReader(PlatformInfo platformInfo)
+ {
+ super(platformInfo);
+ setDefaultCatalogPattern(null);
+ setDefaultSchemaPattern(null);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected boolean mightBeInternalIndex(Index index)
+ {
+ String name = index.getName();
+
+ // Internal names normally have the form "SYS_PK_ROUNDTRIP" or "SYS_IDX_11"
+ return (name != null) &&
+ (name.startsWith("SYS_PK_") || name.startsWith("SYS_IDX_"));
+ }
+}
Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java?rev=359650&r1=359649&r2=359650&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/HsqlDbPlatform.java Wed Dec 28 14:00:28 2005
@@ -16,9 +16,12 @@
* limitations under the License.
*/
+import java.sql.Connection;
import java.sql.Types;
+import org.apache.ddlutils.DynaSqlException;
import org.apache.ddlutils.PlatformInfo;
+import org.apache.ddlutils.util.Jdbc3Utils;
/**
* The platform implementation for the HsqlDb database.
@@ -46,20 +49,35 @@
info.setPrimaryKeyEmbedded(true);
info.setForeignKeysEmbedded(false);
info.setIndicesEmbedded(false);
- info.addNativeTypeMapping(Types.ARRAY, "LONGVARBINARY");
- info.addNativeTypeMapping(Types.BLOB, "LONGVARBINARY");
- info.addNativeTypeMapping(Types.CLOB, "LONGVARCHAR");
- info.addNativeTypeMapping(Types.DISTINCT, "LONGVARBINARY");
- info.addNativeTypeMapping(Types.FLOAT, "DOUBLE");
+ info.setSupportingNonPKIdentityColumns(false);
+
+ info.addNativeTypeMapping(Types.BIT, "BOOLEAN");
+ info.addNativeTypeMapping(Types.ARRAY, "LONGVARBINARY", Types.LONGVARBINARY);
+ info.addNativeTypeMapping(Types.BLOB, "LONGVARBINARY", Types.LONGVARBINARY);
+ info.addNativeTypeMapping(Types.CLOB, "LONGVARCHAR", Types.LONGVARCHAR);
+ info.addNativeTypeMapping(Types.DISTINCT, "LONGVARBINARY", Types.LONGVARBINARY);
+ info.addNativeTypeMapping(Types.FLOAT, "DOUBLE", Types.DOUBLE);
info.addNativeTypeMapping(Types.JAVA_OBJECT, "OBJECT");
- info.addNativeTypeMapping(Types.NULL, "LONGVARBINARY");
+ info.addNativeTypeMapping(Types.NULL, "LONGVARBINARY", Types.LONGVARBINARY);
info.addNativeTypeMapping(Types.OTHER, "OTHER");
- info.addNativeTypeMapping(Types.REF, "LONGVARBINARY");
- info.addNativeTypeMapping(Types.STRUCT, "LONGVARBINARY");
- info.addNativeTypeMapping("BOOLEAN", "BIT");
- info.addNativeTypeMapping("DATALINK", "LONGVARBINARY");
+ info.addNativeTypeMapping(Types.REF, "LONGVARBINARY", Types.LONGVARBINARY);
+ info.addNativeTypeMapping(Types.STRUCT, "LONGVARBINARY", Types.LONGVARBINARY);
+ // JDBC's TINYINT requires a value range of -255 to 255, but HsqlDb's is only -128 to 127
+ info.addNativeTypeMapping(Types.TINYINT, "SMALLINT", Types.SMALLINT);
+ if (Jdbc3Utils.supportsJava14JdbcTypes())
+ {
+ // when using JDBC3, BIT will be back-mapped to BOOLEAN
+ info.addNativeTypeMapping("BIT", "BOOLEAN", "BOOLEAN");
+ info.addNativeTypeMapping("DATALINK", "LONGVARBINARY");
+ }
+
+ info.addDefaultSize(Types.CHAR, Integer.MAX_VALUE);
+ info.addDefaultSize(Types.VARCHAR, Integer.MAX_VALUE);
+ info.addDefaultSize(Types.BINARY, Integer.MAX_VALUE);
+ info.addDefaultSize(Types.VARBINARY, Integer.MAX_VALUE);
setSqlBuilder(new HsqlDbBuilder(info));
+ setModelReader(new HsqlDbModelReader(info));
}
/**
@@ -68,5 +86,25 @@
public String getName()
{
return DATABASENAME;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void shutdownDatabase(Connection connection) throws DynaSqlException
+ {
+ // TODO: Determine whether we're running in embedded mode (from the url ?)
+//
+// try
+// {
+// Statement stmt = connection.createStatement();
+//
+// stmt.executeUpdate("SHUTDOWN");
+// stmt.close();
+// }
+// catch (SQLException ex)
+// {
+// throw new DynaSqlException(ex);
+// }
}
}
Modified: db/ddlutils/trunk/src/test/jdbc.properties.hsqldb
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/jdbc.properties.hsqldb?rev=359650&r1=359649&r2=359650&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/jdbc.properties.hsqldb (original)
+++ db/ddlutils/trunk/src/test/jdbc.properties.hsqldb Wed Dec 28 14:00:28 2005
@@ -1,12 +1,21 @@
-# JDBC properties for PostgreSQL
+# JDBC properties for HsqlDb
# Use this property if ddlutils does not recognize the platform from the settings
-#ddlutils.platform=PostgreSQL
+ddlutils.platform=HsqlDb
# Properties starting with "datasource." will be fed into the datasource instance of the
# class configured via the datasource.class property
datasource.class=org.apache.commons.dbcp.BasicDataSource
-datasource.driverClassName=org.postgresql.Driver
-datasource.url=jdbc:postgresql://localhost/ddlutils
-datasource.username=root
-#datasource.password=
\ No newline at end of file
+datasource.driverClassName=org.hsqldb.jdbcDriver
+
+# Embedded mode
+
+#datasource.url=jdbc:hsqldb:file:target/database/ddlutils_hsqldb
+#datasource.username=sa
+#datasource.password=
+
+# Server mode
+
+datasource.url=jdbc:hsqldb:hsql://localhost/xdb
+datasource.username=sa
+datasource.password=
Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/ConstraintsTestBase.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/ConstraintsTestBase.java?rev=359650&r1=359649&r2=359650&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/ConstraintsTestBase.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/ConstraintsTestBase.java Wed Dec 28 14:00:28 2005
@@ -207,7 +207,11 @@
*/
public void testAutoIncrementIntegerColumn()
{
- performConstraintsTest(TEST_AUTO_INCREMENT_INTEGER_MODEL);
+ // only test this if the platform supports it
+ if (getPlatformInfo().isSupportingNonPKIdentityColumns())
+ {
+ performConstraintsTest(TEST_AUTO_INCREMENT_INTEGER_MODEL);
+ }
}
/**
Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/DatatypesTestBase.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/DatatypesTestBase.java?rev=359650&r1=359649&r2=359650&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/DatatypesTestBase.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/DatatypesTestBase.java Wed Dec 28 14:00:28 2005
@@ -1,5 +1,21 @@
package org.apache.ddlutils.io;
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Time;
@@ -50,7 +66,7 @@
"<database name='roundtriptest'>\n"+
" <table name='ROUNDTRIP'>\n"+
" <column name='PK' type='INTEGER' primaryKey='true' required='true'/>\n"+
- " <column name='VALUE' type='BOOLEAN' required='true' default='TRUE'/>\n"+
+ " <column name='VALUE' type='BOOLEAN' required='true' default='true'/>\n"+
" </table>\n"+
"</database>";
/** Test model with a simple TINYINT column. */
@@ -86,7 +102,7 @@
"<database name='roundtriptest'>\n"+
" <table name='ROUNDTRIP'>\n"+
" <column name='PK' type='INTEGER' primaryKey='true' required='true'/>\n"+
- " <column name='VALUE' type='SMALLINT' required='true' default='-32768'/>\n"+
+ " <column name='VALUE' type='SMALLINT' required='true' default='-30000'/>\n"+
" </table>\n"+
"</database>";
/** Test model with a simple INTEGER column. */
@@ -122,7 +138,7 @@
"<database name='roundtriptest'>\n"+
" <table name='ROUNDTRIP'>\n"+
" <column name='PK' type='INTEGER' primaryKey='true' required='true'/>\n"+
- " <column name='VALUE' type='BIGINT' required='true' default='-9223372036854775808'/>\n"+
+ " <column name='VALUE' type='BIGINT' required='true' default='-9000000000000000000'/>\n"+
" </table>\n"+
"</database>";
/** Test model with a simple REAL column. */
@@ -518,7 +534,7 @@
*/
public void testSmallInt()
{
- performDataTypeTest(TEST_SMALLINT_MODEL, new Integer(-32768), new Integer(32767));
+ performDataTypeTest(TEST_SMALLINT_MODEL, new Integer(Short.MIN_VALUE), new Integer(Short.MAX_VALUE));
}
/**
@@ -526,7 +542,7 @@
*/
public void testSmallIntWithDefault()
{
- performDataTypeTest(TEST_SMALLINT_MODEL_WITH_DEFAULT, new Integer(256), null, new Integer(-32768));
+ performDataTypeTest(TEST_SMALLINT_MODEL_WITH_DEFAULT, new Integer(256), null, new Integer(-30000));
}
/**
@@ -550,7 +566,7 @@
*/
public void testBigInt()
{
- performDataTypeTest(TEST_BIGINT_MODEL, new Long(9223372036854775807l), new Long(0l));
+ performDataTypeTest(TEST_BIGINT_MODEL, new Long(Long.MAX_VALUE), new Long(0l));
}
/**
@@ -558,7 +574,7 @@
*/
public void testBigIntWithDefault()
{
- performDataTypeTest(TEST_BIGINT_MODEL_WITH_DEFAULT, null, new Long(-1l), new Long(-9223372036854775808l));
+ performDataTypeTest(TEST_BIGINT_MODEL_WITH_DEFAULT, null, new Long(-1l), new Long(-9000000000000000000l));
}
/**
Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyConstraints.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyConstraints.java?rev=359650&r1=359649&r2=359650&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyConstraints.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyConstraints.java Wed Dec 28 14:00:28 2005
@@ -19,7 +19,7 @@
import org.apache.ddlutils.platform.DerbyPlatform;
/**
- * Performs the roundtrip constraint tests against a derby database.
+ * Performs the roundtrip constraint tests against a Derby database.
*
* @author Thomas Dudziak
* @version $Revision: 289996 $
Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyDatatypes.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyDatatypes.java?rev=359650&r1=359649&r2=359650&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyDatatypes.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDerbyDatatypes.java Wed Dec 28 14:00:28 2005
@@ -1,5 +1,21 @@
package org.apache.ddlutils.io;
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
import org.apache.ddlutils.platform.DerbyPlatform;
/**
Added: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbConstraints.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbConstraints.java?rev=359650&view=auto
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbConstraints.java (added)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbConstraints.java Wed Dec 28 14:00:28 2005
@@ -0,0 +1,36 @@
+package org.apache.ddlutils.io;
+
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.ddlutils.platform.HsqlDbPlatform;
+
+/**
+ * Performs the roundtrip constraint tests against a HsqlDb database.
+ *
+ * @author Thomas Dudziak
+ * @version $Revision: $
+ */
+public class TestHsqlDbConstraints extends ConstraintsTestBase
+{
+ /**
+ * {@inheritDoc}
+ */
+ protected String getPlatformName()
+ {
+ return HsqlDbPlatform.DATABASENAME;
+ }
+}
Added: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbDatatypes.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbDatatypes.java?rev=359650&view=auto
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbDatatypes.java (added)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestHsqlDbDatatypes.java Wed Dec 28 14:00:28 2005
@@ -0,0 +1,36 @@
+package org.apache.ddlutils.io;
+
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.ddlutils.platform.HsqlDbPlatform;
+
+/**
+ * Performs the roundtrip datatype tests against a hsqldb database.
+ *
+ * @author Thomas Dudziak
+ * @version $Revision: 289996 $
+ */
+public class TestHsqlDbDatatypes extends DatatypesTestBase
+{
+ /**
+ * {@inheritDoc}
+ */
+ protected String getPlatformName()
+ {
+ return HsqlDbPlatform.DATABASENAME;
+ }
+}