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