Skip to content

Commit 5e67734

Browse files
authored
Merge pull request sqlancer#343 from wanliyi/master
add more tidb error merssage
2 parents 384a1bd + c59b0d6 commit 5e67734

5 files changed

Lines changed: 30 additions & 10 deletions

File tree

src/sqlancer/tidb/TiDBErrors.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ public static void addExpressionErrors(ExpectedErrors errors) {
2222
errors.add("BIGINT value is out of range");
2323
errors.add("doesn't have a default value"); // default
2424

25+
errors.add("is not valid for CHARACTER SET");
26+
2527
// known issue: https://github.com/pingcap/tidb/issues/14819
2628
errors.add("Wrong plan type for dataReaderBuilder");
2729

@@ -69,6 +71,7 @@ public static void addInsertErrors(ExpectedErrors errors) {
6971
errors.add("Incorrect bigint value");
7072
errors.add("Incorrect decimal value");
7173
errors.add("error parsing regexp");
74+
errors.add("is not valid for CHARACTER SET");
7275

7376
if (true) {
7477
// https://github.com/tidb-challenge-program/bug-hunting-issue/issues/54

src/sqlancer/tidb/TiDBSchema.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,9 @@ private static TiDBCompositeDataType getColumnType(String typeString) {
196196
} else {
197197
switch (trimmedStringType) {
198198
case "text":
199+
case "mediumtext":
199200
case "longtext":
201+
case "tinytext":
200202
primitiveType = TiDBDataType.TEXT;
201203
break;
202204
case "float":
@@ -223,6 +225,7 @@ private static TiDBCompositeDataType getColumnType(String typeString) {
223225
break;
224226
case "blob":
225227
case "longblob":
228+
case "tinyblob":
226229
primitiveType = TiDBDataType.BLOB;
227230
break;
228231
default:

src/sqlancer/tidb/gen/TiDBAlterTableGenerator.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public static SQLQueryAdapter getQuery(TiDBGlobalState globalState) {
4848
throw new IgnoreMeException();
4949
}
5050
sb.append(column.getName());
51-
errors.add("with index covered now");
51+
errors.add("with composite index covered or Primary Key covered now");
5252
errors.add("Unsupported drop integer primary key");
5353
errors.add("has a generated column dependency");
5454
errors.add(
@@ -67,15 +67,27 @@ public static SQLQueryAdapter getQuery(TiDBGlobalState globalState) {
6767
}
6868
errors.add("Unsupported drop integer primary key");
6969
errors.add("Unsupported drop primary key when alter-primary-key is false");
70+
errors.add("Unsupported drop primary key when the table's pkIsHandle is true");
71+
errors.add("Incorrect table definition; there can be only one auto column and it must be defined as a key");
7072
sb.append(" DROP PRIMARY KEY");
7173
break;
7274
case ADD_PRIMARY_KEY:
7375
sb.append("ADD PRIMARY KEY(");
74-
sb.append(table.getRandomNonEmptyColumnSubset().stream().map(c -> c.getName())
75-
.collect(Collectors.joining(", ")));
76+
sb.append(table.getRandomNonEmptyColumnSubset().stream().map(c -> {
77+
StringBuilder colName = new StringBuilder(c.getName());
78+
if (c.getType().getPrimitiveDataType() == TiDBDataType.TEXT
79+
|| c.getType().getPrimitiveDataType() == TiDBDataType.BLOB) {
80+
TiDBTableGenerator.appendSpecifiers(colName, c.getType().getPrimitiveDataType());
81+
}
82+
return colName;
83+
}).collect(Collectors.joining(", ")));
7684
sb.append(")");
7785
errors.add("Unsupported add primary key, alter-primary-key is false");
7886
errors.add("Information schema is changed during the execution of the statement");
87+
errors.add("Multiple primary key defined");
88+
errors.add("Invalid use of NULL value");
89+
errors.add("Duplicate entry");
90+
errors.add("'Defining a virtual generated column as primary key' is not supported for generated columns");
7991
break;
8092
case CHANGE:
8193
if (TiDBBugs.bug10) {
@@ -101,7 +113,6 @@ public static SQLQueryAdapter getQuery(TiDBGlobalState globalState) {
101113
default:
102114
throw new AssertionError(a);
103115
}
104-
105116
return new SQLQueryAdapter(sb.toString(), errors, true);
106117
}
107118

src/sqlancer/tidb/gen/TiDBAnalyzeTableGenerator.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,13 @@ public static SQLQueryAdapter getQuery(TiDBGlobalState globalState) throws SQLEx
3131
sb.append(Randomly.getNotCachedInteger(1, 1024));
3232
sb.append(" BUCKETS");
3333
}
34-
return new SQLQueryAdapter(sb.toString(), ExpectedErrors.from("https://github.com/pingcap/tidb/issues/15993",
35-
/* https://github.com/pingcap/tidb/issues/15993 */ "doesn't have a default value" /*
36-
* https://github.
37-
* com/pingcap/tidb/
38-
* issues/15993
39-
*/));
34+
return new SQLQueryAdapter(sb.toString(),
35+
ExpectedErrors.from("https://github.com/pingcap/tidb/issues/15993",
36+
/* https://github.com/pingcap/tidb/issues/15993 */ "doesn't have a default value",
37+
"Index 'PRIMARY' in field list does not exist in table" /*
38+
* https://github. com/pingcap/tidb/
39+
* issues/15993
40+
*/));
4041
}
4142

4243
}

src/sqlancer/tidb/gen/TiDBDeleteGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public static SQLQueryAdapter getQuery(TiDBGlobalState globalState) throws SQLEx
5151
sb.append(Randomly.getNotCachedInteger(0, Integer.MAX_VALUE));
5252
}
5353
errors.add("Bad Number");
54+
errors.add("Truncated incorrect"); // https://github.com/pingcap/tidb/issues/24292
55+
errors.add("is not valid for CHARACTER SET");
5456
errors.add("Division by 0");
5557
errors.add("error parsing regexp");
5658
return new SQLQueryAdapter(sb.toString(), errors);

0 commit comments

Comments
 (0)