You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Øyvind Harboe (JIRA)" <ji...@apache.org> on 2010/02/24 13:56:28 UTC
[jira] Commented: (CAY-1395) createSetAllowNullToDb() return
incorrect SQL statement to createSql()
[ https://issues.apache.org/jira/browse/CAY-1395?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12837765#action_12837765 ]
Øyvind Harboe commented on CAY-1395:
------------------------------------
Without the kludge above, the SQL statement will be
ALTER xxxx NOT NULL
instead of
ALTER XXXX NULL
as SetAllowNullToDb() invokes isMandatory() and isMandatory() returns true when converting a DbAttribute to not mandatory.
>From JdbcAdapter.java:
sqlBuffer.append(column.isMandatory() ? " NOT NULL" : " NULL");
> createSetAllowNullToDb() return incorrect SQL statement to createSql()
> ----------------------------------------------------------------------
>
> Key: CAY-1395
> URL: https://issues.apache.org/jira/browse/CAY-1395
> Project: Cayenne
> Issue Type: Bug
> Components: Core Library
> Affects Versions: 3.0RC2
> Reporter: Øyvind Harboe
> Fix For: 3.0
>
>
> The problem with createSql() is that it is executed *before* the property is changed.
> The following kludge to SQLServerManagerFactory.createSetAllowNullToDb() works on my rocket...
> return new SetAllowNullToDb(entity, column) {
> @Override
> public List<String> createSql(DbAdapter adapter) {
> StringBuffer sqlBuffer = new StringBuffer();
> QuotingStrategy context = adapter.getQuotingStrategy(getEntity()
> .getDataMap()
> .isQuotingSQLIdentifiers());
> sqlBuffer.append("ALTER TABLE ");
> sqlBuffer.append(context.quoteFullyQualifiedName(getEntity()));
> sqlBuffer.append(" ALTER COLUMN ");
> /* Kludge!!!! how should this be handled really??? */
> column.setMandatory(false);
> adapter.createTableAppendColumn(sqlBuffer, column);
> return Collections.singletonList(sqlBuffer.toString());
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.