Very interesting, Amro!

Will give it a closer look.

/G

2014-12-11 14:58 GMT+01:00 Amro El-Fakharany <[email protected]>:

> Hi Ricardo!
>
> I unfortunately had to stop a while ago so I’m not doing anything right
> now.
>
> My Intention was to translate Linq directly to SQL using the appropriate
> dialect for each and every single bit of sql text.
>
> As for ReLinq: No, I didn’t use it.
>
>
>
> Amro
>
>
>
> *Von:* [email protected] [mailto:nhibernate-developm
> [email protected]] *Im Auftrag von *Ricardo Peres
> *Gesendet:* Donnerstag, 11. Dezember 2014 12:49
> *An:* [email protected]
> *Betreff:* Re: [nhibernate-development] Could the future hold a bit of
> simplification?
>
>
>
> Hi, Amro!
>
>
>
> Seems interesting! What are you doing exactly? Are you still using ReLinq?
>
>
>
> RP
>
> On Thursday, December 11, 2014 7:02:48 AM UTC, Amro El-Fakharany wrote:
>
> I also share the exact same experience Gunnar and Oskar.
> Infact a couple of months ago I started a branch for a Linq
> reimplementation dropping the dependency on HQL:
> https://github.com/amroel/nhibernate-core/tree/linq_experimental
>
> Also take a look at:
> http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx
>
> Amro
>
> On Thursday, December 11, 2014 12:04:47 AM UTC+1, Gunnar Liljas wrote:
>
> Thanks for responding, Oskar!
>
> I have had exactly the same experience with the hidden and inlined method
> calls. It's frustrating, to say the least.
>
> What I'm arguing is that having an antlr parser in the way make no sense
> (to me) for a Linq query. The raw expression tree from Linq is a bit tricky
> to work with, but ReLinq takes care of most of that (sometimes it takes
> care of too much). I believe yet another expression tree could be
> necessary, but from there translation to SQL should be more straightforward
> than today. I also believe that future SQL "dialects" should be able to get
> involved at this stage in the processing, so that they can more efficiently
> deal with e.g Skip/Take etc. But they wouldn't have to.
>
> Maybe this will be possible:
>
> HQL            Linq
>   \            /
>
>   Antlr4     ReLinq
>     \        /
>
>    Intermediate
>       \    /
>
>        SQL
>
> Even Criterias and QueryOver could produce the same intermediate tree.
>
> /G
>
>
>
>
>
> 2014-12-10 23:06 GMT+01:00 Oskar Berggren <[email protected]>:
>
> There has been some light discussion in the Hibernate mailing list lately
> regarding antlr4, which seems to have a quite different model compared to
> antlr3. According to the postings, it would require a rethinking of how
> (N)Hibernate handles the syntax trees.
>
> One thing that always bugs me is that almost everything important seems to
> happen inside ("through") constructor calls, or sometime inside method
> calls that are written directly as parameters to a constructor call. I find
> myself repeatedly stepping over such code during debugging, only to realise
> I now have to start over because hidden behind that fairly innocent-looking
> new X(y, z, x.GetTranslatorOrWhatever()) was actually the brunt of the
> logic.
>
> The way that several antlr parsers are involved also surprised me
> originally.
>
> /Oskar
>
>
>
> 2014-12-10 22:50 GMT+01:00 Gunnar Liljas <[email protected]>:
>
> I'm currently investigating a bit of query functionality in NHibernate and
> I'm losing all of my hair, since I've ended up in the HqlSqlWalker (there
> generated code part).
>
>
>
> I understand why the "new" Linq provider was built on top of the Hql
> parts, but at the same time it's a part of Nhibernate's code base that I
> really, really ha......don't like.
>
>
>
> A Linq expression tree is transformed into a ReLinq query model.
>
> The query model is transformed into an intermediate Hql tree
>
> The intermediate tree is transformed into "the real" Hql tree
>
> The Hql tree is eventually transformed into SQL
>
>
>
> The performance hit of all this may be neglible, but the complexity hit is
> insane. There is at least one tree to many and the complexity of the
> HqlSqlWalker is making it impossible to work with. It's not meant to be
> worked with, but having core functionality in a black hole is annoying.
> Going from a ReLinq query model to SQL will always be complex stuff, but it
> shouldn't have to be this convoluted.
>
>
>
> At some point I think it would make more sense to reverse the model, so
> that the Hql is processed into a syntax tree optimized for productive and
> performant Linq.
>
>
>
> Thoughts?
>
>
>
> /G
>
>
>
> PS. At certain points the HqlSqlWalker calls HandleClauseStart, which sets
> _currentClauseType, There is no corresponding HandleClauseEnd to pop the
> state, which means that  _currentClauseType can actually be wrong. In my
> test code that meant that the parser though it was inside a subquery when
> it actually wasn't any longer. Just an example of the kind of weirdness
> that is almost impossible to debug, and even harder to do something about
> once you find the problem. DS
>
>
>
>
>
> --
>
> ---
> 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.
>

-- 

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