Niels Breet postgres
Fri Dec 22 05:53:17 PST 2006
It seems we have a problem with our xxid type on PostgreSQL 8.2.

You can crash the backend (segmentation fault) by using this simple
select:

select NULL::_yourclustername.xxid;

The problem is that our _Slony_I_xxidin function doesn't handle
NULL input. Why this isn't a problem on older versions of PostgreSQL
is not clear to me. Any ideas?

This crash can be easily solved by making the
@NAMESPACE at ."xxidin"(cstring) function STRICT. But I'm not sure
if this just hides the bigger issue here? Another option is
to check the input with PG_ARG_ISNULL() inside the C part of this
function.

This issue was reported by SAS on IRC. It got triggered when
trying to unlock a set. I asked him to test the STRICT option and
that worked for him.

Looking some more into the code, I noticed that the
@NAMESPACE at ."xxid_snapshot_in"(cstring) function might also suffer
from this problem. Although I don't know if we could trigger this
in regular use.

If this all isn't enough. We got another report on IRC from
Richard Jones that he got this error with Slony on PostgreSQL 8.2:

PGRES_FATAL_ERROR ERROR:  operator class "_maincluster.xxid_ops"
does not exist for access method "btree"

Any ideas on why this error is triggered?

Some problems to think about over the coming holidays.

- Niels





More information about the Slony1-general mailing list