/// <returns>argument itself if there is no union</returns>
/// <exception cref="System.SqlSyntaxErrorException" />
protected virtual DmlQueryStatement BuildUnionSelect(DmlSelectStatement select)
{
if (lexer.Token() != MySqlToken.KwUnion)
{
return select;
}
var union = new DmlSelectUnionStatement(select);
for (; lexer.Token() == MySqlToken.KwUnion;)
{
lexer.NextToken();
var isAll = false;
switch (lexer.Token())
{
case MySqlToken.KwAll:
{
isAll = true;
goto case MySqlToken.KwDistinct;
}
case MySqlToken.KwDistinct:
{
lexer.NextToken();
break;
}
}
select = SelectPrimary();
union.AddSelect(select, isAll);
}
union.SetOrderBy(OrderBy()).SetLimit(Limit());
return union;
}