Thread: Domains and Indexes

Domains and Indexes

From
Rod Taylor
Date:
Appears there is a problem finding the opclass when indexing a domain.

CREATE DOMAIN newint as int4;
CREATE TABLE tab (col newint unique);
ERROR:  data type newint has no default operator class for access method
"btree"
    You must specify an operator class for the index or define a
    default operator class for the data type


Specifically, GetDefaultOpClass() finds 0 exact matches and 3 binary
compatible matches.  Fetching getBaseType() of the attribute fixes the
problem for domains (see attachment).

However, I have to wonder why GetDefaultOpClass doesn't simply use the
first Binary Compatible opclass.  When there is more than one usable it
doesn't do anything useful.



Attachment

Re: Domains and Indexes

From
Tom Lane
Date:
Rod Taylor <rbt@zort.ca> writes:
> However, I have to wonder why GetDefaultOpClass doesn't simply use the
> first Binary Compatible opclass.

Because that would completely destroy the point of having multiple
opclasses for a datatype: you'd only do so if they *act different*.
Therefore, having the system choose one at random is a Bad Idea(tm).
        regards, tom lane


Re: Domains and Indexes

From
Bruce Momjian
Date:
Your patch has been added to the PostgreSQL unapplied patches list at:
http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

---------------------------------------------------------------------------


Rod Taylor wrote:
> Appears there is a problem finding the opclass when indexing a domain.
> 
> CREATE DOMAIN newint as int4;
> CREATE TABLE tab (col newint unique);
> ERROR:  data type newint has no default operator class for access method
> "btree"
>     You must specify an operator class for the index or define a
>     default operator class for the data type
> 
> 
> Specifically, GetDefaultOpClass() finds 0 exact matches and 3 binary
> compatible matches.  Fetching getBaseType() of the attribute fixes the
> problem for domains (see attachment).
> 
> However, I have to wonder why GetDefaultOpClass doesn't simply use the
> first Binary Compatible opclass.  When there is more than one usable it
> doesn't do anything useful.
> 
> 

[ Attachment, skipping... ]

> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: Domains and Indexes

From
Rod Taylor
Date:
Sorry Bruce, this was included as a part of the patch of the below
subject:

Re: [PATCHES] Dump serials as serial -- not a sequence


Patch may be smart enough to say 'already applied'.


On Wed, 2002-08-14 at 01:29, Bruce Momjian wrote:
> 
> Your patch has been added to the PostgreSQL unapplied patches list at:
> 
>     http://candle.pha.pa.us/cgi-bin/pgpatches
> 
> I will try to apply it within the next 48 hours.
> 
> ---------------------------------------------------------------------------
> 
> 
> Rod Taylor wrote:
> > Appears there is a problem finding the opclass when indexing a domain.
> > 
> > CREATE DOMAIN newint as int4;
> > CREATE TABLE tab (col newint unique);
> > ERROR:  data type newint has no default operator class for access method
> > "btree"
> >     You must specify an operator class for the index or define a
> >     default operator class for the data type
> > 
> > 
> > Specifically, GetDefaultOpClass() finds 0 exact matches and 3 binary
> > compatible matches.  Fetching getBaseType() of the attribute fixes the
> > problem for domains (see attachment).
> > 
> > However, I have to wonder why GetDefaultOpClass doesn't simply use the
> > first Binary Compatible opclass.  When there is more than one usable it
> > doesn't do anything useful.
> > 
> > 
> 
> [ Attachment, skipping... ]
> 
> > 
> > ---------------------------(end of broadcast)---------------------------
> > TIP 4: Don't 'kill -9' the postmaster
> 
> -- 
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
> http://archives.postgresql.org
> 




Re: Domains and Indexes

From
Bruce Momjian
Date:
Thanks.  I will keep it in the queue for CVS commit message sake.

---------------------------------------------------------------------------

Rod Taylor wrote:
> Sorry Bruce, this was included as a part of the patch of the below
> subject:
> 
> Re: [PATCHES] Dump serials as serial -- not a sequence
> 
> 
> Patch may be smart enough to say 'already applied'.
> 
> 
> On Wed, 2002-08-14 at 01:29, Bruce Momjian wrote:
> > 
> > Your patch has been added to the PostgreSQL unapplied patches list at:
> > 
> >     http://candle.pha.pa.us/cgi-bin/pgpatches
> > 
> > I will try to apply it within the next 48 hours.
> > 
> > ---------------------------------------------------------------------------
> > 
> > 
> > Rod Taylor wrote:
> > > Appears there is a problem finding the opclass when indexing a domain.
> > > 
> > > CREATE DOMAIN newint as int4;
> > > CREATE TABLE tab (col newint unique);
> > > ERROR:  data type newint has no default operator class for access method
> > > "btree"
> > >     You must specify an operator class for the index or define a
> > >     default operator class for the data type
> > > 
> > > 
> > > Specifically, GetDefaultOpClass() finds 0 exact matches and 3 binary
> > > compatible matches.  Fetching getBaseType() of the attribute fixes the
> > > problem for domains (see attachment).
> > > 
> > > However, I have to wonder why GetDefaultOpClass doesn't simply use the
> > > first Binary Compatible opclass.  When there is more than one usable it
> > > doesn't do anything useful.
> > > 
> > > 
> > 
> > [ Attachment, skipping... ]
> > 
> > > 
> > > ---------------------------(end of broadcast)---------------------------
> > > TIP 4: Don't 'kill -9' the postmaster
> > 
> > -- 
> >   Bruce Momjian                        |  http://candle.pha.pa.us
> >   pgman@candle.pha.pa.us               |  (610) 359-1001
> >   +  If your life is a hard drive,     |  13 Roberts Road
> >   +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
> > 
> > ---------------------------(end of broadcast)---------------------------
> > TIP 6: Have you searched our list archives?
> > 
> > http://archives.postgresql.org
> > 
> 
> 
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: Domains and Indexes

From
Bruce Momjian
Date:
Your patch has been added to the PostgreSQL unapplied patches list at:
http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

---------------------------------------------------------------------------


Rod Taylor wrote:
> Appears there is a problem finding the opclass when indexing a domain.
> 
> CREATE DOMAIN newint as int4;
> CREATE TABLE tab (col newint unique);
> ERROR:  data type newint has no default operator class for access method
> "btree"
>     You must specify an operator class for the index or define a
>     default operator class for the data type
> 
> 
> Specifically, GetDefaultOpClass() finds 0 exact matches and 3 binary
> compatible matches.  Fetching getBaseType() of the attribute fixes the
> problem for domains (see attachment).
> 
> However, I have to wonder why GetDefaultOpClass doesn't simply use the
> first Binary Compatible opclass.  When there is more than one usable it
> doesn't do anything useful.
> 
> 

[ Attachment, skipping... ]

> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: Domains and Indexes

From
Bruce Momjian
Date:
[ Sorry for previous message saying it was added to queue.]

Patch applied.  Thanks.

---------------------------------------------------------------------------


Rod Taylor wrote:
> Appears there is a problem finding the opclass when indexing a domain.
> 
> CREATE DOMAIN newint as int4;
> CREATE TABLE tab (col newint unique);
> ERROR:  data type newint has no default operator class for access method
> "btree"
>     You must specify an operator class for the index or define a
>     default operator class for the data type
> 
> 
> Specifically, GetDefaultOpClass() finds 0 exact matches and 3 binary
> compatible matches.  Fetching getBaseType() of the attribute fixes the
> problem for domains (see attachment).
> 
> However, I have to wonder why GetDefaultOpClass doesn't simply use the
> first Binary Compatible opclass.  When there is more than one usable it
> doesn't do anything useful.
> 
> 

[ Attachment, skipping... ]

> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: Domains and Indexes

From
Bruce Momjian
Date:
I backed this out. It is part of a later patch still in the queue.

---------------------------------------------------------------------------

Bruce Momjian wrote:
> 
> [ Sorry for previous message saying it was added to queue.]
> 
> Patch applied.  Thanks.
> 
> ---------------------------------------------------------------------------
> 
> 
> Rod Taylor wrote:
> > Appears there is a problem finding the opclass when indexing a domain.
> > 
> > CREATE DOMAIN newint as int4;
> > CREATE TABLE tab (col newint unique);
> > ERROR:  data type newint has no default operator class for access method
> > "btree"
> >     You must specify an operator class for the index or define a
> >     default operator class for the data type
> > 
> > 
> > Specifically, GetDefaultOpClass() finds 0 exact matches and 3 binary
> > compatible matches.  Fetching getBaseType() of the attribute fixes the
> > problem for domains (see attachment).
> > 
> > However, I have to wonder why GetDefaultOpClass doesn't simply use the
> > first Binary Compatible opclass.  When there is more than one usable it
> > doesn't do anything useful.
> > 
> > 
> 
> [ Attachment, skipping... ]
> 
> > 
> > ---------------------------(end of broadcast)---------------------------
> > TIP 4: Don't 'kill -9' the postmaster
> 
> -- 
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073