/// <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; }