Re: Support for REINDEX CONCURRENTLY
От | Alvaro Herrera |
---|---|
Тема | Re: Support for REINDEX CONCURRENTLY |
Дата | |
Msg-id | 20130622171958.GA4051@eldon.alvh.no-ip.org обсуждение исходный текст |
Ответ на | Re: Support for REINDEX CONCURRENTLY (Andres Freund <andres@2ndquadrant.com>) |
Список | pgsql-hackers |
Andres Freund escribió: > On 2013-06-22 22:45:26 +0900, Michael Paquier wrote: > > And I imagine that you have the same problem even with > > RelationGetIndexList, not only RelationGetIndexListIfInvalid, because > > this would appear as long as you try to open more than 1 index with an > > index list. > > No. RelationGetIndexList() returns a copy of the list for exactly that > reason. The danger is not to see an outdated list - we should be > protected by locks against that - but looking at uninitialized or reused > memory. Are we doing this only to save some palloc traffic? Could we do this by, say, teaching list_copy() to have a special case for lists of ints and oids that allocates all the cells in a single palloc chunk? (This has the obvious problem that list_free no longer works, of course. But I think that specific problem can be easily fixed. Not sure if it causes more breakage elsewhere.) Alternatively, I guess we could grab an uncopied list, then copy the items individually into a locally allocated array, avoiding list_copy. We'd need to iterate differently than with foreach(). -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
В списке pgsql-hackers по дате отправления: