Changeset: c15390a9cc27 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c15390a9cc27
Modified Files:
java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
Branch: default
Log Message:
JDBC driver will now fetch the list of keywords from the server (querying table
sys.keywords).
ToDo: also implement similar logic in odbc/driver/SQLGetInfo.c for case
SQL_KEYWORDS
diffs (49 lines):
diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -384,8 +384,43 @@ public class MonetDatabaseMetaData exten
*/
@Override
public String getSQLKeywords() {
- /* return same list as returned in odbc/driver/SQLGetInfo.c
case SQL_KEYWORDS: */
- return "ADMIN,AFTER,AGGREGATE,ALWAYS,ASYMMETRIC,ATOMIC," +
+ StringBuilder sb = new StringBuilder(1000);
+ Statement st = null;
+ ResultSet rs = null;
+ try {
+ st = getStmt();
+ rs = st.executeQuery("SELECT \"keyword\" FROM
\"sys\".\"keywords\" ORDER BY 1");
+ // Fetch the keywords and concatenate them into a
StringBuffer separated by comma's
+ boolean isfirst = true;
+ while (rs.next()) {
+ String keyword = rs.getString(1);
+ if (keyword != null) {
+ if (isfirst) {
+ isfirst = false;
+ } else {
+ sb.append(",");
+ }
+ sb.append(keyword);
+ }
+ }
+ } catch (SQLException e) {
+ /* This may occur for old (before Jul2015 release)
MonetDB servers which do not have the sys.keywords table. */
+ } finally {
+ if (rs != null) {
+ try {
+ rs.close();
+ } catch (SQLException e) { /* ignore */ }
+ }
+ if (st != null) {
+ try {
+ st.close();
+ } catch (SQLException e) { /* ignore */ }
+ }
+ }
+
+ return (sb.length() > 0) ? sb.toString() :
+ /* else fallback and return old static list (as
returned in clients/odbc/driver/SQLGetInfo.c case SQL_KEYWORDS:) */
+ "ADMIN,AFTER,AGGREGATE,ALWAYS,ASYMMETRIC,ATOMIC," +
"AUTO_INCREMENT,BEFORE,BIGINT,BIGSERIAL,BINARY,BLOB," +
"CALL,CHAIN,CLOB,COMMITTED,COPY,CORR,CUME_DIST," +
"CURRENT_ROLE,CYCLE,DATABASE,DELIMITERS,DENSE_RANK," +
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list