Commit 4eeb632f authored by Andrés's avatar Andrés Committed by Marc Gravell

Fixed issue #569 with IN and other condition. (#1146)

parent f1ad61c7
...@@ -81,6 +81,22 @@ public void PseudoPositionalParameters_ReusedParameter() ...@@ -81,6 +81,22 @@ public void PseudoPositionalParameters_ReusedParameter()
} }
} }
[Fact]
public void Issue569_SO38527197_PseudoPositionalParameters_In_And_Other_Condition()
{
const string sql = @"select s1.value as id, s2.value as score
from string_split('1,2,3,4,5',',') s1, string_split('1,2,3,4,5',',') s2
where s1.value in ?ids? and s2.value = ?score?";
using (var connection = GetOleDbConnection())
{
const int score = 2;
int[] ids = { 1, 2, 5, 7 };
var list = connection.Query<int>(sql, new { ids, score }).AsList();
list.Sort();
Assert.Equal("1,2,5", string.Join(",", list));
}
}
[Fact] [Fact]
public void Issue569_SO38527197_PseudoPositionalParameters_In() public void Issue569_SO38527197_PseudoPositionalParameters_In()
{ {
......
...@@ -2101,11 +2101,11 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj ...@@ -2101,11 +2101,11 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj
else else
{ {
var sb = GetStringBuilder().Append('(').Append(variableName); var sb = GetStringBuilder().Append('(').Append(variableName);
if (!byPosition) sb.Append(1); if (!byPosition) sb.Append(1); else sb.Append(namePrefix).Append(1).Append(variableName);
for (int i = 2; i <= count; i++) for (int i = 2; i <= count; i++)
{ {
sb.Append(',').Append(variableName); sb.Append(',').Append(variableName);
if (!byPosition) sb.Append(i); if (!byPosition) sb.Append(i); else sb.Append(namePrefix).Append(i).Append(variableName);
} }
return sb.Append(')').__ToStringRecycle(); return sb.Append(')').__ToStringRecycle();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment