Skip to content

Commit ba86ca5

Browse files
authored
Adding a test to verify parsing Select With no hints (#94)
* Adding a test to verify parsing Select With no hints * Fixing the token info issue for select options * fixing a bug
1 parent 82b9d6c commit ba86ca5

File tree

10 files changed

+168
-24
lines changed

10 files changed

+168
-24
lines changed

SqlScriptDom/Parser/TSql/TSql100.g

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15658,36 +15658,44 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
1565815658
: tHashLoop:Identifier Join
1565915659
{
1566015660
vResult.HintKind = ParseJoinOptimizerHint(tHashLoop);
15661+
UpdateTokenInfo(vResult, tHashLoop);
1566115662
}
15662-
| Merge Join
15663+
| tMerge:Merge Join
1566315664
{
1566415665
vResult.HintKind = OptimizerHintKind.MergeJoin;
15666+
UpdateTokenInfo(vResult, tMerge);
1566515667
}
15666-
| tConcatHashKeep:Identifier Union
15668+
| tConcatHashKeep:Identifier Union
1566715669
{
1566815670
vResult.HintKind = ParseUnionOptimizerHint(tConcatHashKeep);
15671+
UpdateTokenInfo(vResult, tConcatHashKeep);
1566915672
}
15670-
| Merge Union
15673+
| tMergeUnion:Merge Union
1567115674
{
1567215675
vResult.HintKind = OptimizerHintKind.MergeUnion;
15676+
UpdateTokenInfo(vResult, tMergeUnion);
1567315677
}
1567415678
| tForce:Identifier Order
1567515679
{
1567615680
Match(tForce, CodeGenerationSupporter.Force);
1567715681
vResult.HintKind = OptimizerHintKind.ForceOrder;
15682+
UpdateTokenInfo(vResult, tForce);
1567815683
}
1567915684
| tHash:Identifier Group
1568015685
{
1568115686
Match(tHash, CodeGenerationSupporter.Hash);
1568215687
vResult.HintKind = OptimizerHintKind.HashGroup;
15688+
UpdateTokenInfo(vResult, tHash);
1568315689
}
1568415690
| tOrder:Order Group
1568515691
{
1568615692
vResult.HintKind = OptimizerHintKind.OrderGroup;
15693+
UpdateTokenInfo(vResult, tOrder);
1568715694
}
1568815695
| tPlan:Identifier Plan
1568915696
{
1569015697
vResult.HintKind = PlanOptimizerHintHelper.Instance.ParseOption(tPlan, SqlVersionFlags.TSql100);
15698+
UpdateTokenInfo(vResult, tPlan);
1569115699
}
1569215700
| tFirstWord:Identifier tSecondWord:Identifier
1569315701
(
@@ -15713,19 +15721,22 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
1571315721
Match(tFirstWord, CodeGenerationSupporter.Bypass);
1571415722
Match(tSecondWord, CodeGenerationSupporter.OptimizerQueue);
1571515723
vResult.HintKind = OptimizerHintKind.BypassOptimizerQueue;
15716-
}
15724+
}
15725+
UpdateTokenInfo(vResult, tFirstWord);
1571715726
}
1571815727
| tUnion2:Union All
1571915728
{
1572015729
Match(tFirstWord, CodeGenerationSupporter.Optimize);
1572115730
Match(tSecondWord, CodeGenerationSupporter.Correlated);
1572215731
vResult.HintKind = OptimizerHintKind.OptimizeCorrelatedUnionAll;
15732+
UpdateTokenInfo(vResult, tUnion2);
1572315733
}
1572415734
)
1572515735
| tRecompile:Identifier
1572615736
{
1572715737
Match(tRecompile, CodeGenerationSupporter.Recompile);
1572815738
vResult.HintKind = OptimizerHintKind.Recompile;
15739+
UpdateTokenInfo(vResult, tRecompile);
1572915740
}
1573015741
;
1573115742

SqlScriptDom/Parser/TSql/TSql110.g

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17873,39 +17873,47 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
1787317873
: tHashLoop:Identifier Join
1787417874
{
1787517875
vResult.HintKind = ParseJoinOptimizerHint(tHashLoop);
17876+
UpdateTokenInfo(vResult, tHashLoop);
1787617877
}
17877-
| Merge Join
17878+
| tMerge:Merge Join
1787817879
{
1787917880
vResult.HintKind = OptimizerHintKind.MergeJoin;
17881+
UpdateTokenInfo(vResult, tMerge);
1788017882
}
17881-
| tConcatHashKeep:Identifier Union
17883+
| tConcatHashKeep:Identifier Union
1788217884
{
1788317885
vResult.HintKind = ParseUnionOptimizerHint(tConcatHashKeep);
17886+
UpdateTokenInfo(vResult, tConcatHashKeep);
1788417887
}
17885-
| Merge Union
17888+
| tMergeUnion:Merge Union
1788617889
{
1788717890
vResult.HintKind = OptimizerHintKind.MergeUnion;
17891+
UpdateTokenInfo(vResult, tMergeUnion);
1788817892
}
1788917893
| tForce:Identifier Order
1789017894
{
1789117895
Match(tForce, CodeGenerationSupporter.Force);
1789217896
vResult.HintKind = OptimizerHintKind.ForceOrder;
17897+
UpdateTokenInfo(vResult, tForce);
1789317898
}
1789417899
| tHash:Identifier Group
1789517900
{
1789617901
Match(tHash, CodeGenerationSupporter.Hash);
1789717902
vResult.HintKind = OptimizerHintKind.HashGroup;
17903+
UpdateTokenInfo(vResult, tHash);
1789817904
}
1789917905
| tOrder:Order Group
1790017906
{
1790117907
vResult.HintKind = OptimizerHintKind.OrderGroup;
17908+
UpdateTokenInfo(vResult, tOrder);
1790217909
}
1790317910
| tPlan:Identifier Plan
1790417911
{
1790517912
vResult.HintKind = PlanOptimizerHintHelper.Instance.ParseOption(tPlan, SqlVersionFlags.TSql110);
17913+
UpdateTokenInfo(vResult, tPlan);
1790617914
}
1790717915
| tFirstWord:Identifier tSecondWord:Identifier
17908-
(
17916+
(
1790917917
/* empty */
1791017918
{
1791117919
if (TryMatch(tFirstWord, CodeGenerationSupporter.Expand))
@@ -17928,13 +17936,15 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
1792817936
Match(tFirstWord, CodeGenerationSupporter.Bypass);
1792917937
Match(tSecondWord, CodeGenerationSupporter.OptimizerQueue);
1793017938
vResult.HintKind = OptimizerHintKind.BypassOptimizerQueue;
17931-
}
17939+
}
17940+
UpdateTokenInfo(vResult, tFirstWord);
1793217941
}
1793317942
| tUnion2:Union All
1793417943
{
1793517944
Match(tFirstWord, CodeGenerationSupporter.Optimize);
1793617945
Match(tSecondWord, CodeGenerationSupporter.Correlated);
1793717946
vResult.HintKind = OptimizerHintKind.OptimizeCorrelatedUnionAll;
17947+
UpdateTokenInfo(vResult, tUnion2);
1793817948
}
1793917949
)
1794017950
| tRecompileOrColumnStore:Identifier
@@ -17949,6 +17959,7 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
1794917959
Match(tRecompileOrColumnStore, CodeGenerationSupporter.IgnoreNonClusteredColumnStoreIndex);
1795017960
vResult.HintKind = OptimizerHintKind.IgnoreNonClusteredColumnStoreIndex;
1795117961
}
17962+
UpdateTokenInfo(vResult, tRecompileOrColumnStore);
1795217963
}
1795317964
;
1795417965

SqlScriptDom/Parser/TSql/TSql120.g

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18376,39 +18376,47 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
1837618376
: tHashLoop:Identifier Join
1837718377
{
1837818378
vResult.HintKind = ParseJoinOptimizerHint(tHashLoop);
18379+
UpdateTokenInfo(vResult, tHashLoop);
1837918380
}
18380-
| Merge Join
18381+
| tMerge:Merge Join
1838118382
{
1838218383
vResult.HintKind = OptimizerHintKind.MergeJoin;
18384+
UpdateTokenInfo(vResult, tMerge);
1838318385
}
18384-
| tConcatHashKeep:Identifier Union
18386+
| tConcatHashKeep:Identifier Union
1838518387
{
1838618388
vResult.HintKind = ParseUnionOptimizerHint(tConcatHashKeep);
18389+
UpdateTokenInfo(vResult, tConcatHashKeep);
1838718390
}
18388-
| Merge Union
18391+
| tMergeUnion:Merge Union
1838918392
{
1839018393
vResult.HintKind = OptimizerHintKind.MergeUnion;
18394+
UpdateTokenInfo(vResult, tMergeUnion);
1839118395
}
1839218396
| tForce:Identifier Order
1839318397
{
1839418398
Match(tForce, CodeGenerationSupporter.Force);
1839518399
vResult.HintKind = OptimizerHintKind.ForceOrder;
18400+
UpdateTokenInfo(vResult, tForce);
1839618401
}
1839718402
| tHash:Identifier Group
1839818403
{
1839918404
Match(tHash, CodeGenerationSupporter.Hash);
1840018405
vResult.HintKind = OptimizerHintKind.HashGroup;
18406+
UpdateTokenInfo(vResult, tHash);
1840118407
}
1840218408
| tOrder:Order Group
1840318409
{
1840418410
vResult.HintKind = OptimizerHintKind.OrderGroup;
18411+
UpdateTokenInfo(vResult, tOrder);
1840518412
}
1840618413
| tPlan:Identifier Plan
1840718414
{
1840818415
vResult.HintKind = PlanOptimizerHintHelper.Instance.ParseOption(tPlan, SqlVersionFlags.TSql120);
18416+
UpdateTokenInfo(vResult, tPlan);
1840918417
}
1841018418
| tFirstWord:Identifier tSecondWord:Identifier
18411-
(
18419+
(
1841218420
/* empty */
1841318421
{
1841418422
if (TryMatch(tFirstWord, CodeGenerationSupporter.Expand))
@@ -18431,13 +18439,15 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
1843118439
Match(tFirstWord, CodeGenerationSupporter.Bypass);
1843218440
Match(tSecondWord, CodeGenerationSupporter.OptimizerQueue);
1843318441
vResult.HintKind = OptimizerHintKind.BypassOptimizerQueue;
18434-
}
18442+
}
18443+
UpdateTokenInfo(vResult, tFirstWord);
1843518444
}
1843618445
| tUnion2:Union All
1843718446
{
1843818447
Match(tFirstWord, CodeGenerationSupporter.Optimize);
1843918448
Match(tSecondWord, CodeGenerationSupporter.Correlated);
1844018449
vResult.HintKind = OptimizerHintKind.OptimizeCorrelatedUnionAll;
18450+
UpdateTokenInfo(vResult, tUnion2);
1844118451
}
1844218452
)
1844318453
| tRecompileOrColumnStore:Identifier
@@ -18452,6 +18462,7 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
1845218462
Match(tRecompileOrColumnStore, CodeGenerationSupporter.IgnoreNonClusteredColumnStoreIndex);
1845318463
vResult.HintKind = OptimizerHintKind.IgnoreNonClusteredColumnStoreIndex;
1845418464
}
18465+
UpdateTokenInfo(vResult, tRecompileOrColumnStore);
1845518466
}
1845618467
;
1845718468

SqlScriptDom/Parser/TSql/TSql130.g

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20166,36 +20166,44 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
2016620166
: tHashLoop:Identifier Join
2016720167
{
2016820168
vResult.HintKind = ParseJoinOptimizerHint(tHashLoop);
20169+
UpdateTokenInfo(vResult, tHashLoop);
2016920170
}
20170-
| Merge Join
20171+
| tMerge:Merge Join
2017120172
{
2017220173
vResult.HintKind = OptimizerHintKind.MergeJoin;
20174+
UpdateTokenInfo(vResult, tMerge);
2017320175
}
2017420176
| tConcatHashKeep:Identifier Union
2017520177
{
2017620178
vResult.HintKind = ParseUnionOptimizerHint(tConcatHashKeep);
20179+
UpdateTokenInfo(vResult, tConcatHashKeep);
2017720180
}
20178-
| Merge Union
20181+
| tMergeUnion:Merge Union
2017920182
{
2018020183
vResult.HintKind = OptimizerHintKind.MergeUnion;
20184+
UpdateTokenInfo(vResult, tMergeUnion);
2018120185
}
2018220186
| tForce:Identifier Order
2018320187
{
2018420188
Match(tForce, CodeGenerationSupporter.Force);
2018520189
vResult.HintKind = OptimizerHintKind.ForceOrder;
20190+
UpdateTokenInfo(vResult, tForce);
2018620191
}
2018720192
| tHash:Identifier Group
2018820193
{
2018920194
Match(tHash, CodeGenerationSupporter.Hash);
2019020195
vResult.HintKind = OptimizerHintKind.HashGroup;
20196+
UpdateTokenInfo(vResult, tHash);
2019120197
}
2019220198
| tOrder:Order Group
2019320199
{
2019420200
vResult.HintKind = OptimizerHintKind.OrderGroup;
20201+
UpdateTokenInfo(vResult, tOrder);
2019520202
}
2019620203
| tPlan:Identifier Plan
2019720204
{
2019820205
vResult.HintKind = PlanOptimizerHintHelper.Instance.ParseOption(tPlan, SqlVersionFlags.TSql130);
20206+
UpdateTokenInfo(vResult, tPlan);
2019920207
}
2020020208
| tFirstWord:Identifier tSecondWord:Identifier
2020120209
(
@@ -20222,17 +20230,20 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
2022220230
Match(tSecondWord, CodeGenerationSupporter.OptimizerQueue);
2022320231
vResult.HintKind = OptimizerHintKind.BypassOptimizerQueue;
2022420232
}
20233+
UpdateTokenInfo(vResult, tFirstWord);
2022520234
}
2022620235
| tUnion2:Union All
2022720236
{
2022820237
Match(tFirstWord, CodeGenerationSupporter.Optimize);
2022920238
Match(tSecondWord, CodeGenerationSupporter.Correlated);
2023020239
vResult.HintKind = OptimizerHintKind.OptimizeCorrelatedUnionAll;
20240+
UpdateTokenInfo(vResult, tUnion2);
2023120241
}
2023220242
)
2023320243
| tMonoHint:Identifier
2023420244
{
2023520245
vResult.HintKind = MonoOptimizerHintHelper.Instance.ParseOption(tMonoHint, SqlVersionFlags.TSql130);
20246+
UpdateTokenInfo(vResult, tMonoHint);
2023620247
}
2023720248
;
2023820249

SqlScriptDom/Parser/TSql/TSql140.g

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20728,36 +20728,44 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
2072820728
: tHashLoop:Identifier Join
2072920729
{
2073020730
vResult.HintKind = ParseJoinOptimizerHint(tHashLoop);
20731+
UpdateTokenInfo(vResult, tHashLoop);
2073120732
}
20732-
| Merge Join
20733+
| tMerge:Merge Join
2073320734
{
2073420735
vResult.HintKind = OptimizerHintKind.MergeJoin;
20736+
UpdateTokenInfo(vResult, tMerge);
2073520737
}
2073620738
| tConcatHashKeep:Identifier Union
2073720739
{
2073820740
vResult.HintKind = ParseUnionOptimizerHint(tConcatHashKeep);
20741+
UpdateTokenInfo(vResult, tConcatHashKeep);
2073920742
}
20740-
| Merge Union
20743+
| tMergeUnion:Merge Union
2074120744
{
2074220745
vResult.HintKind = OptimizerHintKind.MergeUnion;
20746+
UpdateTokenInfo(vResult, tMergeUnion);
2074320747
}
2074420748
| tForce:Identifier Order
2074520749
{
2074620750
Match(tForce, CodeGenerationSupporter.Force);
2074720751
vResult.HintKind = OptimizerHintKind.ForceOrder;
20752+
UpdateTokenInfo(vResult, tForce);
2074820753
}
2074920754
| tHash:Identifier Group
2075020755
{
2075120756
Match(tHash, CodeGenerationSupporter.Hash);
2075220757
vResult.HintKind = OptimizerHintKind.HashGroup;
20758+
UpdateTokenInfo(vResult, tHash);
2075320759
}
2075420760
| tOrder:Order Group
2075520761
{
2075620762
vResult.HintKind = OptimizerHintKind.OrderGroup;
20763+
UpdateTokenInfo(vResult, tOrder);
2075720764
}
2075820765
| tPlan:Identifier Plan
2075920766
{
2076020767
vResult.HintKind = PlanOptimizerHintHelper.Instance.ParseOption(tPlan, SqlVersionFlags.TSql140);
20768+
UpdateTokenInfo(vResult, tPlan);
2076120769
}
2076220770
| tFirstWord:Identifier tSecondWord:Identifier
2076320771
(
@@ -20784,17 +20792,20 @@ simpleOptimizerHint returns [OptimizerHint vResult = FragmentFactory.CreateFragm
2078420792
Match(tSecondWord, CodeGenerationSupporter.OptimizerQueue);
2078520793
vResult.HintKind = OptimizerHintKind.BypassOptimizerQueue;
2078620794
}
20795+
UpdateTokenInfo(vResult, tFirstWord);
2078720796
}
2078820797
| tUnion2:Union All
2078920798
{
2079020799
Match(tFirstWord, CodeGenerationSupporter.Optimize);
2079120800
Match(tSecondWord, CodeGenerationSupporter.Correlated);
2079220801
vResult.HintKind = OptimizerHintKind.OptimizeCorrelatedUnionAll;
20802+
UpdateTokenInfo(vResult, tUnion2);
2079320803
}
2079420804
)
2079520805
| tMonoHint:Identifier
2079620806
{
2079720807
vResult.HintKind = MonoOptimizerHintHelper.Instance.ParseOption(tMonoHint, SqlVersionFlags.TSql140);
20808+
UpdateTokenInfo(vResult, tMonoHint);
2079820809
}
2079920810
;
2080020811

0 commit comments

Comments
 (0)