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.
