|
22 | 22 | import sqlancer.common.query.SQLancerResultSet; |
23 | 23 | import sqlancer.common.schema.AbstractRelationalTable; |
24 | 24 | import sqlancer.common.schema.AbstractTable; |
| 25 | +import sqlancer.common.schema.AbstractTables; |
25 | 26 | import sqlancer.mysql.MySQLErrors; |
26 | 27 | import sqlancer.mysql.MySQLGlobalState; |
27 | 28 | import sqlancer.mysql.MySQLSchema; |
@@ -57,16 +58,17 @@ public MySQLDQEOracle(MySQLGlobalState state) { |
57 | 58 | } |
58 | 59 |
|
59 | 60 | @Override |
60 | | - public String generateSelectStatement(MySQLTables tables, String tableName, String whereClauseStr) { |
| 61 | + public String generateSelectStatement(AbstractTables<?, ?> tables, String tableName, String whereClauseStr) { |
61 | 62 | operateOnSingleTable = tables.getTables().size() == 1; |
62 | 63 | List<String> selectColumns = new ArrayList<>(); |
63 | | - for (MySQLTable table : tables.getTables()) { |
| 64 | + MySQLTables mySQLTables = (MySQLTables) tables; |
| 65 | + for (MySQLTable table : mySQLTables.getTables()) { |
64 | 66 | selectColumns.add(table.getName() + "." + COLUMN_ROWID); |
65 | 67 | } |
66 | 68 | if (operateOnSingleTable && Randomly.getBooleanWithSmallProbability()) { |
67 | 69 | generateOrderBy = true; |
68 | 70 | // generate order by columns |
69 | | - for (MySQLColumn column : Randomly.nonEmptySubset(tables.getColumns())) { |
| 71 | + for (MySQLColumn column : Randomly.nonEmptySubset(mySQLTables.getColumns())) { |
70 | 72 | orderColumns.add(column.getFullQualifiedName()); |
71 | 73 | } |
72 | 74 |
|
@@ -88,9 +90,10 @@ public String generateSelectStatement(MySQLTables tables, String tableName, Stri |
88 | 90 | } |
89 | 91 |
|
90 | 92 | @Override |
91 | | - public String generateUpdateStatement(MySQLTables tables, String tableName, String whereClauseStr) { |
| 93 | + public String generateUpdateStatement(AbstractTables<?, ?> tables, String tableName, String whereClauseStr) { |
92 | 94 | List<String> updateColumns = new ArrayList<>(); |
93 | | - for (MySQLTable table : tables.getTables()) { |
| 95 | + MySQLTables mySQLTables = (MySQLTables) tables; |
| 96 | + for (MySQLTable table : mySQLTables.getTables()) { |
94 | 97 | updateColumns.add(String.format("%s = 1", table.getName() + "." + COLUMN_UPDATED)); |
95 | 98 | } |
96 | 99 | String updateStmt = String.format("UPDATE %s SET %s WHERE %s", tableName, Strings.join(",", updateColumns), |
@@ -105,7 +108,7 @@ public String generateUpdateStatement(MySQLTables tables, String tableName, Stri |
105 | 108 | } |
106 | 109 |
|
107 | 110 | @Override |
108 | | - public String generateDeleteStatement(MySQLTables tables, String tableName, String whereClauseStr) { |
| 111 | + public String generateDeleteStatement(String tableName, String whereClauseStr) { |
109 | 112 | String deleteStmt; |
110 | 113 | if (operateOnSingleTable) { |
111 | 114 | deleteStmt = String.format("DELETE FROM %s WHERE %s", tableName, whereClauseStr); |
@@ -141,7 +144,7 @@ public void check() throws SQLException { |
141 | 144 |
|
142 | 145 | String updateStmt = generateUpdateStatement(tables, tableName, whereClauseStr); |
143 | 146 |
|
144 | | - String deleteStmt = generateDeleteStatement(tables, tableName, whereClauseStr); |
| 147 | + String deleteStmt = generateDeleteStatement(tableName, whereClauseStr); |
145 | 148 |
|
146 | 149 | for (MySQLTable table : tables.getTables()) { |
147 | 150 | addAuxiliaryColumns(table); |
|