JAVA-1312: QueryBuilder modifies selected columns when manually selected (#759)

diff --git a/changelog/README.md b/changelog/README.md
index 417675a..911e9f8 100644
--- a/changelog/README.md
+++ b/changelog/README.md
@@ -1,5 +1,10 @@
 ## Changelog
 
+### 3.0.5 (in progress)
+
+- [bug] JAVA-1312: QueryBuilder modifies selected columns when manually selected.
+
+
 ### 3.0.4
 
 - [improvement] JAVA-1246: Driver swallows the real exception in a few cases
diff --git a/driver-core/src/main/java/com/datastax/driver/core/querybuilder/Select.java b/driver-core/src/main/java/com/datastax/driver/core/querybuilder/Select.java
index 5dabfd7..c826aa1 100644
--- a/driver-core/src/main/java/com/datastax/driver/core/querybuilder/Select.java
+++ b/driver-core/src/main/java/com/datastax/driver/core/querybuilder/Select.java
@@ -513,6 +513,7 @@
         public Select from(String keyspace, String table) {
             if (previousSelection != null)
                 addName(previousSelection);
+            previousSelection = null;
             return super.from(keyspace, table);
         }
 
@@ -520,6 +521,7 @@
         public Select from(TableMetadata table) {
             if (previousSelection != null)
                 addName(previousSelection);
+            previousSelection = null;
             return super.from(table);
         }
     }
diff --git a/driver-core/src/test/java/com/datastax/driver/core/querybuilder/QueryBuilderTest.java b/driver-core/src/test/java/com/datastax/driver/core/querybuilder/QueryBuilderTest.java
index 30603a2..29e777f 100644
--- a/driver-core/src/test/java/com/datastax/driver/core/querybuilder/QueryBuilderTest.java
+++ b/driver-core/src/test/java/com/datastax/driver/core/querybuilder/QueryBuilderTest.java
@@ -1053,4 +1053,17 @@
                 .isEqualTo("INSERT INTO users (id) VALUES (42);");
     }
 
+    /**
+     * @jira_ticket JAVA-1312
+     */
+    @Test(groups = "unit")
+    public void should_not_append_last_column_twice() throws Exception {
+        Select.SelectionOrAlias select = select().column("a").column("b");
+        Select fromUsers1 = select.from("users");
+        Select fromUsers2 = select.from("users");
+        assertThat(fromUsers1.getQueryString())
+                .isEqualTo(fromUsers2.getQueryString())
+                .isEqualTo("SELECT a,b FROM users;");
+    }
+
 }