DATACASS-720 - Fix CassandraAdminTemplate.getKeyspaceMetadata() to quote keyspace name if necessary.
Original pull request: #170.
This commit is contained in:
committed by
Mark Paluch
parent
2e547d6289
commit
3ed752ff39
@@ -32,6 +32,7 @@ import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import com.datastax.driver.core.KeyspaceMetadata;
|
||||
import com.datastax.driver.core.Metadata;
|
||||
import com.datastax.driver.core.Session;
|
||||
import com.datastax.driver.core.TableMetadata;
|
||||
|
||||
@@ -42,6 +43,7 @@ import com.datastax.driver.core.TableMetadata;
|
||||
* @author Fabio J. Mendes
|
||||
* @author John Blum
|
||||
* @author Vagif Zeynalov
|
||||
* @author Samuel Padou
|
||||
*/
|
||||
public class CassandraAdminTemplate extends CassandraTemplate implements CassandraAdminOperations {
|
||||
|
||||
@@ -144,10 +146,11 @@ public class CassandraAdminTemplate extends CassandraTemplate implements Cassand
|
||||
// noinspection ConstantConditions
|
||||
return getCqlOperations().execute((SessionCallback<KeyspaceMetadata>) session -> {
|
||||
|
||||
KeyspaceMetadata keyspaceMetadata = session.getCluster().getMetadata().getKeyspace(session.getLoggedKeyspace());
|
||||
String keyspace = Metadata.quoteIfNecessary(session.getLoggedKeyspace());
|
||||
KeyspaceMetadata keyspaceMetadata = session.getCluster().getMetadata().getKeyspace(keyspace);
|
||||
|
||||
Assert.state(keyspaceMetadata != null,
|
||||
String.format("Metadata for keyspace [%s] not available", session.getLoggedKeyspace()));
|
||||
String.format("Metadata for keyspace [%s] not available", keyspace));
|
||||
|
||||
return keyspaceMetadata;
|
||||
});
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.datastax.driver.core.TableMetadata;
|
||||
* Integration tests for {@link CassandraAdminTemplate}.
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @author Samuel Padou
|
||||
*/
|
||||
public class CassandraAdminTemplateIntegrationTests extends AbstractKeyspaceCreatingIntegrationTest {
|
||||
|
||||
@@ -85,4 +86,20 @@ public class CassandraAdminTemplateIntegrationTests extends AbstractKeyspaceCrea
|
||||
|
||||
assertThat(getKeyspaceMetadata().getTables()).hasSize(0);
|
||||
}
|
||||
|
||||
@Test // DATACASS-720
|
||||
public void testCaseSensitiveKeyspaceMetadata() {
|
||||
|
||||
String quotedCaseSensitiveKeyspace = "\"CaseSensitive\"";
|
||||
|
||||
session.execute(String.format("DROP KEYSPACE IF EXISTS %s;", quotedCaseSensitiveKeyspace));
|
||||
session.execute(String.format(
|
||||
"CREATE KEYSPACE %s WITH durable_writes = false AND replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};",
|
||||
quotedCaseSensitiveKeyspace));
|
||||
session.execute(String.format("USE %s;", quotedCaseSensitiveKeyspace));
|
||||
assertThat(cassandraAdminTemplate.getKeyspaceMetadata()).isNotNull();
|
||||
|
||||
session.execute(String.format("USE %s;", keyspace));
|
||||
assertThat(cassandraAdminTemplate.getKeyspaceMetadata()).isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user