<div><br></div><div>After spending some more time looking at this issue I think the best solution (at least short term), is to fix the method SetFunDef.evaluateList (pasted below).  I believe what it&#39;s intended to do is load an ArrayList if the dimension in the set is not flagged as highCardinality.  It fails in certain cases, though, since the result object may be a list of lists when there are multi-element tuples.</div>
<div><br></div><div>I think a reasonable modification would be to assume the set is NOT highCardinality, unless there is only a single dimension in result. This would cause SetFunDef to use an ArrayList in such cases, which was the behavior prior to the high cardinality changes.</div>
<div><br></div><div>Any objections to such a change?  </div><div><br></div><div>(note that the method below is as it is currently checked in)</div><div><br></div><div><div>public List evaluateList(final Evaluator evaluator) {</div>
<div>            this.result = new ConcatenableList();</div><div>            for (VoidCalc voidCalc : voidCalcs) {</div><div>                voidCalc.evaluateVoid(evaluator);</div><div>            }</div><div>            // REVIEW: What the heck is this code doing? Why is it OK to</div>
<div>            // ignore IndexOutOfBoundsException and NullPointerException?</div><div>            try {</div><div>                if (result.get(0) instanceof Member) {</div><div>                    if (!((Member)result.get(0)).getDimension()</div>
<div>                            .isHighCardinality()) {</div><div>                        result.toArray();</div><div>                    }</div><div>                }</div><div>            } catch (IndexOutOfBoundsException iooe) {</div>
<div>            } catch (NullPointerException npe) {</div><div>            }</div><div>            return result;</div><div>        }</div></div><br><br><div class="gmail_quote">On Wed, Mar 4, 2009 at 4:16 PM, Matt Campbell <span dir="ltr">&lt;<a href="mailto:mkambol@gmail.com">mkambol@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Virtually all the time spent on the query is spent in ConcatenableList, in the size() and get() methods.  Both have some pretty inefficient looking logic.  In get(), if the element retrieved is not the next, previous, or pre-previous, then the code iterates through the whole list up to the elements index.  Similarly with .size(), the code iterates through the lists, adding up each lists size.  I&#39;m guessing that in many cases the expense of doing this once is probably about the cost of converting to an ArrayList.  As an experiment I modified .size() to always convert to an ArrayList, and this cut the time to execute dramatically.<div>
<div></div><div class="h5"><div>
<br></div><div><div><div><div><br><div class="gmail_quote">On Wed, Mar 4, 2009 at 12:02 PM, Matt Campbell <span dir="ltr">&lt;<a href="mailto:mkambol@gmail.com" target="_blank">mkambol@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
After syncing to a changelist I was still seeing lots of files in my directories that were showing version 0 in perforce.  I eventually got past this by starting from a totally clean slate and syncing.<div><br></div><div>

Still investigating, but it looks like changelist 11049 is the culprit.  The query I posted runs in 2.5 seconds with change 11048, and takes a full minute and a half with 11049.<div><div></div><div><br>
<br><div class="gmail_quote">On Wed, Mar 4, 2009 at 11:16 AM, Julian Hyde <span dir="ltr">&lt;<a href="mailto:jhyde@pentaho.com" target="_blank">jhyde@pentaho.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div bgcolor="#FFFFFF"><div>There is no version 0 as such. If p4 sync &#39;gets&#39; version 0, it removes the file from your sandbox. Is that what you are seeing?<div><div></div><div><br><br>On Mar 4, 2009, at 6:36 AM, Matt Campbell &lt;<a href="mailto:mkambol@gmail.com" target="_blank">mkambol@gmail.com</a>&gt; wrote:<br>


<br></div></div></div><div><div></div><div><div></div><blockquote type="cite"><div>Hmmm.  I see many files in my directories that are marked as having version 0.  For example, I see MemberIterCalc.java in my sandbox, even though it was added much after the changelist I synched to.  Any ideas how this could happen?<br>



<br><div class="gmail_quote">On Wed, Mar 4, 2009 at 9:13 AM, John V. Sichi <span dir="ltr">&lt;<a href="mailto:jsichi@gmail.com" target="_blank"></a><a href="mailto:jsichi@gmail.com" target="_blank">jsichi@gmail.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>Matt Campbell wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I&#39;ve been trying to isolate when this issue was introduced, but am struggling a bit with perforce.  I&#39;m trying to sync to a changelist using something like:<br>
<br>
p4 sync //open/mondrian/...@10480<br>
<br>
This brings in the set of files from that changelist, but does not appear to delete files from future changelists.  <br>
What is the correct way to sync to a changelist?<br>
</blockquote>
<br></div>
That is the correct command.  It will delete files from future changelists, but it will not delete empty directories unless you have the rmdir option set in your client (the default is normdir).<br>
<br>
(Also, use p4 opened to make sure you don&#39;t have any files checked out before starting.)<br>
<br>
JVS<br>
<br>
_______________________________________________<br>
Mondrian mailing list<br>
<a href="mailto:Mondrian@pentaho.org" target="_blank"></a><a href="mailto:Mondrian@pentaho.org" target="_blank">Mondrian@pentaho.org</a><br>
<a href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank"></a><a href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank">http://lists.pentaho.org/mailman/listinfo/mondrian</a><br>
</blockquote></div><br>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Mondrian mailing list</span><br><span><a href="mailto:Mondrian@pentaho.org" target="_blank">Mondrian@pentaho.org</a></span><br>


<span><a href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank">http://lists.pentaho.org/mailman/listinfo/mondrian</a></span><br></div></blockquote></div></div></div><br>_______________________________________________<br>



Mondrian mailing list<br>
<a href="mailto:Mondrian@pentaho.org" target="_blank">Mondrian@pentaho.org</a><br>
<a href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank">http://lists.pentaho.org/mailman/listinfo/mondrian</a><br>
<br></blockquote></div><br></div></div></div>
</blockquote></div><br></div></div></div></div>
</div></div></blockquote></div><br>