Estou trabalhando com um banco de dados PostgreSQL e preciso alterar a configuração de agrupamento de colunas de texto específicas. No entanto, não quero alterar o agrupamento de todo o banco de dados.
Atualmente, o banco de dados possui indexação que não diferencia maiúsculas de minúsculas em colunas inteiras (especificamente em colunas de ID) e não há índices nas colunas de texto que desejo modificar. Presumo que alterar a ordenação apenas das colunas de texto não deva causar problemas, visto que não há índices nessas colunas.
Minha pergunta é: alterar a ordenação nas colunas de texto causará algum problema com dados ou consultas existentes, mesmo que a ordenação do banco de dados não seja alterada e nenhum índice seja afetado?
Há alguma consideração de desempenho ou possíveis problemas dos quais eu deva estar ciente neste cenário?
A ordenação atual do banco de dados está definida como Turkish_Turkey.1254, conforme mostrado por esta consulta:
SELECT datname, datcollate, datctype
FROM pg_database
WHERE datname = '';
Para alterar a ordenação de todas as colunas de tipo de texto no banco de dados para uma ordenação que não diferencia maiúsculas de minúsculas, estou executando o seguinte bloco PL/pgSQL:
DO $$
DECLARE
t record;
BEGIN
FOR t IN
SELECT table_schema, table_name, column_name
FROM information_schema.columns
WHERE table_catalog = ''
AND data_type = 'text'
AND table_schema NOT LIKE 'pg_%'
ORDER BY table_schema
LOOP
EXECUTE format('ALTER TABLE %I.%I ALTER COLUMN %I SET DATA TYPE text COLLATE "tr-x-icu"',
t.table_schema, t.table_name, t.column_name);
END LOOP;
END
$$;