diff --git a/src/main/java/edu/caltech/nanodb/queryast/SelectClause.java b/src/main/java/edu/caltech/nanodb/queryast/SelectClause.java index 25be891b8907e825e2f03d9758b28cdaf1b66ea9..20b774cd0ab1dc3be610e0158f2e8755bf98cb31 100755 --- a/src/main/java/edu/caltech/nanodb/queryast/SelectClause.java +++ b/src/main/java/edu/caltech/nanodb/queryast/SelectClause.java @@ -368,8 +368,9 @@ public class SelectClause { // known and non-ambiguous names from the FROM clause. // SELECT values: SELECT a, b + c, tbl.* ... - resultSchema = new Schema(); + List<ColumnInfo> resultColumnInfos = new ArrayList<>(); Set<String> fromTables = fromSchema.getTableNames(); + for (SelectValue selVal : selectValues) { if (selVal.isWildcard()) { // Make sure that if a table name is specified, that the table @@ -400,9 +401,12 @@ public class SelectClause { } // Update the result-schema with this select-value's column-info(s). - resultSchema = new Schema(selVal.getColumnInfos(fromSchema, resultSchema)); + resultColumnInfos.addAll(selVal.getColumnInfos(fromSchema, resultSchema)); } + // Construct a resultSchema which is the "summation" of all SelectValues' columnInfos. + resultSchema = new Schema(resultColumnInfos); + logger.debug("Query schema: " + resultSchema); logger.debug("FROM-clause schema: " + fromSchema);