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.
