public virtual void Visit(SoqlExistsExpression v) { Output.Write("exists "); v.Query.Accept(this); if (IndentOutput) { Output.WriteLine(); } }
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); }
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); }