Rails не заполняет материализованное представление Postgres по умолчанию - PullRequest
0 голосов
/ 01 декабря 2018

У меня следующая миграция:

  execute <<-SQL
    CREATE TABLE test_table(
      name char(20)
    );
    INSERT INTO test_table(name) values ('test name');

    CREATE MATERIALIZED VIEW test AS
      SELECT * from test_table
    WITH DATA;
  SQL

Обратите внимание, что я добавляю «С ДАННЫМИ».Это не заполняет данные (поскольку я получаю сообщение «материализованное представление не было заполнено» при попытке выполнить одновременное обновление представления) и добавляет «WITH NO DATA» в structure.sql:

CREATE MATERIALIZED VIEW public.test AS
 SELECT test_table.name
   FROM public.test_table
  WITH NO DATA;

Что я делаю неправильно?Документация Postgres о материализованных представлениях гласит: Запрос выполняется и используется для заполнения представления во время выполнения команды (если не используется WITH NO DATA) Таким образом, даже без указания «WITH DATA» он должен генерировать «WITHДАННЫЕ "по умолчанию, но вместо этого я получаю" БЕЗ ДАННЫХ ".Когда я использую сценическую библиотеку, она делает то же самое ...

Моя проблема похожа на Миграция ActiveRecord, не заполняющая материализованное представление Postgres

EDIT Я узнал, что данные на самом деле заполняются в среде разработки (хотя она устанавливает WITH NO DATA в structure.sql).Проблема в тестовой среде, где она иногда не заполняет данные.Все еще выясняю, почему ... Но, к сожалению, structure.sql определенно не правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...