SQL syntax bug in PostgreSQL 8.1 for ALTER COLUMN
-------------------------------------------------
Key: DDLUTILS-73
URL: http://issues.apache.org/jira/browse/DDLUTILS-73
Project: DdlUtils
Type: Bug
Environment: PostgreSQL 8.1
Reporter: Vignesh Swaminathan
Assigned to: Thomas Dudziak
The following code has to be added to PostgreSQLBuilder class to make it work
for altering columns in PostgreSQL
/**
* Generates the alter statement to add or modify a single column on a
table.
*
* @param table The table the index is on
* @param column The column to drop
* @param isNewColumn Whether the column should be added
*/
public void writeColumnAlterStmt(Table table, Column column, boolean
isNewColumn) throws IOException
{
writeTableAlterStmt(table);
print(isNewColumn ? "ADD " : "ALTER ");
if(isNewColumn)
writeColumn(table, column);
else
writeAlterColumn(table, column);
printEndOfStatement();
}
/**
* Outputs the DDL for the specified column.
*
* @param table The table containing the column
* @param column The column
*/
protected void writeAlterColumn(Table table, Column column) throws
IOException
{
//see comments in columnsDiffer about null/"" defaults
printIdentifier(getColumnName(column));
print(" TYPE ");
print(getSqlType(column));
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);
}
if (column.isRequired())
{
print(" ");
writeColumnNotNullableStmt();
}
else if (getPlatformInfo().isRequiringNullAsDefaultValue() &&
getPlatformInfo().hasNullDefault(column.getTypeCode()))
{
print(" ");
writeColumnNullableStmt();
}
if (column.isAutoIncrement() &&
!getPlatformInfo().isIdentitySpecUsesDefaultValue())
{
if (!getPlatformInfo().isSupportingNonPKIdentityColumns() &&
!column.isPrimaryKey())
{
throw new DynaSqlException("Column "+column.getName()+" in
table "+table.getName()+" is auto-incrementing but not a primary key column,
which is not supported by the platform");
}
print(" ");
writeColumnAutoIncrementStmt(table, column);
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira