Most of the thanks goes to you. You fixed all my work.

But of course, as soon as ORDER BY works.
I realize the next logical thing I would want to do is WHERE BY, which 
suffers from the same issue.

Is there any chance we can resolve that as well?

On Thursday, October 9, 2014 7:24:48 PM UTC-4, Alexander Zaytsev wrote:
>
> What I was trying to say... I already have worked solution with green 
> tests and this is pushed to https://github.com/nhibernate/nhibernate-core/
> tree/NH-3035 you don't need to re-implement it
>
> Also I made a pull request based on your changes 
> https://github.com/nhibernate/nhibernate-core/pull/350
>
> Thanks a lot.
>
> Best Regards, 
> Alexander
>
> 2014-10-10 3:59 GMT+13:00 Stanley Goldman <[email protected] 
> <javascript:>>:
>
>> I only now noticed your github activity. Getting to it now.
>>
>> On Thursday, October 9, 2014 9:42:10 AM UTC-4, Alexander Zaytsev wrote:
>>>
>>> Ok, here some results.
>>>
>>> I've managed to implement the feature, and it works, but tests seems to 
>>> be incorrect.
>>>
>>> So...
>>>
>>> 1. I believe that correct grammar is
>>>
>>> orderExprs
>>> : orderExpr ( ASCENDING | DESCENDING )? (orderExprs)?
>>> ;
>>>
>>> orderExpr
>>> : { IsOrderExpressionResultVariableRef( (IASTNode) input.LT(1) ) }? 
>>> resultVariableRef // not sure that _t is input.LT(1) but seems to be 
>>> working.
>>> | expr
>>> ;
>>>
>>> resultVariableRef!
>>> @after {
>>> HandleResultVariableRef( $resultVariableRef.tree );
>>> }
>>> : i=identifier
>>> -> ^(RESULT_VARIABLE_REF [i.Tree.Text])  // $i.text does not work 
>>> because tokenstream is empty.
>>> ;
>>>
>>> 2. SetColumnIndex was ported incorrectly, and it is always 0, so I fixed 
>>> it.
>>> 3. DESC does apply only for last collumn of component (Address) object. 
>>> This is not resolved in Hibernate yet https://hibernate.atlassian.
>>> net/browse/HHH-5574
>>> 4. Indents was fixed
>>> 5. Tests need to be fixed / improved
>>>
>>> The changes available at https://github.com/nhibernate/nhibernate-core/
>>> tree/NH-3035
>>>
>>> Best Regards,
>>> Alexander
>>>
>>> 2014-10-10 1:45 GMT+13:00 Alexander Zaytsev <[email protected]>:
>>>
>>>> I managed to implement this.
>>>>
>>>> 2014-10-10 1:09 GMT+13:00 Alexander Zaytsev <[email protected]>:
>>>>
>>>>> Does it finally work?
>>>>>
>>>>> 2014-10-10 0:52 GMT+13:00 Stanley Goldman <[email protected]>:
>>>>>
>>>>> 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]>:
>>>>>>>
>>>>>>>> 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]>:
>>>>>>>>
>>>>>>>> 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/13699d792
>>>>>>>>>> b9f69fa13a1540617db71109aa9688e
>>>>>>>>>>
>>>>>>>>>> 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 nhibernate-development+unsubsc
>>>>>>>>> [email protected].
>>>>>>>>> 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 nhibernate-development+unsubsc
>>>>>>>> [email protected].
>>>>>>>> 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.
>>>>>>
>>>>>
>>>>>
>>>>
>>>  -- 
>>
>> --- 
>> 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