[ Sorry I found this one only found recently.]

Your patch has been added to the PostgreSQL unapplied patches list at:

        http://momjian.postgresql.org/cgi-bin/pgpatches

It will be applied as soon as one of the PostgreSQL committers reviews
and approves it.

---------------------------------------------------------------------------


Heikki Linnakangas wrote:
> While thinking about index-organized-tables and similar ideas, it 
> occurred to me that there's some low-hanging-fruit: maintaining cluster 
> order on inserts by trying to place new heap tuples close to other 
> similar tuples. That involves asking the index am where on the heap the 
> new tuple should go, and trying to insert it there before using the FSM. 
> Using the new fillfactor parameter makes it more likely that there's 
> room on the page. We don't worry about the order within the page.
> 
> The API I'm thinking of introduces a new optional index am function, 
> amsuggestblock (suggestions for a better name are welcome). It gets the 
> same parameters as aminsert, and returns the heap block number that 
> would be optimal place to put the new tuple. It's be called from 
> ExecInsert before inserting the heap tuple, and the suggestion is passed 
> on to heap_insert and RelationGetBufferForTuple.
> 
> I wrote a little patch to implement this for btree, attached.
> 
> This could be optimized by changing the existing aminsert API, because 
> as it is, an insert will have to descend the btree twice. Once in 
> amsuggestblock and then in aminsert. amsuggestblock could keep the right 
> index page pinned so aminsert could locate it quicker. But I wanted to 
> keep this simple for now. Another improvement might be to allow 
> amsuggestblock to return a list of suggestions, but that makes it more 
> expensive to insert if there isn't room in the suggested pages, since 
> heap_insert will have to try them all before giving up.
> 
> Comments regarding the general idea or the patch? There should probably 
> be a index option to turn the feature on and off. You'll want to turn it 
> off when you first load a table, and turn it on after CLUSTER to keep it 
> clustered.
> 
> Since there's been discussion on keeping the TODO list more up-to-date, 
> I hereby officially claim the "Automatically maintain clustering on a 
> table" TODO item :). Feel free to bombard me with requests for status 
> reports. And just to be clear, I'm not trying to sneak this into 8.2 
> anymore, this is 8.3 stuff.
> 
> I won't be implementing a background daemon described on the TODO item, 
> since that would essentially be an online version of CLUSTER. Which sure 
> would be nice, but that's a different story.
> 
> - Heikki
> 


-- 
  Bruce Momjian  <[EMAIL PROTECTED]>          http://momjian.us
  EnterpriseDB                               http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to