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];

Reply via email to