NOT Null constraint on foreign table not working

From: Rushabh Lathia <rushabh(dot)lathia(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: Rushabh Lathia <rushabh(dot)lathia(at)enterprisedb(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Subject: NOT Null constraint on foreign table not working
Date: 2014-01-20 07:51:20
Message-ID: CAGPqQf1qX3W1rS0dB3+L+qh0Rg0TZoE7yBMKHPFExod5x4rorg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello,

Please consider the following test:

create database foo;
\c foo

create table foo_test ( a int );

\c postgres

create extension if not exists postgres_fdw;
create server foo_server foreign data wrapper postgres_fdw options ( dbname
'foo' );
create user mapping for current_user server foo_server;

create foreign table foo_test ( a int not null) server foo_server;

-- insert should return error for because NOT NULL constraint on column a
postgres=# insert into foo_test values ( null );
INSERT 0 1

postgres=# select * from foo_test;
a
---

(1 row)

-- clean up
drop foreign table foo_test;
drop server foo_server cascade;
\c postgres
drop database foo;

Analysis:

As per the PG documentation it says that foreign table do support the
NOT NULL, NULL and DEFAULT.

http://www.postgresql.org/docs/devel/static/sql-createforeigntable.html

But when I tried the NOT NULL constraint, its not working for the foreign
tables.
Looking at the code into ExecInsert(), for the foreign table missed to call
ExecConstraints(). I am not sure whether it is intentional that we not
calling
ExecConstraints() in case of foreign server or its missed.
Do share your thought on this.

I quickly fix the issue by adding ExecConstraints() call for foreign table
and
now test behaving as expected. PFA patch for the same.

Regards,
Rushabh Lathia
www.EnterpriseDB.com

Attachment Content-Type Size
exec_constrints_foreign_table.patch text/x-patch 591 bytes

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2014-01-20 07:52:01 Re: using rpmbuild with PostgreSQL 9.2.6 source code
Previous Message Sameer Kumar 2014-01-20 07:46:48 using rpmbuild with PostgreSQL 9.2.6 source code