[
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