Skip to content
Open
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
8 changes: 4 additions & 4 deletions QueryBuilder.Tests/Firebird/FirebirdLimitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public FirebirdLimitTests()
public void NoLimitNorOffset()
{
var query = new Query("Table");
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -26,7 +26,7 @@ public void NoLimitNorOffset()
public void LimitOnly()
{
var query = new Query("Table").Limit(10);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -35,7 +35,7 @@ public void LimitOnly()
public void OffsetOnly()
{
var query = new Query("Table").Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -44,7 +44,7 @@ public void OffsetOnly()
public void LimitAndOffset()
{
var query = new Query("Table").Limit(5).Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Equal("ROWS ? TO ?", compiler.CompileLimit(ctx));
Assert.Equal(21L, ctx.Bindings[0]);
Expand Down
24 changes: 24 additions & 0 deletions QueryBuilder.Tests/GeneralTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -754,5 +754,29 @@ public void Compile_WhereExists_DoesNotMutateSubquery()

Assert.Equal(2, inner.SelectClauses.Count);
}

[Fact]
public void SqlServer_SelectPrefix_TopWithColumnBindings_PreservesParameterOrder()
{
var query = new Query("users").SelectRaw("? AS [bonus]", 100).Limit(5);
var compiler = new SqlServerCompiler { UseLegacyPagination = true };

var result = compiler.Compile(query);

Assert.Equal("SELECT TOP (@p0) @p1 AS [bonus] FROM [users]", result.Sql);
Assert.Equal(5, result.NamedBindings["@p0"]);
Assert.Equal(100, result.NamedBindings["@p1"]);
}

[Fact]
public void Firebird_SelectPrefix_FirstWithDistinct()
{
var query = new Query("users").Select("name").Distinct().Limit(10);
var compiler = new FirebirdCompiler();

var result = compiler.Compile(query);

Assert.Equal("SELECT FIRST 10 DISTINCT \"NAME\" FROM \"USERS\"", result.ToString());
}
}
}
8 changes: 4 additions & 4 deletions QueryBuilder.Tests/MySql/MySqlLimitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public MySqlLimitTests()
public void WithNoLimitNorOffset()
{
var query = new Query("Table");
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -26,7 +26,7 @@ public void WithNoLimitNorOffset()
public void WithNoOffset()
{
var query = new Query("Table").Limit(10);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Equal("LIMIT ?", compiler.CompileLimit(ctx));
Assert.Equal(10, ctx.Bindings[0]);
Expand All @@ -36,7 +36,7 @@ public void WithNoOffset()
public void WithNoLimit()
{
var query = new Query("Table").Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Equal("LIMIT 18446744073709551615 OFFSET ?", compiler.CompileLimit(ctx));
Assert.Equal(20L, ctx.Bindings[0]);
Expand All @@ -47,7 +47,7 @@ public void WithNoLimit()
public void WithLimitAndOffset()
{
var query = new Query("Table").Limit(5).Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Equal("LIMIT ? OFFSET ?", compiler.CompileLimit(ctx));
Assert.Equal(5, ctx.Bindings[0]);
Expand Down
8 changes: 4 additions & 4 deletions QueryBuilder.Tests/Oracle/OracleLegacyLimitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public void WithNoLimitNorOffset()
{
// Arrange:
var query = new Query(TableName);
var ctx = new SqlResult("?", "\\") { Query = query, RawSql = SqlPlaceholder };
var ctx = new CompileContext(query, "?", "\\") { Query = query, RawSql = SqlPlaceholder };

// Act:
compiler.ApplyLegacyLimit(ctx);
Expand All @@ -35,7 +35,7 @@ public void WithNoOffset()
{
// Arrange:
var query = new Query(TableName).Limit(10);
var ctx = new SqlResult("?", "\\") { Query = query, RawSql = SqlPlaceholder };
var ctx = new CompileContext(query, "?", "\\") { Query = query, RawSql = SqlPlaceholder };

// Act:
compiler.ApplyLegacyLimit(ctx);
Expand All @@ -51,7 +51,7 @@ public void WithNoLimit()
{
// Arrange:
var query = new Query(TableName).Offset(20);
var ctx = new SqlResult("?", "\\") { Query = query, RawSql = SqlPlaceholder };
var ctx = new CompileContext(query, "?", "\\") { Query = query, RawSql = SqlPlaceholder };

// Act:
compiler.ApplyLegacyLimit(ctx);
Expand All @@ -67,7 +67,7 @@ public void WithLimitAndOffset()
{
// Arrange:
var query = new Query(TableName).Limit(5).Offset(20);
var ctx = new SqlResult("?", "\\") { Query = query, RawSql = SqlPlaceholder };
var ctx = new CompileContext(query, "?", "\\") { Query = query, RawSql = SqlPlaceholder };

// Act:
compiler.ApplyLegacyLimit(ctx);
Expand Down
8 changes: 4 additions & 4 deletions QueryBuilder.Tests/Oracle/OracleLimitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public void NoLimitNorOffset()
{
// Arrange:
var query = new Query(TableName);
var ctx = new SqlResult("?", "\\") { Query = query, RawSql = SqlPlaceholder };
var ctx = new CompileContext(query, "?", "\\") { RawSql = SqlPlaceholder };

// Act & Assert:
Assert.Null(compiler.CompileLimit(ctx));
Expand All @@ -32,7 +32,7 @@ public void LimitOnly()
{
// Arrange:
var query = new Query(TableName).Limit(10);
var ctx = new SqlResult("?", "\\") { Query = query, RawSql = SqlPlaceholder };
var ctx = new CompileContext(query, "?", "\\") { RawSql = SqlPlaceholder };

// Act & Assert:
Assert.EndsWith("OFFSET ? ROWS FETCH NEXT ? ROWS ONLY", compiler.CompileLimit(ctx));
Expand All @@ -46,7 +46,7 @@ public void OffsetOnly()
{
// Arrange:
var query = new Query(TableName).Offset(20);
var ctx = new SqlResult("?", "\\") { Query = query, RawSql = SqlPlaceholder };
var ctx = new CompileContext(query, "?", "\\") { RawSql = SqlPlaceholder };

// Act & Assert:
Assert.EndsWith("OFFSET ? ROWS", compiler.CompileLimit(ctx));
Expand All @@ -60,7 +60,7 @@ public void LimitAndOffset()
{
// Arrange:
var query = new Query(TableName).Limit(5).Offset(20);
var ctx = new SqlResult("?", "\\") { Query = query, RawSql = SqlPlaceholder };
var ctx = new CompileContext(query, "?", "\\") { RawSql = SqlPlaceholder };

// Act & Assert:
Assert.EndsWith("OFFSET ? ROWS FETCH NEXT ? ROWS ONLY", compiler.CompileLimit(ctx));
Expand Down
8 changes: 4 additions & 4 deletions QueryBuilder.Tests/PostgreSql/PostgreSqlLimitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public PostgreSqlLimitTests()
public void WithNoLimitNorOffset()
{
var query = new Query("Table");
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -26,7 +26,7 @@ public void WithNoLimitNorOffset()
public void WithNoOffset()
{
var query = new Query("Table").Limit(10);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Equal("LIMIT ?", compiler.CompileLimit(ctx));
Assert.Equal(10, ctx.Bindings[0]);
Expand All @@ -36,7 +36,7 @@ public void WithNoOffset()
public void WithNoLimit()
{
var query = new Query("Table").Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Equal("OFFSET ?", compiler.CompileLimit(ctx));
Assert.Equal(20L, ctx.Bindings[0]);
Expand All @@ -47,7 +47,7 @@ public void WithNoLimit()
public void WithLimitAndOffset()
{
var query = new Query("Table").Limit(5).Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Equal("LIMIT ? OFFSET ?", compiler.CompileLimit(ctx));
Assert.Equal(5, ctx.Bindings[0]);
Expand Down
8 changes: 4 additions & 4 deletions QueryBuilder.Tests/SqlServer/SqlServerLegacyLimitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public SqlServerLegacyLimitTests()
public void NoLimitNorOffset()
{
var query = new Query("Table");
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -27,7 +27,7 @@ public void NoLimitNorOffset()
public void LimitOnly()
{
var query = new Query("Table").Limit(10);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -36,7 +36,7 @@ public void LimitOnly()
public void OffsetOnly()
{
var query = new Query("Table").Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -45,7 +45,7 @@ public void OffsetOnly()
public void LimitAndOffset()
{
var query = new Query("Table").Limit(5).Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand Down
8 changes: 4 additions & 4 deletions QueryBuilder.Tests/SqlServer/SqlServerLimitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public SqlServerLimitTests()
public void NoLimitNorOffset()
{
var query = new Query("Table");
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -27,7 +27,7 @@ public void NoLimitNorOffset()
public void LimitOnly()
{
var query = new Query("Table").Limit(10);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.EndsWith("OFFSET ? ROWS FETCH NEXT ? ROWS ONLY", compiler.CompileLimit(ctx));
Assert.Equal(2, ctx.Bindings.Count);
Expand All @@ -39,7 +39,7 @@ public void LimitOnly()
public void OffsetOnly()
{
var query = new Query("Table").Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.EndsWith("OFFSET ? ROWS", compiler.CompileLimit(ctx));

Expand All @@ -51,7 +51,7 @@ public void OffsetOnly()
public void LimitAndOffset()
{
var query = new Query("Table").Limit(5).Offset(20);
var ctx = new SqlResult("?", "\\") {Query = query};
var ctx = new CompileContext(query);

Assert.EndsWith("OFFSET ? ROWS FETCH NEXT ? ROWS ONLY", compiler.CompileLimit(ctx));

Expand Down
8 changes: 4 additions & 4 deletions QueryBuilder.Tests/Sqlite/SqliteLimitTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public SqliteLimitTests()
public void WithNoLimitNorOffset()
{
var query = new Query("Table");
var ctx = new SqlResult("?", "\\") { Query = query };
var ctx = new CompileContext(query);

Assert.Null(compiler.CompileLimit(ctx));
}
Expand All @@ -26,7 +26,7 @@ public void WithNoLimitNorOffset()
public void WithNoOffset()
{
var query = new Query("Table").Limit(10);
var ctx = new SqlResult("?", "\\") { Query = query };
var ctx = new CompileContext(query);

Assert.Equal("LIMIT ?", compiler.CompileLimit(ctx));
Assert.Equal(10, ctx.Bindings[0]);
Expand All @@ -36,7 +36,7 @@ public void WithNoOffset()
public void WithNoLimit()
{
var query = new Query("Table").Offset(20);
var ctx = new SqlResult("?", "\\") { Query = query };
var ctx = new CompileContext(query);

Assert.Equal("LIMIT -1 OFFSET ?", compiler.CompileLimit(ctx));
Assert.Equal(20L, ctx.Bindings[0]);
Expand All @@ -47,7 +47,7 @@ public void WithNoLimit()
public void WithLimitAndOffset()
{
var query = new Query("Table").Limit(5).Offset(20);
var ctx = new SqlResult("?", "\\") { Query = query };
var ctx = new CompileContext(query);

Assert.Equal("LIMIT ? OFFSET ?", compiler.CompileLimit(ctx));
Assert.Equal(5, ctx.Bindings[0]);
Expand Down
Loading
Loading