Skip to content

Commit 6337a57

Browse files
Merge pull request #616 from toburger/fix_parameter_placeholder
Fix places where the parameterPlaceholder is hardcoded to a ?
2 parents 9b208b5 + 159f320 commit 6337a57

File tree

6 files changed

+26
-28
lines changed

6 files changed

+26
-28
lines changed

QueryBuilder/Compilers/Compiler.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ protected virtual SqlResult CompileRaw(Query query)
127127
ctx = CompileCteQuery(ctx, query);
128128
}
129129

130-
ctx.RawSql = Helper.ExpandParameters(ctx.RawSql, "?", ctx.Bindings.ToArray());
130+
ctx.RawSql = Helper.ExpandParameters(ctx.RawSql, parameterPlaceholder, ctx.Bindings.ToArray());
131131

132132
return ctx;
133133
}
@@ -214,7 +214,7 @@ protected virtual SqlResult CompileAdHocQuery(AdHocTableFromClause adHoc)
214214
{
215215
var ctx = new SqlResult();
216216

217-
var row = "SELECT " + string.Join(", ", adHoc.Columns.Select(col => $"? AS {Wrap(col)}"));
217+
var row = "SELECT " + string.Join(", ", adHoc.Columns.Select(col => $"{parameterPlaceholder} AS {Wrap(col)}"));
218218

219219
var fromTable = SingleRowDummyTableName;
220220

@@ -798,19 +798,19 @@ public virtual string CompileLimit(SqlResult ctx)
798798
if (offset == 0)
799799
{
800800
ctx.Bindings.Add(limit);
801-
return "LIMIT ?";
801+
return $"LIMIT {parameterPlaceholder}";
802802
}
803803

804804
if (limit == 0)
805805
{
806806
ctx.Bindings.Add(offset);
807-
return "OFFSET ?";
807+
return $"OFFSET {parameterPlaceholder}";
808808
}
809809

810810
ctx.Bindings.Add(limit);
811811
ctx.Bindings.Add(offset);
812812

813-
return "LIMIT ? OFFSET ?";
813+
return $"LIMIT {parameterPlaceholder} OFFSET {parameterPlaceholder}";
814814
}
815815

816816
/// <summary>
@@ -953,11 +953,11 @@ public virtual string Parameter(SqlResult ctx, object parameter)
953953
{
954954
var value = ctx.Query.FindVariable(variable.Name);
955955
ctx.Bindings.Add(value);
956-
return "?";
956+
return parameterPlaceholder;
957957
}
958958

959959
ctx.Bindings.Add(parameter);
960-
return "?";
960+
return parameterPlaceholder;
961961
}
962962

963963
/// <summary>

QueryBuilder/Compilers/FirebirdCompiler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public override string CompileLimit(SqlResult ctx)
3939
ctx.Bindings.Add(offset + 1);
4040
ctx.Bindings.Add(limit + offset);
4141

42-
return "ROWS ? TO ?";
42+
return $"ROWS {parameterPlaceholder} TO {parameterPlaceholder}";
4343
}
4444

4545
return null;
@@ -59,15 +59,15 @@ protected override string CompileColumns(SqlResult ctx)
5959

6060
ctx.Query.ClearComponent("limit");
6161

62-
return "SELECT FIRST ?" + compiled.Substring(6);
62+
return $"SELECT FIRST {parameterPlaceholder}" + compiled.Substring(6);
6363
}
6464
else if (limit == 0 && offset > 0)
6565
{
6666
ctx.Bindings.Insert(0, offset);
6767

6868
ctx.Query.ClearComponent("offset");
6969

70-
return "SELECT SKIP ?" + compiled.Substring(6);
70+
return $"SELECT SKIP {parameterPlaceholder}" + compiled.Substring(6);
7171
}
7272

7373
return compiled;

QueryBuilder/Compilers/MySqlCompiler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public override string CompileLimit(SqlResult ctx)
2424
if (offset == 0)
2525
{
2626
ctx.Bindings.Add(limit);
27-
return "LIMIT ?";
27+
return $"LIMIT {parameterPlaceholder}";
2828
}
2929

3030
if (limit == 0)
@@ -34,15 +34,15 @@ public override string CompileLimit(SqlResult ctx)
3434
// to avoid this error.
3535

3636
ctx.Bindings.Add(offset);
37-
return "LIMIT 18446744073709551615 OFFSET ?";
37+
return $"LIMIT 18446744073709551615 OFFSET {parameterPlaceholder}";
3838
}
3939

4040
// We have both values
4141

4242
ctx.Bindings.Add(limit);
4343
ctx.Bindings.Add(offset);
4444

45-
return "LIMIT ? OFFSET ?";
45+
return $"LIMIT {parameterPlaceholder} OFFSET {parameterPlaceholder}";
4646

4747
}
4848
}

QueryBuilder/Compilers/OracleCompiler.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ public override string CompileLimit(SqlResult ctx)
5858
if (limit == 0)
5959
{
6060
ctx.Bindings.Add(offset);
61-
return $"{safeOrder}OFFSET ? ROWS";
61+
return $"{safeOrder}OFFSET {parameterPlaceholder} ROWS";
6262
}
6363

6464
ctx.Bindings.Add(offset);
6565
ctx.Bindings.Add(limit);
6666

67-
return $"{safeOrder}OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
67+
return $"{safeOrder}OFFSET {parameterPlaceholder} ROWS FETCH NEXT {parameterPlaceholder} ROWS ONLY";
6868
}
6969

7070
internal void ApplyLegacyLimit(SqlResult ctx)
@@ -80,17 +80,17 @@ internal void ApplyLegacyLimit(SqlResult ctx)
8080
string newSql;
8181
if (limit == 0)
8282
{
83-
newSql = $"SELECT * FROM (SELECT \"results_wrapper\".*, ROWNUM \"row_num\" FROM ({ctx.RawSql}) \"results_wrapper\") WHERE \"row_num\" > ?";
83+
newSql = $"SELECT * FROM (SELECT \"results_wrapper\".*, ROWNUM \"row_num\" FROM ({ctx.RawSql}) \"results_wrapper\") WHERE \"row_num\" > {parameterPlaceholder}";
8484
ctx.Bindings.Add(offset);
8585
}
8686
else if (offset == 0)
8787
{
88-
newSql = $"SELECT * FROM ({ctx.RawSql}) WHERE ROWNUM <= ?";
88+
newSql = $"SELECT * FROM ({ctx.RawSql}) WHERE ROWNUM <= {parameterPlaceholder}";
8989
ctx.Bindings.Add(limit);
9090
}
9191
else
9292
{
93-
newSql = $"SELECT * FROM (SELECT \"results_wrapper\".*, ROWNUM \"row_num\" FROM ({ctx.RawSql}) \"results_wrapper\" WHERE ROWNUM <= ?) WHERE \"row_num\" > ?";
93+
newSql = $"SELECT * FROM (SELECT \"results_wrapper\".*, ROWNUM \"row_num\" FROM ({ctx.RawSql}) \"results_wrapper\" WHERE ROWNUM <= {parameterPlaceholder}) WHERE \"row_num\" > {parameterPlaceholder}";
9494
ctx.Bindings.Add(limit + offset);
9595
ctx.Bindings.Add(offset);
9696
}

QueryBuilder/Compilers/SqlServerCompiler.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ protected override SqlResult CompileSelectQuery(Query query)
4848

4949
if (limit == 0)
5050
{
51-
result.RawSql = $"SELECT * FROM ({result.RawSql}) AS [results_wrapper] WHERE [row_num] >= ?";
51+
result.RawSql = $"SELECT * FROM ({result.RawSql}) AS [results_wrapper] WHERE [row_num] >= {parameterPlaceholder}";
5252
result.Bindings.Add(offset + 1);
5353
}
5454
else
5555
{
56-
result.RawSql = $"SELECT * FROM ({result.RawSql}) AS [results_wrapper] WHERE [row_num] BETWEEN ? AND ?";
56+
result.RawSql = $"SELECT * FROM ({result.RawSql}) AS [results_wrapper] WHERE [row_num] BETWEEN {parameterPlaceholder} AND {parameterPlaceholder}";
5757
result.Bindings.Add(offset + 1);
5858
result.Bindings.Add(limit + offset);
5959
}
@@ -86,10 +86,10 @@ protected override string CompileColumns(SqlResult ctx)
8686
// handle distinct
8787
if (compiled.IndexOf("SELECT DISTINCT") == 0)
8888
{
89-
return "SELECT DISTINCT TOP (?)" + compiled.Substring(15);
89+
return $"SELECT DISTINCT TOP ({parameterPlaceholder}){compiled.Substring(15)}";
9090
}
9191

92-
return "SELECT TOP (?)" + compiled.Substring(6);
92+
return $"SELECT TOP ({parameterPlaceholder}){compiled.Substring(6)}";
9393
}
9494

9595
return compiled;
@@ -121,13 +121,13 @@ public override string CompileLimit(SqlResult ctx)
121121
if (limit == 0)
122122
{
123123
ctx.Bindings.Add(offset);
124-
return $"{safeOrder}OFFSET ? ROWS";
124+
return $"{safeOrder}OFFSET {parameterPlaceholder} ROWS";
125125
}
126126

127127
ctx.Bindings.Add(offset);
128128
ctx.Bindings.Add(limit);
129129

130-
return $"{safeOrder}OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
130+
return $"{safeOrder}OFFSET {parameterPlaceholder} ROWS FETCH NEXT {parameterPlaceholder} ROWS ONLY";
131131
}
132132

133133
public override string CompileRandom(string seed)
@@ -177,7 +177,7 @@ protected override SqlResult CompileAdHocQuery(AdHocTableFromClause adHoc)
177177

178178
var colNames = string.Join(", ", adHoc.Columns.Select(Wrap));
179179

180-
var valueRow = string.Join(", ", Enumerable.Repeat("?", adHoc.Columns.Count));
180+
var valueRow = string.Join(", ", Enumerable.Repeat(parameterPlaceholder, adHoc.Columns.Count));
181181
var valueRows = string.Join(", ", Enumerable.Repeat($"({valueRow})", adHoc.Values.Count / adHoc.Columns.Count));
182182
var sql = $"SELECT {colNames} FROM (VALUES {valueRows}) AS tbl ({colNames})";
183183

QueryBuilder/Compilers/SqliteCompiler.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ namespace SqlKata.Compilers
77
public class SqliteCompiler : Compiler
88
{
99
public override string EngineCode { get; } = EngineCodes.Sqlite;
10-
protected override string parameterPlaceholder { get; set; } = "?";
11-
protected override string parameterPrefix { get; set; } = "@p";
1210
protected override string OpeningIdentifier { get; set; } = "\"";
1311
protected override string ClosingIdentifier { get; set; } = "\"";
1412
protected override string LastId { get; set; } = "select last_insert_rowid() as id";
@@ -31,7 +29,7 @@ public override string CompileLimit(SqlResult ctx)
3129
if (limit == 0 && offset > 0)
3230
{
3331
ctx.Bindings.Add(offset);
34-
return "LIMIT -1 OFFSET ?";
32+
return $"LIMIT -1 OFFSET {parameterPlaceholder}";
3533
}
3634

3735
return base.CompileLimit(ctx);

0 commit comments

Comments
 (0)