Skip to content

Commit e3329bc

Browse files
authored
Merge pull request #176 from mk3008/173-where-token-is-mistaken-for-a-table-alias
Supports uppercase tokens
2 parents 04083ef + 5d70ce5 commit e3329bc

File tree

4 files changed

+25
-3
lines changed

4 files changed

+25
-3
lines changed

src/SqModel/Analysis/ConditionGroupParser.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ internal static ConditionGroup Parse(SqlParser parser, string starttoken)
2020
q.First(); //skip start token token
2121

2222
var isFirst = true;
23-
while (!parser.ConditionBreakTokens.Contains(parser.CurrentToken) && parser.CurrentToken.IsNotEmpty())
23+
while (!parser.ConditionBreakTokens.Contains(parser.CurrentToken.ToLower()) && parser.CurrentToken.IsNotEmpty())
2424
{
2525
var op = string.Empty;
2626
var sop = string.Empty;

src/SqModel/Analysis/ValueClauseParser.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ private static IValueClause ParseCore(SqlParser parser)
9696
}
9797

9898
q.First();
99-
if (parser.CurrentToken.IsEmpty() || parser.ValueBreakTokens.Contains(parser.CurrentToken)) return ToCommandValue(cache);
99+
if (parser.CurrentToken.IsEmpty() || parser.ValueBreakTokens.Contains(parser.CurrentToken.ToLower())) return ToCommandValue(cache);
100100
if (parser.CurrentToken.IsWord() && parser.CurrentToken.ToLower() != "is" && parser.CurrentToken.ToLower() != "null") return ToCommandValue(cache);
101101
if (parser.CurrentToken.IsConjunction()) return ToCommandValue(cache);
102102

src/SqModel/SqModel.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<PackageProjectUrl>https://github.com/mk3008/SqModel</PackageProjectUrl>
99
<AssemblyVersion></AssemblyVersion>
1010
<FileVersion></FileVersion>
11-
<Version>0.8.14</Version>
11+
<Version>0.8.15</Version>
1212
<PackageTags>Sql;QueryBuilder;SqlParser;SqlBuilder;</PackageTags>
1313
<PackageReadmeFile>README.md</PackageReadmeFile>
1414
<Description>Parse and build select queries.</Description>

test/SqModelTest/AnalysisTest/ParseTest.cs

+22
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,28 @@ from A
4747
Assert.Equal(expect, text);
4848
}
4949

50+
[Fact]
51+
public void UpperCaseGroupByHavingByOrderBy()
52+
{
53+
var sq = SqlParser.Parse(@"SELECT SUM(V.VAL) FROM dbo.V WHERE (V.VAL = 1) GROUP BY V.VAL, V.VAL2 HAVING SUM(V.VAL) > 10 ORDER BY V.VAL");
54+
55+
var text = sq.ToQuery().CommandText;
56+
var expect = @"select
57+
SUM(V.VAL)
58+
from dbo.V
59+
where
60+
(V.VAL = 1)
61+
group by
62+
V.VAL
63+
, V.VAL2
64+
having
65+
SUM(V.VAL) > 10
66+
order by
67+
V.VAL";
68+
Assert.Equal(expect, text);
69+
}
70+
71+
5072
[Fact]
5173
public void Parameter()
5274
{

0 commit comments

Comments
 (0)