Tom Lane wrote:
>Weiping He <laser@zhengmai.com.cn> writes:
>
>
>>because the data type (UUID) is a struct,
>>and the uuid_eq() function accept two pointer to the value of struct uuid,
>>if make it IMMUTABLE, postgresql would think it should not try to run
>>the function, but return the cached value instead when it get two same
>>pointers input,
>>
>>
>
>No, it will not. Your claim above is entirely wrong; the fact that the
>datatype is pass-by-reference doesn't affect anything (unless you've
>failed to declare the datatype that way, but if so I'd not think it
>would work at all).
>
> regards, tom lane
>
>---------------------------(end of broadcast)---------------------------
>TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
>
>
yeah, you are right, it's out fault. We've mistakenly use PG_RETURN_INT16()
to return from our am support function, which prune the sign
information from the memcmp(),
but we still declare the function to return INTEGER when CREATE
FUNCTION. So the error,
it's fixed now, and the datatype and index run smoothly.
Thanks and Regards
Laser