private static bool IsSystemReadSql(ISqlStatement ast) { if (ast is DalShowStatement) { return(true); } DmlSelectStatement select = null; if (ast is DmlSelectStatement) { select = (DmlSelectStatement)ast; } else if (ast is DmlSelectUnionStatement) { var union = (DmlSelectUnionStatement)ast; if (union.SelectStmtList.Count == 1) { select = union.SelectStmtList[0]; } else { return(false); } } else { return(false); } return(@select.Tables == null); }
/// <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); }
public virtual void Visit(DmlSelectStatement node) { VisitInternal(node.Group); VisitInternal(node.Having); VisitInternal(node.Limit); VisitInternal(node.Order); VisitInternal(node.SelectExprList); VisitInternal(node.Tables); VisitInternal(node.Where); }
public void Visit(DmlSelectStatement node) { var verdictGroup = true; var exprList = node.GetSelectExprListWithoutAlias(); if (_verdictGroupFunc) { foreach (var expr in exprList) { if (IsGroupFuncPassthroughSelect(expr)) { continue; } _groupFuncType = GroupCancel; verdictGroup = false; break; } Limit(node.Limit); } VisitChild(2, false, _verdictGroupFunc && verdictGroup, exprList); TableReference tr = node.Tables; VisitChild(1, _verdictColumn, _verdictGroupFunc && verdictGroup, tr); var where = node.Where; VisitChild(2, _verdictColumn, false, where); var group = node.Group; VisitChild(2, false, false, group); var having = node.Having; VisitChild(2, _verdictColumn, false, having); var order = node.Order; VisitChild(2, false, false, order); }
public virtual void SetSelect(CreateTableSelectOption option, DmlSelectStatement select) { Select = new Pair <CreateTableSelectOption, DmlSelectStatement>(option, select); }