Как создать скрипт luquibase yaml для столбца Postgres GENERATED STORED и индекса GIN? - PullRequest
0 голосов
/ 14 апреля 2020

Я использую 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) не содержит ", генерируемый всегда как (), сохраненный " К сожалению, я не нашел, как это сделать.

Так, кто-то может предложить все? Буду благодарен за любую помощь.

...