Fix PostgreSQL handling for null Serializable values (ALF-1614)

- Dialect determination sets a static that determines the setNull handling on Serializable
 - Default is (as before) Types.LONGVARBINARY but DB2 uses Types.BLOB


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19678 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2010-03-30 18:46:47 +00:00
parent e84ea744eb
commit 521fe34786

View File

@@ -32,6 +32,7 @@ import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -39,6 +40,7 @@ import java.util.Map;
import java.util.Properties;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.ibatis.SerializableTypeHandlerCallback;
import org.alfresco.repo.admin.patch.Patch;
import org.alfresco.repo.admin.patch.impl.SchemaUpgradeScriptPatch;
import org.alfresco.repo.content.filestore.FileContentWriter;
@@ -138,7 +140,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
/**
* @see PropertyValue#DEFAULT_MAX_STRING_LENGTH
*/
public static final void setMaxStringLength(int length)
private static final void setMaxStringLength(int length)
{
if (length < 1024)
{
@@ -1171,6 +1173,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
}
int maxStringLength = SchemaBootstrap.DEFAULT_MAX_STRING_LENGTH;
int serializableType = SerializableTypeHandlerCallback.getSerializableType();
// Adjust the maximum allowable String length according to the dialect
if (dialect instanceof AlfrescoSQLServerDialect)
{
@@ -1189,6 +1192,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
// string_value varchar(1024),
// serializable_value varchar(8192) for bit data,
maxStringLength = SchemaBootstrap.DEFAULT_MAX_STRING_LENGTH;
serializableType = Types.BLOB;
}
else if (dialect instanceof HSQLDialect)
{
@@ -1215,6 +1219,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean
maxStringLength = SchemaBootstrap.DEFAULT_MAX_STRING_LENGTH;
}
SchemaBootstrap.setMaxStringLength(maxStringLength);
SerializableTypeHandlerCallback.setSerializableType(serializableType);
// Now override the maximum string length if it was set directly
if (maximumStringLength > 0)