diff --git a/arangod/VocBase/datafile.cpp b/arangod/VocBase/datafile.cpp index a20781ec64..c47242a7e4 100644 --- a/arangod/VocBase/datafile.cpp +++ b/arangod/VocBase/datafile.cpp @@ -621,6 +621,8 @@ static TRI_df_scan_t ScanDatafile (TRI_datafile_t const* datafile) { scan._status = 4; } + entry._key = nullptr; + if (marker->_type == TRI_DOC_MARKER_KEY_DOCUMENT || marker->_type == TRI_DOC_MARKER_KEY_EDGE) { char const* ptr = reinterpret_cast(marker) + reinterpret_cast(marker)->_offsetKey; @@ -630,8 +632,18 @@ static TRI_df_scan_t ScanDatafile (TRI_datafile_t const* datafile) { char const* ptr = reinterpret_cast(marker) + reinterpret_cast(marker)->_offsetKey; entry._key = TRI_DuplicateString2Z(TRI_UNKNOWN_MEM_ZONE, ptr, strlen(ptr)); } - else { - entry._key = nullptr; + else if (marker->_type == TRI_DF_MARKER_SHAPE) { + char* p = ((char*) marker) + sizeof(TRI_df_shape_marker_t); + TRI_shape_t* l = (TRI_shape_t*) p; + std::string tmp("shape #"); + tmp.append(std::to_string(l->_sid)); + entry._key = TRI_DuplicateString2Z(TRI_UNKNOWN_MEM_ZONE, tmp.c_str(), tmp.size()); + } + else if (marker->_type == TRI_DF_MARKER_ATTRIBUTE) { + TRI_shape_aid_t aid = reinterpret_cast(marker)->_aid; + std::string tmp("attribute #"); + tmp.append(std::to_string(aid)); + entry._key = TRI_DuplicateString2Z(TRI_UNKNOWN_MEM_ZONE, tmp.c_str(), tmp.size()); } TRI_PushBackVector(&scan._entries, &entry);