wiredtiger/wiredtiger — pull request #302 by keithbostic (2012-08-16 20:02:02+00:00)
Title: Create checkpoints on empty tables.

If the application does a checkpoint (regardless whether it's named or internal), a checkpoint by the name must exist. This is complicated by the fact that this applies to empty row-store files as well which we go to some effort to avoid writing. Ref #301.

Re-work the checkpoint code to skip unmodified objects when closing a file (whatever checkpoints we have at that point are sufficient), and to skip unmodified objects when the checkpoint we're taking is named the same as the last checkpoint we have and we're not deleting other checkpoints (which might free up space).

Remove the recent change that made the __wt_page_modify_set function also mark the tree dirty: this is incorrect because the "dirty page" flag climbs the tree during reconciliation: that doesn't mean the tree
is no longer "clean", the process of checkpointing is what cleans the tree.

Change the btree salvage functions to set the tree and page dirty flags when instantiating new pages (it doesn't matter whether we do or not, because currently the tree flag only matters to the checkpoint function, but it's consistent with the way we handle other "dirty" operations).