Beispiel #1
0
        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
                          );
            }
        }
Beispiel #2
0
        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;
        }