diff options
author | Stefan Winkler | 2008-11-26 11:05:33 +0000 |
---|---|---|
committer | Stefan Winkler | 2008-11-26 11:05:33 +0000 |
commit | 741d7af7f58b79f0fcf20c2397e604594f5e139a (patch) | |
tree | 6add93361a59fffecb84f76ed27b89ba1b66bf3f | |
parent | 51f41266603256adb255159b48afd384203cfa5c (diff) | |
download | cdo-741d7af7f58b79f0fcf20c2397e604594f5e139a.tar.gz cdo-741d7af7f58b79f0fcf20c2397e604594f5e139a.tar.xz cdo-741d7af7f58b79f0fcf20c2397e604594f5e139a.zip |
[256462] [DB] preparedStatement problem during commit
https://bugs.eclipse.org/bugs/show_bug.cgi?id=256462
4 files changed, 52 insertions, 5 deletions
diff --git a/features/org.eclipse.emf.cdo.server.product-feature/rootfiles/configuration/cdo-server.xml b/features/org.eclipse.emf.cdo.server.product-feature/rootfiles/configuration/cdo-server.xml index 209ae184b1..3511572e8f 100644 --- a/features/org.eclipse.emf.cdo.server.product-feature/rootfiles/configuration/cdo-server.xml +++ b/features/org.eclipse.emf.cdo.server.product-feature/rootfiles/configuration/cdo-server.xml @@ -21,10 +21,9 @@ <property name="toOneReferences" value="LIKE_ATTRIBUTES"/> </mappingStrategy> - <jdbcDelegate type="statement" /> <!-- Old setting <jdbcDelegate type="statement" /> - is now replaced by preparedStatement: - <jdbcDelegate type="preparedStatement" > --> + is now replaced by preparedStatement: --> + <jdbcDelegate type="preparedStatement" > <!-- to explicitly force prepared statement caching (e.g., if statement pooling is not supported by the JDBC driver, use <property name="cacheStatements" value="enabled" /> @@ -33,7 +32,7 @@ Which guesses the correct setting based on the JDBC driver's metadata. Also supported is the third setting "disabled". --> - <!-- </jdbcDelegate> --> + </jdbcDelegate> <dbAdapter name="derby-embedded"/> <dataSource class="org.apache.derby.jdbc.EmbeddedDataSource" databaseName="/temp/cdodb1" diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java index 3b4d345dab..a37a50e6f3 100644 --- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java +++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/jdbc/PreparedStatementJDBCDelegate.java @@ -235,7 +235,15 @@ public class PreparedStatementJDBCDelegate extends AbstractJDBCDelegate for (IAttributeMapping attributeMapping : attributeMappings) { Object value = attributeMapping.getRevisionValue(revision); - stmt.setObject(col++, value); + + if (value == null) + { + stmt.setNull(col++, attributeMapping.getField().getType().getCode()); + } + else + { + stmt.setObject(col++, value); + } } stmt.execute(); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java index 161a291425..eee512574a 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java @@ -82,6 +82,9 @@ public abstract class AllTestsAllConfigs extends ConfigTestSuite // Specific for MEMStore testClasses.add(MEMStoreQueryTest.class); + // Specific for DBStore + testClasses.add(DBStoreTest.class); + // Bugzilla verifications testClasses.add(Bugzilla_241464_Test.class); testClasses.add(Bugzilla_243310_Test.class); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DBStoreTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DBStoreTest.java new file mode 100644 index 0000000000..98e782b644 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DBStoreTest.java @@ -0,0 +1,37 @@ +/*************************************************************************** + * Copyright (c) 2004 - 2008 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Stefan Winkler - initial API and implementation + **************************************************************************/ +package org.eclipse.emf.cdo.tests; + +import org.eclipse.emf.cdo.CDOSession; +import org.eclipse.emf.cdo.CDOTransaction; +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.tests.model1.Company; +import org.eclipse.emf.cdo.tests.model1.Model1Factory; + +/** + * @author Stefan Winkler + */ +public class DBStoreTest extends AbstractCDOTest +{ + // Bug 256462 + public void testInsertNull() throws Exception + { + CDOSession s = openModel1Session(); + CDOTransaction t = s.openTransaction(); + CDOResource r = t.createResource("/dbStoreTest"); + + Company c = Model1Factory.eINSTANCE.createCompany(); + c.setName(null); + r.getContents().add(c); + + t.commit(); + } +} |