Thursday, March 31, 2005, 5:53:12 PM, you wrote:

>> The actual test I'm doing is something like:

>>     WHERE ?1 >= (base + begin) AND ?1 < (base + end)

>> where ?1, base, begin, and end are all 64-bit addresses.

> This is a test with a well known optimization for unsigned values:

>     WHERE (?1 - base - begin) < end

> To make the < test unsigned in SQL use

>     WHERE ((?1 - base - begin) + 9223372036854775808)) < (end + 
> 9223372036854775808)

> This is with all values stored "raw," i.e., without offset.

Oops, I meant

    WHERE (?1 - base - begin) < (end - begin)

To make the < test unsigned in SQL use

    WHERE ((?1 - base - begin) + 9223372036854775808)) < ((end - begin) + 
9223372036854775808)

This works as long as end > begin.

e


Reply via email to