OSDN Git Service

Appears there is a problem finding the opclass when indexing a domain.
authorBruce Momjian <bruce@momjian.us>
Thu, 15 Aug 2002 02:53:35 +0000 (02:53 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 15 Aug 2002 02:53:35 +0000 (02:53 +0000)
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).

Rod Taylor

src/backend/commands/indexcmds.c

index 584df00..be0326e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.81 2002/08/07 21:45:01 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.82 2002/08/15 02:53:35 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -482,6 +482,9 @@ GetDefaultOpClass(Oid attrType, Oid accessMethodId)
        Oid                     exactOid = InvalidOid;
        Oid                     compatibleOid = InvalidOid;
 
+       /* It could be a domain */
+       attrType = getBaseType(attrType);
+
        /*
         * We scan through all the opclasses available for the access method,
         * looking for one that is marked default and matches the target type