@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 = resolver.getDerivedColumnName(col); if (n == null) { n = col.getName(); 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 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(); }
@Override public Expression optimize(Session session) { if (columnResolver == null) { Schema schema = session.getDatabase().findSchema( tableAlias == null ? session.getCurrentSchemaName() : tableAlias); if (schema != null) { Constant constant = schema.findConstant(columnName); if (constant != null) { return constant.getValue(); } } 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 Expression optimize(Session session) { if (columnResolver == null) { Schema schema = session.getDatabase().findSchema( tableAlias == null ? session.getCurrentSchemaName() : tableAlias); if (schema != null) { Constant constant = schema.findConstant(columnName); if (constant != null) { return constant.getValue(); } } 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); }
public void mapColumns(ColumnResolver resolver, int level) throws SQLException { if (tableAlias != null && !tableAlias.equals(resolver.getTableAlias())) { return; } if (schemaName != null && !schemaName.equals(resolver.getSchemaName())) { return; } Column[] columns = resolver.getColumns(); for (int i = 0; i < columns.length; i++) { Column col = columns[i]; if (columnName.equals(col.getName())) { mapColumn(resolver, col, level); return; } } columns = resolver.getSystemColumns(); for (int i = 0; columns != null && i < columns.length; i++) { Column col = columns[i]; if (columnName.equals(col.getName())) { mapColumn(resolver, col, level); return; } } }
@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) { if (select == null) { throw DbException.get(ErrorCode.NULL_NOT_ALLOWED, getSQL()); } else { throw DbException.get(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL()); } } if (column.getEnumerators() != null && value != ValueNull.INSTANCE) { return ValueEnum.get(column.getEnumerators(), value.getInt()); } return value; }
@Override public void setEvaluatable(TableFilter tableFilter, boolean b) { if (columnResolver != null && tableFilter == columnResolver.getTableFilter()) { evaluatable = b; } }
@Override public Expression optimize(Session session) { if (columnResolver == null) { Schema schema = session.getDatabase().findSchema( tableAlias == null ? session.getCurrentSchemaName() : tableAlias); if (schema != null) { Constant constant = schema.findConstant(columnName); if (constant != null) { return constant.getValue(); } } 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 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; }
public void setEvaluatable(TableFilter tableFilter, boolean b) { if (resolver != null && tableFilter == resolver.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 void setEvaluatable(TableFilter tableFilter, boolean b) { if (columnResolver != null && tableFilter == columnResolver.getTableFilter()) { evaluatable = b; } }
public Value getValue(Session session) throws SQLException { // TODO refactor: simplify check if really part of an aggregated value / // detection of // usage of non-grouped by columns without aggregate function Select select = resolver.getSelect(); if (select != null) { HashMap values = select.getCurrentGroup(); if (values != null) { Value v = (Value) values.get(this); if (v != null) { return v; } } } Value value = resolver.getValue(column); if (value == null) { throw Message.getSQLException(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL()); } return value; }
public TableFilter getTableFilter() { return columnResolver == null ? null : columnResolver.getTableFilter(); }
@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 resolver == null ? null : resolver.getTableFilter(); }
public void updateAggregate(Session session) throws SQLException { Value now = resolver.getValue(column); Select select = resolver.getSelect(); if (select == null) { throw Message.getSQLException(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL()); } HashMap 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 Message.getSQLException(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL()); } } }