Skip to content

Commit fab83b9

Browse files
committed
[HSQLDB] Implement TLP-where generator interface
1 parent 49b276c commit fab83b9

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

src/sqlancer/hsqldb/gen/HSQLDBExpressionGenerator.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import sqlancer.Randomly;
99
import sqlancer.common.ast.BinaryOperatorNode;
1010
import sqlancer.common.gen.NoRECGenerator;
11+
import sqlancer.common.gen.TLPWhereGenerator;
1112
import sqlancer.common.gen.TypedExpressionGenerator;
1213
import sqlancer.common.schema.AbstractTables;
1314
import sqlancer.hsqldb.HSQLDBProvider;
@@ -26,7 +27,8 @@
2627

2728
public final class HSQLDBExpressionGenerator extends
2829
TypedExpressionGenerator<HSQLDBExpression, HSQLDBSchema.HSQLDBColumn, HSQLDBSchema.HSQLDBCompositeDataType>
29-
implements NoRECGenerator<HSQLDBSelect, HSQLDBJoin, HSQLDBExpression, HSQLDBTable, HSQLDBColumn> {
30+
implements NoRECGenerator<HSQLDBSelect, HSQLDBJoin, HSQLDBExpression, HSQLDBTable, HSQLDBColumn>,
31+
TLPWhereGenerator<HSQLDBSelect, HSQLDBJoin, HSQLDBExpression, HSQLDBTable, HSQLDBColumn> {
3032

3133
List<HSQLDBTable> tables;
3234

@@ -205,8 +207,7 @@ public List<HSQLDBExpression> generateOrderBys() {
205207
}
206208

207209
@Override
208-
public NoRECGenerator<HSQLDBSelect, HSQLDBJoin, HSQLDBExpression, HSQLDBTable, HSQLDBColumn> setTablesAndColumns(
209-
AbstractTables<HSQLDBTable, HSQLDBColumn> tables) {
210+
public HSQLDBExpressionGenerator setTablesAndColumns(AbstractTables<HSQLDBTable, HSQLDBColumn> tables) {
210211
this.columns = tables.getColumns();
211212
this.tables = tables.getTables();
212213

@@ -289,4 +290,13 @@ public String generateUnoptimizedQueryString(HSQLDBSelect select, HSQLDBExpressi
289290
select.setWhereClause(null);
290291
return "SELECT SUM(count) FROM (" + select.asString() + ") as res";
291292
}
293+
294+
@Override
295+
public List<HSQLDBExpression> generateFetchColumns(boolean shouldCreateDummy) {
296+
if (shouldCreateDummy) {
297+
return List.of(new HSQLDBColumnReference(new HSQLDBSchema.HSQLDBColumn("*", null, null)));
298+
}
299+
return Randomly
300+
.nonEmptySubset(columns.stream().map(c -> new HSQLDBColumnReference(c)).collect(Collectors.toList()));
301+
}
292302
}

0 commit comments

Comments
 (0)