public Boolean getBoolean() { return ((ValueBoolean) convertTo(Value.BOOLEAN)).getBoolean(); }
@Override public String getSQL() { return getString(); }
@Override public Value getValue(ServerSession session) { Value x = left.getValue(session); if (x == ValueNull.INSTANCE) { return x; } boolean result = valueSet.contains(x); if (!result) { boolean setHasNull = valueSet.contains(ValueNull.INSTANCE); if (setHasNull) { return ValueNull.INSTANCE; } } return ValueBoolean.get(result); }
@Override public void createIndexConditions(ServerSession session, TableFilter filter) { if (value.getType() == Value.BOOLEAN) { boolean v = ((ValueBoolean) value).getBoolean().booleanValue(); if (!v) { filter.addIndexCondition(IndexCondition.get(Comparison.FALSE, null, this)); } } }
@Override public Expression getNotIfPossible(ServerSession session) { return new Comparison(session, Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(false))); }
@Override public Expression getNotIfPossible(ServerSession session) { return new Comparison(session, Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(false))); }
@Override public Expression getNotIfPossible(ServerSession session) { return new Comparison(session, Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(false))); }
@Override public Value getValue(ServerSession session) { query.setSession(session); Result result = query.query(1);// session.createSubqueryResult(query, 1); session.addTemporaryResult(result); boolean r = result.getRowCount() > 0; return ValueBoolean.get(r); }
private Value getValueSlow(SubqueryResult rows, Value l) { // this only returns the correct result if the result has at least one // row, and if l is not null boolean hasNull = false; boolean result = all; while (rows.next()) { boolean value; Value r = rows.currentRow()[0]; if (r == ValueNull.INSTANCE) { value = false; hasNull = true; } else { value = Comparison.compareNotNull(database, l, r, compareType); } if (!value && all) { result = false; break; } else if (value && !all) { result = true; break; } } if (!result && hasNull) { return ValueNull.INSTANCE; } return ValueBoolean.get(result); }
@Override public void createIndexConditions(ServerSession session, TableFilter filter) { TableFilter tf = getTableFilter(); if (filter == tf && column.getType() == Value.BOOLEAN) { IndexCondition cond = IndexCondition.get(Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(true))); filter.addIndexCondition(cond); } }
/** * Sets the value of a parameter. * * @param parameterIndex the parameter index (1, 2, ...) * @param x the value * @throws SQLException if this object is closed */ @Override public void setBoolean(int parameterIndex, boolean x) throws SQLException { try { if (isDebugEnabled()) { debugCode("setBoolean(" + parameterIndex + ", " + x + ");"); } setParameter(parameterIndex, ValueBoolean.get(x)); } catch (Exception e) { throw logAndConvert(e); } }
/** * Updates a column in the current or insert row. * * @param columnIndex (1,2,...) * @param x the value * @throws SQLException if the result set is closed or not updatable */ @Override public void updateBoolean(int columnIndex, boolean x) throws SQLException { try { if (isDebugEnabled()) { debugCode("updateBoolean(" + columnIndex + ", " + x + ");"); } update(columnIndex, ValueBoolean.get(x)); } catch (Exception e) { throw logAndConvert(e); } }
@Override public Value getValue(ServerSession session) { query.setSession(session); SubqueryResult rows = new SubqueryResult(query, 0); // query.query(0); session.addTemporaryResult(rows); Value l = left.getValue(session); if (rows.getRowCount() == 0) { return ValueBoolean.get(all); } else if (l == ValueNull.INSTANCE) { return l; } if (!session.getDatabase().getSettings().optimizeInSelect) { return getValueSlow(rows, l); } if (all || (compareType != Comparison.EQUAL && compareType != Comparison.EQUAL_NULL_SAFE)) { return getValueSlow(rows, l); } int dataType = rows.getColumnType(0); if (dataType == Value.NULL) { return ValueBoolean.get(false); } l = l.convertTo(dataType); if (rows.containsDistinct(new Value[] { l })) { return ValueBoolean.get(true); } if (rows.containsDistinct(new Value[] { ValueNull.INSTANCE })) { return ValueNull.INSTANCE; } return ValueBoolean.get(false); }
result = compareAt(value, 0, 0, value.length(), patternChars, patternTypes); return ValueBoolean.get(result);
/** * Updates a column in the current or insert row. * * @param columnLabel the column label * @param x the value * @throws SQLException if result set is closed or not updatable */ @Override public void updateBoolean(String columnLabel, boolean x) throws SQLException { try { if (isDebugEnabled()) { debugCode("updateBoolean(" + quote(columnLabel) + ", " + x + ");"); } update(columnLabel, ValueBoolean.get(x)); } catch (Exception e) { throw logAndConvert(e); } }
@Override public Value getValue(ServerSession session) { Value l = left.getValue(session); if (l == ValueNull.INSTANCE) { return l; } boolean result = false; boolean hasNull = false; for (Expression e : valueList) { Value r = e.getValue(session); if (r == ValueNull.INSTANCE) { hasNull = true; } else { r = r.convertTo(l.getType()); result = Comparison.compareNotNull(database, l, r, Comparison.EQUAL); if (result) { break; } } } if (!result && hasNull) { return ValueNull.INSTANCE; } return ValueBoolean.get(result); }
v = rs.wasNull() ? (Value) ValueNull.INSTANCE : ValueBoolean.get(value); break;