Обсуждение: Get original view definition without modification
The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/9.5/rules-views.html Description: I am looking a way to get exact view definition, for ex : 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'; But when i checked the definition in postgresql DB(9.5) in pg_views table, it is getting modified in the below way : 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); I am fine with adding tablename before columnname but i don't want the extra '::text' part. Is there anyway to achieve this(like any other system table i can query from to get original definition)
PG Doc comments form <noreply@postgresql.org> writes: > I am looking a way to get exact view definition, for ex : > ... > I am fine with adding tablename before columnname but i don't want the extra > '::text' part. Is there anyway to achieve this(like any other system table i > can query from to get original definition) No, Postgres only saves a "compiled" form of a view. Storing the original text would have its own pitfalls, eg what if you rename a table or column mentioned in the view? (Also, the SQL standard has some requirements that would be difficult to meet otherwise.) If you really want the original text, best bet is to keep your schema creation commands in a VCS or the like, outside the database. regards, tom lane