[erlang-questions] Accessing two versions of records when doing transform_table in mnesia

Hakan Mattsson hakan@REDACTED
Fri Jul 18 10:00:36 CEST 2008

On Thu, 17 Jul 2008, devdoer bird wrote:

db> Thanks a lot.I still has one question .If the transform_table grabs
db> the table lock,then how does the mnesia support the hot-upgrade table
db> operation?  Because the transform table grabs table lock,the cocurrent
db> write opertion will be blocked until the tranform_table is done.

The "normal" usage of mnesia:transform_table/4 is to give a fun as
argument. The fun will then be used by Mnesia to perform the actual
transformation of each record within a transaction.

But you do also have the option to use 'ignore' instead of a fun.
Then the mnesia:transform_table/4 function will only perform the
schema transformation, leaving all records in the table in the old
format. When the mnesia:transform_table/4 function returns, the table
lock is released and you can iterate over the table yourself in order
to perform the transformation of each record.

Håkan Mattsson (uabhams)
Erlang/OTP, Ericsson

More information about the erlang-questions mailing list