From 91c03bb30549b46839e5eae56323c0b33b1fb5b7 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Tue, 9 Jun 2020 14:18:41 +0200 Subject: [PATCH] Support /* */ comments --- .../Query/QuerySqlGenerator.cs | 22 +++++++++++++++++++ .../Query/Internal/QuerySqlGeneratorTest.cs | 2 ++ 2 files changed, 24 insertions(+) diff --git a/src/EFCore.Relational/Query/QuerySqlGenerator.cs b/src/EFCore.Relational/Query/QuerySqlGenerator.cs index 4d7f1c8d1b7..74d9180e044 100644 --- a/src/EFCore.Relational/Query/QuerySqlGenerator.cs +++ b/src/EFCore.Relational/Query/QuerySqlGenerator.cs @@ -447,6 +447,7 @@ protected virtual void CheckComposableSql([NotNull] string sql) continue; } + // SQL -- comment if (c == '-') { if (NextChar() != '-') @@ -459,6 +460,27 @@ protected virtual void CheckComposableSql([NotNull] string sql) continue; } + // SQL /* */ comment + if (c == '/') + { + if (NextChar() != '*') + { + throw new InvalidOperationException(RelationalStrings.FromSqlNonComposable); + } + + while (true) + { + while (NextChar() != '*') { } + + if (NextChar() == '/') + { + break; + } + } + + continue; + } + if (char.ToLowerInvariant(c) == 's' && char.ToLowerInvariant(NextChar()) == 'e' && char.ToLowerInvariant(NextChar()) == 'l' && diff --git a/test/EFCore.Relational.Tests/Query/Internal/QuerySqlGeneratorTest.cs b/test/EFCore.Relational.Tests/Query/Internal/QuerySqlGeneratorTest.cs index 53941296f33..8a727774c29 100644 --- a/test/EFCore.Relational.Tests/Query/Internal/QuerySqlGeneratorTest.cs +++ b/test/EFCore.Relational.Tests/Query/Internal/QuerySqlGeneratorTest.cs @@ -33,6 +33,8 @@ public void CheckComposableSql_throws(string sql) [InlineData("-- comment\n SELECT something")] [InlineData("-- comment1\r\n --\t\rcomment2\r\nSELECT something")] [InlineData("SELECT--\n1")] + [InlineData(" /* comment */ SELECT--\n1")] + [InlineData(" /* multi\n*line\r\n * comment */ \nSELECT--\n1")] public void CheckComposableSql_does_not_throw(string sql) => CreateDummyQuerySqlGenerator().CheckComposableSql(sql);