From: <jul...@us...> - 2010-12-04 02:27:10
|
Revision: 5288 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5288&view=rev Author: julian-maughan Date: 2010-12-04 02:27:02 +0000 (Sat, 04 Dec 2010) Log Message: ----------- Added some Linq support for Dictionary collections (ref. NH-2416, NH-2423). Based on a patch from Diego Mijelshon. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeBuilder.cs trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeNode.cs trunk/nhibernate/src/NHibernate/Linq/Functions/DefaultLinqToHqlGeneratorsRegistry.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate.DomainModel/NHSpecific/BasicClass.cs trunk/nhibernate/src/NHibernate.DomainModel/NHSpecific/BasicClass.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/BasicClassFixture.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate/Linq/Functions/DictionaryGenerator.cs Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeBuilder.cs 2010-12-03 09:20:26 UTC (rev 5287) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeBuilder.cs 2010-12-04 02:27:02 UTC (rev 5288) @@ -5,430 +5,440 @@ namespace NHibernate.Hql.Ast { - public class HqlTreeBuilder - { - private readonly IASTFactory _factory; + public class HqlTreeBuilder + { + private readonly IASTFactory _factory; - public HqlTreeBuilder() - { - _factory = new ASTFactory(new ASTTreeAdaptor()); - } + public HqlTreeBuilder() + { + _factory = new ASTFactory(new ASTTreeAdaptor()); + } - public HqlQuery Query() - { - return new HqlQuery(_factory); - } + public HqlQuery Query() + { + return new HqlQuery(_factory); + } - public HqlQuery Query(HqlSelectFrom selectFrom) - { - return new HqlQuery(_factory, selectFrom); - } + public HqlQuery Query(HqlSelectFrom selectFrom) + { + return new HqlQuery(_factory, selectFrom); + } - public HqlQuery Query(HqlSelectFrom selectFrom, HqlWhere where) - { - return new HqlQuery(_factory, selectFrom, where); - } + public HqlQuery Query(HqlSelectFrom selectFrom, HqlWhere where) + { + return new HqlQuery(_factory, selectFrom, where); + } - public HqlTreeNode Query(HqlSelectFrom selectFrom, HqlWhere where, HqlOrderBy orderBy) - { - return new HqlQuery(_factory, selectFrom, where, orderBy); - } + public HqlTreeNode Query(HqlSelectFrom selectFrom, HqlWhere where, HqlOrderBy orderBy) + { + return new HqlQuery(_factory, selectFrom, where, orderBy); + } - public HqlSelectFrom SelectFrom() - { - return new HqlSelectFrom(_factory); - } + public HqlSelectFrom SelectFrom() + { + return new HqlSelectFrom(_factory); + } - public HqlSelectFrom SelectFrom(HqlSelect select) - { - return new HqlSelectFrom(_factory, select); - } + public HqlSelectFrom SelectFrom(HqlSelect select) + { + return new HqlSelectFrom(_factory, select); + } - public HqlSelectFrom SelectFrom(HqlFrom @from, HqlSelect select) - { - return new HqlSelectFrom(_factory, @from, select); - } + public HqlSelectFrom SelectFrom(HqlFrom @from, HqlSelect select) + { + return new HqlSelectFrom(_factory, @from, select); + } - public HqlSelectFrom SelectFrom(HqlFrom @from) - { - return new HqlSelectFrom(_factory, @from); - } + public HqlSelectFrom SelectFrom(HqlFrom @from) + { + return new HqlSelectFrom(_factory, @from); + } - public HqlFrom From(HqlRange range) - { - return new HqlFrom(_factory, range); - } + public HqlFrom From(HqlRange range) + { + return new HqlFrom(_factory, range); + } - public HqlFrom From() - { - return new HqlFrom(_factory); - } + public HqlFrom From() + { + return new HqlFrom(_factory); + } - public HqlRange Range(HqlIdent ident) - { - return new HqlRange(_factory, ident); - } + public HqlRange Range(HqlIdent ident) + { + return new HqlRange(_factory, ident); + } - public HqlRange Range(HqlTreeNode ident, HqlAlias alias) - { - return new HqlRange(_factory, ident, alias); - } + public HqlRange Range(HqlTreeNode ident, HqlAlias alias) + { + return new HqlRange(_factory, ident, alias); + } - public HqlIdent Ident(string ident) - { - return new HqlIdent(_factory, ident); - } + public HqlIdent Ident(string ident) + { + return new HqlIdent(_factory, ident); + } - public HqlIdent Ident(System.Type type) - { - return new HqlIdent(_factory, type); - } + public HqlIdent Ident(System.Type type) + { + return new HqlIdent(_factory, type); + } - public HqlAlias Alias(string alias) - { - return new HqlAlias(_factory, alias); - } + public HqlAlias Alias(string alias) + { + return new HqlAlias(_factory, alias); + } - public HqlEquality Equality(HqlExpression lhs, HqlExpression rhs) - { - return new HqlEquality(_factory, lhs, rhs); - } + public HqlEquality Equality(HqlExpression lhs, HqlExpression rhs) + { + return new HqlEquality(_factory, lhs, rhs); + } - public HqlBooleanAnd BooleanAnd(HqlBooleanExpression lhs, HqlBooleanExpression rhs) - { - return new HqlBooleanAnd(_factory, lhs, rhs); - } + public HqlBooleanAnd BooleanAnd(HqlBooleanExpression lhs, HqlBooleanExpression rhs) + { + return new HqlBooleanAnd(_factory, lhs, rhs); + } - public HqlBooleanOr BooleanOr(HqlBooleanExpression lhs, HqlBooleanExpression rhs) - { - return new HqlBooleanOr(_factory, lhs, rhs); - } + public HqlBooleanOr BooleanOr(HqlBooleanExpression lhs, HqlBooleanExpression rhs) + { + return new HqlBooleanOr(_factory, lhs, rhs); + } - public HqlAdd Add(HqlExpression lhs, HqlExpression rhs) - { - return new HqlAdd(_factory, lhs, rhs); - } + public HqlAdd Add(HqlExpression lhs, HqlExpression rhs) + { + return new HqlAdd(_factory, lhs, rhs); + } - public HqlSubtract Subtract(HqlExpression lhs, HqlExpression rhs) - { - return new HqlSubtract(_factory, lhs, rhs); - } + public HqlSubtract Subtract(HqlExpression lhs, HqlExpression rhs) + { + return new HqlSubtract(_factory, lhs, rhs); + } - public HqlMultiplty Multiply(HqlExpression lhs, HqlExpression rhs) - { - return new HqlMultiplty(_factory, lhs, rhs); - } + public HqlMultiplty Multiply(HqlExpression lhs, HqlExpression rhs) + { + return new HqlMultiplty(_factory, lhs, rhs); + } - public HqlDivide Divide(HqlExpression lhs, HqlExpression rhs) - { - return new HqlDivide(_factory, lhs, rhs); - } + public HqlDivide Divide(HqlExpression lhs, HqlExpression rhs) + { + return new HqlDivide(_factory, lhs, rhs); + } - public HqlDot Dot(HqlExpression lhs, HqlExpression rhs) - { - return new HqlDot(_factory, lhs, rhs); - } + public HqlDot Dot(HqlExpression lhs, HqlExpression rhs) + { + return new HqlDot(_factory, lhs, rhs); + } - public HqlParameter Parameter(string name) - { - return new HqlParameter(_factory, name); - } + public HqlParameter Parameter(string name) + { + return new HqlParameter(_factory, name); + } - public HqlWhere Where(HqlExpression expression) - { - return new HqlWhere(_factory, expression); - } + public HqlWhere Where(HqlExpression expression) + { + return new HqlWhere(_factory, expression); + } - // TODO - constant will be removed when we have parameter handling done properly. Particularly bad datetime handling here, so it'll be good to delete it :) - public HqlConstant Constant(object value) - { - if (value == null) - { - return new HqlNull(_factory); - } + // TODO - constant will be removed when we have parameter handling done properly. Particularly bad datetime handling here, so it'll be good to delete it :) + public HqlConstant Constant(object value) + { + if (value == null) + { + return new HqlNull(_factory); + } - switch (System.Type.GetTypeCode(value.GetType())) - { - case TypeCode.Int16: - case TypeCode.Int32: - case TypeCode.Int64: - return new HqlIntegerConstant(_factory, value.ToString()); - case TypeCode.Single: - return new HqlFloatConstant(_factory, value.ToString()); - case TypeCode.Double: - return new HqlDoubleConstant(_factory, value.ToString()); - case TypeCode.Decimal: - return new HqlDecimalConstant(_factory, value.ToString()); - case TypeCode.String: - case TypeCode.Char: - return new HqlStringConstant(_factory, "\'" + value + "\'"); - case TypeCode.DateTime: - return new HqlStringConstant(_factory, "\'" + (DateTime)value + "\'"); - case TypeCode.Boolean: - return new HqlStringConstant(_factory, "\'" + ((bool)value ? "true" : "false") + "\'"); - default: - throw new NotSupportedException(string.Format("The constant for '{0}' is not supported", value)); - } - } + switch (System.Type.GetTypeCode(value.GetType())) + { + case TypeCode.Int16: + case TypeCode.Int32: + case TypeCode.Int64: + return new HqlIntegerConstant(_factory, value.ToString()); + case TypeCode.Single: + return new HqlFloatConstant(_factory, value.ToString()); + case TypeCode.Double: + return new HqlDoubleConstant(_factory, value.ToString()); + case TypeCode.Decimal: + return new HqlDecimalConstant(_factory, value.ToString()); + case TypeCode.String: + case TypeCode.Char: + return new HqlStringConstant(_factory, "\'" + value + "\'"); + case TypeCode.DateTime: + return new HqlStringConstant(_factory, "\'" + (DateTime)value + "\'"); + case TypeCode.Boolean: + return new HqlStringConstant(_factory, "\'" + ((bool)value ? "true" : "false") + "\'"); + default: + throw new NotSupportedException(string.Format("The constant for '{0}' is not supported", value)); + } + } - public HqlOrderBy OrderBy() - { - return new HqlOrderBy(_factory); - } + public HqlOrderBy OrderBy() + { + return new HqlOrderBy(_factory); + } - public HqlSelect Select(HqlExpression expression) - { - return new HqlSelect(_factory, expression); - } + public HqlSelect Select(HqlExpression expression) + { + return new HqlSelect(_factory, expression); + } - public HqlSelect Select(params HqlExpression[] expression) - { - return new HqlSelect(_factory, expression); - } + public HqlSelect Select(params HqlExpression[] expression) + { + return new HqlSelect(_factory, expression); + } - public HqlSelect Select(IEnumerable<HqlExpression> expressions) - { - return new HqlSelect(_factory, expressions.ToArray()); - } + public HqlSelect Select(IEnumerable<HqlExpression> expressions) + { + return new HqlSelect(_factory, expressions.ToArray()); + } - public HqlCase Case(HqlWhen[] whenClauses) - { - return new HqlCase(_factory, whenClauses, null); - } + public HqlCase Case(HqlWhen[] whenClauses) + { + return new HqlCase(_factory, whenClauses, null); + } - public HqlCase Case(HqlWhen[] whenClauses, HqlExpression ifFalse) - { - return new HqlCase(_factory, whenClauses, ifFalse); - } + public HqlCase Case(HqlWhen[] whenClauses, HqlExpression ifFalse) + { + return new HqlCase(_factory, whenClauses, ifFalse); + } - public HqlWhen When(HqlExpression predicate, HqlExpression ifTrue) - { - return new HqlWhen(_factory, predicate, ifTrue); - } + public HqlWhen When(HqlExpression predicate, HqlExpression ifTrue) + { + return new HqlWhen(_factory, predicate, ifTrue); + } - public HqlElse Else(HqlExpression ifFalse) - { - return new HqlElse(_factory, ifFalse); - } + public HqlElse Else(HqlExpression ifFalse) + { + return new HqlElse(_factory, ifFalse); + } - public HqlInequality Inequality(HqlExpression lhs, HqlExpression rhs) - { - return new HqlInequality(_factory, lhs, rhs); - } + public HqlInequality Inequality(HqlExpression lhs, HqlExpression rhs) + { + return new HqlInequality(_factory, lhs, rhs); + } - public HqlLessThan LessThan(HqlExpression lhs, HqlExpression rhs) - { - return new HqlLessThan(_factory, lhs, rhs); - } + public HqlLessThan LessThan(HqlExpression lhs, HqlExpression rhs) + { + return new HqlLessThan(_factory, lhs, rhs); + } - public HqlLessThanOrEqual LessThanOrEqual(HqlExpression lhs, HqlExpression rhs) - { - return new HqlLessThanOrEqual(_factory, lhs, rhs); - } + public HqlLessThanOrEqual LessThanOrEqual(HqlExpression lhs, HqlExpression rhs) + { + return new HqlLessThanOrEqual(_factory, lhs, rhs); + } - public HqlGreaterThan GreaterThan(HqlExpression lhs, HqlExpression rhs) - { - return new HqlGreaterThan(_factory, lhs, rhs); - } + public HqlGreaterThan GreaterThan(HqlExpression lhs, HqlExpression rhs) + { + return new HqlGreaterThan(_factory, lhs, rhs); + } - public HqlGreaterThanOrEqual GreaterThanOrEqual(HqlExpression lhs, HqlExpression rhs) - { - return new HqlGreaterThanOrEqual(_factory, lhs, rhs); - } + public HqlGreaterThanOrEqual GreaterThanOrEqual(HqlExpression lhs, HqlExpression rhs) + { + return new HqlGreaterThanOrEqual(_factory, lhs, rhs); + } - public HqlCount Count() - { - return new HqlCount(_factory); - } + public HqlCount Count() + { + return new HqlCount(_factory); + } - public HqlCount Count(HqlExpression child) - { - return new HqlCount(_factory, child); - } + public HqlCount Count(HqlExpression child) + { + return new HqlCount(_factory, child); + } - public HqlRowStar RowStar() - { - return new HqlRowStar(_factory); - } + public HqlRowStar RowStar() + { + return new HqlRowStar(_factory); + } - public HqlCast Cast(HqlExpression expression, System.Type type) - { - return new HqlCast(_factory, expression, type); - } + public HqlCast Cast(HqlExpression expression, System.Type type) + { + return new HqlCast(_factory, expression, type); + } - public HqlBitwiseNot BitwiseNot() - { - return new HqlBitwiseNot(_factory); - } + public HqlBitwiseNot BitwiseNot() + { + return new HqlBitwiseNot(_factory); + } - public HqlBooleanNot BooleanNot(HqlBooleanExpression operand) - { - return new HqlBooleanNot(_factory, operand); - } + public HqlBooleanNot BooleanNot(HqlBooleanExpression operand) + { + return new HqlBooleanNot(_factory, operand); + } - public HqlAverage Average(HqlExpression expression) - { - return new HqlAverage(_factory, expression); - } + public HqlAverage Average(HqlExpression expression) + { + return new HqlAverage(_factory, expression); + } - public HqlSum Sum(HqlExpression expression) - { - return new HqlSum(_factory, expression); - } + public HqlSum Sum(HqlExpression expression) + { + return new HqlSum(_factory, expression); + } - public HqlMin Min(HqlExpression expression) - { - return new HqlMin(_factory, expression); - } + public HqlMin Min(HqlExpression expression) + { + return new HqlMin(_factory, expression); + } - public HqlMax Max(HqlExpression expression) - { - return new HqlMax(_factory, expression); - } + public HqlMax Max(HqlExpression expression) + { + return new HqlMax(_factory, expression); + } - public HqlJoin Join(HqlExpression expression, HqlAlias @alias) - { - return new HqlJoin(_factory, expression, @alias); - } + public HqlJoin Join(HqlExpression expression, HqlAlias @alias) + { + return new HqlJoin(_factory, expression, @alias); + } - public HqlAny Any() - { - return new HqlAny(_factory); - } + public HqlAny Any() + { + return new HqlAny(_factory); + } - public HqlExists Exists(HqlQuery query) - { - return new HqlExists(_factory, query); - } + public HqlExists Exists(HqlQuery query) + { + return new HqlExists(_factory, query); + } - public HqlElements Elements() - { - return new HqlElements(_factory); - } + public HqlElements Elements() + { + return new HqlElements(_factory); + } - public HqlDistinct Distinct() - { - return new HqlDistinct(_factory); - } + public HqlDistinct Distinct() + { + return new HqlDistinct(_factory); + } - public HqlDirectionAscending Ascending() - { - return new HqlDirectionAscending(_factory); - } + public HqlDirectionAscending Ascending() + { + return new HqlDirectionAscending(_factory); + } - public HqlDirectionDescending Descending() - { - return new HqlDirectionDescending(_factory); - } + public HqlDirectionDescending Descending() + { + return new HqlDirectionDescending(_factory); + } - public HqlGroupBy GroupBy(HqlExpression expression) - { - return new HqlGroupBy(_factory, expression); - } + public HqlGroupBy GroupBy(HqlExpression expression) + { + return new HqlGroupBy(_factory, expression); + } public HqlAll All() - { - return new HqlAll(_factory); - } + { + return new HqlAll(_factory); + } - public HqlLike Like(HqlExpression lhs, HqlExpression rhs) - { - return new HqlLike(_factory, lhs, rhs); - } + public HqlLike Like(HqlExpression lhs, HqlExpression rhs) + { + return new HqlLike(_factory, lhs, rhs); + } - public HqlConcat Concat(params HqlExpression[] args) - { - return new HqlConcat(_factory, args); - } + public HqlConcat Concat(params HqlExpression[] args) + { + return new HqlConcat(_factory, args); + } - public HqlMethodCall MethodCall(string methodName, IEnumerable<HqlExpression> parameters) - { - return new HqlMethodCall(_factory, methodName, parameters); - } + public HqlMethodCall MethodCall(string methodName, IEnumerable<HqlExpression> parameters) + { + return new HqlMethodCall(_factory, methodName, parameters); + } - public HqlMethodCall MethodCall(string methodName, params HqlExpression[] parameters) - { - return new HqlMethodCall(_factory, methodName, parameters); - } + public HqlMethodCall MethodCall(string methodName, params HqlExpression[] parameters) + { + return new HqlMethodCall(_factory, methodName, parameters); + } - public HqlBooleanMethodCall BooleanMethodCall(string methodName, IEnumerable<HqlExpression> parameters) - { - return new HqlBooleanMethodCall(_factory, methodName, parameters); - } + public HqlBooleanMethodCall BooleanMethodCall(string methodName, IEnumerable<HqlExpression> parameters) + { + return new HqlBooleanMethodCall(_factory, methodName, parameters); + } - public HqlDistinctHolder DistinctHolder(params HqlTreeNode[] children) - { - return new HqlDistinctHolder(_factory, children); - } + public HqlDistinctHolder DistinctHolder(params HqlTreeNode[] children) + { + return new HqlDistinctHolder(_factory, children); + } - public HqlIsNull IsNull(HqlExpression lhs) - { - return new HqlIsNull(_factory, lhs); - } + public HqlIsNull IsNull(HqlExpression lhs) + { + return new HqlIsNull(_factory, lhs); + } - public HqlIsNotNull IsNotNull(HqlExpression lhs) - { - return new HqlIsNotNull(_factory, lhs); - } + public HqlIsNotNull IsNotNull(HqlExpression lhs) + { + return new HqlIsNotNull(_factory, lhs); + } - public HqlTreeNode ExpressionList(IEnumerable<HqlExpression> expressions) - { - return new HqlExpressionList(_factory, expressions); - } + public HqlTreeNode ExpressionList(IEnumerable<HqlExpression> expressions) + { + return new HqlExpressionList(_factory, expressions); + } - public HqlStar Star() - { - return new HqlStar(_factory); - } + public HqlStar Star() + { + return new HqlStar(_factory); + } - public HqlTrue True() - { - return new HqlTrue(_factory); - } + public HqlTrue True() + { + return new HqlTrue(_factory); + } - public HqlFalse False() - { - return new HqlFalse(_factory); - } + public HqlFalse False() + { + return new HqlFalse(_factory); + } - public HqlIn In(HqlExpression itemExpression, HqlTreeNode source) - { - return new HqlIn(_factory, itemExpression, source); - } + public HqlIn In(HqlExpression itemExpression, HqlTreeNode source) + { + return new HqlIn(_factory, itemExpression, source); + } - public HqlLeftJoin LeftJoin(HqlExpression expression, HqlAlias @alias) - { - return new HqlLeftJoin(_factory, expression, @alias); - } + public HqlLeftJoin LeftJoin(HqlExpression expression, HqlAlias @alias) + { + return new HqlLeftJoin(_factory, expression, @alias); + } - public HqlFetchJoin FetchJoin(HqlExpression expression, HqlAlias @alias) - { - return new HqlFetchJoin(_factory, expression, @alias); - } + public HqlFetchJoin FetchJoin(HqlExpression expression, HqlAlias @alias) + { + return new HqlFetchJoin(_factory, expression, @alias); + } - public HqlLeftFetchJoin LeftFetchJoin(HqlExpression expression, HqlAlias @alias) - { - return new HqlLeftFetchJoin(_factory, expression, @alias); - } + public HqlLeftFetchJoin LeftFetchJoin(HqlExpression expression, HqlAlias @alias) + { + return new HqlLeftFetchJoin(_factory, expression, @alias); + } - public HqlClass Class() - { - return new HqlClass(_factory); - } + public HqlClass Class() + { + return new HqlClass(_factory); + } - public HqlBitwiseAnd BitwiseAnd(HqlExpression lhs, HqlExpression rhs) - { - return new HqlBitwiseAnd(_factory, lhs, rhs); - } + public HqlBitwiseAnd BitwiseAnd(HqlExpression lhs, HqlExpression rhs) + { + return new HqlBitwiseAnd(_factory, lhs, rhs); + } - public HqlBitwiseOr BitwiseOr(HqlExpression lhs, HqlExpression rhs) - { - return new HqlBitwiseOr(_factory, lhs, rhs); - } + public HqlBitwiseOr BitwiseOr(HqlExpression lhs, HqlExpression rhs) + { + return new HqlBitwiseOr(_factory, lhs, rhs); + } - public HqlTreeNode Coalesce(HqlExpression lhs, HqlExpression rhs) - { - return new HqlCoalesce(_factory, lhs, rhs); - } - } + public HqlTreeNode Coalesce(HqlExpression lhs, HqlExpression rhs) + { + return new HqlCoalesce(_factory, lhs, rhs); + } + + public HqlTreeNode DictionaryItem(HqlExpression dictionary, HqlExpression index) + { + return new HqlDictionaryIndex(_factory, dictionary, index); + } + + public HqlTreeNode Indices(HqlExpression dictionary) + { + return new HqlIndices(_factory, dictionary); + } + } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeNode.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeNode.cs 2010-12-03 09:20:26 UTC (rev 5287) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/HqlTreeNode.cs 2010-12-04 02:27:02 UTC (rev 5288) @@ -6,598 +6,596 @@ namespace NHibernate.Hql.Ast { - public class HqlTreeNode - { - public IASTFactory Factory { get; private set; } - private readonly IASTNode _node; - private readonly List<HqlTreeNode> _children; + public class HqlTreeNode + { + public IASTFactory Factory { get; private set; } + private readonly IASTNode _node; + private readonly List<HqlTreeNode> _children; - protected HqlTreeNode(int type, string text, IASTFactory factory, IEnumerable<HqlTreeNode> children) - { - Factory = factory; - _node = factory.CreateNode(type, text); - _children = new List<HqlTreeNode>(); + protected HqlTreeNode(int type, string text, IASTFactory factory, IEnumerable<HqlTreeNode> children) + { + Factory = factory; + _node = factory.CreateNode(type, text); + _children = new List<HqlTreeNode>(); - AddChildren(children); - } + AddChildren(children); + } - protected HqlTreeNode(int type, string text, IASTFactory factory, params HqlTreeNode[] children) : this(type, text, factory, (IEnumerable<HqlTreeNode>) children) - { - } + protected HqlTreeNode(int type, string text, IASTFactory factory, params HqlTreeNode[] children) : this(type, text, factory, (IEnumerable<HqlTreeNode>) children) + { + } - private void AddChildren(IEnumerable<HqlTreeNode> children) - { - foreach (var child in children) - { - if (child != null) - { - if (child is HqlDistinctHolder) - { - AddChildren(child.Children); - } - else - { - _children.Add(child); - _node.AddChild(child.AstNode); - } - } - } - } + private void AddChildren(IEnumerable<HqlTreeNode> children) + { + foreach (var child in children) + { + if (child != null) + { + if (child is HqlDistinctHolder) + { + AddChildren(child.Children); + } + else + { + _children.Add(child); + _node.AddChild(child.AstNode); + } + } + } + } - public IEnumerable<HqlTreeNode> NodesPreOrder - { - get - { - yield return this; + public IEnumerable<HqlTreeNode> NodesPreOrder + { + get + { + yield return this; - foreach (var child in _children) - { - foreach (var node in child.NodesPreOrder) - { - yield return node; - } - } - } - } + foreach (var child in _children) + { + foreach (var node in child.NodesPreOrder) + { + yield return node; + } + } + } + } - public IEnumerable<HqlTreeNode> NodesPostOrder - { - get - { - foreach (var child in _children) - { - foreach (var node in child.NodesPostOrder) - { - yield return node; - } - } + public IEnumerable<HqlTreeNode> NodesPostOrder + { + get + { + foreach (var child in _children) + { + foreach (var node in child.NodesPostOrder) + { + yield return node; + } + } - yield return this; - } - } + yield return this; + } + } - public IEnumerable<HqlTreeNode> Children - { - get { return _children; } - } + public IEnumerable<HqlTreeNode> Children + { + get { return _children; } + } - public void ClearChildren() - { - _children.Clear(); - _node.ClearChildren(); - } + public void ClearChildren() + { + _children.Clear(); + _node.ClearChildren(); + } - protected void SetText(string text) - { - _node.Text = text; - } + protected void SetText(string text) + { + _node.Text = text; + } - internal IASTNode AstNode - { - get { return _node; } - } + internal IASTNode AstNode + { + get { return _node; } + } - internal void AddChild(HqlTreeNode child) - { - if (child is HqlDistinctHolder) - { - AddChildren(child.Children); - } - else - { - _children.Add(child); - _node.AddChild(child.AstNode); - } - } - } + internal void AddChild(HqlTreeNode child) + { + if (child is HqlDistinctHolder) + { + AddChildren(child.Children); + } + else + { + _children.Add(child); + _node.AddChild(child.AstNode); + } + } + } - public static class HqlTreeNodeExtensions - { - public static HqlExpression AsExpression(this HqlTreeNode node) - { - // TODO - nice error handling if cast fails - return (HqlExpression)node; - } + public static class HqlTreeNodeExtensions + { + public static HqlExpression AsExpression(this HqlTreeNode node) + { + // TODO - nice error handling if cast fails + return (HqlExpression)node; + } - public static HqlBooleanExpression AsBooleanExpression(this HqlTreeNode node) - { - if (node is HqlDot) - { - return new HqlBooleanDot(node.Factory, (HqlDot) node); - } + public static HqlBooleanExpression AsBooleanExpression(this HqlTreeNode node) + { + if (node is HqlDot) + { + return new HqlBooleanDot(node.Factory, (HqlDot) node); + } - // TODO - nice error handling if cast fails - return (HqlBooleanExpression)node; - } - - } + // TODO - nice error handling if cast fails + return (HqlBooleanExpression)node; + } + + } - public abstract class HqlStatement : HqlTreeNode - { - protected HqlStatement(int type, string text, IASTFactory factory, params HqlTreeNode[] children) - : base(type, text, factory, children) - { - } + public abstract class HqlStatement : HqlTreeNode + { + protected HqlStatement(int type, string text, IASTFactory factory, params HqlTreeNode[] children) + : base(type, text, factory, children) + { + } - protected HqlStatement(int type, string text, IASTFactory factory, IEnumerable<HqlTreeNode> children) - : base(type, text, factory, children) - { - } - } + protected HqlStatement(int type, string text, IASTFactory factory, IEnumerable<HqlTreeNode> children) + : base(type, text, factory, children) + { + } + } - public abstract class HqlExpression : HqlTreeNode - { - protected HqlExpression(int type, string text, IASTFactory factory, IEnumerable<HqlTreeNode> children) - : base(type, text, factory, children) - { - } + public abstract class HqlExpression : HqlTreeNode + { + protected HqlExpression(int type, string text, IASTFactory factory, IEnumerable<HqlTreeNode> children) + : base(type, text, factory, children) + { + } - protected HqlExpression(int type, string text, IASTFactory factory, params HqlTreeNode[] children) - : base(type, text, factory, children) - { - } - } + protected HqlExpression(int type, string text, IASTFactory factory, params HqlTreeNode[] children) + : base(type, text, factory, children) + { + } + } - public abstract class HqlBooleanExpression : HqlExpression - { - protected HqlBooleanExpression(int type, string text, IASTFactory factory, IEnumerable<HqlTreeNode> children) - : base(type, text, factory, children) - { - } + public abstract class HqlBooleanExpression : HqlExpression + { + protected HqlBooleanExpression(int type, string text, IASTFactory factory, IEnumerable<HqlTreeNode> children) + : base(type, text, factory, children) + { + } - protected HqlBooleanExpression(int type, string text, IASTFactory factory, params HqlTreeNode[] children) - : base(type, text, factory, children) - { - } - } + protected HqlBooleanExpression(int type, string text, IASTFactory factory, params HqlTreeNode[] children) + : base(type, text, factory, children) + { + } + } - public class HqlQuery : HqlExpression - { - internal HqlQuery(IASTFactory factory, params HqlStatement[] children) - : base(HqlSqlWalker.QUERY, "query", factory, children) - { - } - } + public class HqlQuery : HqlExpression + { + internal HqlQuery(IASTFactory factory, params HqlStatement[] children) + : base(HqlSqlWalker.QUERY, "query", factory, children) + { + } + } - public class HqlIdent : HqlExpression - { - internal HqlIdent(IASTFactory factory, string ident) - : base(HqlSqlWalker.IDENT, ident, factory) - { - } + public class HqlIdent : HqlExpression + { + internal HqlIdent(IASTFactory factory, string ident) + : base(HqlSqlWalker.IDENT, ident, factory) + { + } - internal HqlIdent(IASTFactory factory, System.Type type) - : base(HqlSqlWalker.IDENT, "", factory) - { - if (IsNullableType(type)) - { - type = ExtractUnderlyingTypeFromNullable(type); - } + internal HqlIdent(IASTFactory factory, System.Type type) + : base(HqlSqlWalker.IDENT, "", factory) + { + if (IsNullableType(type)) + { + type = ExtractUnderlyingTypeFromNullable(type); + } - switch (System.Type.GetTypeCode(type)) - { + switch (System.Type.GetTypeCode(type)) + { case TypeCode.Boolean: - SetText("bool"); - break; + SetText("bool"); + break; case TypeCode.Int16: - SetText("short"); - break; + SetText("short"); + break; case TypeCode.Int32: - SetText("integer"); - break; - case TypeCode.Int64: - SetText("long"); - break; - case TypeCode.Decimal: - SetText("decimal"); - break; - case TypeCode.DateTime: - SetText("datetime"); - break; + SetText("integer"); + break; + case TypeCode.Int64: + SetText("long"); + break; + case TypeCode.Decimal: + SetText("decimal"); + break; + case TypeCode.DateTime: + SetText("datetime"); + break; case TypeCode.String: - SetText("string"); - break; - case TypeCode.Double: - SetText("double"); - break; - default: + SetText("string"); + break; + case TypeCode.Double: + SetText("double"); + break; + default: if (type == typeof(Guid)) { SetText("guid"); break; } - throw new NotSupportedException(string.Format("Don't currently support idents of type {0}", type.Name)); - } - } + throw new NotSupportedException(string.Format("Don't currently support idents of type {0}", type.Name)); + } + } - private static System.Type ExtractUnderlyingTypeFromNullable(System.Type type) - { - return type.GetGenericArguments()[0]; - } + private static System.Type ExtractUnderlyingTypeFromNullable(System.Type type) + { + return type.GetGenericArguments()[0]; + } - // TODO - code duplicated in LinqExtensionMethods - private static bool IsNullableType(System.Type type) - { - return (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)); - } + // TODO - code duplicated in LinqExtensionMethods + private static bool IsNullableType(System.Type type) + { + return (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)); + } + } - } + public class HqlRange : HqlStatement + { + internal HqlRange(IASTFactory factory, params HqlTreeNode[] children) + : base(HqlSqlWalker.RANGE, "range", factory, children) + { + } + } - public class HqlRange : HqlStatement - { - internal HqlRange(IASTFactory factory, params HqlTreeNode[] children) - : base(HqlSqlWalker.RANGE, "range", factory, children) - { - } - } + public class HqlFrom : HqlStatement + { + internal HqlFrom(IASTFactory factory, params HqlTreeNode[] children) + : base(HqlSqlWalker.FROM, "from", factory, children) + { + } + } - public class HqlFrom : HqlStatement - { - internal HqlFrom(IASTFactory factory, params HqlTreeNode[] children) - : base(HqlSqlWalker.FROM, "from", factory, children) - { - } - } + public class HqlSelectFrom : HqlStatement + { + internal HqlSelectFrom(IASTFactory factory, params HqlTreeNode[] children) + : base(HqlSqlWalker.SELECT_FROM, "select_from", factory, children) + { + } + } - public class HqlSelectFrom : HqlStatement - { - internal HqlSelectFrom(IASTFactory factory, params HqlTreeNode[] children) - : base(HqlSqlWalker.SELECT_FROM, "select_from", factory, children) - { - } - } + public class HqlAlias : HqlExpression + { + public HqlAlias(IASTFactory factory, string @alias) + : base(HqlSqlWalker.ALIAS, alias, factory) + { + } + } - public class HqlAlias : HqlExpression - { - public HqlAlias(IASTFactory factory, string @alias) - : base(HqlSqlWalker.ALIAS, alias, factory) - { - } - } + public class HqlDivide : HqlExpression + { + public HqlDivide(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.DIV, "/", factory, lhs, rhs) + { + } + } - public class HqlDivide : HqlExpression - { - public HqlDivide(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.DIV, "/", factory, lhs, rhs) - { - } - } + public class HqlMultiplty : HqlExpression + { + public HqlMultiplty(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.STAR, "*", factory, lhs, rhs) + { + } + } - public class HqlMultiplty : HqlExpression - { - public HqlMultiplty(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.STAR, "*", factory, lhs, rhs) - { - } - } + public class HqlSubtract : HqlExpression + { + public HqlSubtract(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.MINUS, "-", factory, lhs, rhs) + { + } + } - public class HqlSubtract : HqlExpression - { - public HqlSubtract(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.MINUS, "-", factory, lhs, rhs) - { - } - } + public class HqlAdd : HqlExpression + { + public HqlAdd(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.PLUS, "+", factory, lhs, rhs) + { + } + } - public class HqlAdd : HqlExpression - { - public HqlAdd(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.PLUS, "+", factory, lhs, rhs) - { - } - } + public class HqlBooleanOr : HqlBooleanExpression + { + public HqlBooleanOr(IASTFactory factory, HqlBooleanExpression lhs, HqlBooleanExpression rhs) + : base(HqlSqlWalker.OR, "or", factory, lhs, rhs) + { + } + } - public class HqlBooleanOr : HqlBooleanExpression - { - public HqlBooleanOr(IASTFactory factory, HqlBooleanExpression lhs, HqlBooleanExpression rhs) - : base(HqlSqlWalker.OR, "or", factory, lhs, rhs) - { - } - } + public class HqlBooleanAnd : HqlBooleanExpression + { + public HqlBooleanAnd(IASTFactory factory, HqlBooleanExpression lhs, HqlBooleanExpression rhs) + : base(HqlSqlWalker.AND, "and", factory, lhs, rhs) + { + } + } - public class HqlBooleanAnd : HqlBooleanExpression - { - public HqlBooleanAnd(IASTFactory factory, HqlBooleanExpression lhs, HqlBooleanExpression rhs) - : base(HqlSqlWalker.AND, "and", factory, lhs, rhs) - { - } - } + public class HqlEquality : HqlBooleanExpression + { + public HqlEquality(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.EQ, "==", factory, lhs, rhs) + { + } + } - public class HqlEquality : HqlBooleanExpression - { - public HqlEquality(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.EQ, "==", factory, lhs, rhs) - { - } - } - - public class HqlParameter : HqlExpression - { - public HqlParameter(IASTFactory factory, string name) - : base(HqlSqlWalker.COLON, ":", factory) - { + public class HqlParameter : HqlExpression + { + public HqlParameter(IASTFactory factory, string name) + : base(HqlSqlWalker.COLON, ":", factory) + { AddChild(new HqlIdent(factory, name)); - } - } + } + } - public class HqlDot : HqlExpression - { - public HqlDot(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.DOT, ".", factory, lhs, rhs) - { - } - } + public class HqlDot : HqlExpression + { + public HqlDot(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.DOT, ".", factory, lhs, rhs) + { + } + } - public class HqlBooleanDot : HqlBooleanExpression - { - public HqlBooleanDot(IASTFactory factory, HqlDot dot) : base(dot.AstNode.Type, dot.AstNode.Text, factory, dot.Children) - { - } - } + public class HqlBooleanDot : HqlBooleanExpression + { + public HqlBooleanDot(IASTFactory factory, HqlDot dot) : base(dot.AstNode.Type, dot.AstNode.Text, factory, dot.Children) + { + } + } - public class HqlWhere : HqlStatement - { - public HqlWhere(IASTFactory factory, HqlExpression expression) - : base(HqlSqlWalker.WHERE, "where", factory, expression) - { - } - } + public class HqlWhere : HqlStatement + { + public HqlWhere(IASTFactory factory, HqlExpression expression) + : base(HqlSqlWalker.WHERE, "where", factory, expression) + { + } + } - public class HqlConstant : HqlExpression - { - public HqlConstant(IASTFactory factory, int type, string value) - : base(type, value, factory) - { - } - } + public class HqlConstant : HqlExpression + { + public HqlConstant(IASTFactory factory, int type, string value) + : base(type, value, factory) + { + } + } - public class HqlStringConstant : HqlConstant - { - public HqlStringConstant(IASTFactory factory, string s) - : base(factory, HqlSqlWalker.QUOTED_String, s) - { - } - } + public class HqlStringConstant : HqlConstant + { + public HqlStringConstant(IASTFactory factory, string s) + : base(factory, HqlSqlWalker.QUOTED_String, s) + { + } + } - public class HqlDoubleConstant : HqlConstant - { - public HqlDoubleConstant(IASTFactory factory, string s) - : base(factory, HqlSqlWalker.NUM_DOUBLE, s) - { - } - } + public class HqlDoubleConstant : HqlConstant + { + public HqlDoubleConstant(IASTFactory factory, string s) + : base(factory, HqlSqlWalker.NUM_DOUBLE, s) + { + } + } - public class HqlFloatConstant : HqlConstant - { - public HqlFloatConstant(IASTFactory factory, string s) - : base(factory, HqlSqlWalker.NUM_FLOAT, s) - { - } - } + public class HqlFloatConstant : HqlConstant + { + public HqlFloatConstant(IASTFactory factory, string s) + : base(factory, HqlSqlWalker.NUM_FLOAT, s) + { + } + } - public class HqlIntegerConstant : HqlConstant - { - public HqlIntegerConstant(IASTFactory factory, string s) - : base(factory, HqlSqlWalker.NUM_INT, s) - { - } - } + public class HqlIntegerConstant : HqlConstant + { + public HqlIntegerConstant(IASTFactory factory, string s) + : base(factory, HqlSqlWalker.NUM_INT, s) + { + } + } - public class HqlDecimalConstant : HqlConstant - { - public HqlDecimalConstant(IASTFactory factory, string s) - : base(factory, HqlSqlWalker.NUM_DECIMAL, s) - { - } - } + public class HqlDecimalConstant : HqlConstant + { + public HqlDecimalConstant(IASTFactory factory, string s) + : base(factory, HqlSqlWalker.NUM_DECIMAL, s) + { + } + } - public class HqlFalse : HqlConstant - { - public HqlFalse(IASTFactory factory) - : base(factory, HqlSqlWalker.FALSE, "false") - { - } - } + public class HqlFalse : HqlConstant + { + public HqlFalse(IASTFactory factory) + : base(factory, HqlSqlWalker.FALSE, "false") + { + } + } - public class HqlTrue : HqlConstant - { - public HqlTrue(IASTFactory factory) - : base(factory, HqlSqlWalker.TRUE, "true") - { - } - } + public class HqlTrue : HqlConstant + { + public HqlTrue(IASTFactory factory) + : base(factory, HqlSqlWalker.TRUE, "true") + { + } + } + public class HqlNull : HqlConstant + { + public HqlNull(IASTFactory factory) + : base(factory, HqlSqlWalker.NULL, "null") + { + } + } - public class HqlNull : HqlConstant - { - public HqlNull(IASTFactory factory) - : base(factory, HqlSqlWalker.NULL, "null") - { - } - } + public class HqlOrderBy : HqlStatement + { + public HqlOrderBy(IASTFactory factory) + : base(HqlSqlWalker.ORDER, "order by", factory) + { + } + } - public class HqlOrderBy : HqlStatement - { - public HqlOrderBy(IASTFactory factory) - : base(HqlSqlWalker.ORDER, "order by", factory) - { - } - } + public enum HqlDirection + { + Ascending, + Descending + } - public enum HqlDirection - { - Ascending, - Descending - } + public class HqlDirectionStatement : HqlStatement + { + public HqlDirectionStatement(int type, string text, IASTFactory factory) + : base(type, text, factory) + { + } + } - public class HqlDirectionStatement : HqlStatement - { - public HqlDirectionStatement(int type, string text, IASTFactory factory) - : base(type, text, factory) - { - } - } + public class HqlDirectionAscending : HqlDirectionStatement + { + public HqlDirectionAscending(IASTFactory factory) + : base(HqlSqlWalker.ASCENDING, "asc", factory) + { + } + } - public class HqlDirectionAscending : HqlDirectionStatement - { - public HqlDirectionAscending(IASTFactory factory) - : base(HqlSqlWalker.ASCENDING, "asc", factory) - { - } - } + public class HqlDirectionDescending : HqlDirectionStatement + { + public HqlDirectionDescending(IASTFactory factory) + : base(HqlSqlWalker.DESCENDING, "desc", factory) + { + } + } - public class HqlDirectionDescending : HqlDirectionStatement - { - public HqlDirectionDescending(IASTFactory factory) - : base(HqlSqlWalker.DESCENDING, "desc", factory) - { - } - } + public class HqlSelect : HqlStatement + { + public HqlSelect(IASTFactory factory, params HqlExpression[] expression) + : base(HqlSqlWalker.SELECT, "select", factory, expression) + { + } + } - public class HqlSelect : HqlStatement - { - public HqlSelect(IASTFactory factory, params HqlExpression[] expression) - : base(HqlSqlWalker.SELECT, "select", factory, expression) - { - } - } + public class HqlElse : HqlStatement + { + public HqlElse(IASTFactory factory, HqlExpression ifFalse) + : base(HqlSqlWalker.ELSE, "else", factory, ifFalse) + { + } + } - public class HqlElse : HqlStatement - { - public HqlElse(IASTFactory factory, HqlExpression ifFalse) - : base(HqlSqlWalker.ELSE, "else", factory, ifFalse) - { - } - } + public class HqlWhen : HqlStatement + { + public HqlWhen(IASTFactory factory, HqlExpression predicate, HqlExpression ifTrue) + : base(HqlSqlWalker.WHEN, "when", factory, predicate, ifTrue) + { + } + } - public class HqlWhen : HqlStatement - { - public HqlWhen(IASTFactory factory, HqlExpression predicate, HqlExpression ifTrue) - : base(HqlSqlWalker.WHEN, "when", factory, predicate, ifTrue) - { - } - } + public class HqlCase : HqlExpression + { + public HqlCase(IASTFactory factory, HqlWhen[] whenClauses, HqlExpression ifFalse) + : base(HqlSqlWalker.CASE, "case", factory, whenClauses) + { + if (ifFalse != null) + { + AddChild(new HqlElse(factory, ifFalse)); + } + } + } - public class HqlCase : HqlExpression - { - public HqlCase(IASTFactory factory, HqlWhen[] whenClauses, HqlExpression ifFalse) - : base(HqlSqlWalker.CASE, "case", factory, whenClauses) - { - if (ifFalse != null) - { - AddChild(new HqlElse(factory, ifFalse)); - } - } - } + public class HqlGreaterThanOrEqual : HqlBooleanExpression + { + public HqlGreaterThanOrEqual(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.GE, "ge", factory, lhs, rhs) + { + } + } - public class HqlGreaterThanOrEqual : HqlBooleanExpression - { - public HqlGreaterThanOrEqual(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.GE, "ge", factory, lhs, rhs) - { - } - } + public class HqlGreaterThan : HqlBooleanExpression + { + public HqlGreaterThan(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.GT, "gt", factory, lhs, rhs) + { + } + } - public class HqlGreaterThan : HqlBooleanExpression - { - public HqlGreaterThan(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.GT, "gt", factory, lhs, rhs) - { - } - } + public class HqlLessThanOrEqual : HqlBooleanExpression + { + public HqlLessThanOrEqual(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.LE, "le", factory, lhs, rhs) + { + } + } - public class HqlLessThanOrEqual : HqlBooleanExpression - { - public HqlLessThanOrEqual(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.LE, "le", factory, lhs, rhs) - { - } - } + public class HqlLessThan : HqlBooleanExpression + { + public HqlLessThan(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.LT, "lt", factory, lhs, rhs) + { + } + } - public class HqlLessThan : HqlBooleanExpression - { - public HqlLessThan(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.LT, "lt", factory, lhs, rhs) - { - } - } + public class HqlInequality : HqlBooleanExpression + { + public HqlInequality(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) + : base(HqlSqlWalker.NE, "ne", factory, lhs, rhs) + { + } + } - public class HqlInequality : HqlBooleanExpression - { - public HqlInequality(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) - : base(HqlSqlWalker.NE, "ne", factory, lhs, rhs) - { - } - } + public class HqlRowStar : HqlStatement + { + public HqlRowStar(IASTFactory factory) + : base(HqlSqlWalker.ROW_STAR, "*", factory) + { + } + } - public class HqlRowStar : HqlStatement - { - public HqlRowStar(IASTFactory factory) - : base(HqlSqlWalker.ROW_STAR, "*", factory) - { - } - } + public class HqlCount : HqlExpression + { + public HqlCount(IASTFactory factory) + : base(HqlSqlWalker.COUNT, "count", factory) + { + } - public class HqlCount : HqlExpression - { - public HqlCount(IASTFactory factory) - : base(HqlSqlWalker.COUNT, "count", factory) - { - } + public HqlCount(IASTFactory factory, HqlExpression child) + : base(HqlSqlWalker.COUNT, "count", factory, child) + { + } + } - public HqlCount(IASTFactory factory, HqlExpression child) - : base(HqlSqlWalker.COUNT, "count", factory, child) - { - } - } + public class HqlAs : HqlExpression + { + public HqlAs(IASTFactory factory, HqlExpression expression, System.Type type) + : base(HqlSqlWalker.AS, "as", factory, expression) + { + switch (System.Type.GetTypeCode(type)) + { + case TypeCode.Int32: + AddChild(new HqlIdent(factory, "integer")); + break; + default: + throw new InvalidOperationException(); + } + } + } - public class HqlAs : HqlExpression - { - public HqlAs(IASTFactory factory, HqlExpression expression, System.Type type) - : base(HqlSqlWalker.AS, "as", factory, expression) - { - switch (System.Type.GetTypeCode(type)) - { - case TypeCode.Int32: - AddChild(new HqlIdent(factory, "integer")); - break; - default: - throw new InvalidOperationException(); - } - } - } + public class HqlCast : HqlExpression + { + public HqlCast(IASTFactory factory, HqlExpression expression, System.Type type) + : base(HqlSqlWalker.METHOD_CALL, "method", factory) + { + AddChild(new HqlIdent(factory, "cast")); + AddChild(new HqlExpressionList(factory, expression, new HqlIdent(factory, type))); + } + } - public class HqlCast : HqlExpression - { - public HqlCast(IASTFactory factory, HqlExpression expression, System.Type type) - : base(HqlSqlWalker.METHOD_CALL, "method", factory) - { - AddChild(new HqlIdent(factory, "cast")); - AddChild(new HqlExpressionList(factory, expression, new HqlIdent(factory, type))); - } - } - public class HqlCoalesce : HqlExpression { public HqlCoalesce(IASTFactory factory, HqlExpression lhs, HqlExpression rhs) @@ -608,264 +606,280 @@ } } - public class HqlExpressionList : HqlStatement - { - public HqlExpressionList(IASTFactory factory, params HqlExpression[] expressions) - : base(HqlSqlWalker.EXPR_LIST, "expr_list", factory, expressions) - { - } + public class HqlDictionaryIndex : HqlExpression + { + public HqlDictionaryIndex(IASTFactory factory, HqlExpression dictionary, HqlExpression index) + : base(HqlSqlWalker.INDEX_OP, "[", factory, dictionary, index) + { + } + } - public HqlExpressionList(IASTFactory factory, IEnumerable<HqlExpression> expressions) - : base(HqlSqlWalker.EXPR_LIST, "expr_list", factory, expressions.Cast<HqlTreeNode>()) - { - } - } + public class HqlIndices : HqlExpression + { + public HqlIndices(IASTFactory factory, HqlExpression dictionary) + : base(HqlSqlWalker.INDICES, "indices", factory, dictionary) + { + } + } - public class HqlBooleanNot : HqlBooleanExpression - { - public HqlBooleanNot(IASTFactory factory, HqlBooleanExpression operand) - : base(HqlSqlWalker.NOT, "not", factory, operand) - { - } - } + public class HqlExpressionList : HqlStatement + { + public HqlExpressionList(IASTFactory factory, params HqlExpression[] expressions) + : base(HqlSqlWalker.EXPR_LIST, "expr_list", factory, expressions) + { + } - public class HqlAverage : HqlExpression - { - public HqlAverage(IASTFactory factory, HqlExpression expression) - : base(HqlSqlWalker.AGGREGATE, "avg", factory, expression) - { - } - } + public HqlExpressionList(IASTFactory factory, IEnumerable<HqlExpression> expressions) + : base(HqlSqlWalker.EXPR_LIST, "expr_list", factory, expressions.Cast<HqlTreeNode>()) + { + } + } - public class HqlBitwiseNot : HqlExpression - { - public HqlBitwiseNot(IASTFactory factory) : base(HqlSqlWalker.BNOT, "not", factory) - { - } - } + public class HqlBooleanNot : HqlBooleanExpression + { + public HqlBooleanNot(IASTFactory factory, HqlBooleanExpression operand) + : base(HqlSqlWalker.NOT, "not", factory, operand) + { + } + } - public class HqlSum : HqlExpression - { - public HqlSum(IASTFactory factory) - : base(HqlSqlWalker.AGGREGATE, "sum", factory) - { - } + public class HqlAverage : HqlExpression + { + public HqlAverage(IASTFactory factory, HqlExpression expression) + : base(HqlSqlWalker.AGGREGATE, "avg", factory, expression) + { + } + } - public HqlSum(IASTFactory factory, HqlExpression expression) - : base(HqlSqlWalker.AGGREGATE, "sum", factory, expression) - { - } - } + public class HqlBitwiseNot : HqlExpression + { + public HqlBitwiseNot(IASTFactory factory) : base(HqlSqlWalker.BNOT, "not", factory) + { + } + } - public class HqlMax : HqlExpression - { - public HqlMax(IASTFactory factory, HqlExpression expression) - : base(HqlSqlWalker.AGGREGATE, "max", factory, expression) - { - } + public class HqlSum : HqlExpression + { + public HqlSum(IASTFactory factory) + : base(HqlSqlWalker.AGGREGATE, "sum", factory) + { + } + + public HqlSum(IASTFactory factory, HqlExpression expression) + : base(HqlSqlWalker.AGGREGATE, "sum", factory, expression) + { + } + } + + public class HqlMax : HqlExpression + { + public HqlMax(IASTFactory factory, HqlExpression expression) + : base(HqlSqlWalker.AGGREGATE, "max", factory, expression) + { + } } - public class HqlMin : HqlExpression - { - public HqlMin(IASTFactory factory, HqlExpression expression) - : base(HqlSqlWalker.AGGREGATE, "min", factory, expression) - { - } - } + public class HqlMin : HqlExpression + { + public HqlMin(IASTFactory factory, HqlExpression expression) + : base(HqlSqlWalker.AGGREGATE, "min", factory, expression) + { + } + } - public class HqlJoin : HqlStatement - { - public HqlJoin(IASTFactory factory, HqlExpression expression, HqlAlias @alias) : base(HqlSqlWalker.JOIN, "join", factory, expression, @alias) - { - } - } + public class HqlJoin : HqlStatement + { + public HqlJoin(IASTFactory factory, HqlExpression expression, HqlAlias @alias) : base(HqlSqlWalker.JOIN, "join", factory, expression, @alias) + { + } + } - public class HqlLeftJoin : HqlTreeNode - { - public HqlLeftJoin(IASTFactory factory, HqlExpression expression, HqlAlias @alias) : base(HqlSqlWalker.JOIN, "join", factory, new HqlLeft(factory), expression, @alias) - { - } - } + public class HqlLeftJoin : HqlTreeNode + { + public HqlLeftJoin(IASTFactory factory, HqlExpression expression, HqlAlias @alias) : base(HqlSqlWalker.JOIN, "join", factory, new HqlLeft(factory), expression, @alias) + { + } + } - public class HqlFetchJoin : HqlTreeNode - { - public HqlFetchJoin(IASTFactory factory, HqlExpression expression, HqlAlias @alias) - : base(HqlSqlWalker.JOIN, "join", factory, new HqlFetch(factory), expression, @alias) - { - } - } + public class HqlFetchJoin : HqlTreeNode + { + public HqlFetchJoin(IASTFactory factory, HqlExpression expression, HqlAlias @alias) + : base(HqlSqlWalker.JOIN, "join", factory, new HqlFetch(factory), expression, @alias) + { + } + } - public class HqlLeftFetchJoin : HqlTreeNode - { - public HqlLeftFetchJoin(IASTFactory factory, HqlExpression ... [truncated message content] |