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;");
+ }
+
}