diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 799bdef8e6..4cca94a6c6 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -129,10 +129,7 @@ class Metadata(object): val = NULL_VALUES.get(field, None) _data[field] = val elif field in _data['user_metadata'].iterkeys(): - if _data['user_metadata'][field]['datatype'] == 'composite': - _data['user_metadata'][field]['#value#'] = None - else: - _data['user_metadata'][field]['#value#'] = val + _data['user_metadata'][field]['#value#'] = val _data['user_metadata'][field]['#extra#'] = extra else: # You are allowed to stick arbitrary attributes onto this object as diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 5702b75317..b0497eb53e 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -787,7 +787,10 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): mi.id = id for key, meta in self.field_metadata.custom_iteritems(): mi.set_user_metadata(key, meta) - mi.set(key, val=self.get_custom(idx, label=meta['label'], + if meta['datatype'] == 'composite': + mi.set(key, val=row[meta['rec_index']]) + else: + mi.set(key, val=self.get_custom(idx, label=meta['label'], index_is_id=index_is_id), extra=self.get_custom_extra(idx, label=meta['label'], index_is_id=index_is_id))