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.
