public void ResolveCollectionProperty(IASTNode expr) { String propertyName = CollectionProperties.GetNormalizedPropertyName(_methodName); if (expr is FromReferenceNode) { FromReferenceNode collectionNode = ( FromReferenceNode )expr; // If this is 'elements' then create a new FROM element. if (CollectionPropertyNames.Elements == propertyName) { HandleElements(collectionNode, propertyName); } else { // Not elements(x) _fromElement = collectionNode.FromElement; DataType = _fromElement.GetPropertyType(propertyName, propertyName); _selectColumns = _fromElement.ToColumns(_fromElement.TableAlias, propertyName, _inSelect); } if (collectionNode is DotNode) { PrepareAnyImplicitJoins(( DotNode )collectionNode); } if (!_inSelect) { _fromElement.Text = ""; _fromElement.UseWhereFragment = false; } PrepareSelectColumns(_selectColumns); Text = _selectColumns[0]; Type = HqlSqlWalker.SQL_TOKEN; } else { throw new SemanticException( "Unexpected expression " + expr + " found for collection function " + propertyName ); } }
public void ResolveCollectionProperty(IASTNode expr) { var propertyName = CollectionProperties.GetNormalizedPropertyName(_methodName); var collectionNode = expr as FromReferenceNode; if (collectionNode == null) { throw new SemanticException(string.Format("Unexpected expression {0} found for collection function {1}", expr, propertyName)); } // If this is 'elements' then create a new FROM element. if (CollectionPropertyNames.Elements == propertyName) { HandleElements(collectionNode, propertyName); } else { // Not elements(x) _fromElement = collectionNode.FromElement; DataType = _fromElement.GetPropertyType(propertyName, propertyName); _selectColumns = _fromElement.ToColumns(_fromElement.TableAlias, propertyName, _inSelect); } var dotNode = collectionNode as DotNode; if (dotNode != null) { PrepareAnyImplicitJoins(dotNode); } if (!_inSelect) { _fromElement.Text = ""; _fromElement.UseWhereFragment = false; } PrepareSelectColumns(_selectColumns); Text = _selectColumns[0]; Type = HqlSqlWalker.SQL_TOKEN; }