Changeset: cc6425e98017 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/cc6425e98017
Modified Files:
src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
src/main/java/org/monetdb/mcl/net/ClientInfo.java
Branch: default
Log Message:
Implement DatabaseMetaData.getClientInfoProperties
diffs (76 lines):
diff --git a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -12,6 +12,8 @@
package org.monetdb.jdbc;
+import org.monetdb.mcl.net.ClientInfo;
+
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.Statement;
@@ -3917,17 +3919,36 @@ public final class MonetDatabaseMetaData
*/
@Override
public ResultSet getClientInfoProperties() throws SQLException {
- // MonetDB currently does not support any client properties, so
return an empty ResultSet
+ // This query combines the properties we know about with any
additional properties that
+ // may have been added to sys.clientinfo_properties in the mean
time.
final String query =
- "SELECT cast(null as varchar(64)) AS \"NAME\", " +
- "cast(0 as int) AS \"MAX_LEN\", " +
- "cast(null as varchar(128)) AS \"DEFAULT_VALUE\", " +
- "cast(null as varchar(128)) AS \"DESCRIPTION\" " +
- "WHERE 1=0";
+ "WITH jdbc_info AS (\n" +
+ " SELECT 'ApplicationName' AS \"NAME\", NULL
AS \"MAX_LEN\", " + stringEscape(ClientInfo.defaultApplicationName) + " AS
\"DEFAULT_VALUE\", 'Name of the application' AS \"DESCRIPTION\", 0 AS i\n" +
+ " UNION ALL\n" +
+ " SELECT 'ClientHostname' AS \"NAME\", NULL
AS \"MAX_LEN\", " + stringEscape(ClientInfo.defaultHostname) + " AS
\"DEFAULT_VALUE\", 'Host the application is running on' AS \"DESCRIPTION\", 1
AS i\n" +
+ " UNION ALL\n" +
+ " SELECT 'ClientRemark' AS \"NAME\", 256 AS
\"MAX_LEN\", R'' AS \"DEFAULT_VALUE\", 'Additional information' AS
\"DESCRIPTION\", 2 AS i\n" +
+ " UNION ALL\n" +
+ " SELECT 'ClientLibrary' AS \"NAME\", NULL
AS \"MAX_LEN\", " + stringEscape(ClientInfo.defaultClientLibrary) + " AS
\"DEFAULT_VALUE\", 'Name and version of the driver' AS \"DESCRIPTION\", 3 AS
i\n" +
+ " UNION ALL\n" +
+ " SELECT 'ClientPid' AS \"NAME\", 10 AS
\"MAX_LEN\", " + stringEscape(ClientInfo.defaultPid) + " AS \"DEFAULT_VALUE\",
'Process id of the application' AS \"DESCRIPTION\", 4 AS i\n" +
+ ")\n" +
+ "SELECT\n" +
+ " prop AS \"NAME\",\n" +
+ " COALESCE(\"MAX_LEN\", 24) AS
\"MAX_LEN\",\n" +
+ " \"DEFAULT_VALUE\",\n" +
+ " \"DESCRIPTION\"\n" +
+ "FROM sys.clientinfo_properties AS sys_info
LEFT OUTER JOIN jdbc_info ON prop = \"NAME\"\n" +
+ "ORDER BY COALESCE(i, 1000), \"NAME\"\n"
+ ;
return executeMetaDataQuery(query);
}
+ private static String stringEscape(String s) {
+ return "R'" + s.replaceAll("'", "''") + "'";
+ }
+
/**
* Retrieves a description of the system and user functions
* available in the given catalog.
diff --git a/src/main/java/org/monetdb/mcl/net/ClientInfo.java
b/src/main/java/org/monetdb/mcl/net/ClientInfo.java
--- a/src/main/java/org/monetdb/mcl/net/ClientInfo.java
+++ b/src/main/java/org/monetdb/mcl/net/ClientInfo.java
@@ -21,13 +21,13 @@ import java.util.Set;
* @{link SQLClientInfoException} if there is a failure
*/
public class ClientInfo {
- private static final String defaultHostname = findHostname();
+ public static final String defaultHostname = findHostname();
- private static final String defaultClientLibrary = findClientLibrary();
+ public static final String defaultClientLibrary = findClientLibrary();
- private static final String defaultApplicationName =
findApplicationName();
+ public static final String defaultApplicationName =
findApplicationName();
- private static final String defaultPid = findPid();
+ public static final String defaultPid = findPid();
private final Properties props;
private HashMap<String, ClientInfoStatus> problems = null;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]