Skip to content

Commit 0769e2d

Browse files
authored
Merge pull request #520 from LordJZ/nh-3917
Test & fix for NH-3917
2 parents 57ec315 + d39ef3e commit 0769e2d

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

src/NHibernate.Test/DialectTest/SQLiteDialectFixture.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System.Collections.Generic;
2+
using NHibernate.Dialect.Function;
13
using NHibernate.Mapping;
24

35
namespace NHibernate.Test.DialectTest
@@ -10,11 +12,13 @@ namespace NHibernate.Test.DialectTest
1012
public class SQLiteDialectFixture
1113
{
1214
private SQLiteDialect dialect;
15+
private SQLFunctionRegistry registry;
1316

1417
[SetUp]
1518
public void SetUp()
1619
{
1720
dialect = new SQLiteDialect();
21+
registry = new SQLFunctionRegistry(dialect, new Dictionary<string, ISQLFunction>());
1822
}
1923

2024
[Test]
@@ -23,6 +27,22 @@ public void SupportsSubSelect()
2327
Assert.IsTrue(dialect.SupportsSubSelects);
2428
}
2529

30+
[TestCase("int"), TestCase("integer"), TestCase("tinyint"), TestCase("smallint"), TestCase("bigint")]
31+
[TestCase("numeric"), TestCase("decimal"), TestCase("bit"), TestCase("money"), TestCase("smallmoney")]
32+
[TestCase("float"), TestCase("real"), TestCase("date"), TestCase("datetime"), TestCase("smalldatetime")]
33+
[TestCase("char"), TestCase("varchar"), TestCase("text"), TestCase("nvarchar"), TestCase("ntext")]
34+
[TestCase("binary"), TestCase("varbinary"), TestCase("image")]
35+
[TestCase("cursor"), TestCase("timestamp"), TestCase("uniqueidentifier"), TestCase("sql_variant")]
36+
public void WhereStringTemplate(string type)
37+
{
38+
if (!type.EndsWith(")"))
39+
WhereStringTemplate(type + "(1)");
40+
41+
const string value = "1";
42+
string sql = "(CAST(" + value + " AS " + type + "))";
43+
Assert.AreEqual(sql, Template.RenderWhereStringTemplate(sql, dialect, registry));
44+
}
45+
2646
[Test]
2747
public void UseLimit()
2848
{

src/NHibernate/Dialect/SQLiteDialect.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,32 @@ protected virtual void RegisterFunctions()
9191
protected virtual void RegisterKeywords()
9292
{
9393
RegisterKeyword("int"); // Used in our function templates.
94+
RegisterKeyword("integer"); // a commonly-used alias for 'int'
95+
RegisterKeyword("tinyint");
96+
RegisterKeyword("smallint");
97+
RegisterKeyword("bigint");
98+
RegisterKeyword("numeric");
99+
RegisterKeyword("decimal");
100+
RegisterKeyword("bit");
101+
RegisterKeyword("money");
102+
RegisterKeyword("smallmoney");
103+
RegisterKeyword("float");
104+
RegisterKeyword("real");
105+
RegisterKeyword("datetime");
106+
RegisterKeyword("smalldatetime");
107+
RegisterKeyword("char");
108+
RegisterKeyword("varchar");
109+
RegisterKeyword("text");
110+
RegisterKeyword("nchar");
111+
RegisterKeyword("nvarchar");
112+
RegisterKeyword("ntext");
113+
RegisterKeyword("binary");
114+
RegisterKeyword("varbinary");
115+
RegisterKeyword("image");
116+
RegisterKeyword("cursor");
117+
RegisterKeyword("timestamp");
118+
RegisterKeyword("uniqueidentifier");
119+
RegisterKeyword("sql_variant");
94120
}
95121

96122
protected virtual void RegisterDefaultProperties()

0 commit comments

Comments
 (0)