Я использую PostgreSQL12 и плагин gradle liquibase версии 2.0.1.
У меня есть скрипт yaml liquibase:
databaseChangeLog:
- changeSet:
id: 1.0.0
author: illine
comment: A 'movie_seq' sequence and a 'movie' table are created
changes:
- createSequence:
sequenceName: movie_seq
startValue: 1
incrementBy: 100
- createTable:
remarks: 'The table stores movie'
tableName: movie
columns:
- column:
constraints:
primaryKey: true
primaryKeyName: movie_pk
remarks: 'The id is a primary key of the table, it relations movie_seq'
name: id
type: bigint
defaultValueSequenceNext: movie_seq
- column:
remarks: 'The original_name is an original name of a movie from the source'
name: original_name
type: varchar(255)
...
- column:
name: text_searchable_index_col
type: tsvector
defaultValueComputed: to_tsvector('russian'::regconfig, (name)::text)
...
- createIndex:
columns:
- column:
name: text_searchable_index_col
defaultValueComputed: to_tsvector('russian'::regconfig, (name)::text)
indexName: text_search_idx
tableName: movie
rollback:
- dropSequence:
sequenceName: movie_seq
- dropTable:
cascadeConstraints: true
tableName: movie
Однако этот скрипт не работает, и я получаю ошибка: ОШИБКА: невозможно использовать ссылку на столбец в выражении ПО УМОЛЧАНИЮ
Но когда я выполняю скрипт yaml (без to_tsvector) плюс:
--liquibase formatted sql
--changeset illine:1.0.0/ddl/movie.sql-add-column-text_searchable_index_col
alter table movie add column text_searchable_index_col tsvector
generated always as (to_tsvector('russian', coalesce(localization_name, ''))) stored;
--changeset illine:1.0.0/ddl/movie.sql-crate-index-text_search_idx
create index text_search_idx on movie using gin (text_searchable_index_col);
Тогда это работает!
Как я понимаю, он не работает, потому что скрипт yaml (с to_tsvector) не содержит ", генерируемый всегда как (), сохраненный " К сожалению, я не нашел, как это сделать.
Так, кто-то может предложить все? Буду благодарен за любую помощь.