Mercurial > hg > monetdb-java
changeset 730:ee061ab9ee32
Corrected DatabaseMetaData.getSQLKeywords() output.
It used to return all MonetDB SQL keywords, but now it excludes the SQL:2003 keywords
as defined by the Java JDBC API specification.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Thu, 09 Feb 2023 16:31:27 +0100 (2023-02-09) |
parents | 6c9abd326ad2 |
children | 4b11238ebe15 |
files | ChangeLog src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java |
diffstat | 2 files changed, 48 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog file for monetdb-java # This file is updated with Maddlog +* Thu Feb 9 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> +- Corrected DatabaseMetaData.getSQLKeywords() output. It used to return + all MonetDB SQL keywords, but now it excludes the SQL:2003 keywords + as defined by the Java JDBC API specification. + * Thu Jan 19 2023 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> - Corrected DatabaseMetaData.getUDTs() output. It used to return rows for system types: inet, json, url and uuid. However those are not User
--- a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java +++ b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java @@ -325,14 +325,53 @@ public final class MonetDatabaseMetaData } /** - * Get a comma separated list of all a database's SQL keywords that - * are NOT also SQL:2003 keywords. + * Retrieves a comma-separated list of all of this database's + * SQL keywords that are NOT also SQL:2003 keywords. * - * @return a comma separated list of MonetDB keywords + * @return a comma separated list of MonetDB keywords that are not also SQL:2003 keywords */ @Override public String getSQLKeywords() { - final String keywords = getConcatenatedStringFromQuery("SELECT \"keyword\" FROM \"sys\".\"keywords\" ORDER BY 1"); + final String keywords = getConcatenatedStringFromQuery( + "SELECT \"keyword\" FROM \"sys\".\"keywords\" " + + // exclude all SQL:2003 keywords + "WHERE \"keyword\" NOT IN (" + + "'ABS','ALL','ALLOCATE','ALTER','AND','ANY','ARE','ARRAY','AS'," + + "'ASENSITIVE','ASYMMETRIC','AT','ATOMIC','AUTHORIZATION','AVG'," + + "'BEGIN','BETWEEN','BIGINT','BINARY','BLOB','BOOLEAN','BOTH','BY'," + + "'CALL','CALLED','CARDINALITY','CASCADED','CASE','CAST','CEIL','CEILING'," + + "'CHAR','CHARACTER','CHARACTER_LENGTH','CHAR_LENGTH','CHECK','CLOB'," + + "'CLOSE','COALESCE','COLLATE','COLLECT','COLUMN','COMMIT','CONDITION'," + + "'CONNECT','CONSTRAINT','CONVERT','CORR','CORRESPONDING','COUNT'," + + "'COVAR_POP','COVAR_SAMP','CREATE','CROSS','CUBE','CUME_DIST','CURRENT','CURRENT_DATE'," + + "'CURRENT_DEFAULT_TRANSFORM_GROUP','CURRENT_PATH','CURRENT_ROLE','CURRENT_TIME'," + + "'CURRENT_TIMESTAMP','CURRENT_TRANSFORM_GROUP_FOR_TYPE','CURRENT_USER','CURSOR','CYCLE'," + + "'DATE','DAY','DEALLOCATE','DEC','DECIMAL','DECLARE','DEFAULT','DELETE','DENSE_RANK','DEREF'," + + "'DESCRIBE','DETERMINISTIC','DISCONNECT','DISTINCT','DOUBLE','DROP','DYNAMIC'," + + "'EACH','ELEMENT','ELSE','END','END-EXEC','ESCAPE','EVERY','EXCEPT','EXEC','EXECUTE','EXISTS','EXP','EXTERNAL','EXTRACT'," + + "'FALSE','FETCH','FILTER','FLOAT','FLOOR','FOR','FOREIGN','FREE','FROM','FULL','FUNCTION','FUSION'," + + "'GET','GLOBAL','GRANT','GROUP','GROUPING','HAVING','HOLD','HOUR'," + + "'IDENTITY','IN','INDICATOR','INNER','INOUT','INSENSITIVE','INSERT'," + + "'INT','INTEGER','INTERSECT','INTERSECTION','INTERVAL','INTO','IS','JOIN'," + + "'LANGUAGE','LARGE','LATERAL','LEADING','LEFT','LIKE','LN','LOCAL','LOCALTIME','LOCALTIMESTAMP','LOWER'," + + "'MATCH','MAX','MEMBER','MERGE','METHOD','MIN','MINUTE','MOD','MODIFIES','MODULE','MONTH','MULTISET'," + + "'NATIONAL','NATURAL','NCHAR','NCLOB','NEW','NO','NONE','NORMALIZE','NOT','NULL','NULLIF','NUMERIC'," + + "'OCTET_LENGTH','OF','OLD','ON','ONLY','OPEN','OR','ORDER','OUT','OUTER','OVER','OVERLAPS','OVERLAY'," + + "'PARAMETER','PARTITION','PERCENTILE_CONT','PERCENTILE_DISC','PERCENT_RANK'," + + "'POSITION','POWER','PRECISION','PREPARE','PRIMARY','PROCEDURE'," + + "'RANGE','RANK','READS','REAL','RECURSIVE','REF','REFERENCES','REFERENCING'," + + "'REGR_AVGX','REGR_AVGY','REGR_COUNT','REGR_INTERCEPT','REGR_R2','REGR_SLOPE','REGR_SXX','REGR_SXY','REGR_SYY'," + + "'RELEASE','RESULT','RETURN','RETURNS','REVOKE','RIGHT','ROLLBACK','ROLLUP','ROW','ROWS','ROW_NUMBER'," + + "'SAVEPOINT','SCOPE','SCROLL','SEARCH','SECOND','SELECT','SENSITIVE','SESSION_USER','SET'," + + "'SIMILAR','SMALLINT','SOME','SPECIFIC','SPECIFICTYPE','SQL','SQLEXCEPTION','SQLSTATE','SQLWARNING'," + + "'SQRT','START','STATIC','STDDEV_POP','STDDEV_SAMP','SUBMULTISET','SUBSTRING','SUM'," + + "'SYMMETRIC','SYSTEM','SYSTEM_USER'," + + "'TABLE','TABLESAMPLE','THEN','TIME','TIMESTAMP','TIMEZONE_HOUR','TIMEZONE_MINUTE'," + + "'TO','TRAILING','TRANSLATE','TRANSLATION','TREAT','TRIGGER','TRIM','TRUE'," + + "'UESCAPE','UNION','UNIQUE','UNKNOWN','UNNEST','UPDATE','UPPER','USER','USING'," + + "'VALUE','VALUES','VARCHAR','VARYING','VAR_POP','VAR_SAMP'," + + "'WHEN','WHENEVER','WHERE','WIDTH_BUCKET','WINDOW','WITH','WITHIN','WITHOUT','YEAR'" + + ") ORDER BY 1"); /* An old MonetDB server (pre Jul2015 release) will not have a table sys.keywords and return an empty String */ return (keywords.isEmpty()) ?