Skip to content

Commit 430af84

Browse files
committed
File formatting
1 parent dcaaacb commit 430af84

File tree

1 file changed

+95
-112
lines changed
  • Orm/Xtensive.Orm.SqlServer/Sql.Drivers.SqlServer/v10

1 file changed

+95
-112
lines changed

Orm/Xtensive.Orm.SqlServer/Sql.Drivers.SqlServer/v10/Compiler.cs

Lines changed: 95 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// Copyright (C) 2003-2010 Xtensive LLC.
2-
// All rights reserved.
3-
// For conditions of distribution and use, see license.
1+
// Copyright (C) 2009-2021 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
44
// Created by: Denis Krjuchkov
55
// Created: 2009.07.07
66

@@ -11,20 +11,20 @@ namespace Xtensive.Sql.Drivers.SqlServer.v10
1111
{
1212
internal class Compiler : v09.Compiler
1313
{
14-
protected static SqlUserFunctionCall DateAddNanosecond(SqlExpression date, SqlExpression nanoseconds)
15-
{
16-
return SqlDml.FunctionCall("DATEADD", SqlDml.Native("NS"), nanoseconds, date);
17-
}
14+
protected const string UtcTimeZone = "+00:00";
15+
protected const string SqlDateTypeName = "date";
16+
protected const string SqlDateTime2TypeName = "datetime2";
1817

19-
protected static SqlUserFunctionCall DateDiffNanosecond(SqlExpression date1, SqlExpression date2)
20-
{
21-
return SqlDml.FunctionCall("DATEDIFF", SqlDml.Native("NS"), date1, date2);
22-
}
18+
protected static SqlUserFunctionCall DateAddNanosecond(SqlExpression date, SqlExpression nanoseconds) =>
19+
SqlDml.FunctionCall("DATEADD", SqlDml.Native("NS"), nanoseconds, date);
2320

24-
protected override SqlExpression DateTimeTruncate(SqlExpression date)
25-
{
26-
return SqlDml.Cast(SqlDml.Cast(date, new SqlValueType("Date")), new SqlValueType("DateTime2"));
27-
}
21+
protected static SqlUserFunctionCall DateDiffNanosecond(SqlExpression date1, SqlExpression date2) =>
22+
SqlDml.FunctionCall("DATEDIFF", SqlDml.Native("NS"), date1, date2);
23+
24+
protected override SqlExpression DateTimeTruncate(SqlExpression date) =>
25+
SqlDml.Cast(
26+
SqlDml.Cast(date, new SqlValueType(SqlDateTypeName)),
27+
new SqlValueType(SqlDateTime2TypeName));
2828

2929
protected override SqlExpression DateTimeSubtractDateTime(SqlExpression date1, SqlExpression date2)
3030
{
@@ -52,32 +52,31 @@ protected override SqlExpression DateTimeAddInterval(SqlExpression date, SqlExpr
5252

5353
public override void Visit(SqlExtract node)
5454
{
55-
if (node.DateTimeOffsetPart==SqlDateTimeOffsetPart.DayOfWeek) {
56-
Visit((DatePartWeekDay(node.Operand) + DateFirst + 6) % 7);
57-
return;
58-
}
5955
switch (node.DateTimeOffsetPart) {
60-
case SqlDateTimeOffsetPart.TimeZoneHour:
61-
Visit(DateTimeOffsetTimeZoneInMinutes(node.Operand) / 60);
62-
return;
63-
case SqlDateTimeOffsetPart.TimeZoneMinute:
64-
Visit(DateTimeOffsetTimeZoneInMinutes(node.Operand) % 60);
65-
return;
66-
case SqlDateTimeOffsetPart.Date:
67-
DateTimeOffsetTruncate(node.Operand).AcceptVisitor(this);
68-
return;
69-
case SqlDateTimeOffsetPart.DateTime:
70-
DateTimeOffsetTruncateOffset(node.Operand).AcceptVisitor(this);
71-
return;
72-
case SqlDateTimeOffsetPart.LocalDateTime:
73-
DateTimeOffsetToLocalDateTime(node.Operand).AcceptVisitor(this);
74-
return;
75-
case SqlDateTimeOffsetPart.UtcDateTime:
76-
SqlDml.Cast(Switchoffset(node.Operand, "+00:00"), SqlType.DateTime).AcceptVisitor(this);
77-
return;
78-
case SqlDateTimeOffsetPart.Offset:
79-
DateTimeOffsetPartOffset(node.Operand).AcceptVisitor(this);
80-
return;
56+
case SqlDateTimeOffsetPart.DayOfWeek:
57+
Visit((DatePartWeekDay(node.Operand) + DateFirst + 6) % 7);
58+
return;
59+
case SqlDateTimeOffsetPart.TimeZoneHour:
60+
Visit(DateTimeOffsetTimeZoneInMinutes(node.Operand) / 60);
61+
return;
62+
case SqlDateTimeOffsetPart.TimeZoneMinute:
63+
Visit(DateTimeOffsetTimeZoneInMinutes(node.Operand) % 60);
64+
return;
65+
case SqlDateTimeOffsetPart.Date:
66+
DateTimeOffsetTruncate(node.Operand).AcceptVisitor(this);
67+
return;
68+
case SqlDateTimeOffsetPart.DateTime:
69+
DateTimeOffsetTruncateOffset(node.Operand).AcceptVisitor(this);
70+
return;
71+
case SqlDateTimeOffsetPart.LocalDateTime:
72+
DateTimeOffsetToLocalDateTime(node.Operand).AcceptVisitor(this);
73+
return;
74+
case SqlDateTimeOffsetPart.UtcDateTime:
75+
SqlDml.Cast(Switchoffset(node.Operand, UtcTimeZone), SqlType.DateTime).AcceptVisitor(this);
76+
return;
77+
case SqlDateTimeOffsetPart.Offset:
78+
DateTimeOffsetPartOffset(node.Operand).AcceptVisitor(this);
79+
return;
8180
}
8281
base.Visit(node);
8382
}
@@ -86,27 +85,27 @@ public override void Visit(SqlExtract node)
8685
public override void Visit(SqlFunctionCall node)
8786
{
8887
switch (node.FunctionType) {
89-
case SqlFunctionType.DateTimeOffsetAddMonths:
90-
Visit(DateAddMonth(node.Arguments[0], node.Arguments[1]));
91-
return;
92-
case SqlFunctionType.DateTimeOffsetAddYears:
93-
Visit(DateAddYear(node.Arguments[0], node.Arguments[1]));
94-
return;
95-
case SqlFunctionType.DateTimeOffsetTimeOfDay:
96-
DateTimeOffsetTimeOfDay(node.Arguments[0]).AcceptVisitor(this);
97-
return;
98-
case SqlFunctionType.DateTimeOffsetConstruct:
99-
Visit(ToDateTimeOffset(node.Arguments[0], node.Arguments[1]));
100-
return;
101-
case SqlFunctionType.DateTimeOffsetToLocalTime:
102-
DateTimeOffsetToLocalTime(node.Arguments[0]).AcceptVisitor(this);
103-
return;
104-
case SqlFunctionType.DateTimeOffsetToUtcTime:
105-
DateTimeOffsetToUtcTime(node.Arguments[0]).AcceptVisitor(this);
106-
return;
107-
case SqlFunctionType.DateTimeToDateTimeOffset:
108-
DateTimeToDateTimeOffset(node.Arguments[0]).AcceptVisitor(this);
109-
return;
88+
case SqlFunctionType.DateTimeOffsetAddMonths:
89+
Visit(DateAddMonth(node.Arguments[0], node.Arguments[1]));
90+
return;
91+
case SqlFunctionType.DateTimeOffsetAddYears:
92+
Visit(DateAddYear(node.Arguments[0], node.Arguments[1]));
93+
return;
94+
case SqlFunctionType.DateTimeOffsetTimeOfDay:
95+
DateTimeOffsetTimeOfDay(node.Arguments[0]).AcceptVisitor(this);
96+
return;
97+
case SqlFunctionType.DateTimeOffsetConstruct:
98+
Visit(ToDateTimeOffset(node.Arguments[0], node.Arguments[1]));
99+
return;
100+
case SqlFunctionType.DateTimeOffsetToLocalTime:
101+
DateTimeOffsetToLocalTime(node.Arguments[0]).AcceptVisitor(this);
102+
return;
103+
case SqlFunctionType.DateTimeOffsetToUtcTime:
104+
DateTimeOffsetToUtcTime(node.Arguments[0]).AcceptVisitor(this);
105+
return;
106+
case SqlFunctionType.DateTimeToDateTimeOffset:
107+
DateTimeToDateTimeOffset(node.Arguments[0]).AcceptVisitor(this);
108+
return;
110109
}
111110

112111
base.Visit(node);
@@ -115,15 +114,15 @@ public override void Visit(SqlFunctionCall node)
115114
public override void Visit(SqlBinary node)
116115
{
117116
switch (node.NodeType) {
118-
case SqlNodeType.DateTimeOffsetPlusInterval:
119-
DateTimeAddInterval(node.Left, node.Right).AcceptVisitor(this);
120-
return;
121-
case SqlNodeType.DateTimeOffsetMinusDateTimeOffset:
122-
DateTimeOffsetSubtractDateTimeOffset(node.Left, node.Right).AcceptVisitor(this);
123-
return;
124-
case SqlNodeType.DateTimeOffsetMinusInterval:
125-
DateTimeAddInterval(node.Left, -node.Right).AcceptVisitor(this);
126-
return;
117+
case SqlNodeType.DateTimeOffsetPlusInterval:
118+
DateTimeAddInterval(node.Left, node.Right).AcceptVisitor(this);
119+
return;
120+
case SqlNodeType.DateTimeOffsetMinusDateTimeOffset:
121+
DateTimeOffsetSubtractDateTimeOffset(node.Left, node.Right).AcceptVisitor(this);
122+
return;
123+
case SqlNodeType.DateTimeOffsetMinusInterval:
124+
DateTimeAddInterval(node.Left, -node.Right).AcceptVisitor(this);
125+
return;
127126
}
128127
base.Visit(node);
129128
}
@@ -135,64 +134,48 @@ private static SqlExpression DateTimeOffsetTruncate(SqlExpression dateTimeOffset
135134
SqlDml.Cast(dateTimeOffset, new SqlValueType(SqlDateTypeName)),
136135
new SqlValueType(SqlDateTime2TypeName));
137136

138-
private static SqlExpression DateTimeOffsetTruncateOffset(SqlExpression dateTimeOffset)
139-
{
140-
return SqlDml.Cast(dateTimeOffset, SqlType.DateTime);
141-
}
137+
private static SqlExpression DateTimeOffsetTruncateOffset(SqlExpression dateTimeOffset) =>
138+
SqlDml.Cast(dateTimeOffset, SqlType.DateTime);
142139

143-
private static SqlExpression DateTimeOffsetPartOffset(SqlExpression dateTimeOffset)
144-
{
145-
return SqlDml.DateTimeOffsetMinusDateTimeOffset(
140+
private static SqlExpression DateTimeOffsetPartOffset(SqlExpression dateTimeOffset) =>
141+
SqlDml.DateTimeOffsetMinusDateTimeOffset(
146142
DateTimeOffsetTruncateOffset(dateTimeOffset),
147-
Switchoffset(dateTimeOffset, "+00:00"));
148-
}
143+
Switchoffset(dateTimeOffset, UtcTimeZone));
149144

150-
private static SqlExpression DateTimeOffsetTimeOfDay(SqlExpression dateTimeOffset)
151-
{
152-
return SqlDml.Extract(SqlDateTimeOffsetPart.Hour, dateTimeOffset) * (60 * 60 * NanosecondsPerSecond)
145+
private static SqlExpression DateTimeOffsetTimeOfDay(SqlExpression dateTimeOffset) =>
146+
SqlDml.Extract(SqlDateTimeOffsetPart.Hour, dateTimeOffset) * (60 * 60 * NanosecondsPerSecond)
153147
+ SqlDml.Extract(SqlDateTimeOffsetPart.Minute, dateTimeOffset) * (60 * NanosecondsPerSecond)
154148
+ SqlDml.Extract(SqlDateTimeOffsetPart.Second, dateTimeOffset) * NanosecondsPerSecond
155149
+ SqlDml.Extract(SqlDateTimeOffsetPart.Millisecond, dateTimeOffset) * NanosecondsPerMillisecond;
156-
}
157150

158-
private static SqlExpression DateTimeOffsetToLocalDateTime(SqlExpression dateTimeOffset)
159-
{
160-
return SqlDml.Cast(
151+
private static SqlExpression DateTimeOffsetToLocalDateTime(SqlExpression dateTimeOffset) =>
152+
SqlDml.Cast(
161153
SqlDml.DateTimePlusInterval(
162-
Switchoffset(dateTimeOffset, "+00:00"),
154+
Switchoffset(dateTimeOffset, UtcTimeZone),
163155
SqlDml.DateTimeMinusDateTime(SqlDml.Native("getdate()"), SqlDml.Native("getutcdate()"))),
164156
SqlType.DateTime);
165-
}
166157

167-
private static SqlUserFunctionCall ToDateTimeOffset(SqlExpression dateTime, SqlExpression offsetInMinutes)
168-
{
169-
return SqlDml.FunctionCall("TODATETIMEOFFSET", dateTime, offsetInMinutes);
170-
}
158+
private static SqlUserFunctionCall ToDateTimeOffset(SqlExpression dateTime, SqlExpression offsetInMinutes) =>
159+
SqlDml.FunctionCall("TODATETIMEOFFSET", dateTime, offsetInMinutes);
171160

172-
private static SqlExpression Switchoffset(SqlExpression dateTimeOffset, SqlExpression offset)
173-
{
174-
return SqlDml.FunctionCall("SWITCHOFFSET", dateTimeOffset, offset);
175-
}
161+
private static SqlExpression Switchoffset(SqlExpression dateTimeOffset, SqlExpression offset) =>
162+
SqlDml.FunctionCall("SWITCHOFFSET", dateTimeOffset, offset);
176163

177-
private static SqlUserFunctionCall DateTimeOffsetTimeZoneInMinutes(SqlExpression date)
178-
{
179-
return SqlDml.FunctionCall("DATEPART", SqlDml.Native("TZoffset"), date);
180-
}
164+
private static SqlUserFunctionCall DateTimeOffsetTimeZoneInMinutes(SqlExpression date) =>
165+
SqlDml.FunctionCall("DATEPART", SqlDml.Native("TZoffset"), date);
181166

182-
private static SqlExpression DateTimeOffsetToLocalTime(SqlExpression dateTimeOffset)
183-
{
184-
return Switchoffset(dateTimeOffset, DateTimeOffsetTimeZoneInMinutes(SqlDml.Native("SYSDATETIMEOFFSET()")));
185-
}
167+
private static SqlExpression DateTimeOffsetToLocalTime(SqlExpression dateTimeOffset) =>
168+
Switchoffset(dateTimeOffset, DateTimeOffsetTimeZoneInMinutes(SqlDml.Native("SYSDATETIMEOFFSET()")));
186169

187-
private static SqlExpression DateTimeOffsetToUtcTime(SqlExpression dateTimeOffset)
188-
{
189-
return Switchoffset(dateTimeOffset, "+00:00");
190-
}
170+
private static SqlExpression DateTimeOffsetToUtcTime(SqlExpression dateTimeOffset) =>
171+
Switchoffset(dateTimeOffset, UtcTimeZone);
191172

192-
private static SqlExpression DateTimeToDateTimeOffset(SqlExpression dateTime)
193-
{
194-
return SqlDml.FunctionCall("TODATETIMEOFFSET", dateTime, SqlDml.FunctionCall("DATEPART", SqlDml.Native("TZoffset"), SqlDml.Native("SYSDATETIMEOFFSET()")));
195-
}
173+
private static SqlExpression DateTimeToDateTimeOffset(SqlExpression dateTime) =>
174+
SqlDml.FunctionCall("TODATETIMEOFFSET",
175+
dateTime,
176+
SqlDml.FunctionCall("DATEPART",
177+
SqlDml.Native("TZoffset"),
178+
SqlDml.Native("SYSDATETIMEOFFSET()")));
196179

197180
#endregion
198181

0 commit comments

Comments
 (0)