Skip to content

Commit e01300f

Browse files
authored
Merge pull request #945 from malwaregarry/mariadb-ci
[MariaDB] Update expected errors and pin to version 11.3.2
2 parents 8f4966a + acd0b46 commit e01300f

6 files changed

Lines changed: 33 additions & 27 deletions

File tree

.github/workflows/main.yml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,14 @@ jobs:
241241
mariadb:
242242
name: DBMS Tests (MariaDB)
243243
runs-on: ubuntu-latest
244+
services:
245+
mysql:
246+
image: mariadb:11.3.2
247+
env:
248+
MYSQL_ROOT_PASSWORD: root
249+
ports:
250+
- 3306:3306
251+
options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=10
244252

245253
steps:
246254
- uses: actions/checkout@v3
@@ -254,15 +262,8 @@ jobs:
254262
cache: 'maven'
255263
- name: Build SQLancer
256264
run: mvn -B package -DskipTests=true
257-
- name: Install MariaDB
258-
run: |
259-
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
260-
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.3/ubuntu bionic main'
261-
sudo apt update
262-
sudo apt install mariadb-server
263-
sudo systemctl start mariadb
264265
- name: Create SQLancer User
265-
run: sudo mysql -uroot -proot -e "CREATE USER 'sqlancer'@'localhost' IDENTIFIED BY 'sqlancer'; GRANT ALL PRIVILEGES ON * . * TO 'sqlancer'@'localhost';"
266+
run: sudo mysql -h 127.0.0.1 -uroot -proot -e "CREATE USER 'sqlancer'@'%' IDENTIFIED BY 'sqlancer'; GRANT ALL PRIVILEGES ON * . * TO 'sqlancer'@'%';"
266267
- name: Run Tests
267268
run: MARIADB_AVAILABLE=true mvn -Dtest=TestMariaDB test
268269

src/sqlancer/mariadb/MariaDBBugs.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ public final class MariaDBBugs {
2626
// https://jira.mariadb.org/browse/MDEV-32143
2727
public static boolean bug32143 = true;
2828

29+
// https://jira.mariadb.org/browse/MDEV-33893
30+
public static boolean bug33893 = true;
31+
2932
private MariaDBBugs() {
3033
}
3134

src/sqlancer/mariadb/gen/MariaDBSetGenerator.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,14 @@ private static String getOptimizerSwitchConfiguration(Randomly r) {
122122
StringBuilder sb = new StringBuilder();
123123
sb.append("'");
124124
String[] options = { "condition_pushdown_for_derived", "condition_pushdown_for_subquery",
125-
"condition_pushdown_from_having", "derived_merge", "derived_with_keys", "engine_condition_pushdown",
126-
"exists_to_in", "extended_keys", "firstmatch", "index_condition_pushdown", "hash_join_cardinality",
127-
"index_merge", "index_merge_intersection", "index_merge_sort_intersection",
128-
"index_merge_sort_union", "index_merge_union", "in_to_exists", "join_cache_bka",
129-
"join_cache_hashed", "join_cache_incremental", "loosescan", "materialization", "mrr",
130-
"mrr_cost_based", "mrr_sort_keys", "not_null_range_scan", "optimize_join_buffer_size",
131-
"orderby_uses_equalities", "outer_join_with_cache", "partial_match_rowid_merge",
132-
"partial_match_table_scan", "rowid_filter", "semijoin", "semijoin_with_cache", "split_materialized",
133-
"subquery_cache", "table_elimination" };
125+
"condition_pushdown_from_having", "derived_merge", "derived_with_keys", "exists_to_in",
126+
"extended_keys", "firstmatch", "index_condition_pushdown", "hash_join_cardinality", "index_merge",
127+
"index_merge_intersection", "index_merge_sort_intersection", "index_merge_sort_union",
128+
"index_merge_union", "in_to_exists", "join_cache_bka", "join_cache_hashed",
129+
"join_cache_incremental", "loosescan", "materialization", "mrr", "mrr_cost_based", "mrr_sort_keys",
130+
"not_null_range_scan", "optimize_join_buffer_size", "orderby_uses_equalities",
131+
"outer_join_with_cache", "partial_match_rowid_merge", "partial_match_table_scan", "rowid_filter",
132+
"semijoin", "semijoin_with_cache", "split_materialized", "subquery_cache", "table_elimination" };
134133
List<String> optionSubset = Arrays.asList(Randomly.fromOptions(options));
135134
sb.append(optionSubset.stream().map(s -> s + "=" + Randomly.fromOptions("on", "off"))
136135
.collect(Collectors.joining(",")));
@@ -191,9 +190,9 @@ public static SQLQueryAdapter resetOptimizer() {
191190
public static List<SQLQueryAdapter> getAllOptimizer(MariaDBGlobalState globalState) {
192191
List<SQLQueryAdapter> result = new ArrayList<>();
193192
String[] options = { "condition_pushdown_for_derived", "condition_pushdown_for_subquery",
194-
"condition_pushdown_from_having", "derived_merge", "derived_with_keys", "engine_condition_pushdown",
195-
"exists_to_in", "extended_keys", "firstmatch", "index_condition_pushdown", "hash_join_cardinality",
196-
"index_merge", "index_merge_intersection", "index_merge_sort_intersection", "index_merge_sort_union",
193+
"condition_pushdown_from_having", "derived_merge", "derived_with_keys", "exists_to_in", "extended_keys",
194+
"firstmatch", "index_condition_pushdown", "hash_join_cardinality", "index_merge",
195+
"index_merge_intersection", "index_merge_sort_intersection", "index_merge_sort_union",
197196
"index_merge_union", "in_to_exists", "join_cache_bka", "join_cache_hashed", "join_cache_incremental",
198197
"loosescan", "materialization", "mrr", "mrr_cost_based", "mrr_sort_keys", "not_null_range_scan",
199198
"optimize_join_buffer_size", "orderby_uses_equalities", "outer_join_with_cache",

src/sqlancer/mariadb/gen/MariaDBTableAdminCommandGenerator.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import sqlancer.Randomly;
99
import sqlancer.common.query.SQLQueryAdapter;
1010
import sqlancer.common.query.SQLQueryResultCheckAdapter;
11+
import sqlancer.mariadb.MariaDBBugs;
1112
import sqlancer.mariadb.MariaDBSchema;
1213
import sqlancer.mariadb.MariaDBSchema.MariaDBTable;
1314

@@ -54,7 +55,9 @@ public static SQLQueryAdapter checkTable(MariaDBSchema newSchema) {
5455

5556
public static SQLQueryAdapter optimizeTable(MariaDBSchema newSchema) {
5657
StringBuilder sb = addCommandAndTables(newSchema, "OPTIMIZE TABLE");
57-
MariaDBCommon.addWaitClause(sb);
58+
if (!MariaDBBugs.bug33893) {
59+
MariaDBCommon.addWaitClause(sb);
60+
}
5861
return checkForMsgText(sb,
5962
s -> s.equals("OK") || s.equals("Table does not support optimize, doing recreate + analyze instead")
6063
|| s.contentEquals("Table is already up to date") || s.contains("Lock wait timeout")

src/sqlancer/mariadb/gen/MariaDBTableGenerator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ private void createOrReplaceTable() {
142142
sb.append("IF NOT EXISTS ");
143143
}
144144
sb.append(tableName);
145+
errors.add("Specified key was too long; max key length is");
145146
}
146147

147148
}

src/sqlancer/mysql/gen/MySQLSetGenerator.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,11 @@ private static String getOptimizerSwitchConfiguration(Randomly r) {
135135
StringBuilder sb = new StringBuilder();
136136
sb.append("'");
137137
String[] options = { "index_merge", "index_merge_union", "index_merge_sort_union",
138-
"index_merge_intersection", "engine_condition_pushdown", "index_condition_pushdown", "mrr",
139-
"mrr_cost_based", "block_nested_loop", "batched_key_access", "materialization", "semijoin",
140-
"loosescan", "firstmatch", "duplicateweedout", "subquery_materialization_cost_based",
141-
"use_index_extensions", "condition_fanout_filter", "derived_merge", "use_invisible_indexes",
142-
"skip_scan", "hash_join", "subquery_to_derived", "prefer_ordering_index",
143-
"derived_condition_pushdown" };
138+
"index_merge_intersection", "index_condition_pushdown", "mrr", "mrr_cost_based",
139+
"block_nested_loop", "batched_key_access", "materialization", "semijoin", "loosescan", "firstmatch",
140+
"duplicateweedout", "subquery_materialization_cost_based", "use_index_extensions",
141+
"condition_fanout_filter", "derived_merge", "use_invisible_indexes", "skip_scan", "hash_join",
142+
"subquery_to_derived", "prefer_ordering_index", "derived_condition_pushdown" };
144143
List<String> optionSubset = Randomly.nonEmptySubset(options);
145144
sb.append(optionSubset.stream().map(s -> s + "=" + Randomly.fromOptions("on", "off"))
146145
.collect(Collectors.joining(",")));

0 commit comments

Comments
 (0)