Я пытаюсь воссоздать представление из резервной копии определения, используя EXECUTE в блоке анонимного кода (DO $$ ... BEGIN... END$$
), но не могу заставить его работать. Это примерно то, что я до сих пор:
EXECUTE 'CREATE VIEW image AS (' || (SELECT definition FROM tmp_view_backup WHERE viewname = 'image') || ')';
Таблица с резервной копией определений представлений была сделана так
CREATE TABLE tmp_view_backup
AS
(select viewname,definition from pg_views
WHERE schemaname = 'public'
);
Похоже, что выборка вызывает у меня некоторые проблемы при создании строки, так как результат совсем не тот, который я ожидал:
postgres=# select char_length('CREATE VIEW image AS (' || (SELECT definition FROM tmp_view_backup WHERE viewname = 'image') || ')') as f ;
f
---
(1 row)
Что это? Пустая строка? Если я опускаю выбор, я получаю нормальный ответ (например, длина строки 23
).