Thread: BUG #11554: Enforce that number and type of both columns involved in fkey are same type
BUG #11554: Enforce that number and type of both columns involved in fkey are same type
From
gary.weaver@protolabs.com
Date:
The following bug has been logged on the website: Bug reference: 11554 Logged by: Gary Weaver Email address: gary.weaver@protolabs.com PostgreSQL version: 9.3.2 Operating system: Linux Description: To help adhere to the statement, "Of course, the number and type of the constrained columns need to match the number and type of the referenced columns." as noted in http://www.postgresql.org/docs/9.3/static/ddl-constraints.html shouldn't PG enforce that both columns involved in a foreign key constraint are of the same number and type (e.g. int != bigint) at time of constraint creation? And possibly the default for enforcement could be configured to be off, if this were released in a 9.x release and then defaulted to on for 10.x+ releases of PG, if this is considered desirable. The problem is that if you are forced to use a tool that syncs data between databases of different types, other databases sometimes enforce that the types cannot be different. While this is not a frequent use case, it just makes sense in most cases that you'd want the two column types/sizes to be the same. Thanks for your help!
Re: BUG #11554: Enforce that number and type of both columns involved in fkey are same type
From
Tom Lane
Date:
gary.weaver@protolabs.com writes: > To help adhere to the statement, "Of course, the number and type of the > constrained columns need to match the number and type of the referenced > columns." as noted in > http://www.postgresql.org/docs/9.3/static/ddl-constraints.html shouldn't PG > enforce that both columns involved in a foreign key constraint are of the > same number and type (e.g. int != bigint) at time of constraint creation? No. SQL92 did say that, but in SQL99 and later, the requirement is only that the column types be comparable. Which is what PG enforces. > The problem is that if you are forced to use a tool that syncs data between > databases of different types, other databases sometimes enforce that the > types cannot be different. While this is not a frequent use case, it just > makes sense in most cases that you'd want the two column types/sizes to be > the same. It would be more productive to lobby those other systems to become more standards-compliant than to ask us to become less so. In any case, this hardly seems like it would be the dominant problem if you're trying to make schemas be exactly the same across multiple products :-(. regards, tom lane
Re: BUG #11554: Enforce that number and type of both columns involved in fkey are same type
From
Gary Weaver
Date:
Tom, On 10/2/14, 6:58 PM, "Tom Lane" <tgl@sss.pgh.pa.us> wrote: >gary.weaver@protolabs.com writes: >> To help adhere to the statement, "Of course, the number and type of the >> constrained columns need to match the number and type of the referenced >> columns." as noted in >> http://www.postgresql.org/docs/9.3/static/ddl-constraints.html >>shouldn't PG >> enforce that both columns involved in a foreign key constraint are of >>the >> same number and type (e.g. int !=3D bigint) at time of constraint >>creation? > >No. SQL92 did say that, but in SQL99 and later, the requirement is only >that the column types be comparable. Which is what PG enforces. Ah, ok. Thanks for the clarification! > >> The problem is that if you are forced to use a tool that syncs data >>between >> databases of different types, other databases sometimes enforce that the >> types cannot be different. While this is not a frequent use case, it >>just >> makes sense in most cases that you'd want the two column types/sizes to >>be >> the same. > >It would be more productive to lobby those other systems to become more >standards-compliant than to ask us to become less so. Understand, but I don't want to try swimming upstream. :) > >In any case, this hardly seems like it would be the dominant problem >if you're trying to make schemas be exactly the same across multiple >products :-(. Completely agree. We=B9re in a transitional state for a while where using a sync was chosen as the option for the short-term, and the sync tool complains. It was easy enough to fix, but it would have been nice if there were an option to tell PG to warn us when the fkey column number/type doesn=B9t match the id number/type, since currently we have no need for those to be different. *However*, this would slow down PG a little to have to make that check, so since you=B9re saying its behavior is consistent with the standard, I withdraw that request. Thanks for the info, and thanks for all of your work on PG! Confidentiality Notice: This email, including any attachments, is for the s= ole use of the intended recipient(s) and may contain confidential, propriet= ary or privileged information. It should be used or disseminated for the pu= rpose of conducting business with Proto Labs. It may contain Information go= verned by U.S. Export Control laws and regulations. If export controlled in= formation, it must not be transferred to a foreign person without the prope= r authorization of the applicable U.S. Government organization. Any unautho= rized review, use, disclosure, or distribution is prohibited. If you receiv= ed this email and are not the intended recipient, please inform the sender = by email and destroy all copies of the original message. Thank you for your= cooperation.