<style>
/* Changing the layout to use less space for mobiles */
@media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) {
    #email-body { min-width: 30em !important; }
    #email-page { padding: 8px !important; }
    #email-banner { padding: 8px 8px 0 8px !important; }
    #email-avatar { margin: 1px 8px 8px 0 !important; padding: 0 !important; }
    #email-fields { padding: 0 8px 8px 8px !important; }
    #email-gutter { width: 0 !important; }
}
</style>
<div id="email-body">
<table id="email-wrap" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#f0f0f0;color:#000000;width:100%;">
    <tr valign="top">
        <td id="email-page" style="padding:16px !important;">
            <table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #bbbbbb;color:#000000;width:100%;">
                <tr valign="top">
                    <td bgcolor="#3e4c4e" style="background-color:#3e4c4e;color:#ffffff;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;line-height:1;"><img src="https://www.jboss.org/dms/hibernate/images/jira/jiraheader_hibernate.png" alt="" style="vertical-align:top;" /></td>
                </tr><tr valign="top">
    <td id="email-banner" style="padding:32px 32px 0 32px;">

                
        
        
            <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="width:100%;">
    <tr valign="top">
        <td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;padding:0;">
                                        <img id="email-avatar" src="https://hibernate.onjira.com/secure/useravatar?ownerId=sanne&avatarId=11144" alt="" height="48" width="48" border="0" align="left" style="padding:0;margin: 0 16px 16px 0;" />
                        <div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;">
                                    <a class="user-hover" rel="sanne" id="email_sanne" href="https://hibernate.onjira.com/secure/ViewProfile.jspa?name=sanne" style="color:#6c797f;">Sanne Grinovero</a>
     updated <img src="https://hibernate.onjira.com/images/icons/ico_epic.png" height="16" width="16" border="0" align="absmiddle" alt="Epic"> <a style='color:#6c797f;text-decoration:none;' href='https://hibernate.onjira.com/browse/HHH-8000'>HHH-8000</a>
            </div>
                        <div id="email-summary" style="font-size:16px;line-height:20px;padding:2px 0 16px 0;">
                <a style='color:#6c797f;text-decoration:none;' href='https://hibernate.onjira.com/browse/HHH-8000'><strong>Apply bytecode introspection to provide an execution context to the query planning engine</strong></a>
            </div>
                    </td>
    </tr>
</table>
        
    </td>
</tr>
<tr valign="top">
    <td id="email-fields" style="padding:0 32px 32px 32px;">
        <table border="0" cellpadding="0" cellspacing="0" style="padding:0;text-align:left;width:100%;" width="100%">
            <tr valign="top">
                <td id="email-gutter" style="width:64px;white-space:nowrap;"></td>
                <td>
                    <table border="0" cellpadding="0" cellspacing="0" width="100%">
                                                    <tr valign="top">
        <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;">
            <strong style="font-weight:normal;color:#505050;">Change By:</strong>
        </td>
        <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;">
                                                <a class="user-hover" rel="sanne" id="email_sanne" href="https://hibernate.onjira.com/secure/ViewProfile.jspa?name=sanne" style="color:#6c797f;">Sanne Grinovero</a>
                            (13/Feb/13 5:19 PM)
        </td>
    </tr>
            <tr valign="top">
        <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;">
            <strong style="font-weight:normal;color:#505050;">Description:</strong>
        </td>
        <td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;">
                                    <span class="diffcontext">Using&nbsp;the&nbsp;same&nbsp;tricks&nbsp;of&nbsp;annotation&nbsp;processors&nbsp;as&nbsp;we&nbsp;applied&nbsp;for&nbsp;Infinispan&nbsp;as&nbsp;proof&nbsp;of&nbsp;concept&nbsp;(project&nbsp;Jokre),&nbsp;we&nbsp;can&nbsp;dynamically&nbsp;replace&nbsp;the&nbsp;invocation&nbsp;of&nbsp;-&nbsp;for&nbsp;example&nbsp;-&nbsp;createQuery()&nbsp;with&nbsp;a&nbsp;trap&nbsp;method&nbsp;which&nbsp;is&nbsp;going&nbsp;to&nbsp;trigger&nbsp;an&nbsp;inspection&nbsp;of&nbsp;the&nbsp;bytecode&nbsp;of&nbsp;the&nbsp;invoker.<br><br>The&nbsp;inspection&nbsp;will&nbsp;result&nbsp;in&nbsp;two&nbsp;different&nbsp;actions:<br>*&nbsp;replace&nbsp;the&nbsp;trap&nbsp;method&nbsp;with&nbsp;one&nbsp;which&nbsp;is&nbsp;a&nbsp;different&nbsp;method&nbsp;(normally&nbsp;not&nbsp;public),&nbsp;so&nbsp;this&nbsp;feature&nbsp;doesn&#39;t&nbsp;have&nbsp;any&nbsp;overhead&nbsp;as&nbsp;the&nbsp;replacement&nbsp;basically&nbsp;removed&nbsp;the&nbsp;inspection&nbsp;trigger.<br>*&nbsp;the&nbsp;newly&nbsp;invoked&nbsp;method&nbsp;will&nbsp;pass&nbsp;on&nbsp;some&nbsp;more&nbsp;information&nbsp;about&nbsp;the&nbsp;execution&nbsp;context&nbsp;of&nbsp;the&nbsp;requested&nbsp;query.<br><br>The&nbsp;upcoming&nbsp;query&nbsp;engine&nbsp;will&nbsp;have&nbsp;a&nbsp;&quot;planning&quot;&nbsp;component;&nbsp;this&nbsp;will&nbsp;be&nbsp;simple&nbsp;initially&nbsp;but&nbsp;will&nbsp;need&nbsp;to&nbsp;have&nbsp;basic&nbsp;logic&nbsp;to&nbsp;pick&nbsp;among&nbsp;different&nbsp;execution&nbsp;options;&nbsp;it&nbsp;seems&nbsp;natural&nbsp;to&nbsp;assume&nbsp;that&nbsp;this&nbsp;planning&nbsp;component&nbsp;will&nbsp;evolve&nbsp;over&nbsp;time&nbsp;to&nbsp;implement&nbsp;smarter&nbsp;techniques,&nbsp;possibly&nbsp;borrowing&nbsp;from&nbsp;the&nbsp;Teiid&nbsp;project.<br><br>I&#39;m&nbsp;not&nbsp;an</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;">&nbsp;example</span>
<span class="diffaddedchars" style="background-color:#ddfade;">&nbsp;expert</span>
<span class="diffcontext">&nbsp;of&nbsp;bytecode&nbsp;analysis&nbsp;but&nbsp;having&nbsp;talked&nbsp;to&nbsp;some,&nbsp;it&nbsp;seems&nbsp;it&nbsp;would&nbsp;be&nbsp;easy&nbsp;to&nbsp;implement&nbsp;for&nbsp;example&nbsp;escape&nbsp;analysis&nbsp;and&nbsp;make&nbsp;decisions&nbsp;in&nbsp;the&nbsp;query&nbsp;about&nbsp;the&nbsp;actual&nbsp;need&nbsp;of&nbsp;the&nbsp;invoker;&nbsp;for&nbsp;example&nbsp;if&nbsp;the&nbsp;query&nbsp;is&nbsp;loading&nbsp;User&nbsp;entities&nbsp;we&nbsp;might&nbsp;automatically&nbsp;infer&nbsp;that&nbsp;the&nbsp;client&nbsp;code&nbsp;is&nbsp;actually&nbsp;only&nbsp;interested&nbsp;in&nbsp;the&nbsp;User&#39;s&nbsp;birth&nbsp;dates,&nbsp;or&nbsp;that&nbsp;a&nbsp;different&nbsp;fetch&nbsp;strategy&nbsp;would&nbsp;be&nbsp;desirable&nbsp;to&nbsp;pre-load&nbsp;some&nbsp;relations.<br></span>
<span class="diffaddedchars" style="background-color:#ddfade;">Another&nbsp;example&nbsp;is&nbsp;unused&nbsp;relations:&nbsp;today&nbsp;we&nbsp;create&nbsp;proxies&nbsp;so&nbsp;that&nbsp;in&nbsp;case&nbsp;the&nbsp;relation&nbsp;is&nbsp;&quot;walked&quot;&nbsp;by&nbsp;the&nbsp;user&nbsp;code&nbsp;appropriate&nbsp;loading&nbsp;is&nbsp;triggered;&nbsp;it&nbsp;would&nbsp;be&nbsp;possible&nbsp;to&nbsp;proof&nbsp;that&nbsp;in&nbsp;some&nbsp;cases&nbsp;we&nbsp;don&#39;t&nbsp;need&nbsp;any&nbsp;proxy&nbsp;and&nbsp;a&nbsp;null&nbsp;would&nbsp;be&nbsp;good&nbsp;enough.</span>
<span class="diffcontext"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">Initial&nbsp;optimizations&nbsp;could&nbsp;be&nbsp;simple</span>
<span class="diffaddedchars" style="background-color:#ddfade;">:&nbsp;overhead&nbsp;is&nbsp;zero&nbsp;so&nbsp;one&nbsp;could&nbsp;just&nbsp;implement&nbsp;a&nbsp;couple&nbsp;of&nbsp;simple&nbsp;tricks</span>
<span class="diffcontext">,&nbsp;and</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;">&nbsp;we&nbsp;can&nbsp;gradually&nbsp;iterate&nbsp;on&nbsp;this&nbsp;to&nbsp;make&nbsp;it&nbsp;smarter</span>
<span class="diffaddedchars" style="background-color:#ddfade;">&nbsp;let&nbsp;the&nbsp;concept&nbsp;evolve&nbsp;with&nbsp;gradual&nbsp;iterations</span>
<span class="diffcontext">.<br>The&nbsp;simplest&nbsp;optimization&nbsp;would&nbsp;be&nbsp;to&nbsp;simply&nbsp;identify&nbsp;which&nbsp;use&nbsp;case&nbsp;(method)&nbsp;is&nbsp;invoking&nbsp;the&nbsp;query,&nbsp;and&nbsp;read&nbsp;some&nbsp;external&nbsp;resource&nbsp;which&nbsp;lists&nbsp;fetch&nbsp;plans&nbsp;on&nbsp;a&nbsp;per-usecase&nbsp;base;&nbsp;such&nbsp;a&nbsp;resource&nbsp;could&nbsp;be&nbsp;easily&nbsp;generated&nbsp;by&nbsp;a&nbsp;profiling&nbsp;tool&nbsp;and&nbsp;help&nbsp;with&nbsp;performance&nbsp;tuning&nbsp;operations:&nbsp;today&nbsp;the&nbsp;same&nbsp;tuning&nbsp;is&nbsp;possible&nbsp;but&nbsp;requires&nbsp;several&nbsp;iterations&nbsp;between&nbsp;code&nbsp;changes&nbsp;and&nbsp;re-deploys,&nbsp;restarting&nbsp;stress&nbsp;tests&nbsp;on&nbsp;a&nbsp;very&nbsp;time&nbsp;consuming&nbsp;process.<br><br>In&nbsp;a&nbsp;longer&nbsp;term&nbsp;vision,&nbsp;the&nbsp;internal&nbsp;method&nbsp;could&nbsp;become&nbsp;smart&nbsp;enough&nbsp;to&nbsp;not&nbsp;just&nbsp;pick&nbsp;an&nbsp;appropriate&nbsp;static&nbsp;plan&nbsp;but&nbsp;also&nbsp;collect&nbsp;runtime&nbsp;information&nbsp;and&nbsp;implement&nbsp;ergonomic&nbsp;decisions.&nbsp;Besides&nbsp;fetch&nbsp;plans,&nbsp;this&nbsp;could&nbsp;be&nbsp;picking&nbsp;caching&nbsp;strategies,&nbsp;transactional&nbsp;isolation&nbsp;levels,</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;">&nbsp;optimistic&nbsp;vs&nbsp;pessimistic&nbsp;locks</span>
<span class="diffaddedchars" style="background-color:#ddfade;">&nbsp;different&nbsp;lock&nbsp;levels&nbsp;(lock&nbsp;removal?)</span>
<span class="diffcontext">,&nbsp;appropriate&nbsp;batch&nbsp;sizes,&nbsp;maybe&nbsp;even&nbsp;generation&nbsp;of</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;">&nbsp;prepares</span>
<span class="diffaddedchars" style="background-color:#ddfade;">&nbsp;prepared</span>
<span class="diffcontext">&nbsp;statements.<br><br>Proof&nbsp;of&nbsp;concept&nbsp;and&nbsp;low&nbsp;level&nbsp;explanation:<br>https://github.com/infinispan/jokre</span>

        </td>
    </tr>
                            </table>
                </td>
            </tr>
        </table>
    </td>
</tr>













            </table>
        </td><!-- End #email-page -->
    </tr>
    <tr valign="top">
        <td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:10px;line-height:14px;padding: 0 16px 16px 16px;text-align:center;">
            This message is automatically generated by JIRA.<br />
            If you think it was sent incorrectly, please contact your JIRA administrators<br />
            For more information on JIRA, see: <a style='color:#6c797f;' href='http://www.atlassian.com/software/jira'>http://www.atlassian.com/software/jira</a>
        </td>
    </tr>
</table><!-- End #email-wrap -->
</div><!-- End #email-body -->