Skip to content

Commit

Permalink
Merge pull request #616 from toburger/fix_parameter_placeholder
Browse files Browse the repository at this point in the history
Fix places where the parameterPlaceholder is hardcoded to a ?
  • Loading branch information
ahmad-moussawi authored Sep 28, 2022
2 parents 9b208b5 + 159f320 commit 6337a57
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 28 deletions.
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

0 comments on commit 6337a57

Please sign in to comment.