This is an automated email from the ASF dual-hosted git repository. blerer pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/trunk by this push: new 75482d0 Simplify SchemaCQLHelperTest methods 75482d0 is described below commit 75482d0a8ccd0b0d370aeb7ee60c72cd47a191b0 Author: Kowalczyk <bkowalcz...@gmail.com> AuthorDate: Mon Dec 6 22:07:13 2021 +0100 Simplify SchemaCQLHelperTest methods Patch by Bartlomiej Kowalczyk; reviewed by Ekaterina Dimitrova and Benjamin Lerer for CASSANDRA-17181 --- .../org/apache/cassandra/db/SchemaCQLHelper.java | 50 +++++++--------------- .../org/apache/cassandra/schema/TableMetadata.java | 12 +++--- .../org/apache/cassandra/cql3/ViewSchemaTest.java | 3 +- .../cql3/validation/entities/TupleTypeTest.java | 1 - .../validation/operations/CompactStorageTest.java | 14 +++--- .../apache/cassandra/db/SchemaCQLHelperTest.java | 8 ++-- .../cassandra/utils/CassandraGenerators.java | 2 +- 7 files changed, 35 insertions(+), 55 deletions(-) diff --git a/src/java/org/apache/cassandra/db/SchemaCQLHelper.java b/src/java/org/apache/cassandra/db/SchemaCQLHelper.java index 5d83a2b..ca9ef25 100644 --- a/src/java/org/apache/cassandra/db/SchemaCQLHelper.java +++ b/src/java/org/apache/cassandra/db/SchemaCQLHelper.java @@ -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)); - } - - 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)); - } + Stream<String> tableMatadata = Stream.of(SchemaCQLHelper.getTableMetadataAsCQL(metadata)); - 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))); } diff --git a/src/java/org/apache/cassandra/schema/TableMetadata.java b/src/java/org/apache/cassandra/schema/TableMetadata.java index 7205b94..fcd1d58 100644 --- a/src/java/org/apache/cassandra/schema/TableMetadata.java +++ b/src/java/org/apache/cassandra/schema/TableMetadata.java @@ -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() diff --git a/test/unit/org/apache/cassandra/cql3/ViewSchemaTest.java b/test/unit/org/apache/cassandra/cql3/ViewSchemaTest.java index 03dc0c5..b74391b 100644 --- a/test/unit/org/apache/cassandra/cql3/ViewSchemaTest.java +++ b/test/unit/org/apache/cassandra/cql3/ViewSchemaTest.java @@ -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, diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/TupleTypeTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/TupleTypeTest.java index f9ef4cc..c23a32a 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/TupleTypeTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/TupleTypeTest.java @@ -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) diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/CompactStorageTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/CompactStorageTest.java index 39b76c3..c918810 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/CompactStorageTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/CompactStorageTest.java @@ -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" + diff --git a/test/unit/org/apache/cassandra/db/SchemaCQLHelperTest.java b/test/unit/org/apache/cassandra/db/SchemaCQLHelperTest.java index 5a6b69e..03aa32d 100644 --- a/test/unit/org/apache/cassandra/db/SchemaCQLHelperTest.java +++ b/test/unit/org/apache/cassandra/db/SchemaCQLHelperTest.java @@ -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" + diff --git a/test/unit/org/apache/cassandra/utils/CassandraGenerators.java b/test/unit/org/apache/cassandra/utils/CassandraGenerators.java index 4d51f5c..169363a 100644 --- a/test/unit/org/apache/cassandra/utils/CassandraGenerators.java +++ b/test/unit/org/apache/cassandra/utils/CassandraGenerators.java @@ -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; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org