Mercurial > hg > monetdb-java
comparison src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java @ 642:dd9b4fb14256
Added recognition of 'xml' type.
Use default mapping to Types.VARCHAR for easy and fast (as java.lang.String) retrieval, display and setting data of columns of type 'xml'.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Thu, 10 Feb 2022 15:12:30 +0100 (2022-02-10) |
parents | 06d69b82d409 |
children | fbed03097738 |
comparison
equal
deleted
inserted
replaced
641:fac0ed642af2 | 642:dd9b4fb14256 |
---|---|
2962 query.append("SELECT \"sqlname\" AS \"TYPE_NAME\", " + | 2962 query.append("SELECT \"sqlname\" AS \"TYPE_NAME\", " + |
2963 // TODO map 'day_interval' to 'interval day' (or 'interval day to second'), 'month_interval' to 'interval month' (or 'interval year to month'), 'sec_interval' to 'interval second' | 2963 // TODO map 'day_interval' to 'interval day' (or 'interval day to second'), 'month_interval' to 'interval month' (or 'interval year to month'), 'sec_interval' to 'interval second' |
2964 "cast(").append(MonetDriver.getSQLTypeMap("\"sqlname\"")).append(" AS int) AS \"DATA_TYPE\", " + | 2964 "cast(").append(MonetDriver.getSQLTypeMap("\"sqlname\"")).append(" AS int) AS \"DATA_TYPE\", " + |
2965 "\"digits\" AS \"PRECISION\", " + // note that when radix is 2 the precision shows the number of bits | 2965 "\"digits\" AS \"PRECISION\", " + // note that when radix is 2 the precision shows the number of bits |
2966 "cast(CASE WHEN \"sqlname\" IN ('char','varchar','sec_interval','day_interval','month_interval') THEN ''''" + | 2966 "cast(CASE WHEN \"sqlname\" IN ('char','varchar','sec_interval','day_interval','month_interval') THEN ''''" + |
2967 " WHEN \"sqlname\" IN ('clob','inet','json','url','uuid','date','time','timetz','timestamp','timestamptz','blob','sqlblob') THEN \"sqlname\"||' '''" + | 2967 " WHEN \"sqlname\" IN ('clob','inet','json','url','uuid','date','time','timetz','timestamp','timestamptz','blob','sqlblob','xml') THEN \"sqlname\"||' '''" + |
2968 " ELSE NULL END AS varchar(16)) AS \"LITERAL_PREFIX\", " + | 2968 " ELSE NULL END AS varchar(16)) AS \"LITERAL_PREFIX\", " + |
2969 "cast(CASE WHEN \"sqlname\" IN ('char','varchar','sec_interval','day_interval','month_interval'" + | 2969 "cast(CASE WHEN \"sqlname\" IN ('char','varchar','sec_interval','day_interval','month_interval'" + |
2970 ",'clob','inet','json','url','uuid','date','time','timetz','timestamp','timestamptz','blob','sqlblob') THEN ''''" + | 2970 ",'clob','inet','json','url','uuid','date','time','timetz','timestamp','timestamptz','blob','sqlblob','xml') THEN ''''" + |
2971 " ELSE NULL END AS varchar(2)) AS \"LITERAL_SUFFIX\", " + | 2971 " ELSE NULL END AS varchar(2)) AS \"LITERAL_SUFFIX\", " + |
2972 "CASE WHEN \"sqlname\" IN ('char','varchar') THEN 'max length'" + | 2972 "CASE WHEN \"sqlname\" IN ('char','varchar') THEN 'max length'" + |
2973 " WHEN \"sqlname\" = 'decimal' THEN 'precision, scale'" + | 2973 " WHEN \"sqlname\" = 'decimal' THEN 'precision, scale'" + |
2974 " WHEN \"sqlname\" IN ('time','timetz','timestamp','timestamptz','sec_interval') THEN 'precision'" + | 2974 " WHEN \"sqlname\" IN ('time','timetz','timestamp','timestamptz','sec_interval') THEN 'precision'" + |
2975 " ELSE NULL END AS \"CREATE_PARAMS\", " + | 2975 " ELSE NULL END AS \"CREATE_PARAMS\", " + |
2976 "cast(CASE WHEN \"systemname\" = 'oid' THEN ").append(DatabaseMetaData.typeNoNulls) | 2976 "cast(CASE WHEN \"systemname\" = 'oid' THEN ").append(DatabaseMetaData.typeNoNulls) |
2977 .append(" ELSE ").append(DatabaseMetaData.typeNullable).append(" END AS smallint) AS \"NULLABLE\", " + | 2977 .append(" ELSE ").append(DatabaseMetaData.typeNullable).append(" END AS smallint) AS \"NULLABLE\", " + |
2978 "CASE WHEN \"systemname\" IN ('str','json','url') THEN true ELSE false END AS \"CASE_SENSITIVE\", " + | 2978 "CASE WHEN \"systemname\" IN ('str','json','url','xml') THEN true ELSE false END AS \"CASE_SENSITIVE\", " + |
2979 "cast(CASE WHEN \"systemname\" IN ('str','inet','json','url','uuid') THEN ").append(DatabaseMetaData.typeSearchable) | 2979 "cast(CASE WHEN \"systemname\" IN ('str','inet','json','url','uuid','xml') THEN ").append(DatabaseMetaData.typeSearchable) |
2980 .append(" ELSE ").append(DatabaseMetaData.typePredBasic).append(" END AS smallint) AS \"SEARCHABLE\", " + | 2980 .append(" ELSE ").append(DatabaseMetaData.typePredBasic).append(" END AS smallint) AS \"SEARCHABLE\", " + |
2981 "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint','hugeint','decimal','real','double'" + | 2981 "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint','hugeint','decimal','real','double'" + |
2982 ",'day_interval','month_interval','sec_interval') THEN false ELSE true END AS \"UNSIGNED_ATTRIBUTE\", " + | 2982 ",'day_interval','month_interval','sec_interval') THEN false ELSE true END AS \"UNSIGNED_ATTRIBUTE\", " + |
2983 "CASE \"sqlname\" WHEN 'decimal' THEN true ELSE false END AS \"FIXED_PREC_SCALE\", " + | 2983 "CASE \"sqlname\" WHEN 'decimal' THEN true ELSE false END AS \"FIXED_PREC_SCALE\", " + |
2984 "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint') THEN true ELSE false END AS \"AUTO_INCREMENT\", " + | 2984 "CASE WHEN \"sqlname\" IN ('tinyint','smallint','int','bigint') THEN true ELSE false END AS \"AUTO_INCREMENT\", " + |
3259 // next 4 UDTs are standard | 3259 // next 4 UDTs are standard |
3260 " WHEN 'inet' THEN 'org.monetdb.jdbc.types.INET'" + | 3260 " WHEN 'inet' THEN 'org.monetdb.jdbc.types.INET'" + |
3261 " WHEN 'json' THEN 'java.lang.String'" + | 3261 " WHEN 'json' THEN 'java.lang.String'" + |
3262 " WHEN 'url' THEN 'org.monetdb.jdbc.types.URL'" + | 3262 " WHEN 'url' THEN 'org.monetdb.jdbc.types.URL'" + |
3263 " WHEN 'uuid' THEN 'java.lang.String'" + | 3263 " WHEN 'uuid' THEN 'java.lang.String'" + |
3264 // next UDT only when "CREATE TYPE xml EXTERNAL NAME xml;" is executed | |
3265 " WHEN 'xml' THEN 'java.lang.String'" + | |
3264 " ELSE 'java.lang.Object' END AS \"CLASS_NAME\", " + | 3266 " ELSE 'java.lang.Object' END AS \"CLASS_NAME\", " + |
3265 "cast(CASE WHEN t.\"sqlname\" IN ('inet', 'json', 'url', 'uuid') THEN ").append(Types.JAVA_OBJECT) | 3267 "cast(CASE WHEN t.\"sqlname\" IN ('inet','json','url','uuid','xml') THEN ").append(Types.JAVA_OBJECT) |
3266 .append(" ELSE ").append(Types.STRUCT).append(" END AS int) AS \"DATA_TYPE\", " + | 3268 .append(" ELSE ").append(Types.STRUCT).append(" END AS int) AS \"DATA_TYPE\", " + |
3267 "t.\"systemname\" AS \"REMARKS\", " + | 3269 "t.\"systemname\" AS \"REMARKS\", " + |
3268 "cast(null as smallint) AS \"BASE_TYPE\" " + | 3270 "cast(null as smallint) AS \"BASE_TYPE\" " + |
3269 "FROM \"sys\".\"types\" t " + | 3271 "FROM \"sys\".\"types\" t " + |
3270 "JOIN \"sys\".\"schemas\" s ON t.\"schema_id\" = s.\"id\" " + | 3272 "JOIN \"sys\".\"schemas\" s ON t.\"schema_id\" = s.\"id\" " + |