On Tue, Jun 27, 2017 at 1:39 PM, Tomasz Tyrakowski
t.tyrakow...@sol-system.pl [firebird-support] <
firebird-support@yahoogroups.com> wrote:

> ,
>
> Is it possible to change the collation of a varchar column in place
> (without making a temporary column, copying data, dropping the original
> column, making it anew and copying the data back)?


Not if you have indexes, a declared primary key, or a declared unique
constraint.  The index keys are a transformation of the value into a format
that produces the desired ordering through binary comparisons.


> Would setting
> RDB$RELATION_FIELDS.RDB$COLLATION do the trick (and is it safe to do)?
>

Not safe, won't work, and will produce very odd results on range queries on
any
index.  Or, say, a query that causes Firebird to return rows in index
order.


> I've got several old production databases which have different
> collations on different columns (probably by mistake) and would like to
> sort it out.
>

However messy with inter-column dependencies, the only way to make the
change is to create a new column with the desired collation, copy the data,
drop the old column, recreate the old column with the new collation and
repopulate it.


> Also, does the RDB$RELATION_FIELDS.RDB$COLLATION somehow depend on the
> default character set of the database, or is it universal (i.e. does the
> collation code from RDB$RELATION_FIELDS.RDB$COLLATION always mean the
> same, or does a single code mean different collations in databases with
> different default character sets)?
>

The format of the keys depends on the character set - different character
sets
have different meanings for some byte values, which collate differently.

Good luck,

Ann
  • [firebird-... Tomasz Tyrakowski t.tyrakow...@sol-system.pl [firebird-support]
    • Re: [... Tomasz Tyrakowski t.tyrakow...@sol-system.pl [firebird-support]
    • Re: [... Ann Harrison aharri...@ibphoenix.com [firebird-support]
      • R... Tomasz Tyrakowski t.tyrakow...@sol-system.pl [firebird-support]
        • ... Tomasz Tyrakowski t.tyrakow...@sol-system.pl [firebird-support]

Reply via email to