Skip to content

Commit 95436f9

Browse files
committed
Round brackets for SqlQueryExpression for MySql v5.7
1 parent 07c040a commit 95436f9

File tree

1 file changed

+37
-0
lines changed
  • Orm/Xtensive.Orm.MySql/Sql.Drivers.MySql/v5_7

1 file changed

+37
-0
lines changed

Orm/Xtensive.Orm.MySql/Sql.Drivers.MySql/v5_7/Compiler.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,47 @@
44
// Created by: Alexey Kulakov
55
// Created: 2022.02.03
66

7+
using Xtensive.Sql.Compiler;
8+
using Xtensive.Sql.Dml;
9+
710
namespace Xtensive.Sql.Drivers.MySql.v5_7
811
{
912
internal class Compiler : v5_6.Compiler
1013
{
14+
/// <inheritdoc/>
15+
public override void Visit(SqlQueryExpression node)
16+
{
17+
using (context.EnterScope(node)) {
18+
var wrapLeft = node.Left is SqlSelect sL
19+
&& (sL.OrderBy.Count > 0 || sL.HasLimit || sL.Lock != SqlLockType.Empty);
20+
var wrapRight = node.Left is SqlSelect sR
21+
&& (sR.OrderBy.Count > 0 || sR.HasLimit || sR.Lock != SqlLockType.Empty);
22+
23+
AppendTranslatedEntry(node);
24+
if (wrapLeft) {
25+
_ = context.Output.Append("(");
26+
node.Left.AcceptVisitor(this);
27+
_ = context.Output.Append(")");
28+
}
29+
else {
30+
node.Left.AcceptVisitor(this);
31+
}
32+
33+
AppendTranslated(node.NodeType);
34+
AppendTranslated(node, QueryExpressionSection.All);
35+
36+
if (wrapRight) {
37+
_ = context.Output.Append("(");
38+
node.Right.AcceptVisitor(this);
39+
_ = context.Output.Append(")");
40+
}
41+
else {
42+
node.Right.AcceptVisitor(this);
43+
}
44+
AppendTranslatedExit(node);
45+
}
46+
}
47+
1148
// Constructors
1249

1350
public Compiler(SqlDriver driver)

0 commit comments

Comments
 (0)