@Override public void updateAggregate(Session session) { Value now = columnResolver.getValue(column); Select select = columnResolver.getSelect(); if (select == null) { throw DbException.get(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL()); } HashMap<Expression, Object> values = select.getCurrentGroup(); if (values == null) { // this is a different level (the enclosing query) return; } Value v = (Value) values.get(this); if (v == null) { values.put(this, now); } else { if (!database.areEqual(now, v)) { throw DbException.get(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL()); } } }
private boolean sameResultAsLast(Session s, Value[] params, Value[] lastParams) { if (!cacheableChecked) { cacheableChecked = true; } if (noCache) { return false; } Database db = s.getDatabase(); for (int i = 0; i < params.length; i++) { Value a = lastParams[i], b = params[i]; if (a.getType() != b.getType() || !db.areEqual(a, b)) { return false; } } return !(!isEverything(ExpressionVisitor.DETERMINISTIC_VISITOR) || !isEverything(ExpressionVisitor.INDEPENDENT_VISITOR)); }
int index = -1; for (int i = 1, len = args.length - 1; i < len; i += 2) { if (database.areEqual(v0, getNullOrValue(session, args, values, i))) { index = i + 1; for (int i = 1, len = args.length - 1; i < len; i += 2) { Value when = args[i].getValue(session); if (database.areEqual(v0, when)) { then = args[i + 1]; break;
result = database.areEqual(v0, v1) ? ValueNull.INSTANCE : v0; break;