From 1161afbad137fcff08484f401829b00bb7f273e3 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 21 Dec 2012 22:40:18 +0100 Subject: [PATCH] [#456] Add runtime support for PRECISION, SCALE, and LENGTH attributes - Added support for precision, scale, and length information in org.jooq.Meta --- jOOQ/src/main/java/org/jooq/impl/MetaImpl.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java index 0f0ad7d78b..b9d88b7660 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java @@ -48,7 +48,6 @@ import org.jooq.ForeignKey; import org.jooq.Meta; import org.jooq.Record; import org.jooq.Result; -import org.jooq.SQLDialect; import org.jooq.Schema; import org.jooq.Table; import org.jooq.TableField; @@ -209,7 +208,6 @@ class MetaImpl implements Meta { init(); } - @SuppressWarnings("deprecation") private final void init() { try { Result columns = executor.fetch(meta().getColumns(null, getSchema().getName(), getName(), "%")); @@ -223,7 +221,19 @@ class MetaImpl implements Meta { // TODO: Exception handling should be moved inside SQLDataType DataType type = null; try { - type = DefaultDataType.getDataType(SQLDialect.SQL99, typeName, precision, scale); + type = DefaultDataType.getDataType(executor.getDialect(), typeName, precision, scale); + + if (type.hasPrecision()) { + type = type.precision(precision); + } + if (type.hasScale()) { + type = type.scale(scale); + } + if (type.hasLength()) { + + // JDBC doesn't distinguish between precision and length + type = type.length(precision); + } } catch (SQLDialectNotSupportedException e) { type = SQLDataType.OTHER;