You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Brent Daniel (JIRA)" <tu...@ws.apache.org> on 2006/12/20 03:57:22 UTC
[jira] Commented: (TUSCANY-1007) ApplyChnages fails when added DO
does not include a modified property
[ http://issues.apache.org/jira/browse/TUSCANY-1007?page=comments#action_12459812 ]
Brent Daniel commented on TUSCANY-1007:
---------------------------------------
Kevin,
I'm not sure what behavior you want here. The ID column in your test case is not a generated column. How do you want the DAS to pick an ID value? The issue with doing an empty insert with a generated ID column was fixed in tuscany-957.
> ApplyChnages fails when added DO does not include a modified property
> ---------------------------------------------------------------------
>
> Key: TUSCANY-1007
> URL: http://issues.apache.org/jira/browse/TUSCANY-1007
> Project: Tuscany
> Issue Type: Bug
> Reporter: Kevin Williams
>
> Looks like the generated insert is invalid when the change history for an added DO does not include a modified property. I think the correct behavior should be to generate an ID-only INSERT. An alternative would be to generate an INSERT that initializes all columns ... i'd be interested in hearing arguments to justify the latter.
> This test:
> /das/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.testReadInsertApply()
> demonstrates the problem. I have temporarily commented it out.
> Here is the stack trace:
> java.lang.RuntimeException: SQL Exception: Column 'ID' cannot accept a NULL value.
> at org.apache.tuscany.das.rdb.impl.InsertCommandImpl.execute(InsertCommandImpl.java:47)
> at org.apache.tuscany.das.rdb.impl.ChangeOperation.execute(ChangeOperation.java:73)
> at org.apache.tuscany.das.rdb.impl.Changes.execute(Changes.java:57)
> at org.apache.tuscany.das.rdb.impl.ApplyChangesCommandImpl.execute(ApplyChangesCommandImpl.java:69)
> at org.apache.tuscany.das.rdb.impl.DASImpl.applyChanges(DASImpl.java:244)
> at org.apache.tuscany.das.rdb.test.CrudWithChangeHistory.testReadInsertApply(CrudWithChangeHistory.java:289)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:615)
> at junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.extensions.TestSetup.run(TestSetup.java:23)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: SQL Exception: Column 'ID' cannot accept a NULL value.
> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
> at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
> at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
> at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)
> at org.apache.tuscany.das.rdb.impl.Statement.executeUpdate(Statement.java:173)
> at org.apache.tuscany.das.rdb.impl.Statement.executeUpdate(Statement.java:133)
> at org.apache.tuscany.das.rdb.impl.InsertCommandImpl.execute(InsertCommandImpl.java:44)
> ... 28 more
--
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
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org
Re: [jira] Commented: (TUSCANY-1007) ApplyChnages fails when added
DO does not include a modified property
Posted by Kevin Williams <ke...@qwest.net>.
The previous response had some junk at the end that I meant to delete ...
Brent,
It looks like I have not been thinking this all the way through. Since
you have fixed the case where a generated key column is present then
lets consider the case where one is not. It seems our choices here are
to either throw an exception -- this is likely an error condition -- or
to attempt an empty INSERT since that is what we are being asked to do.
What do you think?
--
Kevin
>
>
> Brent Daniel (JIRA) wrote:
>
>> [
>> http://issues.apache.org/jira/browse/TUSCANY-1007?page=comments#action_12459812
>> ] Brent Daniel commented on TUSCANY-1007:
>> ---------------------------------------
>>
>> Kevin,
>> I'm not sure what behavior you want here. The ID column in your test
>> case is not a generated column. How do you want the DAS to pick an ID
>> value? The issue with doing an empty insert with a generated ID
>> column was fixed in tuscany-957.
>>
>>
>>> ApplyChnages fails when added DO does not include a modified property
>>> ---------------------------------------------------------------------
>>>
>>> Key: TUSCANY-1007
>>> URL: http://issues.apache.org/jira/browse/TUSCANY-1007
>>> Project: Tuscany
>>> Issue Type: Bug
>>> Reporter: Kevin Williams
>>>
>>> Looks like the generated insert is invalid when the change history
>>> for an added DO does not include a modified property. I think the
>>> correct behavior should be to generate an ID-only INSERT. An
>>> alternative would be to generate an INSERT that initializes all
>>> columns ... i'd be interested in hearing arguments to justify the
>>> latter.
>>> This test:
>>> /das/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.testReadInsertApply()
>>>
>>> demonstrates the problem. I have temporarily commented it out.
>>> Here is the stack trace:
>>> java.lang.RuntimeException: SQL Exception: Column 'ID' cannot
>>> accept a NULL value.
>>> at
>>> org.apache.tuscany.das.rdb.impl.InsertCommandImpl.execute(InsertCommandImpl.java:47)
>>>
>>> at
>>> org.apache.tuscany.das.rdb.impl.ChangeOperation.execute(ChangeOperation.java:73)
>>>
>>> at org.apache.tuscany.das.rdb.impl.Changes.execute(Changes.java:57)
>>> at
>>> org.apache.tuscany.das.rdb.impl.ApplyChangesCommandImpl.execute(ApplyChangesCommandImpl.java:69)
>>>
>>> at
>>> org.apache.tuscany.das.rdb.impl.DASImpl.applyChanges(DASImpl.java:244)
>>> at
>>> org.apache.tuscany.das.rdb.test.CrudWithChangeHistory.testReadInsertApply(CrudWithChangeHistory.java:289)
>>>
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
>>>
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>
>>> at java.lang.reflect.Method.invoke(Method.java:615)
>>> at junit.framework.TestCase.runTest(TestCase.java:154)
>>> at junit.framework.TestCase.runBare(TestCase.java:127)
>>> at junit.framework.TestResult$1.protect(TestResult.java:106)
>>> at junit.framework.TestResult.runProtected(TestResult.java:124)
>>> at junit.framework.TestResult.run(TestResult.java:109)
>>> at junit.framework.TestCase.run(TestCase.java:118)
>>> at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>> at junit.framework.TestSuite.run(TestSuite.java:203)
>>> at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>> at junit.framework.TestSuite.run(TestSuite.java:203)
>>> at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>>> at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>>> at junit.framework.TestResult.runProtected(TestResult.java:124)
>>> at junit.extensions.TestSetup.run(TestSetup.java:23)
>>> at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>> at junit.framework.TestSuite.run(TestSuite.java:203)
>>> at
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
>>>
>>> at
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
>>>
>>> at
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
>>>
>>> Caused by: SQL Exception: Column 'ID' cannot accept a NULL value.
>>> at
>>> org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
>>> at
>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>> Source)
>>> at
>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
>>> Source)
>>> at
>>> org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
>>> Source)
>>> at
>>> org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
>>> Source)
>>> at
>>> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
>>> Source)
>>> at
>>> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
>>> Source)
>>> at
>>> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown
>>> Source)
>>> at
>>> org.apache.tuscany.das.rdb.impl.Statement.executeUpdate(Statement.java:173)
>>>
>>> at
>>> org.apache.tuscany.das.rdb.impl.Statement.executeUpdate(Statement.java:133)
>>>
>>> at
>>> org.apache.tuscany.das.rdb.impl.InsertCommandImpl.execute(InsertCommandImpl.java:44)
>>>
>>> ... 28 more
>>>
>>
>>
>>
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org
Re: [jira] Commented: (TUSCANY-1007) ApplyChnages fails when added
DO does not include a modified property
Posted by Kevin Williams <ke...@qwest.net>.
Brent,
It looks like I have not been thinking this all the way through. Since
you have fixed the case where a generated key column is present then
lets consider the case where one is not. It seems our choices here are
to either throw an exception -- this is likely an error condition -- or
to attempt an empty INSERT since that is what we are being asked to do.
What do you think?
--
Kevin
Let me see if I can summarize the issue correctly:
In the case that a DO appears in the change summary without any modified
properties we have two choices:
1. Create an INSERT statement that includes values taken from every
DO field (except those that map to DB-generated columns)
2. Create ad INSERT statement that is empty
Brent Daniel (JIRA) wrote:
> [ http://issues.apache.org/jira/browse/TUSCANY-1007?page=comments#action_12459812 ]
>
>Brent Daniel commented on TUSCANY-1007:
>---------------------------------------
>
>Kevin,
>
> I'm not sure what behavior you want here. The ID column in your test case is not a generated column. How do you want the DAS to pick an ID value? The issue with doing an empty insert with a generated ID column was fixed in tuscany-957.
>
>
>
>>ApplyChnages fails when added DO does not include a modified property
>>---------------------------------------------------------------------
>>
>> Key: TUSCANY-1007
>> URL: http://issues.apache.org/jira/browse/TUSCANY-1007
>> Project: Tuscany
>> Issue Type: Bug
>> Reporter: Kevin Williams
>>
>>Looks like the generated insert is invalid when the change history for an added DO does not include a modified property. I think the correct behavior should be to generate an ID-only INSERT. An alternative would be to generate an INSERT that initializes all columns ... i'd be interested in hearing arguments to justify the latter.
>>This test:
>> /das/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.testReadInsertApply()
>>demonstrates the problem. I have temporarily commented it out.
>>Here is the stack trace:
>>java.lang.RuntimeException: SQL Exception: Column 'ID' cannot accept a NULL value.
>> at org.apache.tuscany.das.rdb.impl.InsertCommandImpl.execute(InsertCommandImpl.java:47)
>> at org.apache.tuscany.das.rdb.impl.ChangeOperation.execute(ChangeOperation.java:73)
>> at org.apache.tuscany.das.rdb.impl.Changes.execute(Changes.java:57)
>> at org.apache.tuscany.das.rdb.impl.ApplyChangesCommandImpl.execute(ApplyChangesCommandImpl.java:69)
>> at org.apache.tuscany.das.rdb.impl.DASImpl.applyChanges(DASImpl.java:244)
>> at org.apache.tuscany.das.rdb.test.CrudWithChangeHistory.testReadInsertApply(CrudWithChangeHistory.java:289)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:615)
>> at junit.framework.TestCase.runTest(TestCase.java:154)
>> at junit.framework.TestCase.runBare(TestCase.java:127)
>> at junit.framework.TestResult$1.protect(TestResult.java:106)
>> at junit.framework.TestResult.runProtected(TestResult.java:124)
>> at junit.framework.TestResult.run(TestResult.java:109)
>> at junit.framework.TestCase.run(TestCase.java:118)
>> at junit.framework.TestSuite.runTest(TestSuite.java:208)
>> at junit.framework.TestSuite.run(TestSuite.java:203)
>> at junit.framework.TestSuite.runTest(TestSuite.java:208)
>> at junit.framework.TestSuite.run(TestSuite.java:203)
>> at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>> at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>> at junit.framework.TestResult.runProtected(TestResult.java:124)
>> at junit.extensions.TestSetup.run(TestSetup.java:23)
>> at junit.framework.TestSuite.runTest(TestSuite.java:208)
>> at junit.framework.TestSuite.run(TestSuite.java:203)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
>>Caused by: SQL Exception: Column 'ID' cannot accept a NULL value.
>> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
>> at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
>> at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
>> at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
>> at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
>> at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
>> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
>> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)
>> at org.apache.tuscany.das.rdb.impl.Statement.executeUpdate(Statement.java:173)
>> at org.apache.tuscany.das.rdb.impl.Statement.executeUpdate(Statement.java:133)
>> at org.apache.tuscany.das.rdb.impl.InsertCommandImpl.execute(InsertCommandImpl.java:44)
>> ... 28 more
>>
>>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org