package sqlancer.mysql.ast;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import sqlancer.common.ast.SelectBase;
import sqlancer.common.ast.newast.Select;
import sqlancer.mysql.MySQLSchema.MySQLColumn;
import sqlancer.mysql.MySQLSchema.MySQLTable;
import sqlancer.mysql.MySQLVisitor;
public class MySQLSelect extends SelectBase
implements MySQLExpression, Select {
private SelectType fromOptions = SelectType.ALL;
private List modifiers = Collections.emptyList();
private MySQLText hint;
public enum SelectType {
DISTINCT, ALL, DISTINCTROW;
}
public void setSelectType(SelectType fromOptions) {
this.setFromOptions(fromOptions);
}
public SelectType getFromOptions() {
return fromOptions;
}
public void setFromOptions(SelectType fromOptions) {
this.fromOptions = fromOptions;
}
public void setModifiers(List modifiers) {
this.modifiers = modifiers;
}
public List getModifiers() {
return modifiers;
}
@Override
public MySQLConstant getExpectedValue() {
return null;
}
public void setHint(MySQLText hint) {
this.hint = hint;
}
public MySQLText getHint() {
return hint;
}
@Override
public void setJoinClauses(List joinStatements) {
List expressions = joinStatements.stream().map(e -> (MySQLExpression) e)
.collect(Collectors.toList());
setJoinList(expressions);
}
@Override
public List getJoinClauses() {
return getJoinList().stream().map(e -> (MySQLJoin) e).collect(Collectors.toList());
}
@Override
public String asString() {
return MySQLVisitor.asString(this);
}
}