Wolgang,
Nice find, with the change below the tests are now working :)
What we need to do now is try and develop some more comprehensive tests,
we cannot afford to introduce a new beta memory type, if it has "holes"
in it's data iterations.
If anyone is good at breaking code, please copy the two classes at the
bottom of the email, replace line 150 as per below (thanks wolfgang),
and try and generate ranges where the iteratator breaks.
For anyone that understands BTree iterations, there are many edge cases
on how it traverses that could become broken - mostly depending on where
you start and where you finish. Generating tests doesn't guarantee we
find them all.
Mark
On 11/07/2012 00:18, Mark Proctor wrote:
ok I think I see what you mean, it's overwriting the array
it's
copying from. have updated it, and running tests now:
if ( depth == stack.length - 1 ) {
// increase the stack if we have used up all space
int[] newStack = new int[depth * 3 ];
System.arraycopy( stack, 0, newStack, 0,
stack.length-1 );
stack = newStack;
}
Mark
On 11/07/2012 00:04, Mark Proctor wrote:
> Wolfgang,
>
> Not sure what you mean, I just checked the src, line 150:
>
https://github.com/droolsjbpm/drools/blob/c00d45712f1cf2027ebda9e7df41567...
>
>
> public void recurse() {
> if ( depth == stack.length - 1 ) {
> // increase the stack if we have used up all space
> stack = new int[depth * 3 ];
> stack = Arrays.copyOf( stack, stack.length * 3 );
> } The comment doesn't exist there to remove. Mark
>
>
>
> On 07/07/2012 07:05, Wolfgang Laun wrote:
>> Removing the line marked with //>>> helps.
>>
>> public void recurse() {
>>
>> if ( depth == stack.length - 1 ) {
>> // increase the stack if we have used up all space
>> //>>> stack = new int[depth * 3 ];
>> stack = Arrays.copyOf( stack, stack.length * 3 );
>> }
>>
>> Cheers
>> Wolfgang
> On 07/07/2012, Mark Proctor <mproctor(a)codehaus.org> wrote:
>>> I started to write this range indexing class, based on a RBTree
>>> implementation that I lifted from the web somewhere. However it's a
>>> bit
>>> buggy, and large ranges null pointer. Anyone want to work on making
>>> these stable? Once done we can start using them with not/exists nodes.
>>> Standard joins will take a bit more work, due to some integration
>>> issues
>>> of the tuple structures.
>>>
>>> The two classes can be found in this commit, just try removing the
>>> @Ignore to see the issues, and feel free to add more range tests.
>>>
https://github.com/droolsjbpm/drools/commit/c789459c431763581db02653fb7bf...
>>>
>>> drools-core/src/main/java/org/drools/core/util/RBTree.java
>>> drools-core/src/test/java/org/drools/core/util/RBTreeTest.java
>>>
>>> Mark
>>> _______________________________________________
>>> rules-dev mailing list
>>> rules-dev(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-dev
>>>
>> _______________________________________________
>> rules-dev mailing list
>> rules-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-dev
>
>