protected void Join(SqlQueryStatement statement, SqlSelect select) { if (select.HasLimit) { JoinWhenQueryHasLimitation(statement, select); } else { JoinWhenQueryHasNoLimitation(statement, select); } }
public static SetStatement Create(SqlQueryStatement statement) { SetStatement result; if (statement is SqlUpdate) { result = new Update(); } else if (statement is SqlInsert) { result = new Insert(); } else { throw new InvalidOperationException("Statement must be SqlUpdate or SqlInsert"); } result.statement = statement; return(result); }
private static SqlJoinHint TryFindJoinHint(SqlCompilerContext context, SqlJoinExpression node) { SqlQueryStatement statement = null; for (int i = 0, count = context.GetTraversalPath().Length; i < count; i++) { if (context.GetTraversalPath()[i] is SqlQueryStatement) { statement = context.GetTraversalPath()[i] as SqlQueryStatement; } } if (statement == null || statement.Hints.Count == 0) { return(null); } var candidate = statement.Hints .OfType <SqlJoinHint>() .FirstOrDefault(hint => hint.Table == node.Right); return(candidate); }