@Override public void setEvaluatable(TableFilter tableFilter, boolean b) { if (columnResolver != null && tableFilter == columnResolver.getTableFilter()) { evaluatable = b; } }
@Override public void mapColumns(ColumnResolver resolver, int level) { if (tableAlias != null && !database.equalsIdentifiers( tableAlias, resolver.getTableAlias())) { return; schemaName, resolver.getSchemaName())) { return; for (Column col : resolver.getColumns()) { String n = col.getName(); if (database.equalsIdentifiers(columnName, n)) { Column col = resolver.getRowIdColumn(); if (col != null) { mapColumn(resolver, col, level); Column[] columns = resolver.getSystemColumns(); for (int i = 0; columns != null && i < columns.length; i++) { Column col = columns[i];
@Override public Value getValue(Session session) { Select select = columnResolver.getSelect(); if (select != null) { HashMap<Expression, Object> values = select.getCurrentGroup(); if (values != null) { Value v = (Value) values.get(this); if (v != null) { return v; } } } Value value = columnResolver.getValue(column); if (value == null) { // columnResolver.getValue(column); throw DbException.get(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL()); } return value; }
@Override public Expression optimize(Session session) { if (columnResolver == null) { String name = columnName; if (tableAlias != null) { name = tableAlias + "." + name; if (schemaName != null) { name = schemaName + "." + name; } } throw DbException.get(ErrorCode.COLUMN_NOT_FOUND_1, name); } return columnResolver.optimize(this, column); }
@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()); } } }
public TableFilter getTableFilter() { return columnResolver == null ? null : columnResolver.getTableFilter(); }