Repository: metamodel Updated Branches: refs/heads/master 796c00aa6 -> f87201ce9
METAMODEL-100: Fixed Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/f87201ce Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/f87201ce Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/f87201ce Branch: refs/heads/master Commit: f87201ce9f1114bb0b047e02cf6f13dc30b957b4 Parents: 796c00a Author: Kasper Sørensen <[email protected]> Authored: Thu Dec 4 19:49:52 2014 +0100 Committer: Kasper Sørensen <[email protected]> Committed: Thu Dec 4 19:49:52 2014 +0100 ---------------------------------------------------------------------- CHANGES.md | 4 ++ .../apache/metamodel/schema/AbstractColumn.java | 4 ++ .../QueryPostprocessDataContextTest.java | 44 +++++++++++++++++++- 3 files changed, 51 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/f87201ce/CHANGES.md ---------------------------------------------------------------------- diff --git a/CHANGES.md b/CHANGES.md index c19eeb6..feceb0b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,7 @@ +### Apache MetaModel 4.3.1 + + * [METAMODEL-100] - Fixed bug when having multiple columns of same name. Added column no. comparison when calling Column.equals(...). + ### Apache MetaModel 4.3.0-incubating * [METAMODEL-77] - New module 'elasticsearch' for connecting and modeling ElasticSearch indexes through MetaModel. http://git-wip-us.apache.org/repos/asf/metamodel/blob/f87201ce/core/src/main/java/org/apache/metamodel/schema/AbstractColumn.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/schema/AbstractColumn.java b/core/src/main/java/org/apache/metamodel/schema/AbstractColumn.java index 8f276f5..823566f 100644 --- a/core/src/main/java/org/apache/metamodel/schema/AbstractColumn.java +++ b/core/src/main/java/org/apache/metamodel/schema/AbstractColumn.java @@ -77,6 +77,10 @@ public abstract class AbstractColumn implements Column { } if (obj instanceof Column) { Column other = (Column) obj; + if (getColumnNumber() != other.getColumnNumber()) { + return false; + } + if (!getName().equals(other.getName())) { return false; } http://git-wip-us.apache.org/repos/asf/metamodel/blob/f87201ce/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java b/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java index 3b2be2f..3fdb711 100644 --- a/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java +++ b/core/src/test/java/org/apache/metamodel/QueryPostprocessDataContextTest.java @@ -26,8 +26,10 @@ import java.util.List; import javax.swing.table.TableModel; import org.apache.metamodel.data.DataSet; +import org.apache.metamodel.data.DataSetHeader; import org.apache.metamodel.data.DataSetTableModel; import org.apache.metamodel.data.DefaultRow; +import org.apache.metamodel.data.InMemoryDataSet; import org.apache.metamodel.data.Row; import org.apache.metamodel.data.SimpleDataSetHeader; import org.apache.metamodel.query.CompiledQuery; @@ -38,9 +40,9 @@ import org.apache.metamodel.query.GroupByItem; import org.apache.metamodel.query.JoinType; import org.apache.metamodel.query.OperatorType; import org.apache.metamodel.query.OrderByItem; -import org.apache.metamodel.query.QueryParameter; import org.apache.metamodel.query.OrderByItem.Direction; import org.apache.metamodel.query.Query; +import org.apache.metamodel.query.QueryParameter; import org.apache.metamodel.query.SelectItem; import org.apache.metamodel.schema.Column; import org.apache.metamodel.schema.MutableColumn; @@ -56,6 +58,46 @@ public class QueryPostprocessDataContextTest extends MetaModelTestCase { private final Table table1 = schema.getTableByName(TABLE_CONTRIBUTOR); private final Table table2 = schema.getTableByName(TABLE_ROLE); + // see issue METAMODEL-100 + public void testSelectFromColumnsWithSameName() throws Exception { + final MutableTable table = new MutableTable("table"); + table.addColumn(new MutableColumn("foo", table).setColumnNumber(0)); + table.addColumn(new MutableColumn("foo", table).setColumnNumber(1)); + table.addColumn(new MutableColumn("bar", table).setColumnNumber(2)); + + final QueryPostprocessDataContext dc = new QueryPostprocessDataContext() { + @Override + protected DataSet materializeMainSchemaTable(Table table, Column[] columns, int maxRows) { + Object[] values = new Object[columns.length]; + for (int i = 0; i < columns.length; i++) { + values[i] = columns[i].getColumnNumber(); + } + DataSetHeader header = new SimpleDataSetHeader(columns); + DefaultRow row = new DefaultRow(header, values); + return new InMemoryDataSet(row); + } + + @Override + protected String getMainSchemaName() throws MetaModelException { + return "sch"; + } + + @Override + protected Schema getMainSchema() throws MetaModelException { + MutableSchema schema = new MutableSchema(getMainSchemaName()); + schema.addTable(table); + table.setSchema(schema); + return schema; + } + }; + + DataSet ds = dc.query().from(table).selectAll().execute(); + assertTrue(ds.next()); + assertEquals("Row[values=[0, 1, 2]]", ds.getRow().toString()); + assertFalse(ds.next()); + ds.close(); + } + public void testAggregateQueryNoWhereClause() throws Exception { MockDataContext dc = new MockDataContext("sch", "tab", "1"); Table table = dc.getDefaultSchema().getTables()[0];
