Mercurial > hg > monetdb-java
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\", " + |