Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Databend] Pinned version to v1.2.452 #946

Merged
merged 8 commits into from
Jun 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ jobs:
runs-on: ubuntu-latest
services:
databend:
image: datafuselabs/databend
image: datafuselabs/databend:v1.2.452
env:
QUERY_DEFAULT_USER: sqlancer
QUERY_DEFAULT_PASSWORD: sqlancer
Expand Down
4 changes: 4 additions & 0 deletions src/sqlancer/databend/DatabendBugs.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ public final class DatabendBugs {
public static boolean bug9236 = true; // https://github.com/datafuselabs/databend/issues/9236
public static boolean bug9264 = true; // https://github.com/datafuselabs/databend/issues/9264
public static boolean bug9806 = true; // https://github.com/datafuselabs/databend/issues/9806
public static boolean bug15568 = true; // https://github.com/datafuselabs/databend/issues/15568
public static boolean bug15569 = true; // https://github.com/datafuselabs/databend/issues/15569
public static boolean bug15570 = true; // https://github.com/datafuselabs/databend/issues/15570
public static boolean bug15572 = true; // https://github.com/datafuselabs/databend/issues/15572

private DatabendBugs() {
}
Expand Down
8 changes: 7 additions & 1 deletion src/sqlancer/databend/DatabendErrors.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ public static List<String> getExpressionErrors() {
errors.add("no overload satisfies `not(Float64 NULL)`"); // TODO databend不允许出现not(float),而a/b为float
errors.add("no overload satisfies `not(Float64)`");
errors.add("number overflowed while evaluating function"); // 表达式数值溢出
errors.add("Unable to get field named");
errors.add("no overload satisfies `and_filters");
if (DatabendBugs.bug9162) {
errors.add("downcast column error");
}
Expand All @@ -42,6 +44,9 @@ public static List<String> getExpressionErrors() {
if (DatabendBugs.bug9806) {
errors.add("segment pruning failure");
}
if (DatabendBugs.bug15568) {
errors.add("Decimal overflow at line : 723 while evaluating function `to_decimal");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fine for this PR. Perhaps it would make the code more future proof to use regular expressions rather than line numbers.

}

/*
* TODO column为not null 时,注意default不能为null DROP DATABASE IF EXISTS databend2; CREATE DATABASE databend2; USE
Expand All @@ -63,7 +68,7 @@ public static List<String> getInsertErrors() {

errors.add("Division by zero");
errors.add("/ by zero");
errors.add("Can't cast column from null into non-nullable type");
errors.add("violates not-null constraint");
errors.add("number overflowed while evaluating function `"); // 不能在int16类型column上插入int64的数据

return errors;
Expand All @@ -80,6 +85,7 @@ public static List<String> getGroupByErrors() {
errors.add("/ by zero");
errors.add("Can't cast column from null into non-nullable type");
errors.add("GROUP BY position");
errors.add("GROUP BY items can't contain aggregate functions or window functions");

return errors;
}
Expand Down
7 changes: 7 additions & 0 deletions src/sqlancer/databend/DatabendProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,13 @@ public SQLConnection createDatabase(DatabendGlobalState globalState) throws SQLE
s.execute("USE " + databaseName);
globalState.getState().logStatement("USE " + databaseName);
}
if (DatabendBugs.bug15569) {
con.close();
String urlWithRetry = String.format(
"jdbc:mysql://%s:%d/%s?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true&autoReconnect=true",
host, port, databaseName);
con = DriverManager.getConnection(urlWithRetry, username, password);
}

return new SQLConnection(con);
}
Expand Down
10 changes: 10 additions & 0 deletions src/sqlancer/databend/gen/DatabendNewExpressionGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import sqlancer.common.ast.newast.NewOrderingTerm;
import sqlancer.common.ast.newast.Node;
import sqlancer.common.gen.TypedExpressionGenerator;
import sqlancer.databend.DatabendBugs;
import sqlancer.databend.DatabendProvider.DatabendGlobalState;
import sqlancer.databend.DatabendSchema.DatabendColumn;
import sqlancer.databend.DatabendSchema.DatabendDataType;
Expand Down Expand Up @@ -160,6 +161,15 @@ DatabendExpression generateBooleanExpression(int depth) {
allowAggregateFunctions = false;
}
List<BooleanExpression> validOptions = new ArrayList<>(Arrays.asList(BooleanExpression.values()));
if (DatabendBugs.bug15570) {
validOptions.remove(BooleanExpression.LIKE);
validOptions.remove(BooleanExpression.IN_OPERATION);
validOptions.remove(BooleanExpression.BETWEEN);
validOptions.remove(BooleanExpression.BINARY_COMPARISON);
}
if (DatabendBugs.bug15572) {
validOptions.remove(BooleanExpression.NOT);
}
BooleanExpression option = Randomly.fromList(validOptions);
switch (option) {
case POSTFIX_OPERATOR:
Expand Down
2 changes: 2 additions & 0 deletions src/sqlancer/databend/gen/DatabendTableGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import sqlancer.common.gen.TypedExpressionGenerator;
import sqlancer.common.query.ExpectedErrors;
import sqlancer.common.query.SQLQueryAdapter;
import sqlancer.databend.DatabendErrors;
import sqlancer.databend.DatabendExprToNode;
import sqlancer.databend.DatabendProvider.DatabendGlobalState;
import sqlancer.databend.DatabendSchema.DatabendColumn;
Expand All @@ -19,6 +20,7 @@ public class DatabendTableGenerator {

public SQLQueryAdapter getQuery(DatabendGlobalState globalState) {
ExpectedErrors errors = new ExpectedErrors();
DatabendErrors.addExpressionErrors(errors);
StringBuilder sb = new StringBuilder();
String tableName = globalState.getSchema().getFreeTableName();
sb.append("CREATE TABLE ");
Expand Down
Loading