<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">I&#8217;ve submitted a <a href="https://github.com/olap4j/olap4j-xmlaserver/pull/12">
pull request</a> for the olap4j-xmlaserver project for streaming execute results. The goal of this patch is to reduce the memory requirements for the XML/A server when processing large query results.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I attempted in this patch to reduce the changes to interfaces as well as public and protected methods of classes in order not to break any extensions of these interfaces that exist in Mondrian or elsewhere. I only changed one protected
 method, I added a &#8216;context&#8217; parameter to the marshallSoapMessage method of XmlaServlet.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I also made streaming results an option (specified by a servlet init parameter) rather than the default method of conveying results. The primary reason for this is because there is an inherent trade-off when streaming results--you cannot
 send an XML/A Fault message once you&#8217;ve started streaming. The onus is on the client to determine that there was a problem even though the HTTP status was set to a 200 (OK). Of course, this is the same logic that the client should have in case its connection
 to the XML/A server disappears half-way through receiving results.<o:p></o:p></p>
<p class="MsoNormal">One result of this is that turning on streaming results is safer when you are using SOAP instead of JSON. If an exception occurs during streaming results in SOAP, then the end of the SOAP envelope is never sent and the client can properly
 determine that something went wrong.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I&#8217;m interested in any feedback on the approaches I&#8217;ve taken in the source code and in submitting these pull requests.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ken<o:p></o:p></p>
</div>
</body>
</html>