<html> <head> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Monitoring Optimization</title> <link rel="stylesheet" type="text/css" href="../../../style.css"> </head> <body> <div class="CommonContent"> <div class="CommonContentArea"> <h1>Monitoring Optimization</h1><script> //We attach this function to a browser object as a variable so that if multiple of these blocks are //present on the same page, then they will simply over-write eachother with the same function instead //of generating a naming collision. window.WikiCodeFormattingCopyToClipboard = function copyToClipboard(sID){ var sContent = document.getElementById(sID).innerText; if( window.clipboardData && clipboardData.setData ) { clipboardData.setData("Text", sContent); } else { alert("You must enable javascript access to your clipboard for this feature to work. Please referr to your browser documentation or Google search for instructions."); } } </script><p><font color="#990000">This topic applies to Java version only.</font> </p> <p>This feature is not complete and can only be used for experiments<br></p><p>Currently you can only attach a listener to the ObjectContainer:</p> <div class="FormattedSourceCode"><div class="fscHeader"><span class="fscFileName">NQExample.java: <span class="fscMemberName">nqListener</span></span></div><div class="fscCode"><pre ID="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62"><div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #008080;">1</span><img id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Open_Image" src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ExpandedBlockStart.gif" align="top" onClick="this.style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Open_Text').style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Closed_Image').style.display='inline'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Closed_Text').style.display='inline';"/><img id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Closed_Image" src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ContractedBlock.gif" align="top" style="display: none;" onClick="this.style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Closed_Text').style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Open_Image').style.display='inline'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Open_Text').style.display='inline';"/><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> nqListener() </span><span id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Closed_Text" style="border: solid 1px #808080; background-color: #FFFFFF; display: none;">...</span><span id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_32_305_Open_Text"><span style="color: #000000;">{ </span><span style="color: #008080;">2</span><span style="color: #000000;"><img src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/InBlock.gif" align="top"/> ObjectContainer db </span><span style="color: #000000;">=</span><span style="color: #000000;"> Db4o.openFile(DBFILENAME); </span><span style="color: #008080;">3</span><span style="color: #000000;"><img src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/InBlock.gif" align="top"/> ((InternalObjectContainer)db).getNativeQueryHandler().addListener( </span><span style="color: #008080;">4</span><span style="color: #000000;"><img id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Open_Image" src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" onClick="this.style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Open_Text').style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Closed_Image').style.display='inline'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Closed_Text').style.display='inline';"/><img id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Closed_Image" src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ContractedSubBlock.gif" align="top" style="display: none;" onClick="this.style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Closed_Text').style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Open_Image').style.display='inline'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Open_Text').style.display='inline';"/> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Db4oQueryExecutionListener() </span><span id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Closed_Text" style="border: solid 1px #808080; background-color: #FFFFFF; display: none;">...</span><span id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_190_300_Open_Text"><span style="color: #000000;">{ </span><span style="color: #008080;">5</span><span style="color: #000000;"><img id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Open_Image" src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" onClick="this.style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Open_Text').style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Closed_Image').style.display='inline'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Closed_Text').style.display='inline';"/><img id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Closed_Image" src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ContractedSubBlock.gif" align="top" style="display: none;" onClick="this.style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Closed_Text').style.display='none'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Open_Image').style.display='inline'; document.getElementById('ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Open_Text').style.display='inline';"/> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> notifyQueryExecuted(NQOptimizationInfo info) </span><span id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Closed_Text" style="border: solid 1px #808080; background-color: #FFFFFF; display: none;">...</span><span id="ResourcesReferenceTuningNative_Query_OptimizationnqoptimizationJava.ZipsNQExample.Java_NQExample.Java_NqListener_235_62_254_294_Open_Text"><span style="color: #000000;">{ </span><span style="color: #008080;">6</span><span style="color: #000000;"><img src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/InBlock.gif" align="top"/> System.err.println(info); </span><span style="color: #008080;">7</span><span style="color: #000000;"><img src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"/> }</span></span><span style="color: #000000;"> </span><span style="color: #008080;">8</span><span style="color: #000000;"><img src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"/> }</span></span><span style="color: #000000;">); </span><span style="color: #008080;">9</span><span style="color: #000000;"><img src="../../../Utility/ActiPro.CodeHighligher/OutliningIndicators/ExpandedBlockEnd.gif" align="top"/> }</span></span></div></pre></div></div> <p>The listener will be notified on each native query call and will be passed the Predicate object processed, the optimized expression tree (if successful) and the success status of the optimization run:</p> <p><code>ObjectContainerBase.UNOPTIMIZED ("UNOPTIMIZED")</code></p><p>if the predicate could not be optimized and is run in unoptimized mode</p> <p><code>ObjectContainerBase.PREOPTIMIZED ("PREOPTIMIZED")</code></p> <p>if the predicate already was optimized (due to class file or load time instrumentation)</p> <p><code>ObjectContainerBase.DYNOPTIMIZED ("DYNOPTIMIZED")</code></p> <p>if the predicate was optimized at query execution time</p><br></div> </div> <div id="footer"> This revision (10) was last Modified 2007-09-08T14:45:39 by Tetyana. </div> </body> </html>