Hi all,
While working on the view I came across an unusual behaviour of the view,
PostgreSQL do not allows to drop a column from the view, whereas same pattern of Create and Replace view works while adding a column.
Please find below test for the same.
Version info
===========
postgres=# select version();
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 9.5.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55), 64-bit
(1 row)
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 9.5.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55), 64-bit
(1 row)
\d+ orgdata
Table "public.orgdata"
Column | Type | Modifiers | Storage | Stats target | Description
---------+-----------------------+-----------+----------+--------------+-------------
id | integer | not null | plain | |
name | character varying(20) | not null | extended | |
address | character varying(20) | | extended | |
age | integer | not null | plain | |
salary | numeric(10,0) | | main | |
Indexes:
"orgdata_pkey" PRIMARY KEY, btree (id)
Triggers:
example_trigger AFTER INSERT ON orgdata FOR EACH ROW EXECUTE PROCEDURE auditlogfunc()
Table "public.orgdata"
Column | Type | Modifiers | Storage | Stats target | Description
---------+-----------------------+-----------+----------+--------------+-------------
id | integer | not null | plain | |
name | character varying(20) | not null | extended | |
address | character varying(20) | | extended | |
age | integer | not null | plain | |
salary | numeric(10,0) | | main | |
Indexes:
"orgdata_pkey" PRIMARY KEY, btree (id)
Triggers:
example_trigger AFTER INSERT ON orgdata FOR EACH ROW EXECUTE PROCEDURE auditlogfunc()
Creating view
postgres=# create or replace view vi1 as
select id , name from orgdata ;
CREATE VIEW
select id , name from orgdata ;
CREATE VIEW
Alter command do not have any option to drop column
postgres=# alter view vi1
ALTER COLUMN OWNER TO RENAME TO SET SCHEMA
ALTER COLUMN OWNER TO RENAME TO SET SCHEMA
To add columns it will work.
========================
postgres=# create or replace view vi1 as
postgres-# select id, name, age from orgdata ;
CREATE VIEW
postgres-# select id, name, age from orgdata ;
CREATE VIEW
While trying to drop a column by replacing view definition from view it throws an error saying cannot drop column from view.
=====================================================================
postgres=# create or replace view vi1 as select
id , name from orgdata ;
ERROR: cannot drop columns from view
id , name from orgdata ;
ERROR: cannot drop columns from view
If its not a bug and a limitation kindly guide me towards any documentation where it is mentioned.
Thanks.
-- Shrikant Bhende
+91-9975543712
+91-9975543712