Author: tomdz
Date: Wed Jan 4 15:08:56 2006
New Revision: 366016
URL: http://svn.apache.org/viewcvs?rev=366016&view=rev
Log:
Added two additional flags to the platform info:
* whether the database returns a synthetic default value for primary key
columns (as MySql does)
* whether default values for LONGVARCHAR/LONGVARBINARY columns are supported
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformInfo.java
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java
Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformInfo.java
URL:
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformInfo.java?rev=366016&r1=366015&r2=366016&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformInfo.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformInfo.java Wed Jan 4
15:08:56 2006
@@ -38,6 +38,9 @@
/** Whether the database requires the explicit stating of NULL as the
default value. */
private boolean _requiringNullAsDefaultValue = false;
+ /** Whether default values can be defined for LONGVARCHAR/LONGVARBINARY
columns. */
+ private boolean _supportingDefaultValuesForLongTypes = true;
+
/** Whether primary key constraints are embedded inside the create table
statement. */
private boolean _primaryKeyEmbedded = true;
@@ -112,6 +115,9 @@
reading a model from a database. */
private boolean _returningSystemIndices = true;
+ /** Whether the database returns a synthetic default value for primary key
columns. */
+ private boolean _returningDefaultValueForPrimaryKeys = false;
+
/**
* Creates a new platform info object.
*/
@@ -158,6 +164,26 @@
}
/**
+ * Determines whether default values can be specified for
LONGVARCHAR/LONGVARBINARY columns.
+ *
+ * @return <code>true</code> if default values are allowed
+ */
+ public boolean isSupportingDefaultValuesForLongTypes()
+ {
+ return _supportingDefaultValuesForLongTypes;
+ }
+
+ /**
+ * Specifies whether default values can be specified for
LONGVARCHAR/LONGVARBINARY columns.
+ *
+ * @param isSupported <code>true</code> if default values are supported
+ */
+ public void setSupportingDefaultValuesForLongTypes(boolean isSupported)
+ {
+ _supportingDefaultValuesForLongTypes = isSupported;
+ }
+
+ /**
* Determines whether primary key constraints are embedded in the create
* table clause or as seperate alter table statements. The default is
* embedded pks.
@@ -790,11 +816,35 @@
* Specifies whether database-generated indices for primary and foreign
keys are
* returned when reading a model from a database.
*
- * @param returningSystemIndices <code>true</code> if system indices are
read from a live database
+ * @param returningSystemIndices <code>true</code> if system indices are
read from
+ * a live database
*/
public void setReturningSystemIndices(boolean returningSystemIndices)
{
_returningSystemIndices = returningSystemIndices;
+ }
+
+ /**
+ * Determines whether the platform returns synthetic default values (e.g.
0 for numeric
+ * columns etc.) for primary key columns when reading a model from a
database.
+ *
+ * @return <code>true</code> if synthetic default values are returned for
pk columns
+ */
+ public boolean isReturningDefaultValueForPrimaryKeys()
+ {
+ return _returningDefaultValueForPrimaryKeys;
+ }
+
+ /**
+ * Specifies whether the platform returns synthetic default values (e.g. 0
for numeric
+ * columns etc.) for primary key columns when reading a model from a
database.
+ *
+ * @param returningDefaultValue <code>true</code> if synthetic default
values are returned for
+ * pk columns
+ */
+ public void setReturningDefaultValueForPrimaryKeys(boolean
returningDefaultValue)
+ {
+ _returningDefaultValueForPrimaryKeys = returningDefaultValue;
}
}
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java
URL:
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java?rev=366016&r1=366015&r2=366016&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java Wed
Jan 4 15:08:56 2006
@@ -1116,6 +1116,11 @@
if ((column.getDefaultValue() != null) ||
(getPlatformInfo().isIdentitySpecUsesDefaultValue() &&
column.isAutoIncrement()))
{
+ if (!getPlatformInfo().isSupportingDefaultValuesForLongTypes() &&
+ ((column.getTypeCode() == Types.LONGVARBINARY) ||
(column.getTypeCode() == Types.LONGVARCHAR)))
+ {
+ throw new DynaSqlException("The platform does not support
default values for LONGVARCHAR or LONGVARBINARY columns");
+ }
print(" DEFAULT ");
writeColumnDefaultValue(table, column);
}