Rod Taylor pg
Thu Sep 15 22:11:55 PDT 2005
On Thu, 2005-09-15 at 23:59 +0300, Hannu Krosing wrote:
> On N, 2005-09-15 at 13:41 -0700, Marc Munro wrote:
> > Folks,
> > I saw a suggestion in this list about adding an index to sl_log(log_xid)
> > to speed up queries.  Can someone enlighten me on how to do this, I am
> > getting the following error:
> > 
> > ERROR:  data type _cage2.xxid has no default operator class for access
> > method "hash"
> > 	You must specify an operator class for the index or define a
> > 	default operator class for the data type
> > 
> > What do I need to specify for the opclass or access method or both?

The slony additions are broken. I first reported this in May to
Slony-general based on the below message from Tom when I was working out
a bug.

Toms reply:

 ssdb=# select * from pg_operator where oid = 716373;
  oprname | oprnamespace | oprowner | oprkind | oprcanhash | oprleft |
oprright | oprresult | oprcom | oprnegate | oprlsortop | oprrsortop |
oprltcmpop | oprgtcmpop |    oprcode    | oprrest |  oprjoin

---------+--------------+----------+---------+------------+---------+----------+-----------+--------+-----------+------------+------------+------------+------------+---------------+---------+-----------
  =       |         2200 |      588 | b       | t          |  716353 |
716353 |        16 | 716373 |    716372 |     716371 |     716371 |
716371 |     716369 | _ssrep.xxideq | eqsel   | eqjoinsel
 (1 row)

I think you need to have a word with the Slony boys.  They shouldn't be
marking the operator oprcanhash if they aren't providing a valid hash
opclass for the datatype.  Per the manual:

: To be marked HASHES, the join operator must appear in a hash index
: operator class. This is not enforced when you create the operator,
since
: of course the referencing operator class couldn't exist yet. But
: attempts to use the operator in hash joins will fail at runtime if no
: such operator class exists. The system needs the operator class to
find
: the data-type-specific hash function for the operator's input data
: type. Of course, you must also supply a suitable hash function before
: you can create the operator class.

-- 



More information about the Slony1-general mailing list