Skip to content

Commit b1447b6

Browse files
committed
Merge branch '7.0-gt-action-prepare' into 7.0
2 parents bff9573 + dafeb2d commit b1447b6

9 files changed

Lines changed: 254 additions & 31 deletions

File tree

Orm/Xtensive.Orm.MySql/Sql.Drivers.MySql/DriverFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ private static SqlDriver CreateDriverInstance(string connectionString, Version v
122122
5 when version.Minor == 1 => new v5_1.Driver(coreServerInfo),
123123
5 when version.Minor == 5 => new v5_5.Driver(coreServerInfo),
124124
5 when version.Minor == 6 => new v5_6.Driver(coreServerInfo),
125-
_ => new v5_6.Driver(coreServerInfo)
125+
5 when version.Minor == 7 => new v5_7.Driver(coreServerInfo),
126+
_ => new v5_7.Driver(coreServerInfo)
126127
};
127128
}
128129

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Copyright (C) 2022 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
4+
// Created by: Alexey Kulakov
5+
// Created: 2022.02.03
6+
7+
using Xtensive.Sql.Compiler;
8+
using Xtensive.Sql.Dml;
9+
10+
namespace Xtensive.Sql.Drivers.MySql.v5_7
11+
{
12+
internal class Compiler : v5_6.Compiler
13+
{
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+
context.Output.AppendText(translator.Translate(context, node, QueryExpressionSection.Entry));
24+
if (wrapLeft) {
25+
context.Output.AppendText("(");
26+
node.Left.AcceptVisitor(this);
27+
context.Output.AppendText(")");
28+
}
29+
else {
30+
node.Left.AcceptVisitor(this);
31+
}
32+
33+
context.Output.AppendText(translator.Translate(node.NodeType));
34+
context.Output.AppendText(translator.Translate(context, node, QueryExpressionSection.All));
35+
36+
if (wrapLeft) {
37+
context.Output.AppendText("(");
38+
node.Right.AcceptVisitor(this);
39+
context.Output.AppendText(")");
40+
}
41+
else {
42+
node.Right.AcceptVisitor(this);
43+
}
44+
45+
context.Output.AppendText(translator.Translate(context, node, QueryExpressionSection.Exit));
46+
}
47+
}
48+
49+
// Constructors
50+
51+
public Compiler(SqlDriver driver)
52+
: base(driver)
53+
{
54+
}
55+
}
56+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// Copyright (C) 2022 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
4+
// Created by: Alexey Kulakov
5+
// Created: 2022.02.03
6+
7+
using Xtensive.Sql.Compiler;
8+
using Xtensive.Sql.Info;
9+
10+
namespace Xtensive.Sql.Drivers.MySql.v5_7
11+
{
12+
internal class Driver : MySql.Driver
13+
{
14+
protected override Sql.TypeMapper CreateTypeMapper()
15+
{
16+
return new TypeMapper(this);
17+
}
18+
19+
protected override SqlCompiler CreateCompiler()
20+
{
21+
return new Compiler(this);
22+
}
23+
24+
protected override SqlTranslator CreateTranslator()
25+
{
26+
return new Translator(this);
27+
}
28+
29+
protected override Model.Extractor CreateExtractor()
30+
{
31+
return new Extractor(this);
32+
}
33+
34+
protected override Info.ServerInfoProvider CreateServerInfoProvider()
35+
{
36+
return new ServerInfoProvider(this);
37+
}
38+
39+
// Constructors
40+
41+
public Driver(CoreServerInfo coreServerInfo)
42+
: base(coreServerInfo)
43+
{
44+
}
45+
}
46+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (C) 2022 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
4+
// Created by: Alexey Kulakov
5+
// Created: 2022.02.03
6+
7+
namespace Xtensive.Sql.Drivers.MySql.v5_7
8+
{
9+
internal class Extractor : v5_6.Extractor
10+
{
11+
// Constructors
12+
13+
public Extractor(SqlDriver driver)
14+
: base(driver)
15+
{
16+
}
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (C) 2022 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
4+
// Created by: Alexey Kulakov
5+
// Created: 2022.02.03
6+
7+
namespace Xtensive.Sql.Drivers.MySql.v5_7
8+
{
9+
internal class ServerInfoProvider : v5_6.ServerInfoProvider
10+
{
11+
// Constructors
12+
13+
public ServerInfoProvider(SqlDriver driver)
14+
: base(driver)
15+
{
16+
}
17+
}
18+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright (C) 2025 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
4+
// Created by: Alexey Kulakov
5+
// Created: 2022.02.03
6+
7+
using System;
8+
using Xtensive.Sql.Compiler;
9+
using Xtensive.Sql.Dml;
10+
11+
namespace Xtensive.Sql.Drivers.MySql.v5_7
12+
{
13+
internal class Translator : v5_6.Translator
14+
{
15+
// Constructors
16+
17+
public Translator(SqlDriver driver)
18+
: base(driver)
19+
{
20+
}
21+
}
22+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (C) 2022 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
4+
// Created by: Alexey Kulakov
5+
// Created: 2022.02.03
6+
7+
namespace Xtensive.Sql.Drivers.MySql.v5_7
8+
{
9+
internal class TypeMapper : v5_6.TypeMapper
10+
{
11+
// Constructors
12+
13+
public TypeMapper(SqlDriver driver)
14+
: base(driver)
15+
{
16+
}
17+
}
18+
}

0 commit comments

Comments
 (0)