diff --git a/core/src/main/java/com/scalar/db/storage/cassandra/CassandraAdmin.java b/core/src/main/java/com/scalar/db/storage/cassandra/CassandraAdmin.java index 55e75bed63..a8a205c79c 100644 --- a/core/src/main/java/com/scalar/db/storage/cassandra/CassandraAdmin.java +++ b/core/src/main/java/com/scalar/db/storage/cassandra/CassandraAdmin.java @@ -211,7 +211,9 @@ private TableMetadata createTableMetadata(com.datastax.driver.core.TableMetadata ClusteringOrder clusteringOrder = metadata.getClusteringOrder().get(i); builder.addClusteringKey(clusteringColumnName, convertOrder(clusteringOrder)); } - metadata.getIndexes().forEach(i -> builder.addSecondaryIndex(i.getTarget())); + metadata + .getIndexes() + .forEach(i -> builder.addSecondaryIndex(unquoteIfNecessary(i.getTarget()))); return builder.build(); } @@ -302,8 +304,8 @@ public void addNewColumnToTable( throws ExecutionException { try { String alterTableQuery = - SchemaBuilder.alterTable(namespace, table) - .addColumn(columnName) + SchemaBuilder.alterTable(quoteIfNecessary(namespace), quoteIfNecessary(table)) + .addColumn(quoteIfNecessary(columnName)) .type(toCassandraDataType(columnType)) .getQueryString(); @@ -496,4 +498,14 @@ public String toString() { return strategyName; } } + + private String unquoteIfNecessary(String identifier) { + if (identifier == null) { + return null; + } + if (identifier.length() >= 2 && identifier.startsWith("\"") && identifier.endsWith("\"")) { + return identifier.substring(1, identifier.length() - 1).replace("\"\"", "\""); + } + return identifier; + } }