Charles,
While reading one of the recent threads, I realized that my Merge code was written before your custom column code. The merge code finds the first record selected (the "dest" destination record), then loops through the other selected book records (the "src" source records) in the order they were selected. For each src record, it copies the book formats in that record (provided that format doesn't already exist in the dest record) into the dest record.
Then it loops through the src records again to merge in the metadata. For each type of metadata there is a check to see if it exists in the source metadata information (src_mi), but not in the dest (dest_mi), and if so, it's written into the dest record. It occurred to me that there are no checks (at least none written by me) for user defined metadata. Thus, merge would lose that data if it's not in the src record. Some types of metadata are handled in a special way (Comments are appended, authors may be "Unknown," so they exist, but are still handled as if they don't, etc.)
All this "action" happens starting at line 802 of calibre\gui2\actions.py (pun not intended) in the merge_metadata(self, dest_id, src_ids) function.
Here's a quick example of the merger of the cover:
Code:
if src_mi.cover and not dest_mi.cover:
dest_mi.cover = src_mi.cover
I did a brief test of a custom user defined Yes/No column and it was not merged. I wonder if you would look it over and add in appropriate tests to merge in the user defined custom columns. I'm not up to speed on how to handle your new metadata, but I suspect it would only take you a few minutes to fix it.
Thanks.
http://bugs.calibre-ebook.com/ticket/6120