On Mon, Jan 20, 2014 at 8:52 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Rushabh Lathia <rushabh.lathia@gmail.com> writes:
>> As per the PG documentation it says that foreign table do support the
>> NOT NULL, NULL and DEFAULT.
>
> There has been a great deal of debate about what constraints on foreign
> tables ought to mean. Right now, at least for postgres_fdw, they're just
> taken as documentation of constraints that are supposed to exist on the
> far side. It's not clear what's the point of trying to enforce them
> against insertions done locally if the remote table lacks them --- any
> table update done on the far side could still violate the constraint.
What is the reason for keeping DEFAULT behaviour different than
constraints. Right now the behaviour for DEFAULT is if it is
defined on foreign table, then it will use that even if original table has
different or no default value?
Create Database foo;
\c foo
create table tbl(c1 int Default 20);
\c postgres
create foreign table tbl(c1 int Default 10) server pgdbfdw; --here
pgdbfdw is server for postgres_fdw
insert into tbl values(Default);
select * from tbl;c1
----10
(1 row)
\c foo
insert into tbl values(Default);
select * from tbl;c1
----1020
(2 rows)
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com