Re: ALTER TABLE fails when changing column type due to index withbit_ops opclass - Mailing list pgsql-bugs

From Manuel Rigger
Subject Re: ALTER TABLE fails when changing column type due to index withbit_ops opclass
Date
Msg-id CA+u7OA5f6n90p53h5be+VcnsKqs8Jg4bZma_v2rTfEvQvfSswg@mail.gmail.com
Whole thread Raw
In response to Re: ALTER TABLE fails when changing column type due to index with bit_ops opclass  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
I see, thanks for the explanation!

From my perspective, it is not necessary to document this, as probably
not many people would have such a use case.

Best,
Manuel

On Wed, Nov 20, 2019 at 7:16 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> Manuel Rigger <rigger.manuel@gmail.com> writes:
> > Consider the following statements:
>
> > CREATE TABLE t0(c0 BIT VARYING(1));
> > CREATE INDEX i0 ON t0(c0 bit_ops);
> > ALTER TABLE t0 ALTER c0 TYPE TEXT; -- ERROR:  operator class "bit_ops"
> > does not accept data type text
>
> > Altering the column type fails, which is somewhat unexpected, since it
> > does not seem to cause problems for other opclasses. For example, the
> > following executes without errors:
>
> > CREATE TABLE t0(c0 TEXT);
> > CREATE INDEX i0 ON t0(c0 text_ops);
> > ALTER TABLE  t0 ALTER c0 TYPE BIT VARYING(1) USING c0::bit varying(1);
>
> > Is this a bug or expected?
>
> I think this is expected behavior, more or less.  The critical difference
> is that you specified a non-default opclass in the first example (the
> default choice for that column datatype is varbit_ops not bit_ops).
> ALTER TABLE figures that it's okay to replace the default opclass for
> the original type with the default opclass for the new type, but it's
> not willing to guess about what you want if the index has a non-default
> opclass.  So the conversion only goes through if the specified opclass
> also accepts the new datatype, which typically it wouldn't.
>
> This is probably not documented anyplace.  Should it be?  If so, what
> should we say and where?
>
>                         regards, tom lane



pgsql-bugs by date:

Previous
From: Marco Cuccato
Date:
Subject: Re: LDAPS trusted ca support
Next
From: PG Bug reporting form
Date:
Subject: BUG #16137: pg_upgrade fails with an index over nesting function