From ae12b6eec7d6b31d51958423135eccfbd66d5fc0 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 24 May 2013 11:33:01 +0200 Subject: [PATCH] [#965] [#2477] Add support for Sybase SQL Anywhere unsigned number types --- .../configuration/lukas/sybase/library.xml | 9 +++++++ jOOQ-test/src/org/jooq/test/SybaseTest.java | 24 ++++++++++--------- jOOQ-test/src/org/jooq/test/sybase/create.sql | 9 +++++++ .../org/jooq/util/sybase/SybaseDataType.java | 15 ++++++++---- 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/jOOQ-test/configuration/org/jooq/configuration/lukas/sybase/library.xml b/jOOQ-test/configuration/org/jooq/configuration/lukas/sybase/library.xml index dcb100dc2b..b32100dad6 100644 --- a/jOOQ-test/configuration/org/jooq/configuration/lukas/sybase/library.xml +++ b/jOOQ-test/configuration/org/jooq/configuration/lukas/sybase/library.xml @@ -52,6 +52,15 @@ BIT (?i:(.*?.)?T_BOOLEANS.(VC|C|N)_BOOLEAN) + + + + SIGNED TINYINT + (?i:(.*?.)?T_639_NUMBERS_TABLE.BYTE) + org.jooq.test._.converters.Boolean_YES_NO_LC diff --git a/jOOQ-test/src/org/jooq/test/SybaseTest.java b/jOOQ-test/src/org/jooq/test/SybaseTest.java index 609c51bc9e..95437ad6a4 100644 --- a/jOOQ-test/src/org/jooq/test/SybaseTest.java +++ b/jOOQ-test/src/org/jooq/test/SybaseTest.java @@ -44,6 +44,7 @@ import static org.jooq.test.sybase.generatedclasses.Tables.T_EXOTIC_TYPES; import static org.jooq.test.sybase.generatedclasses.Tables.T_IDENTITY; import static org.jooq.test.sybase.generatedclasses.Tables.T_IDENTITY_PK; import static org.jooq.test.sybase.generatedclasses.Tables.T_TRIGGERS; +import static org.jooq.test.sybase.generatedclasses.Tables.T_UNSIGNED; import static org.jooq.test.sybase.generatedclasses.Tables.V_AUTHOR; import static org.jooq.test.sybase.generatedclasses.Tables.V_BOOK; import static org.jooq.test.sybase.generatedclasses.Tables.V_LIBRARY; @@ -86,6 +87,7 @@ import org.jooq.test.sybase.generatedclasses.tables.records.TExoticTypesRecord; import org.jooq.test.sybase.generatedclasses.tables.records.TIdentityPkRecord; import org.jooq.test.sybase.generatedclasses.tables.records.TIdentityRecord; import org.jooq.test.sybase.generatedclasses.tables.records.TTriggersRecord; +import org.jooq.test.sybase.generatedclasses.tables.records.TUnsignedRecord; import org.jooq.test.sybase.generatedclasses.tables.records.T_639NumbersTableRecord; import org.jooq.test.sybase.generatedclasses.tables.records.T_725LobTestRecord; import org.jooq.test.sybase.generatedclasses.tables.records.T_785Record; @@ -117,7 +119,7 @@ public class SybaseTest extends jOOQAbstractTest< TBooleansRecord, XUnusedRecord, TTriggersRecord, - XUnusedRecord, + TUnsignedRecord, TExoticTypesRecord, TIdentityRecord, TIdentityPkRecord, @@ -257,28 +259,28 @@ public class SybaseTest extends jOOQAbstractTest< } @Override - protected Table TUnsigned() { - return null; + protected Table TUnsigned() { + return T_UNSIGNED; } @Override - protected TableField TUnsigned_U_BYTE() { - return null; + protected TableField TUnsigned_U_BYTE() { + return T_UNSIGNED.U_BYTE; } @Override - protected TableField TUnsigned_U_SHORT() { - return null; + protected TableField TUnsigned_U_SHORT() { + return T_UNSIGNED.U_SHORT; } @Override - protected TableField TUnsigned_U_INT() { - return null; + protected TableField TUnsigned_U_INT() { + return T_UNSIGNED.U_INT; } @Override - protected TableField TUnsigned_U_LONG() { - return null; + protected TableField TUnsigned_U_LONG() { + return T_UNSIGNED.U_LONG; } @Override diff --git a/jOOQ-test/src/org/jooq/test/sybase/create.sql b/jOOQ-test/src/org/jooq/test/sybase/create.sql index b37e318294..664979ec7b 100644 --- a/jOOQ-test/src/org/jooq/test/sybase/create.sql +++ b/jOOQ-test/src/org/jooq/test/sybase/create.sql @@ -40,6 +40,7 @@ DROP TABLE IF EXISTS t_658_22/ DROP TABLE IF EXISTS t_658_32/ DROP TABLE IF EXISTS t_725_lob_test/ DROP TABLE IF EXISTS t_785/ +DROP TABLE IF EXISTS t_unsigned/ DROP TABLE IF EXISTS t_booleans/ DROP TABLE IF EXISTS t_identity/ DROP TABLE IF EXISTS t_identity_pk/ @@ -87,6 +88,14 @@ CREATE TABLE t_booleans ( ) / +CREATE TABLE t_unsigned ( + u_byte unsigned tinyint null, + u_short unsigned smallint null, + u_int unsigned int null, + u_long unsigned bigint null +) +/ + CREATE TABLE t_triggers ( id_generated int IDENTITY not null, id int null, diff --git a/jOOQ/src/main/java/org/jooq/util/sybase/SybaseDataType.java b/jOOQ/src/main/java/org/jooq/util/sybase/SybaseDataType.java index 6e241c92f4..df9b6033e8 100644 --- a/jOOQ/src/main/java/org/jooq/util/sybase/SybaseDataType.java +++ b/jOOQ/src/main/java/org/jooq/util/sybase/SybaseDataType.java @@ -41,6 +41,10 @@ import org.jooq.DataType; import org.jooq.SQLDialect; import org.jooq.impl.DefaultDataType; import org.jooq.impl.SQLDataType; +import org.jooq.types.UByte; +import org.jooq.types.UInteger; +import org.jooq.types.ULong; +import org.jooq.types.UShort; /** * Supported data types for the {@link SQLDialect#SYBASE} dialect @@ -54,14 +58,15 @@ public class SybaseDataType { // Default SQL data types and synonyms thereof // ------------------------------------------------------------------------- - public static final DataType TINYINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.TINYINT, "tinyint"); + public static final DataType UNSIGNEDTINYINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.TINYINTUNSIGNED, "unsigned tinyint"); + public static final DataType TINYINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.TINYINTUNSIGNED, "tinyint"); public static final DataType SMALLINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.SMALLINT, "smallint"); - public static final DataType UNSIGNEDSMALLLINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.SMALLINT, "unsignedsmallint"); + public static final DataType UNSIGNEDSMALLLINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.SMALLINTUNSIGNED, "unsigned smallint"); public static final DataType INT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.INTEGER, "int"); public static final DataType INTEGER = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.INTEGER, "integer"); - public static final DataType UNSIGNEDINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.INTEGER, "unsignedint"); + public static final DataType UNSIGNEDINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.INTEGERUNSIGNED, "unsigned int"); public static final DataType BIGINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.BIGINT, "bigint"); - public static final DataType UNSIGNEDBIGINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.BIGINT, "unsignedbigint"); + public static final DataType UNSIGNEDBIGINT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.BIGINTUNSIGNED, "unsigned bigint"); public static final DataType DOUBLE = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.DOUBLE, "double"); public static final DataType FLOAT = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.FLOAT, "float"); public static final DataType REAL = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.REAL, "real"); @@ -90,6 +95,8 @@ public class SybaseDataType { protected static final DataType __BLOB = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.BLOB, "binary"); protected static final DataType __BOOLEAN = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.BOOLEAN, "bit"); + protected static final DataType __BYTE = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.TINYINT, "tinyint"); + protected static final DataType __BYTESIGNED = new DefaultDataType(SQLDialect.SYBASE, SQLDataType.TINYINT, "signed tinyint"); // ------------------------------------------------------------------------- // Compatibility types for supported Java types