Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-1130

Client should not allow databaseName to be set with setConnectionAttributes

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.1.1.0, 10.1.2.1, 10.1.3.1, 10.2.1.6
    • Fix Version/s: 10.2.2.1
    • Component/s: Network Client
    • Labels:
      None
    • Issue & fix info:
      Release Note Needed

      Description

      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");

      }

      }

        Attachments

        1. derby-1130-v1.status
          0.4 kB
          Deepa
        2. derby-1130-v1.diff
          20 kB
          Deepa
        3. d1130-v2.status
          0.5 kB
          Deepa
        4. d1130-v2.diff
          23 kB
          Deepa
        5. d1130-test-dataSourceReference.status
          0.3 kB
          Deepa
        6. d1130-test-dataSourceReference.diff
          11 kB
          Deepa
        7. d1130-client-v1.status
          0.6 kB
          Deepa
        8. d1130-client-v1.diff
          15 kB
          Deepa

          Activity

            People

            • Assignee:
              deepa Deepa
              Reporter:
              kmarsden Katherine Marsden
            • Votes:
              1 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: