Получить исходное определение вида из POSTGRESQL БД - PullRequest
1 голос
/ 29 мая 2020

Я создал представление со следующим определением:

CREATE TABLE t1(id int,name varchar);
INSERT INTO t1 values(1,'n1'),(2,'n2');
CREATE VIEW v2 AS SELECT * FROM t1 WHERE name = 'n1';

Но когда я проверил определение в postgresql DB (9.5) в таблице pg_views, оно изменилось следующим образом:

postgres=# select * from pg_views where schemaname = 'sc1' and viewname = 'v2';
     schemaname | viewname | viewowner |               definition
    ------------+----------+-----------+-----------------------------------------
     sc1        | v2       | postgres  |  SELECT t1.id,                         +
                |          |           |     t1.name                            +
                |          |           |    FROM sc1.t1                         +
                |          |           |   WHERE ((t1.name)::text = 'n1'::text);
    (1 row)

Я могу добавить tablename перед columnname, но мне не нужна дополнительная часть ':: text'. Есть ли способ достичь этого (как и любая другая системная таблица, из которой я могу запросить, чтобы получить исходное определение)

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете не получить "исходное" определение представления из системных таблиц Postgres.
Postgres только хранит проанализированную версию.

...