public void writeData()

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));
            }
        }
    }