Search in sources :

Example 1 with SimpleResultSet

use of com.wplatform.ddal.result.SimpleResultSet in project jdbc-shards by wplatform.

the class Value method getResultSet.

public ResultSet getResultSet() {
    SimpleResultSet rs = new SimpleResultSet();
    rs.setAutoClose(false);
    rs.addColumn("X", DataType.convertTypeToSQLType(getType()), MathUtils.convertLongToInt(getPrecision()), getScale());
    rs.addRow(getObject());
    return rs;
}
Also used : SimpleResultSet(com.wplatform.ddal.result.SimpleResultSet)

Example 2 with SimpleResultSet

use of com.wplatform.ddal.result.SimpleResultSet in project jdbc-shards by wplatform.

the class ValueResultSet method convertPrecision.

@Override
public Value convertPrecision(long precision, boolean force) {
    if (!force) {
        return this;
    }
    SimpleResultSet rs = new SimpleResultSet();
    rs.setAutoClose(false);
    return ValueResultSet.get(rs);
}
Also used : SimpleResultSet(com.wplatform.ddal.result.SimpleResultSet)

Example 3 with SimpleResultSet

use of com.wplatform.ddal.result.SimpleResultSet in project jdbc-shards by wplatform.

the class Data method readValue.

/**
 * Read a value.
 *
 * @return the value
 */
public Value readValue() {
    int type = data[pos++] & 255;
    switch(type) {
        case Value.NULL:
            return ValueNull.INSTANCE;
        case BOOLEAN_TRUE:
            return ValueBoolean.get(true);
        case BOOLEAN_FALSE:
            return ValueBoolean.get(false);
        case INT_NEG:
            return ValueInt.get(-readVarInt());
        case Value.INT:
            return ValueInt.get(readVarInt());
        case LONG_NEG:
            return ValueLong.get(-readVarLong());
        case Value.LONG:
            return ValueLong.get(readVarLong());
        case Value.BYTE:
            return ValueByte.get(readByte());
        case Value.SHORT:
            return ValueShort.get(readShortInt());
        case DECIMAL_0_1:
            return (ValueDecimal) ValueDecimal.ZERO;
        case DECIMAL_0_1 + 1:
            return (ValueDecimal) ValueDecimal.ONE;
        case DECIMAL_SMALL_0:
            return ValueDecimal.get(BigDecimal.valueOf(readVarLong()));
        case DECIMAL_SMALL:
            {
                int scale = readVarInt();
                return ValueDecimal.get(BigDecimal.valueOf(readVarLong(), scale));
            }
        case Value.DECIMAL:
            {
                int scale = readVarInt();
                int len = readVarInt();
                byte[] buff = DataUtils.newBytes(len);
                read(buff, 0, len);
                BigInteger b = new BigInteger(buff);
                return ValueDecimal.get(new BigDecimal(b, scale));
            }
        case LOCAL_DATE:
            {
                return ValueDate.fromDateValue(readVarLong());
            }
        case Value.DATE:
            {
                long x = readVarLong() * MILLIS_PER_MINUTE;
                return ValueDate.fromMillis(DateTimeUtils.getTimeUTCWithoutDst(x));
            }
        case LOCAL_TIME:
            {
                long nanos = readVarLong() * 1000000 + readVarLong();
                return ValueTime.fromNanos(nanos);
            }
        case Value.TIME:
            // need to normalize the year, month and day
            return ValueTime.fromMillis(DateTimeUtils.getTimeUTCWithoutDst(readVarLong()));
        case LOCAL_TIMESTAMP:
            {
                long dateValue = readVarLong();
                long nanos = readVarLong() * 1000000 + readVarLong();
                return ValueTimestamp.fromDateValueAndNanos(dateValue, nanos);
            }
        case Value.TIMESTAMP:
            {
                return ValueTimestamp.fromMillisNanos(DateTimeUtils.getTimeUTCWithoutDst(readVarLong()), readVarInt());
            }
        case Value.BYTES:
            {
                int len = readVarInt();
                byte[] b = DataUtils.newBytes(len);
                read(b, 0, len);
                return ValueBytes.getNoCopy(b);
            }
        case Value.JAVA_OBJECT:
            {
                int len = readVarInt();
                byte[] b = DataUtils.newBytes(len);
                read(b, 0, len);
                return ValueJavaObject.getNoCopy(null, b);
            }
        case Value.UUID:
            return ValueUuid.get(readLong(), readLong());
        case Value.STRING:
            return ValueString.get(readString());
        case Value.STRING_IGNORECASE:
            return ValueStringIgnoreCase.get(readString());
        case Value.STRING_FIXED:
            return ValueStringFixed.get(readString());
        case FLOAT_0_1:
            return ValueFloat.get(0);
        case FLOAT_0_1 + 1:
            return ValueFloat.get(1);
        case DOUBLE_0_1:
            return ValueDouble.get(0);
        case DOUBLE_0_1 + 1:
            return ValueDouble.get(1);
        case Value.DOUBLE:
            return ValueDouble.get(Double.longBitsToDouble(Long.reverse(readVarLong())));
        case Value.FLOAT:
            return ValueFloat.get(Float.intBitsToFloat(Integer.reverse(readVarInt())));
        case Value.BLOB:
        case Value.CLOB:
            {
                int smallLen = readVarInt();
                if (smallLen >= 0) {
                    byte[] small = DataUtils.newBytes(smallLen);
                    read(small, 0, smallLen);
                    return ValueLobDb.createSmallLob(type, small);
                } else if (smallLen == -3) {
                    int tableId = readVarInt();
                    long lobId = readVarLong();
                    long precision = readVarLong();
                    ValueLobDb lob = ValueLobDb.create(type, tableId, lobId, precision);
                    return lob;
                } else {
                    int tableId = readVarInt();
                    int objectId = readVarInt();
                    long precision = 0;
                    // including file name)
                    if (smallLen == -1 || smallLen == -2) {
                        precision = readVarLong();
                    }
                    if (smallLen == -2) {
                        String filename = readString();
                        return ValueLob.openUnlinked(type, tableId, objectId, precision, filename);
                    }
                    return ValueLob.openLinked(type, tableId, objectId, precision);
                }
            }
        case Value.ARRAY:
            {
                int len = readVarInt();
                Value[] list = new Value[len];
                for (int i = 0; i < len; i++) {
                    list[i] = readValue();
                }
                return ValueArray.get(list);
            }
        case Value.RESULT_SET:
            {
                SimpleResultSet rs = new SimpleResultSet();
                rs.setAutoClose(false);
                int columns = readVarInt();
                for (int i = 0; i < columns; i++) {
                    rs.addColumn(readString(), readVarInt(), readVarInt(), readVarInt());
                }
                while (true) {
                    if (readByte() == 0) {
                        break;
                    }
                    Object[] o = new Object[columns];
                    for (int i = 0; i < columns; i++) {
                        o[i] = readValue().getObject();
                    }
                    rs.addRow(o);
                }
                return ValueResultSet.get(rs);
            }
        default:
            if (type >= INT_0_15 && type < INT_0_15 + 16) {
                return ValueInt.get(type - INT_0_15);
            } else if (type >= LONG_0_7 && type < LONG_0_7 + 8) {
                return ValueLong.get(type - LONG_0_7);
            } else if (type >= BYTES_0_31 && type < BYTES_0_31 + 32) {
                int len = type - BYTES_0_31;
                byte[] b = DataUtils.newBytes(len);
                read(b, 0, len);
                return ValueBytes.getNoCopy(b);
            } else if (type >= STRING_0_31 && type < STRING_0_31 + 32) {
                return ValueString.get(readString(type - STRING_0_31));
            }
            throw DbException.get(ErrorCode.FILE_CORRUPTED_1, "type: " + type);
    }
}
Also used : SimpleResultSet(com.wplatform.ddal.result.SimpleResultSet) BigInteger(java.math.BigInteger) BigDecimal(java.math.BigDecimal)

Example 4 with SimpleResultSet

use of com.wplatform.ddal.result.SimpleResultSet in project jdbc-shards by wplatform.

the class JdbcArray method getResultSet.

private static ResultSet getResultSet(Object[] array, long offset) {
    SimpleResultSet rs = new SimpleResultSet();
    rs.addColumn("INDEX", Types.BIGINT, 0, 0);
    // TODO array result set: there are multiple data types possible
    rs.addColumn("VALUE", Types.NULL, 0, 0);
    for (int i = 0; i < array.length; i++) {
        rs.addRow(Long.valueOf(offset + i + 1), array[i]);
    }
    return rs;
}
Also used : SimpleResultSet(com.wplatform.ddal.result.SimpleResultSet)

Example 5 with SimpleResultSet

use of com.wplatform.ddal.result.SimpleResultSet in project jdbc-shards by wplatform.

the class TableFunction method getSimpleResultSet.

private static SimpleResultSet getSimpleResultSet(ResultInterface rs, int maxrows) {
    int columnCount = rs.getVisibleColumnCount();
    SimpleResultSet simple = new SimpleResultSet();
    simple.setAutoClose(false);
    for (int i = 0; i < columnCount; i++) {
        String name = rs.getColumnName(i);
        int sqlType = DataType.convertTypeToSQLType(rs.getColumnType(i));
        int precision = MathUtils.convertLongToInt(rs.getColumnPrecision(i));
        int scale = rs.getColumnScale(i);
        simple.addColumn(name, sqlType, precision, scale);
    }
    rs.reset();
    for (int i = 0; i < maxrows && rs.next(); i++) {
        Object[] list = new Object[columnCount];
        for (int j = 0; j < columnCount; j++) {
            list[j] = rs.currentRow()[j].getObject();
        }
        simple.addRow(list);
    }
    return simple;
}
Also used : SimpleResultSet(com.wplatform.ddal.result.SimpleResultSet)

Aggregations

SimpleResultSet (com.wplatform.ddal.result.SimpleResultSet)7 BigDecimal (java.math.BigDecimal)1 BigInteger (java.math.BigInteger)1 ResultSetMetaData (java.sql.ResultSetMetaData)1 SQLException (java.sql.SQLException)1 Timestamp (java.sql.Timestamp)1