protected override void BuildFromClause(SqlStatement statement, SelectQuery selectQuery) { if (!statement.IsUpdate()) { base.BuildFromClause(statement, selectQuery); } }
protected override void BuildFromClause(SqlStatement statement, SelectQuery selectQuery) { if (!statement.IsUpdate()) { base.BuildFromClause(statement, selectQuery); } if (selectQuery.From.Tables.Count == 0) { StringBuilder.Append("FROM DUMMY"); } }
//protected override void BuildFunction(SqlFunction func) { // // http://blog.linq2db.com/ // func = ConvertFunctionParameters(func); // switch (func.Name.ToLower()) { // case "coalesce": { // func = new SqlFunction(func.SystemType, "Value", func.Parameters[0], func.Parameters[1]); // break; // } // case "replicate": { // func = new SqlFunction(func.SystemType, "Repeat", func.Parameters[0], func.Parameters[1]); // break; // } // case "x_upper": { // func = new SqlFunction(func.SystemType, "sqlbuilder_UCase", func.Parameters[0]); // break; // } // } // base.BuildFunction(func); //} protected override void BuildFromClause(SqlStatement statement, SelectQuery selectQuery) { if (!statement.IsUpdate()) { if (selectQuery.From.Tables.Count == 0) { StringBuilder.Append($"FROM {Provider.NamingConvention.DummyTableWithSchema()}").AppendLine(); } base.BuildFromClause(statement, selectQuery); } }
public override SqlStatement TransformStatement(SqlStatement statement) { // SQL Server 2012 supports OFFSET/FETCH providing there is an ORDER BY // UPDATE queries do not directly support ORDER BY, TOP, OFFSET, or FETCH, but they are supported in subqueries if (statement.IsUpdate() || statement.IsDelete()) { statement = WrapRootTakeSkipOrderBy(statement); } statement = AddOrderByForSkip(statement); return(statement); }
public override SqlStatement TransformStatement(SqlStatement statement) { //SQL Server 2008 supports ROW_NUMBER but not OFFSET/FETCH statement = SeparateDistinctFromPagination(statement, q => q.Select.TakeValue != null || q.Select.SkipValue != null); if (statement.IsUpdate() || statement.IsDelete()) { statement = WrapRootTakeSkipOrderBy(statement); } statement = ReplaceSkipWithRowNumber(statement); return(statement); }
public override SqlStatement TransformStatement(SqlStatement statement) { if (statement.IsUpdate()) { statement = ReplaceTakeSkipWithRowNumber(statement, false); } else { statement = ReplaceTakeSkipWithRowNumber(statement, true); CorrectRootSkip(statement.SelectQuery !); } return(statement); }
public override SqlStatement TransformStatement(SqlStatement statement) { if (statement.IsUpdate() || statement.IsInsert() || statement.IsDelete()) { statement = ReplaceTakeSkipWithRowNum(statement, false); } switch (statement.QueryType) { case QueryType.Delete: statement = GetAlternativeDelete((SqlDeleteStatement)statement); break; case QueryType.Update: statement = GetAlternativeUpdate((SqlUpdateStatement)statement); break; } return(statement); }
public override SqlStatement TransformStatement(SqlStatement statement) { //SQL Server 2008 supports ROW_NUMBER but not OFFSET/FETCH statement = SeparateDistinctFromPagination(statement, q => q.Select.TakeValue != null || q.Select.SkipValue != null); if (statement.IsUpdate() || statement.IsDelete()) { statement = WrapRootTakeSkipOrderBy(statement); } statement = ReplaceSkipWithRowNumber(statement); if (statement.QueryType == QueryType.Select) { statement = QueryHelper.OptimizeSubqueries(statement); // OptimizeSubqueries can break update queries } return(statement); }
public override SqlStatement TransformStatement(SqlStatement statement) { // very limited provider, it do not support Window functions. if (statement.IsUpdate()) { var selectQuery = statement.SelectQuery !; if (selectQuery.Select.SkipValue != null || selectQuery.Select.TakeValue != null) { throw new LinqToDBException("SQL Server 2000 do not support Skip, Take in Update statement."); } if (!statement.SelectQuery !.OrderBy.IsEmpty) { statement.SelectQuery.OrderBy.Items.Clear(); } } return(statement); }