Skip to content

Commit e2f46f4

Browse files
authored
JAVA-2941: Cannot add a single static column with the alter table API (#1549)
1 parent feabdf7 commit e2f46f4

File tree

3 files changed

+34
-27
lines changed

3 files changed

+34
-27
lines changed

changelog/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### 4.11.2 (in progress)
66

7+
- [bug] JAVA-2941: Cannot add a single static column with the alter table API
78
- [bug] JAVA-2943: Prevent session leak with wrong keyspace name
89
- [bug] JAVA-2938: OverloadedException message is misleading
910

query-builder/src/main/java/com/datastax/oss/driver/internal/querybuilder/schema/DefaultAlterTable.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ public class DefaultAlterTable
4646
private final CqlIdentifier keyspace;
4747
private final CqlIdentifier tableName;
4848

49-
private final ImmutableMap<CqlIdentifier, DataType> columnsToAddInOrder;
50-
private final ImmutableSet<CqlIdentifier> columnsToAdd;
49+
private final ImmutableMap<CqlIdentifier, DataType> allColumnsToAddInOrder;
50+
private final ImmutableSet<CqlIdentifier> columnsToAddRegular;
5151
private final ImmutableSet<CqlIdentifier> columnsToAddStatic;
5252
private final ImmutableSet<CqlIdentifier> columnsToDrop;
5353
private final ImmutableMap<CqlIdentifier, CqlIdentifier> columnsToRename;
@@ -79,8 +79,8 @@ public DefaultAlterTable(
7979
@Nullable CqlIdentifier keyspace,
8080
@NonNull CqlIdentifier tableName,
8181
boolean dropCompactStorage,
82-
@NonNull ImmutableMap<CqlIdentifier, DataType> columnsToAddInOrder,
83-
@NonNull ImmutableSet<CqlIdentifier> columnsToAdd,
82+
@NonNull ImmutableMap<CqlIdentifier, DataType> allColumnsToAddInOrder,
83+
@NonNull ImmutableSet<CqlIdentifier> columnsToAddRegular,
8484
@NonNull ImmutableSet<CqlIdentifier> columnsToAddStatic,
8585
@NonNull ImmutableSet<CqlIdentifier> columnsToDrop,
8686
@NonNull ImmutableMap<CqlIdentifier, CqlIdentifier> columnsToRename,
@@ -90,8 +90,8 @@ public DefaultAlterTable(
9090
this.keyspace = keyspace;
9191
this.tableName = tableName;
9292
this.dropCompactStorage = dropCompactStorage;
93-
this.columnsToAddInOrder = columnsToAddInOrder;
94-
this.columnsToAdd = columnsToAdd;
93+
this.allColumnsToAddInOrder = allColumnsToAddInOrder;
94+
this.columnsToAddRegular = columnsToAddRegular;
9595
this.columnsToAddStatic = columnsToAddStatic;
9696
this.columnsToDrop = columnsToDrop;
9797
this.columnsToRename = columnsToRename;
@@ -108,8 +108,8 @@ public AlterTableAddColumnEnd addColumn(
108108
keyspace,
109109
tableName,
110110
dropCompactStorage,
111-
ImmutableCollections.append(columnsToAddInOrder, columnName, dataType),
112-
appendSet(columnsToAdd, columnName),
111+
ImmutableCollections.append(allColumnsToAddInOrder, columnName, dataType),
112+
appendSet(columnsToAddRegular, columnName),
113113
columnsToAddStatic,
114114
columnsToDrop,
115115
columnsToRename,
@@ -126,8 +126,8 @@ public AlterTableAddColumnEnd addStaticColumn(
126126
keyspace,
127127
tableName,
128128
dropCompactStorage,
129-
ImmutableCollections.append(columnsToAddInOrder, columnName, dataType),
130-
columnsToAdd,
129+
ImmutableCollections.append(allColumnsToAddInOrder, columnName, dataType),
130+
columnsToAddRegular,
131131
appendSet(columnsToAddStatic, columnName),
132132
columnsToDrop,
133133
columnsToRename,
@@ -143,8 +143,8 @@ public BuildableQuery dropCompactStorage() {
143143
keyspace,
144144
tableName,
145145
true,
146-
columnsToAddInOrder,
147-
columnsToAdd,
146+
allColumnsToAddInOrder,
147+
columnsToAddRegular,
148148
columnsToAddStatic,
149149
columnsToDrop,
150150
columnsToRename,
@@ -166,8 +166,8 @@ public AlterTableDropColumnEnd dropColumns(@NonNull CqlIdentifier... columnNames
166166
keyspace,
167167
tableName,
168168
dropCompactStorage,
169-
columnsToAddInOrder,
170-
columnsToAdd,
169+
allColumnsToAddInOrder,
170+
columnsToAddRegular,
171171
columnsToAddStatic,
172172
builder.build(),
173173
columnsToRename,
@@ -184,8 +184,8 @@ public AlterTableRenameColumnEnd renameColumn(
184184
keyspace,
185185
tableName,
186186
dropCompactStorage,
187-
columnsToAddInOrder,
188-
columnsToAdd,
187+
allColumnsToAddInOrder,
188+
columnsToAddRegular,
189189
columnsToAddStatic,
190190
columnsToDrop,
191191
ImmutableCollections.append(columnsToRename, from, to),
@@ -201,8 +201,8 @@ public BuildableQuery alterColumn(@NonNull CqlIdentifier columnName, @NonNull Da
201201
keyspace,
202202
tableName,
203203
dropCompactStorage,
204-
columnsToAddInOrder,
205-
columnsToAdd,
204+
allColumnsToAddInOrder,
205+
columnsToAddRegular,
206206
columnsToAddStatic,
207207
columnsToDrop,
208208
columnsToRename,
@@ -218,8 +218,8 @@ public AlterTableWithOptionsEnd withOption(@NonNull String name, @NonNull Object
218218
keyspace,
219219
tableName,
220220
dropCompactStorage,
221-
columnsToAddInOrder,
222-
columnsToAdd,
221+
allColumnsToAddInOrder,
222+
columnsToAddRegular,
223223
columnsToAddStatic,
224224
columnsToDrop,
225225
columnsToRename,
@@ -242,13 +242,13 @@ public String asCql() {
242242
.append(" TYPE ")
243243
.append(columnToAlterType.asCql(true, true))
244244
.toString();
245-
} else if (!columnsToAdd.isEmpty()) {
245+
} else if (!allColumnsToAddInOrder.isEmpty()) {
246246
builder.append(" ADD ");
247-
if (columnsToAdd.size() > 1) {
247+
if (allColumnsToAddInOrder.size() > 1) {
248248
builder.append('(');
249249
}
250250
boolean first = true;
251-
for (Map.Entry<CqlIdentifier, DataType> column : columnsToAddInOrder.entrySet()) {
251+
for (Map.Entry<CqlIdentifier, DataType> column : allColumnsToAddInOrder.entrySet()) {
252252
if (first) {
253253
first = false;
254254
} else {
@@ -263,7 +263,7 @@ public String asCql() {
263263
builder.append(" STATIC");
264264
}
265265
}
266-
if (columnsToAdd.size() > 1) {
266+
if (allColumnsToAddInOrder.size() > 1) {
267267
builder.append(')');
268268
}
269269
return builder.toString();
@@ -324,13 +324,13 @@ public CqlIdentifier getTable() {
324324
}
325325

326326
@NonNull
327-
public ImmutableMap<CqlIdentifier, DataType> getColumnsToAddInOrder() {
328-
return columnsToAddInOrder;
327+
public ImmutableMap<CqlIdentifier, DataType> getAllColumnsToAddInOrder() {
328+
return allColumnsToAddInOrder;
329329
}
330330

331331
@NonNull
332332
public ImmutableSet<CqlIdentifier> getColumnsToAddRegular() {
333-
return columnsToAdd;
333+
return columnsToAddRegular;
334334
}
335335

336336
@NonNull

query-builder/src/test/java/com/datastax/oss/driver/api/querybuilder/schema/AlterTableTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ public void should_generate_alter_table_with_add_single_column() {
4040
.hasCql("ALTER TABLE foo.bar ADD x text");
4141
}
4242

43+
@Test
44+
public void should_generate_alter_table_with_add_single_column_static() {
45+
assertThat(alterTable("foo", "bar").addStaticColumn("x", DataTypes.TEXT))
46+
.hasCql("ALTER TABLE foo.bar ADD x text STATIC");
47+
}
48+
4349
@Test
4450
public void should_generate_alter_table_with_add_three_columns() {
4551
assertThat(

0 commit comments

Comments
 (0)