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 по дате отправления: