Пример #1
0
 internal JoinedTableSource(TableSourceBase left, TableSourceBase right, PredicateBase on, JoinType type)
 {
     Left  = Argument.NotNull(left, "left");
     Right = Argument.NotNull(right, "right");
     On    = Argument.NotNull(on, "on");
     Type  = type;
 }
Пример #2
0
        public static Query JoinLastTableSource(this Query query, TableSourceBase joinTableSource, PredicateBase on, JoinType joinType)
        {
            Argument.NotNull(query, "query");
            Argument.NotNull(joinTableSource, "joinTableSource");
            var lastTableSource = query.From.InternalNodes.LastOrDefault();

            if (lastTableSource == null)
            {
                throw new InvalidOperationException("Query's table source list is empty.");
            }
            var newTableSource = new JoinedTableSource(lastTableSource, joinTableSource, on, joinType);

            return(new Query(query.Select, query.From.ReplaceLast(newTableSource), query.Where));
        }
Пример #3
0
        //public override void EnterSubqueryTableItem(MySqlParser.SubqueryTableItemContext context)
        //{
        //    if (_isOtherListener == 1)
        //    {
        //        if (context.ChildCount > 1)
        //        {
        //            Rules.Remove(Rules[Rules.Count - 1]);
        //        }

        //        SubqueryTableItem subqueryTableItem =
        //            new SubqueryTableItem(context.SourceInterval, context, context.GetText());

        //        Rules.Add(subqueryTableItem);

        //    }
        //    _isOtherListener++;
        //}

        //public override void ExitSubqueryTableItem(MySqlParser.SubqueryTableItemContext context)
        //{
        //    _isOtherListener--;
        //}

        //public override void EnterAtomTableItem(MySqlParser.AtomTableItemContext context)
        //{
        //    if (_isOtherListener == 1)
        //    {
        //        if (context.ChildCount > 1)
        //        {
        //            Rules.Remove(Rules[Rules.Count - 1]);
        //        }

        //        AtomTableItem atomTableItem =
        //            new AtomTableItem(context.SourceInterval, context, context.GetText());

        //        Rules.Add(atomTableItem);

        //    }
        //    _isOtherListener++;
        //}

        //public override void ExitAtomTableItem(MySqlParser.AtomTableItemContext context)
        //{

        //    _isOtherListener--;
        //}

        #endregion

        public override void EnterTableSourceBase(MySqlParser.TableSourceBaseContext context)
        {
            if (_isOtherListener == 1)
            {
                if (context.ChildCount > 1)
                {
                    Rules.Remove(Rules[Rules.Count - 1]);
                }

                TableSourceBase tableSourceBase =
                    new TableSourceBase(context.SourceInterval, context, context.GetText());

                Rules.Add(tableSourceBase);
            }
            _isOtherListener++;
        }
Пример #4
0
 public static Query Add(this Query query, TableSourceBase tableSource)
 {
     Argument.NotNull(query, "query");
     Argument.NotNull(tableSource, "tableSource");
     return(new Query(query.Select, query.From.Add(tableSource), query.Where));
 }