Example #1
0
  private void expandColumnList() {
    Database db = session.getDatabase();

    // the expressions may change within the loop
    for (int i = 0; i < expressions.size(); i++) {
      Expression expr = expressions.get(i);
      if (!expr.isWildcard()) {
        continue;
      }
      String schemaName = expr.getSchemaName();
      String tableAlias = expr.getTableAlias();
      if (tableAlias == null) {
        int temp = i;
        expressions.remove(i);
        for (TableFilter filter : filters) {
          Wildcard c2 =
              new Wildcard(filter.getTable().getSchema().getName(), filter.getTableAlias());
          expressions.add(i++, c2);
        }
        i = temp - 1;
      } else {
        TableFilter filter = null;
        for (TableFilter f : filters) {
          if (db.equalsIdentifiers(tableAlias, f.getTableAlias())) {
            if (schemaName == null || db.equalsIdentifiers(schemaName, f.getSchemaName())) {
              filter = f;
              break;
            }
          }
        }
        if (filter == null) {
          throw DbException.get(ErrorCode.TABLE_OR_VIEW_NOT_FOUND_1, tableAlias);
        }
        Table t = filter.getTable();
        String alias = filter.getTableAlias();
        expressions.remove(i);
        Column[] columns = t.getColumns();
        for (Column c : columns) {
          if (filter.isNaturalJoinColumn(c)) {
            continue;
          }
          ExpressionColumn ec =
              new ExpressionColumn(session.getDatabase(), null, alias, c.getName());
          expressions.add(i++, ec);
        }
        i--;
      }
    }
  }