Exemplo n.º 1
0
 public virtual void Visit(SoqlExistsExpression v)
 {
     Output.Write("exists ");
     v.Query.Accept(this);
     if (IndentOutput)
     {
         Output.WriteLine();
     }
 }
Exemplo n.º 2
0
 public virtual void Visit(SoqlExistsExpression v)
 {
     Output.Write("exists ");
     v.Query.Accept(this);
     if (IndentOutput)
         Output.WriteLine();
 }
 void Sooda.QL.ISoqlVisitor.Visit(SoqlExistsExpression v)
 {
     v.Query.Accept(this);
 }
 void Sooda.QL.ISoqlVisitor.Visit(SoqlExistsExpression v)
 {
     v.Query.Accept(this);
 }
Exemplo n.º 5
0
        public override void Visit(SoqlContainsExpression v)
        {
            ClassInfo currentClass;
            string p;
            string firstTableAlias = null;

            if (v.Path != null)
            {
                IFieldContainer container = GenerateTableJoins(v.Path, out p, out firstTableAlias);
                currentClass = container as ClassInfo;
            }
            else
            {
                currentClass = FindClassByCollectionName(v.CollectionName, out p);
            }

            CollectionOnetoManyInfo col1n = currentClass.FindCollectionOneToMany(v.CollectionName);
            if (col1n != null)
            {
                SoqlQueryExpression query = CreateCollectionQuery(currentClass, p, col1n, new SoqlAsteriskExpression(), v.Expr);
                SoqlExistsExpression subExists = new SoqlExistsExpression(query);
                subExists.Accept(this);
                return;
            }

            CollectionManyToManyInfo colnn = currentClass.FindCollectionManyToMany(v.CollectionName);
            if (colnn != null)
            {
                RelationInfo ri = colnn.GetRelationInfo();

                Output.Write("exists (select * from ");
                OutputTableFrom(ri.Table, "");
                Output.Write(" where ");
                Output.Write(ri.Table.Fields[1 - colnn.MasterField].DBColumnName);
                Output.Write('=');
                OutputColumn(GetTableAliasForExpressionPrefix(p), currentClass.GetFirstPrimaryKeyField());
                Output.Write(" and ");
                Output.Write(ri.Table.Fields[colnn.MasterField].DBColumnName);
                Output.Write(" in ");

                if (!(v.Expr is SoqlQueryExpression))
                    Output.Write('(');
                v.Expr.Accept(this);
                if (!(v.Expr is SoqlQueryExpression))
                    Output.Write(')');

                Output.Write(')');
                return;
            }

            throw new Exception("Unknown collection " + v.CollectionName + " in " + currentClass.Name);
        }