in HSQL/src/org/hsqldb1/rowio/RowOutputBase.java [172:265]
public void writeData(int l, int[] types, Object[] data,
HashMappedList cols, int[] primaryKeys) {
boolean hasPK = primaryKeys != null && primaryKeys.length != 0;
int limit = hasPK ? primaryKeys.length
: l;
for (int i = 0; i < limit; i++) {
int j = hasPK ? primaryKeys[i]
: i;
Object o = data[j];
int t = types[j];
if (cols != null) {
Column col = (Column) cols.get(j);
writeFieldPrefix();
writeString(col.columnName.statementName);
}
if (o == null) {
writeNull(t);
continue;
}
writeFieldType(t);
switch (t) {
case Types.NULL :
case Types.CHAR :
case Types.VARCHAR :
case Types.VARCHAR_IGNORECASE :
case Types.LONGVARCHAR :
writeChar((String) o, t);
break;
case Types.TINYINT :
case Types.SMALLINT :
writeSmallint((Number) o);
break;
case Types.INTEGER :
writeInteger((Number) o);
break;
case Types.BIGINT :
writeBigint((Number) o);
break;
case Types.REAL :
case Types.FLOAT :
case Types.DOUBLE :
writeReal((Double) o, t);
break;
case Types.NUMERIC :
case Types.DECIMAL :
writeDecimal((BigDecimal) o);
break;
case Types.BOOLEAN :
writeBit((Boolean) o);
break;
case Types.DATE :
writeDate((Date) o);
break;
case Types.TIME :
writeTime((Time) o);
break;
case Types.TIMESTAMP :
writeTimestamp((Timestamp) o);
break;
case Types.OTHER :
writeOther((JavaObject) o);
break;
case Types.BINARY :
case Types.VARBINARY :
case Types.LONGVARBINARY :
writeBinary((Binary) o, t);
break;
default :
throw Trace.runtimeError(Trace.FUNCTION_NOT_SUPPORTED,
Types.getTypeString(t));
}
}
}