|
From: <ste...@us...> - 2009-05-13 09:17:48
|
Revision: 4288
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4288&view=rev
Author: steverstrong
Date: 2009-05-13 09:17:42 +0000 (Wed, 13 May 2009)
Log Message:
-----------
Removed some code smells form AST parser; specifically, improved the way it deals with SqlStrings internally, and removed a hack that was in place to support old HQL syntax.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/BooleanLiteralNode.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/JavaConstantNode.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlFragment.cs
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlNode.cs
trunk/nhibernate/src/NHibernate.Test/HQL/Ast/WithClauseFixture.cs
trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs
trunk/nhibernate/src/NHibernate.Test/Legacy/MasterDetailTest.cs
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -682,12 +682,13 @@
IASTNode CreateFromElement(string path, IASTNode pathNode, IASTNode alias, IASTNode propertyFetch)
{
- try
+ // try
{
FromElement fromElement = _currentFromClause.AddFromElement(path, alias);
fromElement.SetAllPropertyFetch(propertyFetch != null);
return fromElement;
}
+ /*
catch (Exception e)
{
// Try resolving as if it were a join
@@ -703,7 +704,7 @@
{
throw e;
}
- }
+ }*/
}
private IASTNode PreProcessPathForJoin(IASTNode node)
@@ -1111,7 +1112,6 @@
sql.whereExpr();
fromElement.SetWithClauseFragment(visitor.GetJoinAlias(), "(" + sql.GetSQL() + ")");
-
}
catch (SemanticException)
{
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -227,7 +227,7 @@
public SqlString SqlString
{
- get { return SqlString.Parse(_generator.Sql.ToString()); }
+ get { return _generator.Sql; }
}
public string QueryIdentifier
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -356,7 +356,8 @@
private class FunctionArguments : ISqlWriter
{
- private readonly List<object> args = new List<object>();
+ //private readonly List<object> args = new List<object>();
+ private readonly List<SqlString> args = new List<SqlString>();
private int argInd;
public IList Args
@@ -368,6 +369,8 @@
public void Clause(string clause)
{
+ Clause(SqlString.Parse(clause));
+ /*
if (argInd == args.Count)
{
args.Add(clause);
@@ -376,16 +379,25 @@
{
args[argInd] = args[argInd] + clause;
}
+ */
}
public void Clause(SqlString clause)
{
- Clause(clause.ToString());
+ //Clause(clause.ToString());
+ if (argInd == args.Count)
+ {
+ args.Add(clause);
+ }
+ else
+ {
+ args[argInd] = args[argInd].Append(clause);
+ }
}
public void Parameter()
{
- args.Add(SqlCommand.Parameter.Placeholder);
+ args.Add(new SqlString(SqlCommand.Parameter.Placeholder));
}
public void CommaBetweenParameters(string comma)
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/BooleanLiteralNode.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/BooleanLiteralNode.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/BooleanLiteralNode.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -1,6 +1,7 @@
using System;
using Antlr.Runtime;
using NHibernate.Engine;
+using NHibernate.SqlCommand;
using NHibernate.Type;
namespace NHibernate.Hql.Ast.ANTLR.Tree
@@ -49,11 +50,11 @@
set { expectedType = value; }
}
- public override string RenderText(ISessionFactoryImplementor sessionFactory)
+ public override SqlString RenderText(ISessionFactoryImplementor sessionFactory)
{
try
{
- return GetTypeInternal().ObjectToSQLString( GetValue(), sessionFactory.Dialect );
+ return new SqlString(GetTypeInternal().ObjectToSQLString( GetValue(), sessionFactory.Dialect ));
}
catch( Exception t )
{
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -7,6 +7,7 @@
using NHibernate.Param;
using NHibernate.Persister.Collection;
using NHibernate.Persister.Entity;
+using NHibernate.SqlCommand;
using NHibernate.Type;
using NHibernate.Util;
@@ -51,7 +52,7 @@
_isAllPropertyFetch = fetch;
}
- public void SetWithClauseFragment(String withClauseJoinAlias, String withClauseFragment)
+ public void SetWithClauseFragment(String withClauseJoinAlias, string withClauseFragment)
{
_withClauseJoinAlias = withClauseJoinAlias;
_withClauseFragment = withClauseFragment;
@@ -306,6 +307,11 @@
return _elementType.RenderPropertySelect(size, k, IsAllPropertyFetch);
}
+ public override SqlString RenderText(NHibernate.Engine.ISessionFactoryImplementor sessionFactory)
+ {
+ return SqlString.Parse(Text);
+ }
+
public string RenderCollectionSelectFragment(int size, int k)
{
return _elementType.RenderCollectionSelectFragment(size, k);
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/JavaConstantNode.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/JavaConstantNode.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/JavaConstantNode.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -3,6 +3,7 @@
using Antlr.Runtime;
using NHibernate.Engine;
using NHibernate.Hql.Ast.ANTLR.Util;
+using NHibernate.SqlCommand;
using NHibernate.Type;
using NHibernate.Util;
@@ -38,12 +39,12 @@
set { _factory = value; }
}
- public override string RenderText(ISessionFactoryImplementor sessionFactory)
+ public override SqlString RenderText(ISessionFactoryImplementor sessionFactory)
{
ProcessText();
IType type = _expectedType ?? _heuristicType;
- return ResolveToLiteralString( type );
+ return new SqlString(ResolveToLiteralString( type ));
}
private string ResolveToLiteralString(IType type)
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -3,6 +3,7 @@
using Antlr.Runtime;
using NHibernate.Engine;
using NHibernate.Param;
+using NHibernate.SqlCommand;
using NHibernate.Type;
namespace NHibernate.Hql.Ast.ANTLR.Tree
@@ -46,23 +47,25 @@
}
}
- public override string RenderText(ISessionFactoryImplementor sessionFactory)
+ public override SqlString RenderText(ISessionFactoryImplementor sessionFactory)
{
int count = 0;
if (ExpectedType != null && (count = ExpectedType.GetColumnSpan(sessionFactory)) > 1)
{
- StringBuilder buffer = new StringBuilder();
- buffer.Append("(?");
+ SqlStringBuilder buffer = new SqlStringBuilder();
+ buffer.Add("(");
+ buffer.AddParameter();
for (int i = 1; i < count; i++)
{
- buffer.Append(", ?");
+ buffer.Add(",");
+ buffer.AddParameter();
}
- buffer.Append(")");
- return buffer.ToString();
+ buffer.Add(")");
+ return buffer.ToSqlString();
}
else
{
- return "?";
+ return new SqlString(Parameter.Placeholder);
}
}
}
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlFragment.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlFragment.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlFragment.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -37,6 +37,11 @@
set { _fromElement = value; }
}
+ public override SqlString RenderText(NHibernate.Engine.ISessionFactoryImplementor sessionFactory)
+ {
+ return SqlString.Parse(Text);
+ }
+
// ParameterContainer impl ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
private List<IParameterSpecification> _embeddedParameters;
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlNode.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlNode.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlNode.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -1,6 +1,7 @@
using System;
using Antlr.Runtime;
using NHibernate.Engine;
+using NHibernate.SqlCommand;
using NHibernate.Type;
namespace NHibernate.Hql.Ast.ANTLR.Tree
@@ -48,13 +49,13 @@
/// </summary>
/// <param name="sessionFactory">The session factory</param>
/// <returns>The text to use for rendering</returns>
- public virtual String RenderText(ISessionFactoryImplementor sessionFactory)
+ public virtual SqlString RenderText(ISessionFactoryImplementor sessionFactory)
{
// The basic implementation is to simply use the node's text
- return Text;
+ return new SqlString(Text);
}
- public String getOriginalText()
+ public string getOriginalText()
{
return _originalText;
}
Modified: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/WithClauseFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/WithClauseFixture.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/WithClauseFixture.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -73,7 +73,7 @@
ITransaction txn = s.BeginTransaction();
// one-to-many
- IList list =
+ IList list =
s.CreateQuery("from Human h inner join h.offspring as o with o.bodyWeight < :someLimit").SetDouble("someLimit", 1).
List();
Assert.That(list, Is.Empty, "ad-hoc on did not take effect");
Modified: trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate.Test/Legacy/FooBarTest.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -2203,7 +2203,7 @@
s = OpenSession();
baz = (Baz) s.Load(typeof(Baz), baz.Code);
Assert.AreEqual(1, baz.FooArray.Length);
- Assert.AreEqual(1, s.CreateQuery("from Baz baz, baz.FooArray foo").List().Count);
+ Assert.AreEqual(1, s.CreateQuery("from Baz baz join baz.FooArray foo").List().Count);
Assert.AreEqual(2, s.CreateQuery("from Foo foo").List().Count);
Assert.AreEqual(1, s.CreateFilter(baz.FooArray, "").List().Count);
@@ -2521,10 +2521,10 @@
if (!(Dialect is Oracle9Dialect) && !(Dialect is Oracle8iDialect))
{
s.CreateQuery(
- "select count(*) from Bar as bar, bar.Component.Glarch.ProxyArray as g where cast(g.id as Int32) in indices(bar.Baz.FooArray)").
+ "select count(*) from Bar as bar join bar.Component.Glarch.ProxyArray as g where cast(g.id as Int32) in indices(bar.Baz.FooArray)").
List();
s.CreateQuery(
- "select max( elements(bar.Baz.FooArray) ) from Bar as bar, bar.Component.Glarch.ProxyArray as g where cast(g.id as Int32) in indices(bar.Baz.FooArray)")
+ "select max( elements(bar.Baz.FooArray) ) from Bar as bar join bar.Component.Glarch.ProxyArray as g where cast(g.id as Int32) in indices(bar.Baz.FooArray)")
.List();
s.CreateQuery(
"select count(*) from Bar as bar left outer join bar.Component.Glarch.ProxyArray as pg where '1' in (from g in bar.Component.Glarch.ProxyArray)")
@@ -2547,8 +2547,8 @@
s.CreateQuery(
"select baz.Name from Bar bar join bar.Baz baz left outer join baz.FooSet foo where baz.Name = bar.String").List();
- s.CreateQuery("select baz.Name from Bar bar, bar.Baz baz, baz.FooSet foo where baz.Name = bar.String").List();
- s.CreateQuery("SELECT baz.Name FROM Bar AS bar, bar.Baz AS baz, baz.FooSet AS foo WHERE baz.Name = bar.String").List();
+ s.CreateQuery("select baz.Name from Bar bar join bar.Baz baz join baz.FooSet foo where baz.Name = bar.String").List();
+ s.CreateQuery("SELECT baz.Name FROM Bar AS bar join bar.Baz AS baz join baz.FooSet AS foo WHERE baz.Name = bar.String").List();
s.CreateQuery(
"select baz.Name from Bar bar left join bar.Baz baz left join baz.FooSet foo where baz.Name = bar.String").List();
@@ -2565,10 +2565,10 @@
s.CreateQuery("select foo from bar in class Bar inner join bar.Baz.FooSet as foo").List();
s.CreateQuery(
- "select bar.String, foo.String from bar in class Bar, bar.Baz as baz, elements(baz.FooSet) as foo where baz.Name = 'name'")
+ "select bar.String, foo.String from bar in class Bar join bar.Baz as baz, elements(baz.FooSet) as foo where baz.Name = 'name'")
.List();
- s.CreateQuery("select foo from bar in class Bar, bar.Baz as baz, baz.FooSet as foo").List();
- s.CreateQuery("select foo from bar in class Bar, bar.Baz.FooSet as foo").List();
+ s.CreateQuery("select foo from bar in class Bar join bar.Baz as baz join baz.FooSet as foo").List();
+ s.CreateQuery("select foo from bar in class Bar join bar.Baz.FooSet as foo").List();
Assert.AreEqual(1, s.CreateQuery("from Bar bar join bar.Baz.FooArray foo").List().Count);
Modified: trunk/nhibernate/src/NHibernate.Test/Legacy/MasterDetailTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Legacy/MasterDetailTest.cs 2009-05-13 06:36:41 UTC (rev 4287)
+++ trunk/nhibernate/src/NHibernate.Test/Legacy/MasterDetailTest.cs 2009-05-13 09:17:42 UTC (rev 4288)
@@ -374,9 +374,9 @@
s.CreateQuery("FROM m IN CLASS Master WHERE NOT 5 IN ( SELECT d.I FROM d IN " + path + " )").Enumerable();
}
- s.CreateQuery("SELECT m FROM m in CLASS NHibernate.DomainModel.Master, d IN " + path + " WHERE d.I=5").Enumerable();
- s.CreateQuery("SELECT m FROM m in CLASS NHibernate.DomainModel.Master, d IN " + path + " WHERE d.I=5").List();
- s.CreateQuery("SELECT m.id FROM m IN CLASS NHibernate.DomainModel.Master, d IN " + path + " WHERE d.I=5").List();
+ s.CreateQuery("SELECT m FROM m in CLASS NHibernate.DomainModel.Master join m.Details d WHERE d.I=5").Enumerable();
+ s.CreateQuery("SELECT m FROM m in CLASS NHibernate.DomainModel.Master join m.Details d WHERE d.I=5").List();
+ s.CreateQuery("SELECT m.id FROM m IN CLASS NHibernate.DomainModel.Master join m.Details d WHERE d.I=5").List();
t.Commit();
s.Close();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|