Skip to content

Commit ed19cdb

Browse files
Properly escape column names
1 parent b5615a0 commit ed19cdb

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

QueryBuilder.Tests/GeneralTests.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -451,12 +451,12 @@ public void AdHoc_SingletonRow()
451451

452452
var c = Compilers.Compile(query);
453453

454-
Assert.Equal("WITH [rows] AS (SELECT 1 AS a)\nSELECT * FROM [rows]", c[EngineCodes.SqlServer].ToString());
455-
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS a)\nSELECT * FROM \"rows\"", c[EngineCodes.PostgreSql].ToString());
456-
Assert.Equal("WITH `rows` AS (SELECT 1 AS a)\nSELECT * FROM `rows`", c[EngineCodes.MySql].ToString());
457-
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS a)\nSELECT * FROM \"rows\"", c[EngineCodes.Sqlite].ToString());
458-
Assert.Equal("WITH \"ROWS\" AS (SELECT 1 AS a FROM RDB$DATABASE)\nSELECT * FROM \"ROWS\"", c[EngineCodes.Firebird].ToString());
459-
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS a FROM DUAL)\nSELECT * FROM \"rows\"", c[EngineCodes.Oracle].ToString());
454+
Assert.Equal("WITH [rows] AS (SELECT 1 AS [a])\nSELECT * FROM [rows]", c[EngineCodes.SqlServer].ToString());
455+
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS \"a\")\nSELECT * FROM \"rows\"", c[EngineCodes.PostgreSql].ToString());
456+
Assert.Equal("WITH `rows` AS (SELECT 1 AS `a`)\nSELECT * FROM `rows`", c[EngineCodes.MySql].ToString());
457+
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS \"a\")\nSELECT * FROM \"rows\"", c[EngineCodes.Sqlite].ToString());
458+
Assert.Equal("WITH \"ROWS\" AS (SELECT 1 AS \"A\" FROM RDB$DATABASE)\nSELECT * FROM \"ROWS\"", c[EngineCodes.Firebird].ToString());
459+
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS \"a\" FROM DUAL)\nSELECT * FROM \"rows\"", c[EngineCodes.Oracle].ToString());
460460
}
461461

462462
[Fact]
@@ -471,12 +471,12 @@ public void AdHoc_TwoRows()
471471

472472
var c = Compilers.Compile(query);
473473

474-
Assert.Equal("WITH [rows] AS (SELECT 1 AS a, 2 AS b, 3 AS c UNION ALL SELECT 4 AS a, 5 AS b, 6 AS c)\nSELECT * FROM [rows]", c[EngineCodes.SqlServer].ToString());
475-
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS a, 2 AS b, 3 AS c UNION ALL SELECT 4 AS a, 5 AS b, 6 AS c)\nSELECT * FROM \"rows\"", c[EngineCodes.PostgreSql].ToString());
476-
Assert.Equal("WITH `rows` AS (SELECT 1 AS a, 2 AS b, 3 AS c UNION ALL SELECT 4 AS a, 5 AS b, 6 AS c)\nSELECT * FROM `rows`", c[EngineCodes.MySql].ToString());
477-
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS a, 2 AS b, 3 AS c UNION ALL SELECT 4 AS a, 5 AS b, 6 AS c)\nSELECT * FROM \"rows\"", c[EngineCodes.Sqlite].ToString());
478-
Assert.Equal("WITH \"ROWS\" AS (SELECT 1 AS a, 2 AS b, 3 AS c FROM RDB$DATABASE UNION ALL SELECT 4 AS a, 5 AS b, 6 AS c FROM RDB$DATABASE)\nSELECT * FROM \"ROWS\"", c[EngineCodes.Firebird].ToString());
479-
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS a, 2 AS b, 3 AS c FROM DUAL UNION ALL SELECT 4 AS a, 5 AS b, 6 AS c FROM DUAL)\nSELECT * FROM \"rows\"", c[EngineCodes.Oracle].ToString());
474+
Assert.Equal("WITH [rows] AS (SELECT 1 AS [a], 2 AS [b], 3 AS [c] UNION ALL SELECT 4 AS [a], 5 AS [b], 6 AS [c])\nSELECT * FROM [rows]", c[EngineCodes.SqlServer].ToString());
475+
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS \"a\", 2 AS \"b\", 3 AS \"c\" UNION ALL SELECT 4 AS \"a\", 5 AS \"b\", 6 AS \"c\")\nSELECT * FROM \"rows\"", c[EngineCodes.PostgreSql].ToString());
476+
Assert.Equal("WITH `rows` AS (SELECT 1 AS `a`, 2 AS `b`, 3 AS `c` UNION ALL SELECT 4 AS `a`, 5 AS `b`, 6 AS `c`)\nSELECT * FROM `rows`", c[EngineCodes.MySql].ToString());
477+
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS \"a\", 2 AS \"b\", 3 AS \"c\" UNION ALL SELECT 4 AS \"a\", 5 AS \"b\", 6 AS \"c\")\nSELECT * FROM \"rows\"", c[EngineCodes.Sqlite].ToString());
478+
Assert.Equal("WITH \"ROWS\" AS (SELECT 1 AS \"A\", 2 AS \"B\", 3 AS \"C\" FROM RDB$DATABASE UNION ALL SELECT 4 AS \"A\", 5 AS \"B\", 6 AS \"C\" FROM RDB$DATABASE)\nSELECT * FROM \"ROWS\"", c[EngineCodes.Firebird].ToString());
479+
Assert.Equal("WITH \"rows\" AS (SELECT 1 AS \"a\", 2 AS \"b\", 3 AS \"c\" FROM DUAL UNION ALL SELECT 4 AS \"a\", 5 AS \"b\", 6 AS \"c\" FROM DUAL)\nSELECT * FROM \"rows\"", c[EngineCodes.Oracle].ToString());
480480
}
481481

482482
[Fact]
@@ -497,7 +497,7 @@ public void AdHoc_ProperBindingsPlacement()
497497

498498
Assert.Equal(string.Join("\n", new[] {
499499
"WITH [othercte] AS (SELECT * FROM [othertable] WHERE [othertable].[status] = 'A'),",
500-
"[rows] AS (SELECT 1 AS a, 2 AS b, 3 AS c UNION ALL SELECT 4 AS a, 5 AS b, 6 AS c)",
500+
"[rows] AS (SELECT 1 AS [a], 2 AS [b], 3 AS [c] UNION ALL SELECT 4 AS [a], 5 AS [b], 6 AS [c])",
501501
"SELECT * FROM [rows] WHERE [rows].[foo] = 'bar' AND [rows].[baz] = 'buzz'",
502502
}), c[EngineCodes.SqlServer].ToString());
503503
}

QueryBuilder/Compilers/Compiler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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 {WrapIdentifiers(col)}"));
217+
var row = "SELECT " + string.Join(", ", adHoc.Columns.Select(col => $"? AS {Wrap(col)}"));
218218

219219
var fromTable = SingleRowDummyTableName;
220220

0 commit comments

Comments
 (0)