-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathSqlScriptGeneratorVisitor.QueryStoreDatabaseOption.cs
More file actions
97 lines (88 loc) · 3.29 KB
/
SqlScriptGeneratorVisitor.QueryStoreDatabaseOption.cs
File metadata and controls
97 lines (88 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using Microsoft.SqlServer.TransactSql.ScriptDom;
namespace Microsoft.SqlServer.TransactSql.ScriptDom.ScriptGenerator
{
partial class SqlScriptGeneratorVisitor
{
public override void ExplicitVisit(QueryStoreDatabaseOption node)
{
System.Diagnostics.Debug.Assert(node.OptionKind == DatabaseOptionKind.QueryStore);
GenerateIdentifier(CodeGenerationSupporter.QueryStore);
GenerateSpace();
if (node.Clear == true)
{
GenerateIdentifier(CodeGenerationSupporter.Clear);
}
else if (node.ClearAll == true)
{
GenerateIdentifier(CodeGenerationSupporter.Clear);
GenerateSpace();
GenerateKeyword(TSqlTokenType.All);
}
else
{
switch (node.OptionState)
{
case OptionState.Off:
GenerateSymbolAndSpace(TSqlTokenType.EqualsSign);
GenerateKeyword(TSqlTokenType.Off);
break;
case OptionState.On:
GenerateSymbolAndSpace(TSqlTokenType.EqualsSign);
GenerateKeyword(TSqlTokenType.On);
GenerateParenthesisedCommaSeparatedList(node.Options);
break;
default:
GenerateParenthesisedCommaSeparatedList(node.Options);
break;
}
}
}
public override void ExplicitVisit(QueryStoreDataFlushIntervalOption node)
{
System.Diagnostics.Debug.Assert(node.OptionKind == QueryStoreOptionKind.Flush_Interval_Seconds);
GenerateNameEqualsValue(CodeGenerationSupporter.FlushIntervalSecondsAlt, node.FlushInterval);
}
public override void ExplicitVisit(QueryStoreIntervalLengthOption node)
{
System.Diagnostics.Debug.Assert(node.OptionKind == QueryStoreOptionKind.Interval_Length_Minutes);
GenerateNameEqualsValue(CodeGenerationSupporter.IntervalLengthMinutes, node.StatsIntervalLength);
}
public override void ExplicitVisit(QueryStoreMaxStorageSizeOption node)
{
System.Diagnostics.Debug.Assert(node.OptionKind == QueryStoreOptionKind.Current_Storage_Size_MB);
GenerateNameEqualsValue(CodeGenerationSupporter.MaxQdsSize, node.MaxQdsSize);
}
public override void ExplicitVisit(QueryStoreMaxPlansPerQueryOption node)
{
System.Diagnostics.Debug.Assert(node.OptionKind == QueryStoreOptionKind.Max_Plans_Per_Query);
GenerateNameEqualsValue(CodeGenerationSupporter.MaxPlansPerQuery, node.MaxPlansPerQuery);
}
public override void ExplicitVisit(QueryStoreTimeCleanupPolicyOption node)
{
System.Diagnostics.Debug.Assert(node.OptionKind == QueryStoreOptionKind.Stale_Query_Threshold_Days);
GenerateIdentifier(CodeGenerationSupporter.CleanupPolicy);
GenerateSpace();
GenerateSymbolAndSpace(TSqlTokenType.EqualsSign);
GenerateSymbol(TSqlTokenType.LeftParenthesis);
GenerateNameEqualsValue(CodeGenerationSupporter.StaleQueryThresholdDays, node.StaleQueryThreshold);
GenerateSymbol(TSqlTokenType.RightParenthesis);
}
public override void ExplicitVisit(QueryStoreWaitStatsCaptureOption node)
{
System.Diagnostics.Debug.Assert(node.OptionKind == QueryStoreOptionKind.Wait_Stats_Capture_Mode);
GenerateIdentifier(CodeGenerationSupporter.WaitStatsCaptureMode);
GenerateSpace();
switch (node.OptionState)
{
case OptionState.Off:
GenerateSymbolAndSpace(TSqlTokenType.EqualsSign);
GenerateKeyword(TSqlTokenType.Off);
break;
case OptionState.On:
GenerateSymbolAndSpace(TSqlTokenType.EqualsSign);
GenerateKeyword(TSqlTokenType.On);
break;
}
}
}
}