Mapping of attribute types
db2 interbase msaccess mssql oracle informix postgreSQL1 sybase1 nsdb1
boolean
CHAR(1)2 CHAR(1)2 CHAR(1)2 CHAR(1)2 CHAR(1)2 CHAR(1)2 CHAR(1) CHAR(1) CHAR(1)
char
CHAR(1) CHAR(1) CHAR(1) CHAR(1) CHAR(1) CHAR(1) CHAR(1) - -
byte
SMALLINT SMALLINT SMALLINT SMALLINT NUMBER(3) SMALLINT INT2 - -
short
SMALLINT SMALLINT SMALLINT SMALLINT NUMBER(5) INTEGER INT2 - -
int
INTEGER INTEGER INTEGER INT NUMBER(10) INT8 INT4 INTEGER INTEGER
long
BIGINT CHAR(20)3,4 CURRENCY3,5 DECIMAL(19,0)6 NUMBER(20) CHAR(20)3,4 INT8 - -
float
FLOAT7,8 DOUBLE
PRECISION
DOUBLE FLOAT8 NUMBER7,8 FLOAT8 FLOAT8 - -
double
FLOAT7,8 DOUBLE
PRECISION
DOUBLE FLOAT7,8 NUMBER7,8 FLOAT8 FLOAT8 DOUBLE
PRECISION
DOUBLE
String
flgen.columnType = "CHAR", flgen.length = N
CHAR(N) CHAR(N) CHAR(N) CHAR(N)
NULL
CHAR(N) CHAR(N) CHAR(N) CHAR(N) CHAR(N)
String
flgen.columnType = "VARCHAR", flgen.length = N
VARCHAR(N) VARCHAR(N) TEXT(N) VARCHAR(N)
NULL
VARCHAR2(N) VARCHAR(N)11 VARCHAR(N) VARCHAR(N) VARCHAR(N)
String
flgen.columnType = "LONG VARCHAR", flgen.length = N
CLOB(N) BLOB LONGTEXT TEXT LONG TEXT TEXT TEXT LONGCHAR
Date
CHAR(16)9 CHAR(16)9 CHAR(16)9 CHAR(16)9 CHAR(16)9 CHAR(20)4 CHAR(16) CHAR(16) CHAR(16)
FLBlob
flgen.length = N
BLOB(N) BLOB LONGBINARY IMAGE LONG ROW BYTE - - -
FLClob10
flgen.length = N
CLOB(N) BLOB LONGCHAR TEXT LONG
VARCHAR
CLOB - - -
String lehgtn database limits
db2 interbase msaccess mssql oracle informix
String
flgen.columnType = "CHAR"
254 32664 255 8000 4000 32767
String
flgen.columnType = "VARCHAR"
4000 32664 255 8000 4000 255(32767)11

Comments:

  1. Not supported. FL team can add support by request if you plan to use the database in your project.
  2. FL writes either 'Y' (true) or 'N' (false).
  3. This implementation does not allow arithmetic operation in OQL queries.
  4. FL converts value to unsigned long: convert(x) = x - Long.MIN_VALUE. Thus: Long.MIN_VALUE -> 0, ..., 0 -> -Long.MIN_VALUE, ..., Long.MAX_VALUE -> 264, and then writes to the database the string representation of the converted number. This mapping allows sorting.
  5. FL converts the value to MSAccess currency(15,4), thus the long value divided by 10000 is at the database. Then it writes to the database via PreparedStatement.setBigDecimal() method.
  6. FL converts the value to BigDecimal and sets then via PreparedStatement.setBigDecimal() method.
  7. The database does not support full range of the type.
  8. The database does not support NaN, NEGATIVE_INFINITY, and POSITIVE_INFINITY values.
  9. FL converts java.util.Date to string of 16 symbols: it pads with zeros the start of Long.toHexString(date.getTime()) string. This convertion has a bug: sorting is wrong: dates before 1970/01/01 0:00am GMT (= new Date(0)) are more than dates after 1970/01/01 0:00am GMT.
  10. FL does not support this type.
  11. Strings with flgen.length > 255 are mapped to two columns: column-value with type corresponding to char Java type and column-length with type corresponding to int.