-----------
Improve gist XLOG code to follow the coding rules needed to prevent
torn-page problems.  This introduces some issues of its own, mainly
that there are now some critical sections of unreasonably broad scope,
but it's a step forward anyway.  Further cleanup will require some
code refactoring that I'd prefer to get Oleg and Teodor involved in.

Here I am. Oleg now is in expedition to solar eclipse (should return soon).

Some answers on your XXX
* gist.c:gistnewroot
  GISTInitBuffer(buffer, 0);  /* XXX not F_LEAF? */
  F_LEAF will be never set in new root, because gistnewroot is called when
  split of old root page is occured. Even it was a leaf (tree had only one
  page), new root will be non-leaf page.

* gistxlog.c:gistContinueInsert
        /*
         * XXX fall out to avoid making LOG message at bottom of routine.
         * I think the logic for when to emit that message is all wrong...
         */
  At line 543 itup vector was filled by invalid tuple, so newly filled root
  will contains only invalid tuples. Hence, reindex/vacuum full is required.


Sorry, I missed something, what is torn-page problem? Looking in your changes, I decided, that now it needs to around by CRIT_SECTION any buffer/page changes?




--
Teodor Sigaev                                   E-mail: [EMAIL PROTECTED]
                                                   WWW: http://www.sigaev.ru/

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq

Reply via email to