Skip to content

Commit fdb081b

Browse files
committed
Include the Engine when cloning a FromClause
1 parent 3e3a054 commit fdb081b

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

QueryBuilder.Tests/GeneralTests.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,5 +160,50 @@ public void WrapWithMultipleSpaces()
160160

161161
Assert.Equal("[My Table One] AS [Table One]", compiler.Wrap("My Table One as Table One"));
162162
}
163+
164+
[Fact]
165+
public void CompilerSpecificFrom()
166+
{
167+
var query = new Query()
168+
.ForSqlServer(q => q.From("mssql"))
169+
.ForPostgreSql(q => q.From("pgsql"))
170+
.ForMySql(q => q.From("mysql"));
171+
var engines = new[] { EngineCodes.SqlServer, EngineCodes.MySql, EngineCodes.PostgreSql };
172+
var c = Compilers.Compile(engines, query);
173+
174+
Assert.Equal("SELECT * FROM [mssql]", c[EngineCodes.SqlServer].RawSql);
175+
Assert.Equal("SELECT * FROM \"pgsql\"", c[EngineCodes.PostgreSql].RawSql);
176+
Assert.Equal("SELECT * FROM `mysql`", c[EngineCodes.MySql].RawSql);
177+
}
178+
179+
[Fact]
180+
public void CompilerSpecificFromRaw()
181+
{
182+
var query = new Query()
183+
.ForSqlServer(q => q.FromRaw("[mssql]"))
184+
.ForPostgreSql(q => q.FromRaw("[pgsql]"))
185+
.ForMySql(q => q.FromRaw("[mysql]"));
186+
var engines = new[] { EngineCodes.SqlServer, EngineCodes.MySql, EngineCodes.PostgreSql };
187+
var c = Compilers.Compile(engines, query);
188+
189+
Assert.Equal("SELECT * FROM [mssql]", c[EngineCodes.SqlServer].RawSql);
190+
Assert.Equal("SELECT * FROM \"pgsql\"", c[EngineCodes.PostgreSql].RawSql);
191+
Assert.Equal("SELECT * FROM `mysql`", c[EngineCodes.MySql].RawSql);
192+
}
193+
194+
[Fact]
195+
public void CompilerSpecificFromMixed()
196+
{
197+
var query = new Query()
198+
.ForSqlServer(q => q.From("mssql"))
199+
.ForPostgreSql(q => q.FromRaw("[pgsql]"))
200+
.ForMySql(q => q.From("mysql"));
201+
var engines = new[] { EngineCodes.SqlServer, EngineCodes.MySql, EngineCodes.PostgreSql };
202+
var c = Compilers.Compile(engines, query);
203+
204+
Assert.Equal("SELECT * FROM [mssql]", c[EngineCodes.SqlServer].RawSql);
205+
Assert.Equal("SELECT * FROM \"pgsql\"", c[EngineCodes.PostgreSql].RawSql);
206+
Assert.Equal("SELECT * FROM `mysql`", c[EngineCodes.MySql].RawSql);
207+
}
163208
}
164209
}

QueryBuilder/Clauses/FromClause.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public override AbstractClause Clone()
4040
{
4141
return new FromClause
4242
{
43+
Engine = Engine,
4344
Alias = Alias,
4445
Table = Table,
4546
Component = Component,

0 commit comments

Comments
 (0)