[ http://issues.apache.org/jira/browse/DERBY-1130?page=comments#action_12427318 ] Sunitha Kambhampati commented on DERBY-1130: --------------------------------------------
Thanks Deepa for the d1130-client-v1 patch. The patch applies cleanly in my eclipse ide [with a fuzz factor of 24 :) ] -- the error messages that is thrown look good to me and it seems clean that we are doing the check in setConnectionAttributes itself. I just have one question. Can you please help me understand why the following change is necessary: =================================================================== --- java/client/org/apache/derby/jdbc/ClientDataSource.java (revision 429370) @@ -181,7 +181,6 @@ try { LogWriter dncLogWriter = super.computeDncLogWriterForNewConnection("_sds"); - updateDataSourceValues(tokenizeAttributes(getConnectionAttributes(), null)); ----------- Thanks, Sunitha. > Client should not allow databaseName to be set with setConnectionAttributes > --------------------------------------------------------------------------- > > Key: DERBY-1130 > URL: http://issues.apache.org/jira/browse/DERBY-1130 > Project: Derby > Issue Type: Bug > Components: Network Client > Affects Versions: 10.1.1.0, 10.1.1.1, 10.1.1.2, 10.1.2.0, 10.1.2.1, > 10.1.2.2, 10.1.2.3, 10.2.0.0, 10.1.3.0, 10.1.2.4 > Reporter: Kathey Marsden > Assigned To: Deepa Remesh > Fix For: 10.2.0.0 > > Attachments: d1130-client-v1.diff, d1130-client-v1.status, > derby-1130-v1.diff, derby-1130-v1.status > > > Per this thread, setConnectionAttributes should not set databaseName. > http://www.nabble.com/double-check-on-checkDataSource-t1187602.html#a3128621 > Currently this is allowed for client but should be disabled. I think it is > OK to change because we have documented that client will be changed to match > embedded for implementation defined behaviour. Hopefully its use is rare as > most folks would use the standard setDatabaseName. Still there should be a > release not when the change is made and it would be better to change it > sooner than later: > Below is the repro. > Here is the output with Client > D>java DatabaseNameWithSetConnAttr > ds.setConnectionAttributes(databaseName=wombat;create=true) > ds.getDatabaseName() = null (should be null) > FAIL: Should not have been able to set databaseName with connection attributes > Also look for tests disabled with this bug number in the test > checkDataSource30.java > import java.sql.*; > import java.lang.reflect.Method; > public class DatabaseNameWithSetConnAttr{ > public static void main(String[] args) { > try { > > String attributes = "databaseName=wombat;create=true"; > org.apache.derby.jdbc.ClientDataSource ds = new > org.apache.derby.jdbc.ClientDataSource(); > //org.apache.derby.jdbc.EmbeddedDataSource ds = new > //org.apache.derby.jdbc.EmbeddedDataSource(); > System.out.println("ds.setConnectionAttributes(" + > attributes + ")"); > ds.setConnectionAttributes(attributes); > System.out.println("ds.getDatabaseName() = " + > ds.getDatabaseName() > + " (should be null)" ); > Connection conn = ds.getConnection(); > } catch (SQLException e) { > String sqlState = e.getSQLState(); > if (sqlState != null && > sqlState.equals("XJ041")) > { > System.out.println("PASS: An exception was > thrown trying to get a connetion from a datasource after setting databaseName > with setConnectionAttributes"); > System.out.println("EXPECTED EXCEPTION: " + > e.getSQLState() > + " > - " + e.getMessage()); > return; > } > while (e != null) > { > System.out.println("FAIL - UNEXPECTED > EXCEPTION: " + e.getSQLState()); > e.printStackTrace(); > e = e.getNextException(); > } > return; > } > System.out.println("FAIL: Should not have been able to set > databaseName with connection attributes"); > } > } -- 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