[#965] [#2477] Add support for Sybase SQL Anywhere unsigned number types

This commit is contained in:
Lukas Eder 2013-05-24 11:33:01 +02:00
parent 2800ba6053
commit ae12b6eec7
4 changed files with 42 additions and 15 deletions

View File

@ -52,6 +52,15 @@
<name>BIT</name>
<expressions>(?i:(.*?.)?T_BOOLEANS.(VC|C|N)_BOOLEAN)</expressions>
</forcedType>
<!--
[#965] Sybase SQL Anywhere doesn't support what other
databases consider a SIGNED TINYINT
-->
<forcedType>
<name>SIGNED TINYINT</name>
<expressions>(?i:(.*?.)?T_639_NUMBERS_TABLE.BYTE)</expressions>
</forcedType>
<forcedType>
<name>org.jooq.test._.converters.Boolean_YES_NO_LC</name>

View File

@ -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<XUnusedRecord> TUnsigned() {
return null;
protected Table<TUnsignedRecord> TUnsigned() {
return T_UNSIGNED;
}
@Override
protected TableField<XUnusedRecord, UByte> TUnsigned_U_BYTE() {
return null;
protected TableField<TUnsignedRecord, UByte> TUnsigned_U_BYTE() {
return T_UNSIGNED.U_BYTE;
}
@Override
protected TableField<XUnusedRecord, UShort> TUnsigned_U_SHORT() {
return null;
protected TableField<TUnsignedRecord, UShort> TUnsigned_U_SHORT() {
return T_UNSIGNED.U_SHORT;
}
@Override
protected TableField<XUnusedRecord, UInteger> TUnsigned_U_INT() {
return null;
protected TableField<TUnsignedRecord, UInteger> TUnsigned_U_INT() {
return T_UNSIGNED.U_INT;
}
@Override
protected TableField<XUnusedRecord, ULong> TUnsigned_U_LONG() {
return null;
protected TableField<TUnsignedRecord, ULong> TUnsigned_U_LONG() {
return T_UNSIGNED.U_LONG;
}
@Override

View File

@ -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,

View File

@ -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<Byte> TINYINT = new DefaultDataType<Byte>(SQLDialect.SYBASE, SQLDataType.TINYINT, "tinyint");
public static final DataType<UByte> UNSIGNEDTINYINT = new DefaultDataType<UByte>(SQLDialect.SYBASE, SQLDataType.TINYINTUNSIGNED, "unsigned tinyint");
public static final DataType<UByte> TINYINT = new DefaultDataType<UByte>(SQLDialect.SYBASE, SQLDataType.TINYINTUNSIGNED, "tinyint");
public static final DataType<Short> SMALLINT = new DefaultDataType<Short>(SQLDialect.SYBASE, SQLDataType.SMALLINT, "smallint");
public static final DataType<Short> UNSIGNEDSMALLLINT = new DefaultDataType<Short>(SQLDialect.SYBASE, SQLDataType.SMALLINT, "unsignedsmallint");
public static final DataType<UShort> UNSIGNEDSMALLLINT = new DefaultDataType<UShort>(SQLDialect.SYBASE, SQLDataType.SMALLINTUNSIGNED, "unsigned smallint");
public static final DataType<Integer> INT = new DefaultDataType<Integer>(SQLDialect.SYBASE, SQLDataType.INTEGER, "int");
public static final DataType<Integer> INTEGER = new DefaultDataType<Integer>(SQLDialect.SYBASE, SQLDataType.INTEGER, "integer");
public static final DataType<Integer> UNSIGNEDINT = new DefaultDataType<Integer>(SQLDialect.SYBASE, SQLDataType.INTEGER, "unsignedint");
public static final DataType<UInteger> UNSIGNEDINT = new DefaultDataType<UInteger>(SQLDialect.SYBASE, SQLDataType.INTEGERUNSIGNED, "unsigned int");
public static final DataType<Long> BIGINT = new DefaultDataType<Long>(SQLDialect.SYBASE, SQLDataType.BIGINT, "bigint");
public static final DataType<Long> UNSIGNEDBIGINT = new DefaultDataType<Long>(SQLDialect.SYBASE, SQLDataType.BIGINT, "unsignedbigint");
public static final DataType<ULong> UNSIGNEDBIGINT = new DefaultDataType<ULong>(SQLDialect.SYBASE, SQLDataType.BIGINTUNSIGNED, "unsigned bigint");
public static final DataType<Double> DOUBLE = new DefaultDataType<Double>(SQLDialect.SYBASE, SQLDataType.DOUBLE, "double");
public static final DataType<Double> FLOAT = new DefaultDataType<Double>(SQLDialect.SYBASE, SQLDataType.FLOAT, "float");
public static final DataType<Float> REAL = new DefaultDataType<Float>(SQLDialect.SYBASE, SQLDataType.REAL, "real");
@ -90,6 +95,8 @@ public class SybaseDataType {
protected static final DataType<byte[]> __BLOB = new DefaultDataType<byte[]>(SQLDialect.SYBASE, SQLDataType.BLOB, "binary");
protected static final DataType<Boolean> __BOOLEAN = new DefaultDataType<Boolean>(SQLDialect.SYBASE, SQLDataType.BOOLEAN, "bit");
protected static final DataType<Byte> __BYTE = new DefaultDataType<Byte>(SQLDialect.SYBASE, SQLDataType.TINYINT, "tinyint");
protected static final DataType<Byte> __BYTESIGNED = new DefaultDataType<Byte>(SQLDialect.SYBASE, SQLDataType.TINYINT, "signed tinyint");
// -------------------------------------------------------------------------
// Compatibility types for supported Java types