[rules-dev] range indexing - help wanted

Mark Proctor mproctor at codehaus.org
Tue Jul 10 19:28:58 EDT 2012


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/c00d45712f1cf2027ebda9e7df41567cf89c8fcd/drools-core/src/main/java/org/drools/core/util/RBTree.java 
>>
>>
>> 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 at 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/c789459c431763581db02653fb7bfafd5742ae1f 
>>>>
>>>> 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 at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>>
>>> _______________________________________________
>>> rules-dev mailing list
>>> rules-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>
>>
>
>




More information about the rules-dev mailing list