> ## 1 Mnesia Release Notes

> This document describes the changes made to the Mnesia system from version to version. The intention of this document is to list all incompatibilities as well as all enhancements and bugfixes for every release of Mnesia. Each release of Mnesia thus constitutes one section in this document. The title of each section is the version number of Mnesia.

> ### 1.1 Mnesia 4.1.4

> #### 1.1.1 Improvements and new features

> - Added an environment variable `-mnesia core_dir DIR` which when set always writes (even on ram only nodes) a coredump to `DIR` when mnesia crashes.
>   Own Id: OTP-4726
> - Overloaded events are reported as warnings via error_logger:warning_msg/2 (instead of error_msg), if available.
>   Own Id: OTP-4638

> #### 1.1.2 Fixed Bugs and malfunctions

> - Mnesia did a controlled crash if a table was created (or moved) with the same name as an already existing named ets table, i.e. the needed resources were not available. Now `{aborted,Reason}` will be returned.
>   Own Id: OTP-4321
>   Aux Id: seq7331

> #### 1.1.3 Incompatibilities

> - Soft upgrade is not possible, a restart of mnesia must be performed.
> - Calling `mnesia:restore()` with option `recreate` will crash mnesia if not all mnesia nodes have been upgraded to mnesia-4.1.4 or later.

> #### 1.1.4 Known bugs and problems

> None.

> ### 1.2 Mnesia 4.1.3

> #### 1.2.1 Improvements and new features

> None.

> #### 1.2.2 Fixed Bugs and malfunctions

> - Mnesia-4.1.2 couldn't load tables from mnesia-3.10.* nodes.
>   Own Id: OTP-4610
>   Aux Id: seq7754

> #### 1.2.3 Incompatibilities

> None

> #### 1.2.4 Known bugs and problems

> - Mnesia fatals (controlled crash) if a table is created with the same name as an already existing named ets table.
>   Own Id: OTP-4321
>   Aux Id: seq7331

> ### 1.3 Mnesia 4.1.2

> #### 1.3.1 Improvements and new features

> None.

> #### 1.3.2 Fixed Bugs and malfunctions

> - Calls to `mnesia:transaction()` which makes a badarg, e.g. calls to `mnesia:select/2` with a bad match spec as argument, loops forever.
>   Own Id: OTP-4596
> - Mnesia could be deadlocked during start of several nodes.
>   Own Id: OTP-4597
>   Aux Id: seq7754
> - Mnesia used table names as the name on opened disk_log files, which could cause strange behavoiurs if the name interfered with other opened disk_log files.
>   Own Id: OTP-4599
>   Aux Id: seq7705

> #### 1.3.3 Incompatibilities

> None

> #### 1.3.4 Known bugs and problems

> - Mnesia fatals (controlled crash) if a table is created with the same name as an already existing named ets table.
>   Own Id: OTP-4321
>   Aux Id: seq7331

> ### 1.4 Mnesia 4.1.1

> #### 1.4.1 Improvements and new features

> None.

> #### 1.4.2 Fixed Bugs and malfunctions

> - Nested transactions could be aborted with {aborted,{node_not_running,Node}}.
>   Own Id: OTP-4564
>   Aux Id: seq7460
> - Mnesia could not load dets files of old format over the network.
>   Own Id: OTP-4524
> - `mnesia:change_table_copy_type/3` failed to copy data when changing storage type from `disc_only_copies` to `ram_copies`.
>   Own Id: OTP-4565

> #### 1.4.3 Incompatibilities

> None

> #### 1.4.4 Known bugs and problems

> - Mnesia fatals (controlled crash) if a table is created with the same name as an already existing named ets table.
>   Own Id: OTP-4321
>   Aux Id: seq7331

> ### 1.5 Mnesia 4.1

> #### 1.5.1 Improvements and new features

> - The table fragmentation functionality in Mnesia has been improved.
>   `Select` and `match_object` is done in parallel which should improve performance.
>   A new concept of hash modules has been introduced. This means that a user now can define its own mapping between record keys and the actual table fragment hosting the record. A hash module must implement the `mnesia_frag_hash` callback behaviour (see the reference manual). The default hash module for new tables is `mnesia_frag_hash`, while old already existing tables are using the `mnesia_frag_old_hash` module. The `mnesia_frag_old_hash` is still using the poor depricated `erlang:hash/1` function, while `mnesia_frag_hash` is using the better `erlang:phash/1`.
>   Own Id: OTP-4403
>   Aux Id: seq7458
> - Improved table loading performance during startup. Mnesia should be able to utilize the network bandwidth better, and Mnesia also uses new `dets` functionality to improve the loading of `disc_only_copies` tables, if possible.
>   Own Id: OTP-4473

> #### 1.5.2 Fixed Bugs and malfunctions

> - Local content tables on ram nodes didn't load during startup.
>   Own Id: OTP-4369
>   Aux Id: seq7415
> - Sometime Mnesia could hang if schema operations where done during a mnesia node startup.
>   Own Id: OTP-4474

> #### 1.5.3 Incompatibilities

> - Downgrade to previous mnesia versions is not possible if you are using fragmented tables.

> #### 1.5.4 Known bugs and problems

> - Mnesia fatals (controlled crash) if a table is created with the same name as an already existing named ets table.
>   Own Id: OTP-4321
>   Aux Id: seq7331

> ### 1.6 Mnesia 4.0.2

> #### 1.6.1 Improvements and new features

> None

> #### 1.6.2 Fixed Bugs and malfunctions

> - Checkpoints could crash mnesia when mnesia nodes started.
>   Own Id: OTP-4318
>   Aux Id: seq7206
> - Some schema operations could return {atomic, ok} but still fail to commit the operation on nodes with disc, e.g. transform_table.
>   Own Id: OTP-4319
> - Mnesia left disk_log files opened in some cases, which could lead to crashes.
>   Own Id: OTP-4320
>   Aux Id: seq7338
> - `mnesia:transform_table` didn't work if table had indecies, it returned {atomic, ok} but the meta-data was not transformed.
>   Own Id: OTP-4325
>   Aux Id: seq7342
> - Transform table on disc_copies tables, sometimes fail to store the transformed records to disc.
>   Own Id: OTP-4292
> - An empty (ram_copies table) file could be created when unpacking a fallback.
>   Own Id: OTP-4338
> - Removed a possibilty for getting inconsistent tables during table copying.
>   Own Id: OTP-4338
> - `mnesia:select/[2|3]` now works with fragmented tables.
>   Own Id: OTP-4338

> #### 1.6.3 Incompatibilities

> None

> #### 1.6.4 Known bugs and problems

> None.

> ### 1.7 Mnesia 4.0.1

> #### 1.7.1 Improvements and new features

> None.

> #### 1.7.2 Fixed Bugs and malfunctions

> - Using `mnesia:dump_tables/1` or `mnesia:change_table_copy(Tab, Node, disc_copies)` on a ram node (schema in ram) causes a crash in earlier mnesia-3.10.* releases.
>   Own Id: OTP-4187
>   Aux Id: Seq 7188
> - If a mnesia node was restarted during a checkpoint (also affects backups) the checkpoint would be trashed, which could lead to hangings, crashes and other undesired behaviours, including that the checkpoint could delete other applications ets tables.
>   Own Id: OTP-4215
>   Aux Id: Seq 7206 and probably Seq 7184, Seq 7151
> - `mnesia:delete_object/[1|3]` sometimes failed to delete entries on `set` tables.
> - `mnesia:select/[2|3]` now works with fragmented tables.

> #### 1.7.3 Incompatibilities

> Release mnesia-4.0 and later will only run OTP R8 and later.

> #### 1.7.4 Known bugs and problems

> None.

> ### 1.8 Mnesia 4.0

> #### 1.8.1 Improvements and new features

> - The function `mnesia:[dirty_]select/[2|3]` has been added, the function can and should be used to write complex queries.
> - The function `mnesia:sync_transaction/[1|2|3]` has been added, the function can be used to avoid overloading mnesia on other nodes.
>   Own Id: OTP-3481
>   Aux Id: Seq 4362
> - Mnesia's locker mechanism has been optimized, and it is now possible to acquire a sticky_write lock in `mnesia:read/3`.

> #### 1.8.2 Fixed Bugs and malfunctions

> None

> #### 1.8.3 Incompatibilities

> Release mnesia-4.0 and later will only run OTP R8 and later.

> #### 1.8.4 Known bugs and problems

> None.

Copyright © 1991-2003 Ericsson Utvecklings AB