comparison src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java @ 375:a229ac4e275c

Corrected MonetDatabaseMetaData.getTypeInfo() - The LITERAL_PREFIX column now includes the required casting name for types: clob, inet, json, url, uuid and blob. - The SEARCHABLE column now returns typePredBasic instead of typeSearchable for type: blob. - The AUTO_INCREMENT column now returns false for types: hugeint, decimal, oid and wrd.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Wed, 23 Sep 2020 14:39:05 +0200 (2020-09-23)
parents 159c628527c4
children ffdc7b0e102d
comparison
equal deleted inserted replaced
374:31e79dd9e658 375:a229ac4e275c
2929 public ResultSet getTypeInfo() throws SQLException { 2929 public ResultSet getTypeInfo() throws SQLException {
2930 final StringBuilder query = new StringBuilder(2300); 2930 final StringBuilder query = new StringBuilder(2300);
2931 query.append("SELECT \"sqlname\" AS \"TYPE_NAME\", " + 2931 query.append("SELECT \"sqlname\" AS \"TYPE_NAME\", " +
2932 "cast(").append(MonetDriver.getSQLTypeMap("\"sqlname\"")).append(" AS int) AS \"DATA_TYPE\", " + 2932 "cast(").append(MonetDriver.getSQLTypeMap("\"sqlname\"")).append(" AS int) AS \"DATA_TYPE\", " +
2933 "\"digits\" AS \"PRECISION\", " + // note that when radix is 2 the precision shows the number of bits 2933 "\"digits\" AS \"PRECISION\", " + // note that when radix is 2 the precision shows the number of bits
2934 "cast(CASE WHEN \"systemname\" IN ('str','inet','json','url','uuid','blob','sqlblob') THEN ''''" + 2934 "cast(CASE WHEN \"sqlname\" IN ('char','varchar') THEN ''''" +
2935 " ELSE NULL END AS varchar(2)) AS \"LITERAL_PREFIX\", " + 2935 " WHEN \"sqlname\" IN ('clob','inet','json','url','uuid','blob','sqlblob') THEN \"sqlname\"||' '''" +
2936 " ELSE NULL END AS varchar(9)) AS \"LITERAL_PREFIX\", " +
2936 "cast(CASE WHEN \"systemname\" IN ('str','inet','json','url','uuid','blob','sqlblob') THEN ''''" + 2937 "cast(CASE WHEN \"systemname\" IN ('str','inet','json','url','uuid','blob','sqlblob') THEN ''''" +
2937 " ELSE NULL END AS varchar(2)) AS \"LITERAL_SUFFIX\", " + 2938 " ELSE NULL END AS varchar(2)) AS \"LITERAL_SUFFIX\", " +
2938 "CASE WHEN \"sqlname\" IN ('char', 'varchar') THEN 'max length'" + 2939 "CASE WHEN \"sqlname\" IN ('char', 'varchar') THEN 'max length'" +
2939 " WHEN \"sqlname\" = 'decimal' THEN 'precision, scale'" + 2940 " WHEN \"sqlname\" = 'decimal' THEN 'precision, scale'" +
2940 " WHEN \"sqlname\" IN ('time', 'timetz', 'timestamp', 'timestamptz', 'sec_interval') THEN 'precision'" + 2941 " WHEN \"sqlname\" IN ('time', 'timetz', 'timestamp', 'timestamptz', 'sec_interval') THEN 'precision'" +
2941 " ELSE NULL END AS \"CREATE_PARAMS\", " + 2942 " ELSE NULL END AS \"CREATE_PARAMS\", " +
2942 "cast(CASE WHEN \"systemname\" = 'oid' THEN ").append(DatabaseMetaData.typeNoNulls) 2943 "cast(CASE WHEN \"systemname\" = 'oid' THEN ").append(DatabaseMetaData.typeNoNulls)
2943 .append(" ELSE ").append(DatabaseMetaData.typeNullable).append(" END AS smallint) AS \"NULLABLE\", " + 2944 .append(" ELSE ").append(DatabaseMetaData.typeNullable).append(" END AS smallint) AS \"NULLABLE\", " +
2944 "CASE WHEN \"systemname\" IN ('str','json','url') THEN true ELSE false END AS \"CASE_SENSITIVE\", " + 2945 "CASE WHEN \"systemname\" IN ('str','json','url') THEN true ELSE false END AS \"CASE_SENSITIVE\", " +
2945 "cast(CASE WHEN \"systemname\" IN ('str','inet','json','url','uuid','blob','sqlblob') THEN ").append(DatabaseMetaData.typeSearchable) 2946 "cast(CASE WHEN \"systemname\" IN ('str','inet','json','url','uuid') THEN ").append(DatabaseMetaData.typeSearchable)
2946 .append(" ELSE ").append(DatabaseMetaData.typePredBasic).append(" END AS smallint) AS \"SEARCHABLE\", " + 2947 .append(" ELSE ").append(DatabaseMetaData.typePredBasic).append(" END AS smallint) AS \"SEARCHABLE\", " +
2947 "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint','hugeint','decimal','real','double','sec_interval','month_interval') THEN false ELSE true END AS \"UNSIGNED_ATTRIBUTE\", " + 2948 "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint','hugeint','decimal','real','double','sec_interval','month_interval') THEN false ELSE true END AS \"UNSIGNED_ATTRIBUTE\", " +
2948 "CASE \"sqlname\" WHEN 'decimal' THEN true ELSE false END AS \"FIXED_PREC_SCALE\", " + 2949 "CASE \"sqlname\" WHEN 'decimal' THEN true ELSE false END AS \"FIXED_PREC_SCALE\", " +
2949 "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint','hugeint','decimal','oid','wrd') THEN true ELSE false END AS \"AUTO_INCREMENT\", " + 2950 "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint') THEN true ELSE false END AS \"AUTO_INCREMENT\", " +
2950 "\"systemname\" AS \"LOCAL_TYPE_NAME\", " + 2951 "\"systemname\" AS \"LOCAL_TYPE_NAME\", " +
2951 "cast(0 AS smallint) AS \"MINIMUM_SCALE\", " + 2952 "cast(0 AS smallint) AS \"MINIMUM_SCALE\", " +
2952 "cast(CASE WHEN \"sqlname\" = 'decimal' THEN (CASE \"systemname\" WHEN 'lng' THEN 18 WHEN 'hge' THEN 38 WHEN 'int' THEN 9 WHEN 'sht' THEN 4 WHEN 'bte' THEN 2 ELSE 0 END)" + 2953 "cast(CASE WHEN \"sqlname\" = 'decimal' THEN (CASE \"systemname\" WHEN 'lng' THEN 18 WHEN 'hge' THEN 38 WHEN 'int' THEN 9 WHEN 'sht' THEN 4 WHEN 'bte' THEN 2 ELSE 0 END)" +
2953 " WHEN \"sqlname\" IN ('time', 'timetz', 'timestamp', 'timestamptz', 'sec_interval') THEN 6 ELSE 0 END AS smallint) AS \"MAXIMUM_SCALE\", " + 2954 " WHEN \"sqlname\" IN ('time', 'timetz', 'timestamp', 'timestamptz', 'sec_interval') THEN 6 ELSE 0 END AS smallint) AS \"MAXIMUM_SCALE\", " +
2954 "cast(0 AS int) AS \"SQL_DATA_TYPE\", " + 2955 "cast(0 AS int) AS \"SQL_DATA_TYPE\", " +