Re: CREATE FOREGIN TABLE LACUNA
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Peter Eisentraut <peter_e@gmx.net>, Robert Haas <robertmhaas@gmail.com>, David Fetter <david@fetter.org>, PG Hackers <pgsql-hackers@postgresql.org>
Date: 2012-03-14T20:48:28Z
Lists: pgsql-hackers
On 03/14/2012 04:44 PM, Tom Lane wrote: > Peter Eisentraut<peter_e@gmx.net> writes: >> On ons, 2012-03-14 at 10:27 -0400, Tom Lane wrote: >>> That opinion seems to me to connect to the recently-posted patch to >>> make contrib/file_fdw enforce NOT NULL constraints. Should we instead >>> have the position that constraints declared for foreign tables are >>> statements that we can take on faith, and it's the user's fault if >>> they are wrong? >> We should look into the NOT ENFORCED stuff for constraints in SQL:2011. >> Then we can have both, and both for regular and foreign tables. > Have both what? The key point here is that we *can't* enforce > constraints on foreign tables, at least not with anything like the > semantics SQL constraints normally have. Ignoring that point leads > to nonsensical conclusions. > > Declaring a foreign constraint as NOT ENFORCED might be a reasonable > thing to do, but it doesn't help us decide what to do when that clause > isn't attached. > > On reflection I don't see anything much wrong with the "if you lied > about the constraint it's your fault that things broke" position. > It seems quite comparable to the fact that we take the user's assertions > on faith as to the number and data types of the columns in a foreign > table. > > Maybe we should say that for foreign tables NOT ENFORCED is implied. That seems to amount to much the same thing. cheers andrew