Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 46f3b81

Browse files
authored
Merge pull request #595 from wuyou331/master
Fix Sql.In condition don't support skip and take by mysql.
2 parents 4d19cd1 + 0b9e889 commit 46f3b81

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

src/ServiceStack.OrmLite.MySql/MySqlDialectProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public MySqlDialectProvider()
5555

5656
public override string GetLoadChildrenSubSelect<From>(SqlExpression<From> expr)
5757
{
58-
return $"SELECT * FROM ({base.GetLoadChildrenSubSelect(expr)}) AS COUNT";
58+
return $"SELECT * FROM ({base.GetLoadChildrenSubSelect(expr)}) AS SubQuery";
5959
}
6060
public override string ToPostDropTableStatement(ModelDefinition modelDef)
6161
{

src/ServiceStack.OrmLite.MySql/MySqlExpression.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,10 @@ public override string ToDeleteRowStatement()
1616
? $"DELETE {DialectProvider.GetQuotedTableName(modelDef)} {FromExpression} {WhereExpression}"
1717
: base.ToDeleteRowStatement();
1818
}
19+
20+
protected override string CreateInSubQuerySql(object quotedColName, string subSelect)
21+
{
22+
return $"{quotedColName} IN (SELECT * FROM ({subSelect}) SubQuery)";
23+
}
1924
}
2025
}

src/ServiceStack.OrmLite/Expressions/SqlExpression.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2263,13 +2263,18 @@ protected string ConvertInExpressionToSql(MethodCallExpression m, object quotedC
22632263
var paramsRegex = new Regex(renameParams[i].Item1 + "([^\\d])");
22642264
subSelect = paramsRegex.Replace(subSelect, renameParams[i].Item2 + "$1");
22652265
}
2266-
2267-
return $"{quotedColName} IN ({subSelect})";
2266+
2267+
return CreateInSubQuerySql(quotedColName, subSelect);
22682268
}
22692269

22702270
throw new NotSupportedException($"In({argValue.GetType()})");
22712271
}
22722272

2273+
protected virtual string CreateInSubQuerySql(object quotedColName,string subSelect)
2274+
{
2275+
return $"{quotedColName} IN ({subSelect})";
2276+
}
2277+
22732278
protected virtual object VisitColumnAccessMethod(MethodCallExpression m)
22742279
{
22752280
List<object> args = this.VisitExpressionList(m.Arguments);

0 commit comments

Comments
 (0)