Re: PostgreSQL EXCLUDE USING error: Data type integer has no default operator class

From: Denver Timothy <denver(at)timothy(dot)io>
To: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: PostgreSQL EXCLUDE USING error: Data type integer has no default operator class
Date: 2013-03-23 09:51:06
Message-ID: B1F41255-D9B6-4AEB-89E7-67F6791B53A2@timothy.io
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On Mar 22, 2013, at 2:57 PM, Ryan Kelly <rpkelly22(at)gmail(dot)com> wrote:

> On Fri, Mar 03/22/13, 2013 at 10:14:45AM -0600, Denver Timothy wrote:
>> In PostgreSQL 9.2.3 I am trying to create this simplified table:
>>
>> CREATE TABLE test (
>> user_id INTEGER,
>> startend TSTZRANGE,
>> EXCLUDE USING gist (user_id WITH =, startend WITH &&)
>> );
>>
>> But I get this error:
>>
>> ERROR: data type integer has no default operator class for access method "gist"
>> HINT: You must specify an operator class for the index or define a default operator class for the data type.
>>
>> I've spent quite a bit of time searching for hints on figuring out how to make this work, or figuring out why it won't work. I've also been trying to understand CREATE OPERATOR and CREATE OPERATOR CLASS, but those are over my head for now. Could anyone point me in the right direction?
>
> CREATE EXTENSION btree_gist;

That was one of the first things I tried, but going back and looking at things for the millionth time, I found the error was buried in the script output:

ERROR: could not open extension control file "/opt/local/share/postgresql92/extension/btree_gist.control": No such file or directory

I also assumed it was installed because at least one of the previous examples worked.

It turns out the contrib module (and several others) were not installed. On Mac OS 10.8.2 using MacPorts, I did this:

$ su
# port build postgresql92
# cd `port work postgresql92`/postgresql-<version>/contrib
# for d in *; do test -d $d && ( echo $d; cd $d; make all && make install; cd .. ); done

Now it works as expected.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2013-03-23 14:01:41 Re: timeofday() and clock_timestamp() produce different results when casting to timestamptz
Previous Message Sergey Konoplev 2013-03-23 07:37:47 timeofday() and clock_timestamp() produce different results when casting to timestamptz