Skip to content

Fix places where the parameterPlaceholder is hardcoded to a ? #616

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions QueryBuilder/Compilers/Compiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ protected virtual SqlResult CompileRaw(Query query)
ctx = CompileCteQuery(ctx, query);
}

ctx.RawSql = Helper.ExpandParameters(ctx.RawSql, "?", ctx.Bindings.ToArray());
ctx.RawSql = Helper.ExpandParameters(ctx.RawSql, parameterPlaceholder, ctx.Bindings.ToArray());

return ctx;
}
Expand Down Expand Up @@ -214,7 +214,7 @@ protected virtual SqlResult CompileAdHocQuery(AdHocTableFromClause adHoc)
{
var ctx = new SqlResult();

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

var fromTable = SingleRowDummyTableName;

Expand Down Expand Up @@ -798,19 +798,19 @@ public virtual string CompileLimit(SqlResult ctx)
if (offset == 0)
{
ctx.Bindings.Add(limit);
return "LIMIT ?";
return $"LIMIT {parameterPlaceholder}";
}

if (limit == 0)
{
ctx.Bindings.Add(offset);
return "OFFSET ?";
return $"OFFSET {parameterPlaceholder}";
}

ctx.Bindings.Add(limit);
ctx.Bindings.Add(offset);

return "LIMIT ? OFFSET ?";
return $"LIMIT {parameterPlaceholder} OFFSET {parameterPlaceholder}";
}

/// <summary>
Expand Down Expand Up @@ -953,11 +953,11 @@ public virtual string Parameter(SqlResult ctx, object parameter)
{
var value = ctx.Query.FindVariable(variable.Name);
ctx.Bindings.Add(value);
return "?";
return parameterPlaceholder;
}

ctx.Bindings.Add(parameter);
return "?";
return parameterPlaceholder;
}

/// <summary>
Expand Down
6 changes: 3 additions & 3 deletions QueryBuilder/Compilers/FirebirdCompiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public override string CompileLimit(SqlResult ctx)
ctx.Bindings.Add(offset + 1);
ctx.Bindings.Add(limit + offset);

return "ROWS ? TO ?";
return $"ROWS {parameterPlaceholder} TO {parameterPlaceholder}";
}

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

ctx.Query.ClearComponent("limit");

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

ctx.Query.ClearComponent("offset");

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

return compiled;
Expand Down
6 changes: 3 additions & 3 deletions QueryBuilder/Compilers/MySqlCompiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public override string CompileLimit(SqlResult ctx)
if (offset == 0)
{
ctx.Bindings.Add(limit);
return "LIMIT ?";
return $"LIMIT {parameterPlaceholder}";
}

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

ctx.Bindings.Add(offset);
return "LIMIT 18446744073709551615 OFFSET ?";
return $"LIMIT 18446744073709551615 OFFSET {parameterPlaceholder}";
}

// We have both values

ctx.Bindings.Add(limit);
ctx.Bindings.Add(offset);

return "LIMIT ? OFFSET ?";
return $"LIMIT {parameterPlaceholder} OFFSET {parameterPlaceholder}";

}
}
Expand Down
10 changes: 5 additions & 5 deletions QueryBuilder/Compilers/OracleCompiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,13 @@ public override string CompileLimit(SqlResult ctx)
if (limit == 0)
{
ctx.Bindings.Add(offset);
return $"{safeOrder}OFFSET ? ROWS";
return $"{safeOrder}OFFSET {parameterPlaceholder} ROWS";
}

ctx.Bindings.Add(offset);
ctx.Bindings.Add(limit);

return $"{safeOrder}OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
return $"{safeOrder}OFFSET {parameterPlaceholder} ROWS FETCH NEXT {parameterPlaceholder} ROWS ONLY";
}

internal void ApplyLegacyLimit(SqlResult ctx)
Expand All @@ -80,17 +80,17 @@ internal void ApplyLegacyLimit(SqlResult ctx)
string newSql;
if (limit == 0)
{
newSql = $"SELECT * FROM (SELECT \"results_wrapper\".*, ROWNUM \"row_num\" FROM ({ctx.RawSql}) \"results_wrapper\") WHERE \"row_num\" > ?";
newSql = $"SELECT * FROM (SELECT \"results_wrapper\".*, ROWNUM \"row_num\" FROM ({ctx.RawSql}) \"results_wrapper\") WHERE \"row_num\" > {parameterPlaceholder}";
ctx.Bindings.Add(offset);
}
else if (offset == 0)
{
newSql = $"SELECT * FROM ({ctx.RawSql}) WHERE ROWNUM <= ?";
newSql = $"SELECT * FROM ({ctx.RawSql}) WHERE ROWNUM <= {parameterPlaceholder}";
ctx.Bindings.Add(limit);
}
else
{
newSql = $"SELECT * FROM (SELECT \"results_wrapper\".*, ROWNUM \"row_num\" FROM ({ctx.RawSql}) \"results_wrapper\" WHERE ROWNUM <= ?) WHERE \"row_num\" > ?";
newSql = $"SELECT * FROM (SELECT \"results_wrapper\".*, ROWNUM \"row_num\" FROM ({ctx.RawSql}) \"results_wrapper\" WHERE ROWNUM <= {parameterPlaceholder}) WHERE \"row_num\" > {parameterPlaceholder}";
ctx.Bindings.Add(limit + offset);
ctx.Bindings.Add(offset);
}
Expand Down
14 changes: 7 additions & 7 deletions QueryBuilder/Compilers/SqlServerCompiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@ protected override SqlResult CompileSelectQuery(Query query)

if (limit == 0)
{
result.RawSql = $"SELECT * FROM ({result.RawSql}) AS [results_wrapper] WHERE [row_num] >= ?";
result.RawSql = $"SELECT * FROM ({result.RawSql}) AS [results_wrapper] WHERE [row_num] >= {parameterPlaceholder}";
result.Bindings.Add(offset + 1);
}
else
{
result.RawSql = $"SELECT * FROM ({result.RawSql}) AS [results_wrapper] WHERE [row_num] BETWEEN ? AND ?";
result.RawSql = $"SELECT * FROM ({result.RawSql}) AS [results_wrapper] WHERE [row_num] BETWEEN {parameterPlaceholder} AND {parameterPlaceholder}";
result.Bindings.Add(offset + 1);
result.Bindings.Add(limit + offset);
}
Expand Down Expand Up @@ -86,10 +86,10 @@ protected override string CompileColumns(SqlResult ctx)
// handle distinct
if (compiled.IndexOf("SELECT DISTINCT") == 0)
{
return "SELECT DISTINCT TOP (?)" + compiled.Substring(15);
return $"SELECT DISTINCT TOP ({parameterPlaceholder}){compiled.Substring(15)}";
}

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

return compiled;
Expand Down Expand Up @@ -121,13 +121,13 @@ public override string CompileLimit(SqlResult ctx)
if (limit == 0)
{
ctx.Bindings.Add(offset);
return $"{safeOrder}OFFSET ? ROWS";
return $"{safeOrder}OFFSET {parameterPlaceholder} ROWS";
}

ctx.Bindings.Add(offset);
ctx.Bindings.Add(limit);

return $"{safeOrder}OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
return $"{safeOrder}OFFSET {parameterPlaceholder} ROWS FETCH NEXT {parameterPlaceholder} ROWS ONLY";
}

public override string CompileRandom(string seed)
Expand Down Expand Up @@ -177,7 +177,7 @@ protected override SqlResult CompileAdHocQuery(AdHocTableFromClause adHoc)

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

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

Expand Down
4 changes: 1 addition & 3 deletions QueryBuilder/Compilers/SqliteCompiler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ namespace SqlKata.Compilers
public class SqliteCompiler : Compiler
{
public override string EngineCode { get; } = EngineCodes.Sqlite;
protected override string parameterPlaceholder { get; set; } = "?";
protected override string parameterPrefix { get; set; } = "@p";
protected override string OpeningIdentifier { get; set; } = "\"";
protected override string ClosingIdentifier { get; set; } = "\"";
protected override string LastId { get; set; } = "select last_insert_rowid() as id";
Expand All @@ -31,7 +29,7 @@ public override string CompileLimit(SqlResult ctx)
if (limit == 0 && offset > 0)
{
ctx.Bindings.Add(offset);
return "LIMIT -1 OFFSET ?";
return $"LIMIT -1 OFFSET {parameterPlaceholder}";
}

return base.CompileLimit(ctx);
Expand Down