I got that initial refactoring pushed to my fork... On Fri, Aug 21, 2015 at 3:51 PM Steve Ebersole <st...@hibernate.org> wrote:
> Just a heads up that I started a major refactoring of the antlr4 poc > project in preparation for starting to look at this next sql-gen step. > > First I am making it into a multi-module project. We will have the > hql-parser module, but then also an orm-sql-gen module to be able to play > with that part. This makes sure we are not blending orm concerns into the > pure hql parser. > > Also, I started working on splitting the "semantic query" model out into a > separate module as well. There are a few reasons for this. I wont go into > them all here. The main one being that HQL is just one producer of this > semantic model. Rather than another long name I went with the acronym SQM > (Semantic Query Model) here. The top package being org.hibernate.sqm. > > These changes already illustrated some tighter couplings then I had > intended, so it was a good exercise. I'll push once I get those couplings > cleaned up. > > On Fri, Aug 21, 2015 at 2:35 PM andrea boriero <drebor...@gmail.com> > wrote: > >> I haven't seen it, I'm going to read it. >> >> On 21 August 2015 at 16:54, Steve Ebersole <st...@hibernate.org> wrote: >> >>> http://www.antlr2.org/article/1170602723163/treewalkers.html >>> >>> Not sure if y'all have seen this. Its an old article advocating manual >>> tree walking (what we are facing here) over using generated tree walkers. >>> >>> >>> >>> On Wed, Aug 19, 2015 at 12:27 PM Steve Ebersole <st...@hibernate.org> >>> wrote: >>> >>>> I agree. Its my biggest hang up with regard to using Antlr 4. >>>> Actually, its my only hang up with Antlr 4, but its a huge one. >>>> >>>> On Tue, Aug 18, 2015 at 9:30 AM andrea boriero <drebor...@gmail.com> >>>> wrote: >>>> >>>>> yes Steve I'm more familiar with Antlr4 ( but not 3) and I gave a look >>>>> at your poc. >>>>> >>>>> Apart some problems to fully understand the semantic model (due to my >>>>> lack of a complete knowledge of the domain problem), >>>>> I agree with you about the simplicity and elegance of the grammar >>>>> for HQL recognition and semantic model building. >>>>> >>>>> What I don't like it's the necessity to build our own semantic model >>>>> walker/s in order to produce the final SQL. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On 14 August 2015 at 16:32, Steve Ebersole <st...@hibernate.org> >>>>> wrote: >>>>> >>>>>> We've had a few discussions about this in the past. As 5.0 is getting >>>>>> close to Final (next week), its time to start contemplating our next >>>>>> major >>>>>> tasks. The consensus pick for that has been the idea of a "unified >>>>>> SQL >>>>>> generation engine" along with a shared project for the semantic >>>>>> analysis of >>>>>> HQL/JPQL (and recently it was decided to include JPA Criteria >>>>>> interpretation here as well). >>>>>> >>>>>> The central premise is this. Take the roughly 6 or 7 different >>>>>> top-level >>>>>> ways Hibernate generates SQL and combine that into one "engine" based >>>>>> on >>>>>> the input of a "semantic tree". The mentioned HQL/JPQL/Criteria >>>>>> shared >>>>>> project will be one producer of such semantic trees. Others would >>>>>> include >>>>>> persisters (for insert/update/delete requests) and loaders (for load >>>>>> requests). >>>>>> >>>>>> We have a lot of tasks for this overall goal still remaining. >>>>>> >>>>>> We still have to finalize the design for the HQL/JPQL/Criteria to >>>>>> semantic >>>>>> tree translator. One option is to proceed with the Antlr 4 based >>>>>> approach >>>>>> I started a PoC for. John has been helping me some lately with >>>>>> that. The >>>>>> first task here is to come to a consensus whether Antlr 4 is the way >>>>>> we >>>>>> want to proceed here. We've been over the pros and cons before in >>>>>> detail. >>>>>> In summary, there is a lot to love with Antlr 4. Our grammar for HQL >>>>>> recognition and semantic tree building is very simple and elegant >>>>>> imo. The >>>>>> drawback is clearly the lack of tree walking, meaning that we are >>>>>> responsible for writing by hand our walker for the semantic tree. In >>>>>> fact >>>>>> multiple, since each consumer (orm, ogm, search) would need to write >>>>>> their >>>>>> own. And if we decide to build another AST while walking the semantic >>>>>> tree, we'd end up having to hand-write yet another walker for those. >>>>>> >>>>>> What I mean by that last part is that there are 2 ways we might >>>>>> choose to >>>>>> deal with the semantic tree. For the purpose of discussion, let's >>>>>> look at >>>>>> the ORM case. The first approach is to simply generate the SQL as we >>>>>> walk >>>>>> the semantic tree; this would be a 2 phase interpretation approach >>>>>> (input >>>>>> -> semantic tree -> SQL). That works in many cases. However it >>>>>> breaks >>>>>> down in other cases. This is exactly the approach our existing HQL >>>>>> translator uses. The other approach is to use a 3-phase translation >>>>>> (input >>>>>> -> semantic-tree -> semantic-SQL-tree(s) -> SQL). This gives a hint >>>>>> to one >>>>>> of the major problems. One source "semantic" query will often >>>>>> correspond >>>>>> to multiple SQL queries; that is hard to manage in the 2-phase >>>>>> approach. >>>>>> And not to mention integrating things like follow-on fetches and other >>>>>> enhancements we want to gain from this. My vote is definitely for 3 >>>>>> or >>>>>> more phases of interpretation. The problem is that this is exactly >>>>>> where >>>>>> Antlr 4 sort of falls down. >>>>>> >>>>>> So first things first... we need to decide on Antlr 3 versus Antlr 4 >>>>>> (versus some other parser solution). >>>>>> >>>>>> Next, on the ORM side (every "backend" can decide this individually) >>>>>> we >>>>>> need to decide on the approach for semantic-tree to SQL translation, >>>>>> which >>>>>> somewhat depends on the Antlr 3 versus Antlr 4 decision. >>>>>> >>>>>> We really need to decide these things ASAP and get moving on them as >>>>>> soon >>>>>> as ORM 5.0 is finished. >>>>>> >>>>>> Also, this is a massive undertaking with huge gain potentials for not >>>>>> just >>>>>> ORM. As such we need to understand who will be working on this. >>>>>> Sanne, >>>>>> Gunnar... I know y'all have a vested interest and a desire to work on >>>>>> it. >>>>>> John, I know the same is true for you. Andrea? Have you had a >>>>>> chance to >>>>>> look over the poc and/or get more familiar with Antlr? >>>>>> >>>>> _______________________________________________ >>>>>> hibernate-dev mailing list >>>>>> hibernate-dev@lists.jboss.org >>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>>>>> >>>>> >>>>> >> _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev