Query Fragment Methods (QFM)

The number of database hits is a major factor in the performance of any db application. Makumba (mostly the mak:list engine) is optimized to generate the minimum possible number of queries.

In general, the number of queries should be independent of the data size. This principle is sometimes broken when one needs to do a supplementary query to find out more about a certain query result.

The idea of Query Fragment Methods is to actually not do queries, but to append the existing query qith more query fragments to provide the needed supplementary data which would have otherwise be obtained by separate methods and queries.

The QFMs could be defined in MDDs as methods in an object-oriented way (TODO: write these examples in  a BEST -neutral manner)
in best.johnny.Application
    acceptedFinal()
        - finalPosition <= activ.finalPlaces

then in JSP we can do:

<mak:list from="best.johnny.Application applic" >
    <mak:if expr="applic.acceptedFinal()" > ACCEPTED</mak:if>
</mak:list>

While the above is a simple expression that is simply pasted in the query, a more complex example, with an argument, and more varied query fragments can be thought of (never mind the syntax, finding a suitable one is part of the brief)

in best.johnny.Student
acceptedFinal()
- args: best.johnny.Season season
- from: best.johnny.Application app
- where: app.stud=this AND app.activ.season=$season AND pp.acceptedFinal()
- result: count(app)>0
then in JSP
<mak:list from="best.johnny.Student s" >
    <mak:value epxr="stud.acceptedFinal($season)">
    <mak:value expr="s.name" />
</mak:list>
Brief