Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
 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);
 }
Example #4
0
        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);
        }
Example #5
0
 public virtual void SetSelect(CreateTableSelectOption option, DmlSelectStatement select)
 {
     Select = new Pair <CreateTableSelectOption, DmlSelectStatement>(option, select);
 }