You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Piet Blok (JIRA)" <de...@db.apache.org> on 2005/08/30 17:12:04 UTC

[jira] Created: (DERBY-546) In contrast to EmbeddedDriver, ClientDriver fails to report all DriverPropertyInfo's

In contrast to EmbeddedDriver, ClientDriver fails to report all DriverPropertyInfo's
------------------------------------------------------------------------------------

         Key: DERBY-546
         URL: http://issues.apache.org/jira/browse/DERBY-546
     Project: Derby
        Type: Bug
  Components: Network Client  
    Versions: 10.1.1.0    
 Environment: Windows XP professional, JRE 1.5.0_04
 Reporter: Piet Blok


The Client Driver, in contrast to Embedded Driver, fails to report all DriverPropertyInfo's. It seems that it not only ignores the Properties object (see Jira DERBY_530), but it also ignores connection attributes appended to the connection url.
 
See below a piece of code that demonstrates this behaviour:
 
 
 
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.DriverPropertyInfo;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Properties;
 
import org.apache.derby.jdbc.ClientDriver;
import org.apache.derby.jdbc.EmbeddedDriver;
 
public class DerbyConnector {
 
    private static final String DERBY_CONNECTION_PREFIX = "jdbc:derby:";
 
    private static final String MY_DATABASE = "MyDatabase";
 
    private static final String MY_HOST = "//127.0.0.1:1527/";
 
    static {
        new ClientDriver();
        new EmbeddedDriver();
    }
 
    public static void main(String[] args) {
        DerbyConnector connector = new DerbyConnector();
        try {
            Properties connectionProperties = new Properties();
            connectionProperties.setProperty("create", "true");
            connectionProperties.setProperty("dataEncryption", "true");
            connector.printInfo(MY_HOST + MY_DATABASE, connectionProperties);
            connector.printInfo(MY_DATABASE, connectionProperties);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
 
    public Connection connect(String url) throws SQLException {
        return DriverManager.getConnection(DERBY_CONNECTION_PREFIX + url);
    }
 
    public Connection connect(String url, Properties connectionProperties)
            throws SQLException {
        return connect(DERBY_CONNECTION_PREFIX + url
                + connectionPropertiesString(connectionProperties));
    }
 
    public DriverPropertyInfo[] getPropertyInfos(String url, Properties props)
            throws SQLException {
        String connectionString = DERBY_CONNECTION_PREFIX + url
                + connectionPropertiesString(props);
        System.out.println("ConnectionString = " + connectionString);
        Driver driver = DriverManager.getDriver(connectionString);
        return driver.getPropertyInfo(connectionString, props);
    }
 
    private String connectionPropertiesString(Properties connectionProperties) {
        StringBuffer sb = new StringBuffer();
        for (Enumeration enumeration = connectionProperties.propertyNames(); enumeration
                .hasMoreElements();) {
            String key = (String) enumeration.nextElement();
            sb.append(';');
            sb.append(key);
            sb.append('=');
            sb.append(connectionProperties.getProperty(key));
        }
        return sb.toString();
 
    }
    
    private void printInfo(String url, Properties connectionProperties)
            throws SQLException {
        System.out.println("========= " + url + " =========");
        DriverPropertyInfo[] infos = getPropertyInfos(url, connectionProperties);
        for (int i = 0; i < infos.length; i++) {
            System.out.println("DriverPropertyInfo " + i);
            System.out.println("  description: " + infos[i].description);
            System.out.println("  " + infos[i].name + " = " + infos[i].value);
            System.out.println("  required = " + infos[i].required);
            if (infos[i].choices != null) {
                for (int j = 0; j < infos[i].choices.length; j++) {
                    System.out.println("    choice " + j + ": "
                            + infos[i].choices[j]);
                }
            }
        }
    }
 
}


-- 
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


[jira] Updated: (DERBY-546) In contrast to EmbeddedDriver, ClientDriver fails to report all DriverPropertyInfo's

Posted by "Mike Matrigali (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-546?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mike Matrigali updated DERBY-546:
---------------------------------

    Urgency: Normal

Triaged July 10, 2009: assigned normal urgency. 

> In contrast to EmbeddedDriver, ClientDriver fails to report all DriverPropertyInfo's
> ------------------------------------------------------------------------------------
>
>                 Key: DERBY-546
>                 URL: https://issues.apache.org/jira/browse/DERBY-546
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.1.1.0
>         Environment: Windows XP professional, JRE 1.5.0_04
>            Reporter: Piet Blok
>
> The Client Driver, in contrast to Embedded Driver, fails to report all DriverPropertyInfo's. It seems that it not only ignores the Properties object (see Jira DERBY_530), but it also ignores connection attributes appended to the connection url.
>  
> See below a piece of code that demonstrates this behaviour:
>  
>  
>  
> import java.sql.Connection;
> import java.sql.Driver;
> import java.sql.DriverManager;
> import java.sql.DriverPropertyInfo;
> import java.sql.SQLException;
> import java.util.Enumeration;
> import java.util.Properties;
>  
> import org.apache.derby.jdbc.ClientDriver;
> import org.apache.derby.jdbc.EmbeddedDriver;
>  
> public class DerbyConnector {
>  
>     private static final String DERBY_CONNECTION_PREFIX = "jdbc:derby:";
>  
>     private static final String MY_DATABASE = "MyDatabase";
>  
>     private static final String MY_HOST = "//127.0.0.1:1527/";
>  
>     static {
>         new ClientDriver();
>         new EmbeddedDriver();
>     }
>  
>     public static void main(String[] args) {
>         DerbyConnector connector = new DerbyConnector();
>         try {
>             Properties connectionProperties = new Properties();
>             connectionProperties.setProperty("create", "true");
>             connectionProperties.setProperty("dataEncryption", "true");
>             connector.printInfo(MY_HOST + MY_DATABASE, connectionProperties);
>             connector.printInfo(MY_DATABASE, connectionProperties);
>         } catch (SQLException e) {
>             e.printStackTrace();
>         }
>     }
>  
>     public Connection connect(String url) throws SQLException {
>         return DriverManager.getConnection(DERBY_CONNECTION_PREFIX + url);
>     }
>  
>     public Connection connect(String url, Properties connectionProperties)
>             throws SQLException {
>         return connect(DERBY_CONNECTION_PREFIX + url
>                 + connectionPropertiesString(connectionProperties));
>     }
>  
>     public DriverPropertyInfo[] getPropertyInfos(String url, Properties props)
>             throws SQLException {
>         String connectionString = DERBY_CONNECTION_PREFIX + url
>                 + connectionPropertiesString(props);
>         System.out.println("ConnectionString = " + connectionString);
>         Driver driver = DriverManager.getDriver(connectionString);
>         return driver.getPropertyInfo(connectionString, props);
>     }
>  
>     private String connectionPropertiesString(Properties connectionProperties) {
>         StringBuffer sb = new StringBuffer();
>         for (Enumeration enumeration = connectionProperties.propertyNames(); enumeration
>                 .hasMoreElements();) {
>             String key = (String) enumeration.nextElement();
>             sb.append(';');
>             sb.append(key);
>             sb.append('=');
>             sb.append(connectionProperties.getProperty(key));
>         }
>         return sb.toString();
>  
>     }
>     
>     private void printInfo(String url, Properties connectionProperties)
>             throws SQLException {
>         System.out.println("========= " + url + " =========");
>         DriverPropertyInfo[] infos = getPropertyInfos(url, connectionProperties);
>         for (int i = 0; i < infos.length; i++) {
>             System.out.println("DriverPropertyInfo " + i);
>             System.out.println("  description: " + infos[i].description);
>             System.out.println("  " + infos[i].name + " = " + infos[i].value);
>             System.out.println("  required = " + infos[i].required);
>             if (infos[i].choices != null) {
>                 for (int j = 0; j < infos[i].choices.length; j++) {
>                     System.out.println("    choice " + j + ": "
>                             + infos[i].choices[j]);
>                 }
>             }
>         }
>     }
>  
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (DERBY-546) In contrast to EmbeddedDriver, ClientDriver fails to report all DriverPropertyInfo's

Posted by "Daniel John Debrunner (JIRA)" <de...@db.apache.org>.
    [ http://issues.apache.org/jira/browse/DERBY-546?page=comments#action_12361996 ] 

Daniel John Debrunner commented on DERBY-546:
---------------------------------------------

I'm not sure that embedded is behaving correctly with DriverPropertyInfo. The api is defined that the driver return options for properties that have not yet been set, I think embedded just returns all. This was from a code inspection, not actually trying it out. I do know that at some time in the past (pre-open sourcing) embedded did work correctly, as-per the JDBC spec/javadoc. I think it was incorrectly broken at some time.

> In contrast to EmbeddedDriver, ClientDriver fails to report all DriverPropertyInfo's
> ------------------------------------------------------------------------------------
>
>          Key: DERBY-546
>          URL: http://issues.apache.org/jira/browse/DERBY-546
>      Project: Derby
>         Type: Bug
>   Components: Network Client
>     Versions: 10.1.1.0
>  Environment: Windows XP professional, JRE 1.5.0_04
>     Reporter: Piet Blok

>
> The Client Driver, in contrast to Embedded Driver, fails to report all DriverPropertyInfo's. It seems that it not only ignores the Properties object (see Jira DERBY_530), but it also ignores connection attributes appended to the connection url.
>  
> See below a piece of code that demonstrates this behaviour:
>  
>  
>  
> import java.sql.Connection;
> import java.sql.Driver;
> import java.sql.DriverManager;
> import java.sql.DriverPropertyInfo;
> import java.sql.SQLException;
> import java.util.Enumeration;
> import java.util.Properties;
>  
> import org.apache.derby.jdbc.ClientDriver;
> import org.apache.derby.jdbc.EmbeddedDriver;
>  
> public class DerbyConnector {
>  
>     private static final String DERBY_CONNECTION_PREFIX = "jdbc:derby:";
>  
>     private static final String MY_DATABASE = "MyDatabase";
>  
>     private static final String MY_HOST = "//127.0.0.1:1527/";
>  
>     static {
>         new ClientDriver();
>         new EmbeddedDriver();
>     }
>  
>     public static void main(String[] args) {
>         DerbyConnector connector = new DerbyConnector();
>         try {
>             Properties connectionProperties = new Properties();
>             connectionProperties.setProperty("create", "true");
>             connectionProperties.setProperty("dataEncryption", "true");
>             connector.printInfo(MY_HOST + MY_DATABASE, connectionProperties);
>             connector.printInfo(MY_DATABASE, connectionProperties);
>         } catch (SQLException e) {
>             e.printStackTrace();
>         }
>     }
>  
>     public Connection connect(String url) throws SQLException {
>         return DriverManager.getConnection(DERBY_CONNECTION_PREFIX + url);
>     }
>  
>     public Connection connect(String url, Properties connectionProperties)
>             throws SQLException {
>         return connect(DERBY_CONNECTION_PREFIX + url
>                 + connectionPropertiesString(connectionProperties));
>     }
>  
>     public DriverPropertyInfo[] getPropertyInfos(String url, Properties props)
>             throws SQLException {
>         String connectionString = DERBY_CONNECTION_PREFIX + url
>                 + connectionPropertiesString(props);
>         System.out.println("ConnectionString = " + connectionString);
>         Driver driver = DriverManager.getDriver(connectionString);
>         return driver.getPropertyInfo(connectionString, props);
>     }
>  
>     private String connectionPropertiesString(Properties connectionProperties) {
>         StringBuffer sb = new StringBuffer();
>         for (Enumeration enumeration = connectionProperties.propertyNames(); enumeration
>                 .hasMoreElements();) {
>             String key = (String) enumeration.nextElement();
>             sb.append(';');
>             sb.append(key);
>             sb.append('=');
>             sb.append(connectionProperties.getProperty(key));
>         }
>         return sb.toString();
>  
>     }
>     
>     private void printInfo(String url, Properties connectionProperties)
>             throws SQLException {
>         System.out.println("========= " + url + " =========");
>         DriverPropertyInfo[] infos = getPropertyInfos(url, connectionProperties);
>         for (int i = 0; i < infos.length; i++) {
>             System.out.println("DriverPropertyInfo " + i);
>             System.out.println("  description: " + infos[i].description);
>             System.out.println("  " + infos[i].name + " = " + infos[i].value);
>             System.out.println("  required = " + infos[i].required);
>             if (infos[i].choices != null) {
>                 for (int j = 0; j < infos[i].choices.length; j++) {
>                     System.out.println("    choice " + j + ": "
>                             + infos[i].choices[j]);
>                 }
>             }
>         }
>     }
>  
> }

-- 
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


[jira] Updated: (DERBY-546) In contrast to EmbeddedDriver, ClientDriver fails to report all DriverPropertyInfo's

Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-546?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kathey Marsden updated DERBY-546:
---------------------------------

    Derby Categories: [Embedded/Client difference]

> In contrast to EmbeddedDriver, ClientDriver fails to report all DriverPropertyInfo's
> ------------------------------------------------------------------------------------
>
>                 Key: DERBY-546
>                 URL: https://issues.apache.org/jira/browse/DERBY-546
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.1.1.0
>         Environment: Windows XP professional, JRE 1.5.0_04
>            Reporter: Piet Blok
>
> The Client Driver, in contrast to Embedded Driver, fails to report all DriverPropertyInfo's. It seems that it not only ignores the Properties object (see Jira DERBY_530), but it also ignores connection attributes appended to the connection url.
>  
> See below a piece of code that demonstrates this behaviour:
>  
>  
>  
> import java.sql.Connection;
> import java.sql.Driver;
> import java.sql.DriverManager;
> import java.sql.DriverPropertyInfo;
> import java.sql.SQLException;
> import java.util.Enumeration;
> import java.util.Properties;
>  
> import org.apache.derby.jdbc.ClientDriver;
> import org.apache.derby.jdbc.EmbeddedDriver;
>  
> public class DerbyConnector {
>  
>     private static final String DERBY_CONNECTION_PREFIX = "jdbc:derby:";
>  
>     private static final String MY_DATABASE = "MyDatabase";
>  
>     private static final String MY_HOST = "//127.0.0.1:1527/";
>  
>     static {
>         new ClientDriver();
>         new EmbeddedDriver();
>     }
>  
>     public static void main(String[] args) {
>         DerbyConnector connector = new DerbyConnector();
>         try {
>             Properties connectionProperties = new Properties();
>             connectionProperties.setProperty("create", "true");
>             connectionProperties.setProperty("dataEncryption", "true");
>             connector.printInfo(MY_HOST + MY_DATABASE, connectionProperties);
>             connector.printInfo(MY_DATABASE, connectionProperties);
>         } catch (SQLException e) {
>             e.printStackTrace();
>         }
>     }
>  
>     public Connection connect(String url) throws SQLException {
>         return DriverManager.getConnection(DERBY_CONNECTION_PREFIX + url);
>     }
>  
>     public Connection connect(String url, Properties connectionProperties)
>             throws SQLException {
>         return connect(DERBY_CONNECTION_PREFIX + url
>                 + connectionPropertiesString(connectionProperties));
>     }
>  
>     public DriverPropertyInfo[] getPropertyInfos(String url, Properties props)
>             throws SQLException {
>         String connectionString = DERBY_CONNECTION_PREFIX + url
>                 + connectionPropertiesString(props);
>         System.out.println("ConnectionString = " + connectionString);
>         Driver driver = DriverManager.getDriver(connectionString);
>         return driver.getPropertyInfo(connectionString, props);
>     }
>  
>     private String connectionPropertiesString(Properties connectionProperties) {
>         StringBuffer sb = new StringBuffer();
>         for (Enumeration enumeration = connectionProperties.propertyNames(); enumeration
>                 .hasMoreElements();) {
>             String key = (String) enumeration.nextElement();
>             sb.append(';');
>             sb.append(key);
>             sb.append('=');
>             sb.append(connectionProperties.getProperty(key));
>         }
>         return sb.toString();
>  
>     }
>     
>     private void printInfo(String url, Properties connectionProperties)
>             throws SQLException {
>         System.out.println("========= " + url + " =========");
>         DriverPropertyInfo[] infos = getPropertyInfos(url, connectionProperties);
>         for (int i = 0; i < infos.length; i++) {
>             System.out.println("DriverPropertyInfo " + i);
>             System.out.println("  description: " + infos[i].description);
>             System.out.println("  " + infos[i].name + " = " + infos[i].value);
>             System.out.println("  required = " + infos[i].required);
>             if (infos[i].choices != null) {
>                 for (int j = 0; j < infos[i].choices.length; j++) {
>                     System.out.println("    choice " + j + ": "
>                             + infos[i].choices[j]);
>                 }
>             }
>         }
>     }
>  
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.