You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by km...@apache.org on 2011/03/16 02:04:07 UTC
svn commit: r1082021 - in /db/derby/code/branches/10.6: ./
java/engine/org/apache/derby/jdbc/
java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/
java/testing/org/apache/derbyTesting/junit/
Author: kmarsden
Date: Wed Mar 16 01:04:07 2011
New Revision: 1082021
URL: http://svn.apache.org/viewvc?rev=1082021&view=rev
Log:
DERBY-4907 EmbeddedXADataSource with ;create=true attribute set in setDatabaseName fails with java.sql.SQLException: Database not available
Patch contributed by Siddharth Srivastava <ak...@gmail.com> and Dave Brosius <db...@apache.org> .
merge revision 1078461 from trunk
Modified:
db/derby/code/branches/10.6/ (props changed)
db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/EmbeddedXADataSource.java
db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/ReferenceableDataSource.java
db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java
db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java
Propchange: db/derby/code/branches/10.6/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 16 01:04:07 2011
@@ -1,2 +1,2 @@
-/db/derby/code/trunk:938547,938796,938959,939231,940462,940469,941627,942031,942286,942476,942480,942587,944152,946794,948045,948069,951346,951366,952138,952237,952581,954344,954421,954544,954748,955001,955540,955634,956075,956234,956445,956569,956659,957260,957902,958163,958257,958264,958508,958522,958555,958618,958939,959550,961892,962716,963206,963705,964039,964115,964402,965647,966393,967201,967304,980089,980684,986689,986834,987539,989099,990292,997325,998170,999119,999479,999485,1002291,1002682,1002853,1021426,1024511,1024528,1025615,1025795,1028716,1030043,1033485,1033864,1038514,1040658,1053724,1055169,1062096,1063809,1065061,1067250
+/db/derby/code/trunk:938547,938796,938959,939231,940462,940469,941627,942031,942286,942476,942480,942587,944152,946794,948045,948069,951346,951366,952138,952237,952581,954344,954421,954544,954748,955001,955540,955634,956075,956234,956445,956569,956659,957260,957902,958163,958257,958264,958508,958522,958555,958618,958939,959550,961892,962716,963206,963705,964039,964115,964402,965647,966393,967201,967304,980089,980684,986689,986834,987539,989099,990292,997325,998170,999119,999479,999485,1002291,1002682,1002853,1021426,1024511,1024528,1025615,1025795,1028716,1030043,1033485,1033864,1038514,1040658,1053724,1055169,1062096,1063809,1065061,1067250,1078461
/db/derby/docs/trunk:954344
Modified: db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/EmbeddedXADataSource.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/EmbeddedXADataSource.java?rev=1082021&r1=1082020&r2=1082021&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/EmbeddedXADataSource.java (original)
+++ db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/EmbeddedXADataSource.java Wed Mar 16 01:04:07 2011
@@ -137,8 +137,11 @@ public class EmbeddedXADataSource extend
{
// If it is inactive, it is useless.
ra = null;
-
- String dbName = getDatabaseName();
+
+ // DERBY-4907 make sure the database name sent to find service
+ // does not include attributes.
+ String dbName = getShortDatabaseName();
+
if (dbName != null) {
// see if database already booted, if it is, then don't make a
Modified: db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/ReferenceableDataSource.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/ReferenceableDataSource.java?rev=1082021&r1=1082020&r2=1082021&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/ReferenceableDataSource.java (original)
+++ db/derby/code/branches/10.6/java/engine/org/apache/derby/jdbc/ReferenceableDataSource.java Wed Mar 16 01:04:07 2011
@@ -79,6 +79,9 @@ public class ReferenceableDataSource imp
private String description;
private String dataSourceName;
private String databaseName;
+ /** shortDatabaseName has attributes of databaseName stripped */
+ private String shortDatabaseName;
+
private String password;
private String user;
private int loginTimeout;
@@ -109,11 +112,25 @@ public class ReferenceableDataSource imp
*/
public final synchronized void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
+ if( databaseName!= null && (databaseName.indexOf(";") >= 0)){
+ String[] dbShort = databaseName.split(";");
+ this.shortDatabaseName = dbShort[0];
+ }
+ else {
+ this.shortDatabaseName = databaseName;
+ }
update();
}
public String getDatabaseName() {
return databaseName;
}
+
+ /**
+ * @return databaseName with attributes stripped.
+ */
+ protected String getShortDatabaseName() {
+ return shortDatabaseName;
+ }
/**
Set the data source name. The property is not mandatory. It is used
Modified: db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java?rev=1082021&r1=1082020&r2=1082021&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java (original)
+++ db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java Wed Mar 16 01:04:07 2011
@@ -821,6 +821,67 @@ public class J2EEDataSourceTest extends
}
/**
+ * Test that a connection to XADataSource can be established
+ * successfully while creating a database using setDatabaseName()
+ * with create=true
+ *
+ * @throws SQLException
+ * @throws XAException
+ */
+ public void testCreateInDatabaseName_XA() throws SQLException, XAException
+ {
+ //test with XADataSource
+ XADataSource xads = J2EEDataSource.getXADataSource();
+ String dbName = TestConfiguration.getCurrent().getDefaultDatabaseName();
+ J2EEDataSource.setBeanProperty(xads,"databaseName",dbName +";create=true");
+ XAConnection xa = xads.getXAConnection();
+ Connection c = xa.getConnection();
+ c.setAutoCommit(false);
+ c.close();
+ }
+
+ /**
+ * Test that a connection to PoolDataSource can be established
+ * successfully while creating a database using setDatabaseName()
+ * with create=true
+ *
+ * @throws SQLException
+ */
+
+ public void testCreateInDatabaseName_Pooled() throws SQLException
+ {
+ //test with PooledConnection
+ ConnectionPoolDataSource cpds = J2EEDataSource.getConnectionPoolDataSource();
+ PooledConnection pc = cpds.getPooledConnection();
+ String dbName = TestConfiguration.getCurrent().getDefaultDatabaseName();
+ J2EEDataSource.setBeanProperty(cpds, "databaseName",dbName +";create=true");
+ Connection c;
+ c = pc.getConnection();
+ c.setAutoCommit(false);
+ c.close();
+ pc.close();
+ }
+
+ /**
+ * Test that a connection to JDBCDataSource can be established
+ * successfully while creating a database using setDatabaseName()
+ * with create=true
+ *
+ * @throws SQLException
+ */
+
+ public void testCreateInDatabaseName_DS() throws SQLException
+ {
+ DataSource ds = JDBCDataSource.getDataSource();
+ String dbName = TestConfiguration.getCurrent().getDefaultDatabaseName();
+ JDBCDataSource.setBeanProperty(ds, "databaseName", dbName +";create=true");
+ Connection c = ds.getConnection();
+ c.setAutoCommit(false);
+ c.close();
+ }
+
+
+ /**
* Test that a PooledConnection can be reused and closed
* (separately) during the close event raised by the
* closing of its logical connection.
Modified: db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java?rev=1082021&r1=1082020&r2=1082021&view=diff
==============================================================================
--- db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java (original)
+++ db/derby/code/branches/10.6/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java Wed Mar 16 01:04:07 2011
@@ -131,7 +131,7 @@ public class JDBCDataSource {
}
/**
- * Return a DataSource object of the passsed in type
+ * Return a DataSource object of the passed in type
* configured with the passed in Java bean properties.
* This will actually work with any object that has Java bean
* setter methods.
@@ -227,7 +227,7 @@ public class JDBCDataSource {
/**
* Clear a String Java bean property by setting it to null.
- * @param ds ds DataSource to have property cleared
+ * @param ds DataSource to have property cleared
* @param property name of property.
*/
public static void clearStringBeanProperty(Object ds, String property)