mirror of https://github.com/apache/cassandra
Merge branch 'cassandra-3.11' into cassandra-4.0
This commit is contained in:
commit
49e83027e2
|
|
@ -34,6 +34,9 @@ import org.junit.Assert;
|
|||
import com.datastax.driver.core.exceptions.OperationTimedOutException;
|
||||
import org.apache.cassandra.concurrent.SEPExecutor;
|
||||
import org.apache.cassandra.concurrent.Stage;
|
||||
import org.apache.cassandra.db.ColumnFamilyStore;
|
||||
import org.apache.cassandra.db.Keyspace;
|
||||
import org.apache.cassandra.db.SchemaCQLHelper;
|
||||
import org.apache.cassandra.schema.ColumnMetadata;
|
||||
import org.apache.cassandra.schema.TableMetadata;
|
||||
import org.apache.cassandra.schema.Schema;
|
||||
|
|
@ -50,6 +53,8 @@ import org.junit.Test;
|
|||
|
||||
import com.datastax.driver.core.exceptions.InvalidQueryException;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
|
||||
public class ViewSchemaTest extends CQLTester
|
||||
{
|
||||
|
|
@ -718,7 +723,7 @@ public class ViewSchemaTest extends CQLTester
|
|||
execute("USE " + keyspace());
|
||||
executeNet(protocolVersion, "USE " + keyspace());
|
||||
|
||||
execute("INSERT into %s (a,b,c,d) VALUES (?,?,?,?)", 1,2,3,4);
|
||||
execute("INSERT into %s (a,b,c,d) VALUES (?,?,?,?)", 1, 2, 3, 4);
|
||||
|
||||
assertInvalidThrowMessage("Cannot use token relation when defining a materialized view", InvalidRequestException.class,
|
||||
"CREATE MATERIALIZED VIEW mv_test AS SELECT a,b,c FROM %s WHERE a IS NOT NULL and b IS NOT NULL and token(a) = token(1) PRIMARY KEY(b,a)");
|
||||
|
|
@ -857,4 +862,85 @@ public class ViewSchemaTest extends CQLTester
|
|||
row(0, 1, 0, 0, 3),
|
||||
row(0, 2, 1, 1, 7));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testViewMetadataCQLNotIncludeAllColumn() throws Throwable
|
||||
{
|
||||
String createBase = "CREATE TABLE IF NOT EXISTS %s (" +
|
||||
"pk1 int," +
|
||||
"pk2 int," +
|
||||
"ck1 int," +
|
||||
"ck2 int," +
|
||||
"reg1 int," +
|
||||
"reg2 list<int>," +
|
||||
"reg3 int," +
|
||||
"PRIMARY KEY ((pk1, pk2), ck1, ck2)) WITH " +
|
||||
"CLUSTERING ORDER BY (ck1 ASC, ck2 ASC);";
|
||||
|
||||
String createView = "CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS SELECT pk1, pk2, ck1, ck2, reg1, reg2 FROM %%s "
|
||||
+ "WHERE pk2 IS NOT NULL AND pk1 IS NOT NULL AND ck2 IS NOT NULL AND ck1 IS NOT NULL PRIMARY KEY((pk2, pk1), ck2, ck1)";
|
||||
|
||||
String expectedViewSnapshot = "CREATE MATERIALIZED VIEW IF NOT EXISTS %s.%s AS\n" +
|
||||
" SELECT pk2, pk1, ck2, ck1, reg1, reg2\n" +
|
||||
" FROM %s.%s\n" +
|
||||
" WHERE pk2 IS NOT NULL AND pk1 IS NOT NULL AND ck2 IS NOT NULL AND ck1 IS NOT NULL\n" +
|
||||
" PRIMARY KEY ((pk2, pk1), ck2, ck1)\n" +
|
||||
" WITH ID = %s\n" +
|
||||
" AND CLUSTERING ORDER BY (ck2 ASC, ck1 ASC)";
|
||||
|
||||
testViewMetadataCQL(createBase,
|
||||
createView,
|
||||
expectedViewSnapshot);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testViewMetadataCQLIncludeAllColumn() throws Throwable
|
||||
{
|
||||
String createBase = "CREATE TABLE IF NOT EXISTS %s (" +
|
||||
"pk1 int," +
|
||||
"pk2 int," +
|
||||
"ck1 int," +
|
||||
"ck2 int," +
|
||||
"reg1 int," +
|
||||
"reg2 list<int>," +
|
||||
"reg3 int," +
|
||||
"PRIMARY KEY ((pk1, pk2), ck1, ck2)) WITH " +
|
||||
"CLUSTERING ORDER BY (ck1 ASC, ck2 DESC);";
|
||||
|
||||
String createView = "CREATE MATERIALIZED VIEW IF NOT EXISTS %s AS SELECT * FROM %%s "
|
||||
+ "WHERE pk2 IS NOT NULL AND pk1 IS NOT NULL AND ck2 IS NOT NULL AND ck1 IS NOT NULL PRIMARY KEY((pk2, pk1), ck2, ck1)";
|
||||
|
||||
String expectedViewSnapshot = "CREATE MATERIALIZED VIEW IF NOT EXISTS %s.%s AS\n" +
|
||||
" SELECT *\n" +
|
||||
" FROM %s.%s\n" +
|
||||
" WHERE pk2 IS NOT NULL AND pk1 IS NOT NULL AND ck2 IS NOT NULL AND ck1 IS NOT NULL\n" +
|
||||
" PRIMARY KEY ((pk2, pk1), ck2, ck1)\n" +
|
||||
" WITH ID = %s\n" +
|
||||
" AND CLUSTERING ORDER BY (ck2 DESC, ck1 ASC)";
|
||||
|
||||
testViewMetadataCQL(createBase,
|
||||
createView,
|
||||
expectedViewSnapshot);
|
||||
}
|
||||
|
||||
private void testViewMetadataCQL(String createBase, String createView, String viewSnapshotSchema) throws Throwable
|
||||
{
|
||||
execute("USE " + keyspace());
|
||||
executeNet(protocolVersion, "USE " + keyspace());
|
||||
|
||||
String base = createTable(createBase);
|
||||
|
||||
String view = "mv";
|
||||
createView(view, createView);
|
||||
|
||||
ColumnFamilyStore mv = Keyspace.open(keyspace()).getColumnFamilyStore(view);
|
||||
|
||||
assertTrue(SchemaCQLHelper.getTableMetadataAsCQL(mv.metadata(), true, true, true)
|
||||
.startsWith(String.format(viewSnapshotSchema,
|
||||
keyspace(),
|
||||
view,
|
||||
keyspace(),
|
||||
base,
|
||||
mv.metadata().id)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue