From: Stewart Smith Date: March 30 2011 7:21am Subject: Re: storage engine access to serialized version of a TABLE or TABLE_SHARE? List-Archive: http://lists.mysql.com/internals/38276 Message-Id: <871v1poyy1.fsf@flamingspork.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Tue, 29 Mar 2011 21:36:22 -0400, Zardosht Kasheff wrote: > I want to make sure that my understanding is correct. Looking at NDB, > it seems that they use the functions readfrm() and packfrm() to save > the frm file. readfrm() seems get the contents uncompressed, and > packfrm() compresses them. correct. in NDB we stored the FRM in a compressed format as we keep them all in the (in memory) NDB data dictionary. There's no requirement to compress them, it just saved valuable memory for us (I previously worked on NDB). > Suppose I want to just save the raw uncompressed bytes that make up > the file. I think I can just use the function readfrm() to get the > data. And, if some crash caused the frm file and my saved version to > get out of sync, I can just generate a new frm file by saving the data > that readfrm() retrieved into a new frm file. yes.... but what you really want to do is pass an error back to the server like NDB does, if you just silently overwrite things and keep going, there is likely to be (as Sergei says) very odd behaviour from the upper MySQL layers. MySQL keeps a cache of the table definition in data structures so that it doesn't have to parse the FRM very often (as that is relatively expensive). -- Stewart Smith