mirror of https://github.com/apache/cassandra
Simplify SchemaCQLHelperTest methods
Patch by Bartlomiej Kowalczyk; reviewed by Ekaterina Dimitrova and Benjamin Lerer for CASSANDRA-17181
This commit is contained in:
parent
1dd9f55a60
commit
75482d0a8c
|
|
@ -19,6 +19,7 @@
|
|||
package org.apache.cassandra.db;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.function.Function;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Stream;
|
||||
|
|
@ -46,34 +47,10 @@ public class SchemaCQLHelper
|
|||
// Types come first, as table can't be created without them
|
||||
Stream<String> udts = SchemaCQLHelper.getUserTypesAsCQL(metadata, types, true);
|
||||
|
||||
return Stream.concat(udts,
|
||||
reCreateStatements(metadata,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true));
|
||||
}
|
||||
Stream<String> tableMatadata = Stream.of(SchemaCQLHelper.getTableMetadataAsCQL(metadata));
|
||||
|
||||
public static Stream<String> reCreateStatements(TableMetadata metadata,
|
||||
boolean includeDroppedColumns,
|
||||
boolean internals,
|
||||
boolean ifNotExists,
|
||||
boolean includeIndexes)
|
||||
{
|
||||
// Record re-create schema statements
|
||||
Stream<String> r = Stream.of(metadata)
|
||||
.map((tm) -> SchemaCQLHelper.getTableMetadataAsCQL(tm,
|
||||
includeDroppedColumns,
|
||||
internals,
|
||||
ifNotExists));
|
||||
|
||||
if (includeIndexes)
|
||||
{
|
||||
// Indexes applied as last, since otherwise they may interfere with column drops / re-additions
|
||||
r = Stream.concat(r, SchemaCQLHelper.getIndexesAsCQL(metadata, ifNotExists));
|
||||
}
|
||||
|
||||
return r;
|
||||
Stream<String> indexes = SchemaCQLHelper.getIndexesAsCQL(metadata, true);
|
||||
return Stream.of(udts, tableMatadata, indexes).flatMap(Function.identity());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -83,20 +60,25 @@ public class SchemaCQLHelper
|
|||
* that will not contain everything needed for user types.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
public static String getTableMetadataAsCQL(TableMetadata metadata,
|
||||
boolean includeDroppedColumns,
|
||||
boolean internals,
|
||||
boolean ifNotExists)
|
||||
public static String getTableMetadataAsCQL(TableMetadata metadata)
|
||||
{
|
||||
if (metadata.isView())
|
||||
{
|
||||
KeyspaceMetadata keyspaceMetadata = Schema.instance.getKeyspaceMetadata(metadata.keyspace);
|
||||
ViewMetadata viewMetadata = keyspaceMetadata.views.get(metadata.name).orElse(null);
|
||||
assert viewMetadata != null;
|
||||
return viewMetadata.toCqlString(internals, ifNotExists);
|
||||
/*
|
||||
* first argument(withInternals) indicates to include table metadata id and clustering columns order,
|
||||
* second argument(ifNotExists) instructs to include IF NOT EXISTS statement within creation statements.
|
||||
*/
|
||||
return viewMetadata.toCqlString(true, true);
|
||||
}
|
||||
|
||||
return metadata.toCqlString(includeDroppedColumns, internals, ifNotExists);
|
||||
/*
|
||||
* With addition to withInternals and ifNotExists arguments, includeDroppedColumns will include dropped
|
||||
* columns as ALTER TABLE statements appended into the snapshot.
|
||||
*/
|
||||
return metadata.toCqlString(true, true, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -162,7 +144,7 @@ public class SchemaCQLHelper
|
|||
private static UserType getType(TableMetadata metadata, Types types, ByteBuffer name)
|
||||
{
|
||||
return types.get(name)
|
||||
.orElseThrow(() -> new IllegalStateException(String.format("user type %s is part of table %s definition but its definition was missing",
|
||||
.orElseThrow(() -> new IllegalStateException(String.format("user type %s is part of table %s definition but its definition was missing",
|
||||
UTF8Type.instance.getString(name),
|
||||
metadata)));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1149,17 +1149,17 @@ public class TableMetadata implements SchemaElement
|
|||
}
|
||||
|
||||
public String toCqlString(boolean includeDroppedColumns,
|
||||
boolean internals,
|
||||
boolean withInternals,
|
||||
boolean ifNotExists)
|
||||
{
|
||||
CqlBuilder builder = new CqlBuilder(2048);
|
||||
appendCqlTo(builder, includeDroppedColumns, internals, ifNotExists);
|
||||
appendCqlTo(builder, includeDroppedColumns, withInternals, ifNotExists);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
public void appendCqlTo(CqlBuilder builder,
|
||||
boolean includeDroppedColumns,
|
||||
boolean internals,
|
||||
boolean withInternals,
|
||||
boolean ifNotExists)
|
||||
{
|
||||
assert !isView();
|
||||
|
|
@ -1198,7 +1198,7 @@ public class TableMetadata implements SchemaElement
|
|||
builder.append(" WITH ")
|
||||
.increaseIndent();
|
||||
|
||||
appendTableOptions(builder, internals);
|
||||
appendTableOptions(builder, withInternals);
|
||||
|
||||
builder.decreaseIndent();
|
||||
|
||||
|
|
@ -1281,9 +1281,9 @@ public class TableMetadata implements SchemaElement
|
|||
.newLine();
|
||||
}
|
||||
|
||||
void appendTableOptions(CqlBuilder builder, boolean internals)
|
||||
void appendTableOptions(CqlBuilder builder, boolean withInternals)
|
||||
{
|
||||
if (internals)
|
||||
if (withInternals)
|
||||
builder.append("ID = ")
|
||||
.append(id.toString())
|
||||
.newLine()
|
||||
|
|
|
|||
|
|
@ -849,8 +849,7 @@ public class ViewSchemaTest extends ViewAbstractTest
|
|||
String view = createView(createView);
|
||||
|
||||
ColumnFamilyStore mv = Keyspace.open(keyspace()).getColumnFamilyStore(view);
|
||||
|
||||
assertTrue(SchemaCQLHelper.getTableMetadataAsCQL(mv.metadata(), true, true, true)
|
||||
assertTrue(SchemaCQLHelper.getTableMetadataAsCQL(mv.metadata())
|
||||
.startsWith(String.format(viewSnapshotSchema,
|
||||
keyspace(),
|
||||
view,
|
||||
|
|
|
|||
|
|
@ -300,7 +300,6 @@ public class TupleTypeTest extends CQLTester
|
|||
TupleType tupleType = testcase.type;
|
||||
createTable("CREATE TABLE %s (pk int, ck " + toCqlType(tupleType) + ", value int, PRIMARY KEY(pk, ck))" +
|
||||
" WITH CLUSTERING ORDER BY (ck "+order.name()+")");
|
||||
String cql = SchemaCQLHelper.getTableMetadataAsCQL(currentTableMetadata(), false, false, false);
|
||||
SortedMap<ByteBuffer, Integer> map = new TreeMap<>(order.apply(tupleType));
|
||||
int count = 0;
|
||||
for (ByteBuffer value : testcase.uniqueRows)
|
||||
|
|
|
|||
|
|
@ -4638,7 +4638,7 @@ public class CompactStorageTest extends CQLTester
|
|||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace).getColumnFamilyStore(table);
|
||||
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true);
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata());
|
||||
String expected = "CREATE TABLE IF NOT EXISTS cql_test_keyspace_compact.test_table_compact (\n" +
|
||||
" pk1 varint,\n" +
|
||||
" pk2 ascii,\n" +
|
||||
|
|
@ -4674,7 +4674,7 @@ public class CompactStorageTest extends CQLTester
|
|||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace).getColumnFamilyStore(table);
|
||||
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true);
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata());
|
||||
String expected = "CREATE TABLE IF NOT EXISTS cql_test_keyspace_counter.test_table_counter (\n" +
|
||||
" pk1 varint,\n" +
|
||||
" pk2 ascii,\n" +
|
||||
|
|
@ -4699,7 +4699,7 @@ public class CompactStorageTest extends CQLTester
|
|||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace()).getColumnFamilyStore(tableName);
|
||||
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true);
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata());
|
||||
String expected = "CREATE TABLE IF NOT EXISTS " + keyspace() + "." + tableName + " (\n" +
|
||||
" pk1 varint,\n" +
|
||||
" reg1 int,\n" +
|
||||
|
|
@ -4721,7 +4721,7 @@ public class CompactStorageTest extends CQLTester
|
|||
" WITH COMPACT STORAGE");
|
||||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace()).getColumnFamilyStore(tableName);
|
||||
assertTrue(SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true).contains(
|
||||
assertTrue(SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata()).contains(
|
||||
"CREATE TABLE IF NOT EXISTS " + keyspace() + "." + tableName + " (\n" +
|
||||
" pk1 varint,\n" +
|
||||
" reg1 int,\n" +
|
||||
|
|
@ -4743,7 +4743,7 @@ public class CompactStorageTest extends CQLTester
|
|||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace()).getColumnFamilyStore(tableName);
|
||||
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true);
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata());
|
||||
String expected = "CREATE TABLE IF NOT EXISTS " + keyspace() + "." + tableName + " (\n" +
|
||||
" pk1 varint,\n" +
|
||||
" reg1 counter,\n" +
|
||||
|
|
@ -4766,7 +4766,7 @@ public class CompactStorageTest extends CQLTester
|
|||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace()).getColumnFamilyStore(tableName);
|
||||
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true);
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata());
|
||||
String expected = "CREATE TABLE IF NOT EXISTS " + keyspace() + "." + tableName + " (\n" +
|
||||
" pk1 varint,\n" +
|
||||
" ck1 int,\n" +
|
||||
|
|
@ -4789,7 +4789,7 @@ public class CompactStorageTest extends CQLTester
|
|||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace()).getColumnFamilyStore(tableName);
|
||||
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true);
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata());
|
||||
String expected = "CREATE TABLE IF NOT EXISTS " + keyspace() + "." + tableName + " (\n" +
|
||||
" pk1 varint,\n" +
|
||||
" ck1 int,\n" +
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ public class SchemaCQLHelperTest extends CQLTester
|
|||
" reg2 varint,\n" +
|
||||
" st1 varint static,\n" +
|
||||
" PRIMARY KEY (pk1, ck1)\n) WITH ID =";
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true);
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata());
|
||||
|
||||
assertThat(actual,
|
||||
allOf(startsWith(expected),
|
||||
|
|
@ -208,7 +208,7 @@ public class SchemaCQLHelperTest extends CQLTester
|
|||
ColumnFamilyStore cfs = Keyspace.open(keyspace).getColumnFamilyStore(table);
|
||||
|
||||
// when re-adding, column is present as both column and as dropped column record.
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true);
|
||||
String actual = SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata());
|
||||
String expected = "CREATE TABLE IF NOT EXISTS cql_test_keyspace_readded_columns.test_table_readded_columns (\n" +
|
||||
" pk1 varint,\n" +
|
||||
" ck1 varint,\n" +
|
||||
|
|
@ -247,7 +247,7 @@ public class SchemaCQLHelperTest extends CQLTester
|
|||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace).getColumnFamilyStore(table);
|
||||
|
||||
assertThat(SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true),
|
||||
assertThat(SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata()),
|
||||
startsWith(
|
||||
"CREATE TABLE IF NOT EXISTS cql_test_keyspace_create_table.test_table_create_table (\n" +
|
||||
" pk1 varint,\n" +
|
||||
|
|
@ -294,7 +294,7 @@ public class SchemaCQLHelperTest extends CQLTester
|
|||
|
||||
ColumnFamilyStore cfs = Keyspace.open(keyspace).getColumnFamilyStore(table);
|
||||
|
||||
assertThat(SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata(), true, true, true),
|
||||
assertThat(SchemaCQLHelper.getTableMetadataAsCQL(cfs.metadata()),
|
||||
containsString("CLUSTERING ORDER BY (cl1 ASC)\n" +
|
||||
" AND additional_write_policy = 'ALWAYS'\n" +
|
||||
" AND bloom_filter_fp_chance = 1.0\n" +
|
||||
|
|
|
|||
|
|
@ -283,7 +283,7 @@ public final class CassandraGenerators
|
|||
{
|
||||
// to make sure the correct indents are taken, convert to CQL, then replace newlines with the indents
|
||||
// then prefix with the indents.
|
||||
String cql = SchemaCQLHelper.getTableMetadataAsCQL((TableMetadata) value, true, true, false);
|
||||
String cql = SchemaCQLHelper.getTableMetadataAsCQL((TableMetadata) value);
|
||||
cql = NEWLINE_PATTERN.matcher(cql).replaceAll(Matcher.quoteReplacement("\n " + spacer));
|
||||
cql = "\n " + spacer + cql;
|
||||
value = cql;
|
||||
|
|
|
|||
Loading…
Reference in New Issue