Re: cataloguing NOT NULL constraints
От | Alvaro Herrera |
---|---|
Тема | Re: cataloguing NOT NULL constraints |
Дата | |
Msg-id | 20230630114403.nru7f6i5ejgcxz42@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: cataloguing NOT NULL constraints (Alvaro Herrera <alvherre@alvh.no-ip.org>) |
Ответы |
Re: cataloguing NOT NULL constraints
Re: cataloguing NOT NULL constraints Re: cataloguing NOT NULL constraints |
Список | pgsql-hackers |
OK, so here's a new attempt to get this working correctly. This time I did try the new pg_upgrade when starting with a pg_dumpall produced by a server in branch 14 after running the regression tests. The pg_upgrade support is *really* finicky ... The main novelty in this version of the patch, is that we now emit "throwaway" NOT NULL constraints when a column is part of the primary key. Then, after the PK is created, we run a DROP for that constraint. That lets us create the PK without having to scan the table during pg_upgrade. (I thought about adding a new dump object, either one per table or just a single one for the whole dump, which would carry the ALTER TABLE .. DROP CONSTRAINT commands for those throwaway constraints. I decided that this is unnecessary, so the code the command in the same dump object that does ALTER TABLE ADD PRIMARY KEY seems good enough. If somebody sees a reason to do it differently, we can.) There's new funny business with RelationGetIndexList and primary keys of partitioned tables. With the patch, we continue to store the OID of the PK even when that index is marked invalid. The reason for this is pg_dump: when it does the ALTER TABLE to drop the NOT NULLs, the columns would become marked nullable, because since the PK is invalid, it's not considered to protect the columns. I guess it might be possible to implement this in some other way, but I found none that were reasonable. I didn't find that did had any undesirable side-effects anyway. Scanning this thread, I think I left one reported issue unfixed related to tables created LIKE others. I'll give it a look later. Other than that I think all bases are covered, but I intend to leave the patch open until near the end of the CF, in case someone wants to play with it. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/ "It takes less than 2 seconds to get to 78% complete; that's a good sign. A few seconds later it's at 90%, but it seems to have stuck there. Did somebody make percentages logarithmic while I wasn't looking?" http://smylers.hates-software.com/2005/09/08/1995c749.html
Вложения
В списке pgsql-hackers по дате отправления: