I'll back out the change...

David

Deepa Remesh (JIRA) wrote:
     [ http://issues.apache.org/jira/browse/DERBY-1130?page=all ]

Deepa Remesh updated DERBY-1130:
--------------------------------

    Derby Info: [Existing Application Impact, Release Note Needed]  (was: 
[Release Note Needed, Existing Application Impact, Patch Available])

As the current solution does not seem to be okay, can a committer please revert 
this change (svn revision# 430641)?

Also, I have unchecked patch available as there is no need to commit the test 
patch 'd1130-test-dataSourceReference.diff'. I will upload a revised patch 
based on option 2 in some time.

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, 
d1130-test-dataSourceReference.diff, d1130-test-dataSourceReference.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");
        }
}

Reply via email to