Skip to content

Commit 78eaf96

Browse files
committed
Remove interleaved tables and indexes for CockroachDB
Interleaved tables are disabled by default in CockroachDB v21.1, and will be permanently removed in a future release. This commit removes generation of interleaved tables and indexes.
1 parent 5fa10df commit 78eaf96

5 files changed

Lines changed: 3 additions & 38 deletions

File tree

src/sqlancer/cockroachdb/CockroachDBProvider.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,9 @@ public enum Action {
5454
SHOW(CockroachDBShowGenerator::show), //
5555
TRANSACTION((g) -> {
5656
String s = Randomly.fromOptions("BEGIN", "ROLLBACK", "COMMIT");
57-
return new SQLQueryAdapter(s,
58-
ExpectedErrors.from("there is no transaction in progress",
59-
"there is already a transaction in progress", "current transaction is aborted",
60-
"does not exist" /* interleaved indexes */));
61-
}), //
62-
EXPLAIN((g) -> {
57+
return new SQLQueryAdapter(s, ExpectedErrors.from("there is no transaction in progress",
58+
"there is already a transaction in progress", "current transaction is aborted"));
59+
}), EXPLAIN((g) -> {
6360
StringBuilder sb = new StringBuilder("EXPLAIN ");
6461
ExpectedErrors errors = new ExpectedErrors();
6562
if (Randomly.getBoolean()) {
@@ -267,12 +264,6 @@ public SQLConnection createDatabase(CockroachDBGlobalState globalState) throws S
267264
globalState.getState().logStatement("USE " + databaseName);
268265
try (Statement s = con.createStatement()) {
269266
s.execute("DROP DATABASE IF EXISTS " + databaseName);
270-
} catch (SQLException e) {
271-
if (e.getMessage().contains("ERROR: invalid interleave backreference")) {
272-
throw new IgnoreMeException(); // TODO: investigate
273-
} else {
274-
throw e;
275-
}
276267
}
277268
try (Statement s = con.createStatement()) {
278269
s.execute(createDatabaseCommand);
Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package sqlancer.cockroachdb.gen;
22

33
import java.util.List;
4-
import java.util.stream.Collectors;
54

65
import sqlancer.Randomly;
76
import sqlancer.cockroachdb.CockroachDBProvider.CockroachDBGlobalState;
87
import sqlancer.cockroachdb.CockroachDBSchema.CockroachDBColumn;
9-
import sqlancer.cockroachdb.CockroachDBSchema.CockroachDBTable;
108
import sqlancer.common.gen.AbstractGenerator;
119

1210
public abstract class CockroachDBGenerator extends AbstractGenerator {
@@ -32,21 +30,4 @@ static void addColumns(StringBuilder sb, List<CockroachDBColumn> columns, boolea
3230
sb.append(")");
3331
}
3432

35-
void generateInterleave() {
36-
// TODO make this more likely to succeed
37-
CockroachDBTable parentTable = globalState.getSchema().getRandomTable(t -> !t.isView());
38-
List<CockroachDBColumn> parentColumns = parentTable.getRandomNonEmptyColumnSubset();
39-
sb.append(" INTERLEAVE IN PARENT ");
40-
sb.append(parentTable.getName());
41-
sb.append("(");
42-
sb.append(parentColumns.stream().map(c -> c.getName()).collect(Collectors.joining(", ")));
43-
sb.append(")");
44-
errors.add("must refer to a prefix of the primary key column names being interleaved");
45-
errors.add("must refer to a prefix of the index column names being interleaved");
46-
errors.add("must match the parent's primary index");
47-
errors.add("must match type and sort direction of the parent's primary index");
48-
errors.add("must be a prefix of the index columns being interleaved");
49-
errors.add("must be a prefix of the primary key columns being interleaved");
50-
}
51-
5233
}

src/sqlancer/cockroachdb/gen/CockroachDBIndexGenerator.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,6 @@ public void buildStatement() {
5353
sb.append(" ");
5454
addColumns(sb, table.getRandomNonEmptyColumnSubset(), false);
5555
}
56-
if (!hashSharded /* interleaved indexes cannot also be hash sharded */ && Randomly.getBoolean()) {
57-
generateInterleave();
58-
}
5956
}
6057

6158
}

src/sqlancer/cockroachdb/gen/CockroachDBTableGenerator.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,6 @@ public void buildStatement() {
167167
errors.add("there is no unique constraint matching given keys for referenced table");
168168
}
169169
sb.append(")");
170-
if (Randomly.getBooleanWithRatherLowProbability() && !globalState.getSchema().getDatabaseTables().isEmpty()) {
171-
generateInterleave();
172-
}
173170
errors.add("collatedstring");
174171
CockroachDBErrors.addExpressionErrors(errors);
175172
}

src/sqlancer/cockroachdb/gen/CockroachDBTruncateGenerator.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ private CockroachDBTruncateGenerator() {
1313
// https://www.cockroachlabs.com/docs/v19.2/truncate.html
1414
public static SQLQueryAdapter truncate(CockroachDBGlobalState globalState) {
1515
ExpectedErrors errors = new ExpectedErrors();
16-
errors.add("is interleaved by table");
1716
errors.add("is referenced by foreign key");
1817

1918
// https://github.com/cockroachdb/cockroach/issues/47030

0 commit comments

Comments
 (0)