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 ca9f4c4264..851fb0ce33 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 @@ -226,7 +226,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(); } @@ -326,8 +328,8 @@ public void addNewColumnToTable( } try { String alterTableQuery = - SchemaBuilder.alterTable(namespace, table) - .addColumn(columnName) + SchemaBuilder.alterTable(quoteIfNecessary(namespace), quoteIfNecessary(table)) + .addColumn(quoteIfNecessary(columnName)) .type(toCassandraDataType(columnType)) .getQueryString(); @@ -537,4 +539,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; + } }