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]>:

> 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 [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].
> 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