Hey Alexander and Oskar,

Thanks for the help.

Oskar's comments pointed me in the right direction, so I've made some 
progress.

I just pushed my latest changes: 
https://github.com/StanleyGoldman/nhibernate-core/compare/NH-3035

Alexander, please check my changes before you do any work.

I found the partial class HqlSqlWalker and added the 
IsOrderExpressionResultVariableRef() 
and handleResultVariableRef()

in HqlSqlWalker.g I at least understand how to use 
HandleResultVariableRef() now, I just don't know what value I'm supposed to 
send to IsOrderExpressionResultVariableRef().

orderExpr
>     : { IsOrderExpressionResultVariableRef(_t) }? resultVariableRef
>     | expr
>     ;
>
> resultVariableRef!
>     : i=identifier {
>         // Create a RESULT_VARIABLE_REF node instead of an IDENT node.
>         ResultVariableRefNode resultVariableRef = (IASTNode) 
> adaptor.Create(RESULT_VARIABLE_REF, i.Text);
>         HandleResultVariableRef(resultVariableRef);
>     }
>     ;
>

Thanks for all the help so far.
-Stan

On Thursday, October 9, 2014 6:56:24 AM UTC-4, Alexander Zaytsev wrote:
>
> Hi Stanley,
>
> I'm trying to fix the HqlSqlWalker.g, I'll comback later.
>
> But it seems that you've forgot to port following code to HqlSqlWalker.cs:
> + protected boolean isOrderExpressionResultVariableRef(AST 
> orderExpressionNode) throws SemanticException {
> + // ORDER BY is not supported in a subquery
> + // TODO: should an exception be thrown if an ORDER BY is in a subquery?
> + if ( ! isSubQuery() &&
> + orderExpressionNode.getType() == IDENT &&
> + selectExpressionsByResultVariable.containsKey( 
> orderExpressionNode.getText() ) ) {
> + return true;
> + }
> + return false;
> + }
> +
> + protected void handleResultVariableRef(AST resultVariableRef) throws 
> SemanticException {
> + if ( isSubQuery() ) {
> + throw new SemanticException(
> + "References to result variables in subqueries are not supported."
> + );
> + }
> + ( ( ResultVariableRefNode ) resultVariableRef ).setSelectExpression(
> + selectExpressionsByResultVariable.get( resultVariableRef.getText() )
> + );
> + }
> + 
>
> Best Regards, 
> Alexander
>
> 2014-10-09 10:38 GMT+13:00 Oskar Berggren <[email protected] 
> <javascript:>>:
>
>> In SqlASTFactory.java there is (addition in the diff):
>> + case RESULT_VARIABLE_REF:
>>     + return ResultVariableRefNode.class;
>>  
>>
>> A class with otherwise similar code in NHibernate seems to be 
>> HqlSqlWalkerTreeAdaptor.
>>
>> /Oskar
>>
>>
>> 2014-10-08 20:45 GMT+02:00 Stanley Goldman <[email protected] 
>> <javascript:>>:
>>
>>> Still looking for some help here. I will code most of whatever needs to 
>>> be fixed.
>>> I just need some direction from someone who knows this better than I do.
>>>
>>>
>>> On Sunday, October 5, 2014 10:39:30 AM UTC-4, Stanley Goldman wrote:
>>>>
>>>> Hello,
>>>>
>>>> I'm developing for Orchard CMS and I came across this bug.
>>>>
>>>> https://nhibernate.jira.com/browse/NH-3035
>>>>
>>>> Which I see has been fixed in Hibernate.
>>>>
>>>> https://hibernate.atlassian.net/browse/HHH-892
>>>>
>>>> https://github.com/davidmc24/hibernate-core/commit/
>>>> 13699d792b9f69fa13a1540617db71109aa9688e
>>>>
>>>> At first I felt confident that I would be able to work these changes in.
>>>> I feel i successfully ported the unit tests and most of the object 
>>>> changes.
>>>> I'm hoping I can get some help with the n-hibernate equivalents in 
>>>> HqlSqlGenerator.g and SqlGenerator.g
>>>>
>>>> https://github.com/StanleyGoldman/nhibernate-core/compare/NH-3035
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> For instance this chunk
>>>>
>>>> orderExprs
>>>>>     : expr ( ASCENDING | DESCENDING )? (orderExprs)?
>>>>>     : orderExpr ( ASCENDING | DESCENDING )? (orderExprs)?
>>>>>     ;
>>>>>
>>>>> orderExpr
>>>>>     : { isOrderExpressionResultVariableRef( _t ) }? resultVariableRef
>>>>>     | expr
>>>>>     ;
>>>>>
>>>>> resultVariableRef!
>>>>>     : i:identifier {
>>>>>         // Create a RESULT_VARIABLE_REF node instead of an IDENT node.
>>>>>         #resultVariableRef = #([RESULT_VARIABLE_REF, i.getText()]);
>>>>>         handleResultVariableRef(#resultVariableRef);
>>>>>     }
>>>>>     ;
>>>>>
>>>>
>>>> I'm not sure how to create a new instance of ResultVariableRefNode 
>>>> equivalent to the one above.
>>>>
>>>> orderExprs
>>>>>     : orderExpr ( ASCENDING | DESCENDING )? (orderExprs)?
>>>>>     ;
>>>>>
>>>>> orderExpr
>>>>>     : { IsOrderExpressionResultVariableRef( _t ) }? resultVariableRef
>>>>>     | expr
>>>>>     ;
>>>>>
>>>>> resultVariableRef!
>>>>>     : i=identifier {
>>>>>         // Create a RESULT_VARIABLE_REF node instead of an IDENT node.
>>>>>         var resultVariableRef = new ResultVariableRefNode();
>>>>>         HandleResultVariableRef(resultVariableRef);
>>>>>     }
>>>>>     ;
>>>>>
>>>>  
>>>> Thanks in advance for any help.
>>>>
>>>> -Stanley
>>>>
>>>  -- 
>>>
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "nhibernate-development" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected] 
>>> <javascript:>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  -- 
>>
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "nhibernate-development" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] 
>> <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"nhibernate-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to