Search in sources :

Example 96 with Value

use of org.gridgain.internal.h2.value.Value in project h2database by h2database.

the class TriggerObject method fire.

/**
 * Call the trigger class if required. This method does nothing if the
 * trigger is not defined for the given action. This method is called before
 * or after any rows have been processed, once for each statement.
 *
 * @param session the session
 * @param type the trigger type
 * @param beforeAction if this method is called before applying the changes
 */
public void fire(Session session, int type, boolean beforeAction) {
    if (rowBased || before != beforeAction || (typeMask & type) == 0) {
        return;
    }
    load();
    Connection c2 = session.createConnection(false);
    boolean old = false;
    if (type != Trigger.SELECT) {
        old = session.setCommitOrRollbackDisabled(true);
    }
    Value identity = session.getLastScopeIdentity();
    try {
        triggerCallback.fire(c2, null, null);
    } catch (Throwable e) {
        throw DbException.get(ErrorCode.ERROR_EXECUTING_TRIGGER_3, e, getName(), triggerClassName != null ? triggerClassName : "..source..", e.toString());
    } finally {
        if (session.getLastTriggerIdentity() != null) {
            session.setLastScopeIdentity(session.getLastTriggerIdentity());
            session.setLastTriggerIdentity(null);
        } else {
            session.setLastScopeIdentity(identity);
        }
        if (type != Trigger.SELECT) {
            session.setCommitOrRollbackDisabled(old);
        }
    }
}
Also used : Connection(java.sql.Connection) Value(org.h2.value.Value)

Example 97 with Value

use of org.gridgain.internal.h2.value.Value in project h2database by h2database.

the class TestValueHashMap method testRandomized.

private void testRandomized() {
    ValueHashMap<Value> map = ValueHashMap.newInstance();
    HashMap<Value, Value> hash = new HashMap<>();
    Random random = new Random(1);
    Comparator<Value> vc = new Comparator<Value>() {

        @Override
        public int compare(Value v1, Value v2) {
            return v1.compareTo(v2, compareMode);
        }
    };
    for (int i = 0; i < 10000; i++) {
        int op = random.nextInt(10);
        Value key = ValueInt.get(random.nextInt(100));
        Value value = ValueInt.get(random.nextInt(100));
        switch(op) {
            case 0:
                map.put(key, value);
                hash.put(key, value);
                break;
            case 1:
                map.remove(key);
                hash.remove(key);
                break;
            case 2:
                Value v1 = map.get(key);
                Value v2 = hash.get(key);
                assertTrue(v1 == null ? v2 == null : v1.equals(v2));
                break;
            case 3:
                {
                    ArrayList<Value> a1 = map.keys();
                    ArrayList<Value> a2 = new ArrayList<>(hash.keySet());
                    assertEquals(a1.size(), a2.size());
                    Collections.sort(a1, vc);
                    Collections.sort(a2, vc);
                    for (int j = 0; j < a1.size(); j++) {
                        assertTrue(a1.get(j).equals(a2.get(j)));
                    }
                    break;
                }
            case 4:
                ArrayList<Value> a1 = map.values();
                ArrayList<Value> a2 = new ArrayList<>(hash.values());
                assertEquals(a1.size(), a2.size());
                Collections.sort(a1, vc);
                Collections.sort(a2, vc);
                for (int j = 0; j < a1.size(); j++) {
                    assertTrue(a1.get(j).equals(a2.get(j)));
                }
                break;
            default:
        }
    }
}
Also used : Random(java.util.Random) HashMap(java.util.HashMap) ValueHashMap(org.h2.util.ValueHashMap) Value(org.h2.value.Value) ArrayList(java.util.ArrayList) Comparator(java.util.Comparator)

Example 98 with Value

use of org.gridgain.internal.h2.value.Value in project h2database by h2database.

the class TestValue method testResultSetOperation.

private void testResultSetOperation(Object obj) throws SQLException {
    SimpleResultSet rs = new SimpleResultSet();
    rs.setAutoClose(false);
    int valueType = DataType.getTypeFromClass(obj.getClass());
    int sqlType = DataType.convertTypeToSQLType(valueType);
    rs.addColumn("X", sqlType, 10, 0);
    rs.addRow(new Object[] { obj });
    rs.next();
    Value v = DataType.readValue(null, rs, 1, valueType);
    Value v2 = DataType.convertToValue(null, obj, valueType);
    if (v.getType() == Value.RESULT_SET) {
        assertEquals(v.toString(), v2.toString());
    } else {
        assertTrue(v.equals(v2));
    }
}
Also used : SimpleResultSet(org.h2.tools.SimpleResultSet) Value(org.h2.value.Value)

Example 99 with Value

use of org.gridgain.internal.h2.value.Value in project h2database by h2database.

the class TestDataPage method testValues.

private void testValues() {
    testValue(ValueNull.INSTANCE);
    testValue(ValueBoolean.FALSE);
    testValue(ValueBoolean.TRUE);
    for (int i = 0; i < 256; i++) {
        testValue(ValueByte.get((byte) i));
    }
    for (int i = 0; i < 256 * 256; i += 10) {
        testValue(ValueShort.get((short) i));
    }
    for (int i = 0; i < 256 * 256; i += 10) {
        testValue(ValueInt.get(i));
        testValue(ValueInt.get(-i));
        testValue(ValueLong.get(i));
        testValue(ValueLong.get(-i));
    }
    testValue(ValueInt.get(Integer.MAX_VALUE));
    testValue(ValueInt.get(Integer.MIN_VALUE));
    for (long i = 0; i < Integer.MAX_VALUE; i += 10 + i / 4) {
        testValue(ValueInt.get((int) i));
        testValue(ValueInt.get((int) -i));
    }
    testValue(ValueLong.get(Long.MAX_VALUE));
    testValue(ValueLong.get(Long.MIN_VALUE));
    for (long i = 0; i >= 0; i += 10 + i / 4) {
        testValue(ValueLong.get(i));
        testValue(ValueLong.get(-i));
    }
    testValue(ValueDecimal.get(BigDecimal.ZERO));
    testValue(ValueDecimal.get(BigDecimal.ONE));
    testValue(ValueDecimal.get(BigDecimal.TEN));
    testValue(ValueDecimal.get(BigDecimal.ONE.negate()));
    testValue(ValueDecimal.get(BigDecimal.TEN.negate()));
    for (long i = 0; i >= 0; i += 10 + i / 4) {
        testValue(ValueDecimal.get(new BigDecimal(i)));
        testValue(ValueDecimal.get(new BigDecimal(-i)));
        for (int j = 0; j < 200; j += 50) {
            testValue(ValueDecimal.get(new BigDecimal(i).setScale(j)));
            testValue(ValueDecimal.get(new BigDecimal(i * i).setScale(j)));
        }
        testValue(ValueDecimal.get(new BigDecimal(i * i)));
    }
    testValue(ValueDate.get(new Date(System.currentTimeMillis())));
    testValue(ValueDate.get(new Date(0)));
    testValue(ValueTime.get(new Time(System.currentTimeMillis())));
    testValue(ValueTime.get(new Time(0)));
    testValue(ValueTimestamp.fromMillis(System.currentTimeMillis()));
    testValue(ValueTimestamp.fromMillis(0));
    testValue(ValueTimestampTimeZone.parse("2000-01-01 10:00:00"));
    testValue(ValueJavaObject.getNoCopy(null, new byte[0], this));
    testValue(ValueJavaObject.getNoCopy(null, new byte[100], this));
    for (int i = 0; i < 300; i++) {
        testValue(ValueBytes.getNoCopy(new byte[i]));
    }
    for (int i = 0; i < 65000; i += 10 + i) {
        testValue(ValueBytes.getNoCopy(new byte[i]));
    }
    testValue(ValueUuid.getNewRandom());
    for (int i = 0; i < 100; i++) {
        testValue(ValueString.get(new String(new char[i])));
    }
    for (int i = 0; i < 65000; i += 10 + i) {
        testValue(ValueString.get(new String(new char[i])));
        testValue(ValueStringFixed.get(new String(new char[i])));
        testValue(ValueStringIgnoreCase.get(new String(new char[i])));
    }
    testValue(ValueFloat.get(0f));
    testValue(ValueFloat.get(1f));
    testValue(ValueFloat.get(-1f));
    testValue(ValueDouble.get(0));
    testValue(ValueDouble.get(1));
    testValue(ValueDouble.get(-1));
    for (int i = 0; i < 65000; i += 10 + i) {
        for (double j = 0.1; j < 65000; j += 10 + j) {
            testValue(ValueFloat.get((float) (i / j)));
            testValue(ValueDouble.get(i / j));
            testValue(ValueFloat.get((float) -(i / j)));
            testValue(ValueDouble.get(-(i / j)));
        }
    }
    testValue(ValueArray.get(new Value[0]));
    testValue(ValueArray.get(new Value[] { ValueBoolean.TRUE, ValueInt.get(10) }));
    SimpleResultSet rs = new SimpleResultSet();
    rs.setAutoClose(false);
    rs.addColumn("ID", Types.INTEGER, 0, 0);
    rs.addColumn("NAME", Types.VARCHAR, 255, 0);
    rs.addRow(1, "Hello");
    rs.addRow(2, "World");
    rs.addRow(3, "Peace");
    testValue(ValueResultSet.get(rs));
}
Also used : SimpleResultSet(org.h2.tools.SimpleResultSet) Value(org.h2.value.Value) Time(java.sql.Time) ValueTime(org.h2.value.ValueTime) ValueString(org.h2.value.ValueString) BigDecimal(java.math.BigDecimal) ValueDate(org.h2.value.ValueDate) Date(java.sql.Date)

Example 100 with Value

use of org.gridgain.internal.h2.value.Value in project h2database by h2database.

the class TestDataPage method testValue.

private void testValue(Value v) {
    Data data = Data.create(null, 1024);
    data.checkCapacity((int) v.getPrecision());
    data.writeValue(v);
    data.writeInt(123);
    data.reset();
    Value v2 = data.readValue();
    assertEquals(v.getType(), v2.getType());
    assertEquals(0, v.compareTo(v2, compareMode));
    assertEquals(123, data.readInt());
}
Also used : Value(org.h2.value.Value) Data(org.h2.store.Data)

Aggregations

Value (org.h2.value.Value)751 Value (org.gridgain.internal.h2.value.Value)326 SQLException (java.sql.SQLException)186 DbException (org.h2.message.DbException)126 ValueBigint (org.h2.value.ValueBigint)100 DbException (org.gridgain.internal.h2.message.DbException)98 PreparedStatement (java.sql.PreparedStatement)78 ResultSet (java.sql.ResultSet)78 Column (org.h2.table.Column)65 Statement (java.sql.Statement)56 Expression (org.h2.expression.Expression)52 ValueSmallint (org.h2.value.ValueSmallint)52 Column (org.gridgain.internal.h2.table.Column)50 ValueString (org.gridgain.internal.h2.value.ValueString)49 Row (org.h2.result.Row)49 SearchRow (org.h2.result.SearchRow)49 ArrayList (java.util.ArrayList)44 JdbcStatement (org.gridgain.internal.h2.jdbc.JdbcStatement)42 Database (org.h2.engine.Database)42 BigDecimal (java.math.BigDecimal)41