=== modified file 'storage/ndb/src/ndbapi/NdbScanOperation.cpp' --- storage/ndb/src/ndbapi/NdbScanOperation.cpp 2009-02-04 13:08:05 +0000 +++ storage/ndb/src/ndbapi/NdbScanOperation.cpp 2009-02-04 14:06:29 +0000 @@ -788,6 +788,8 @@ NdbIndexScanOperation::scanIndexImpl(con return -1; } + result_record->copyMask(m_read_mask, result_mask); + if (scan_flags & NdbScanOperation::SF_OrderBy) { /** @@ -798,10 +800,11 @@ NdbIndexScanOperation::scanIndexImpl(con */ for (i = 0; i < key_record->key_index_length; i++) { - const NdbRecord::Attr *key_col = - &key_record->columns[key_record->key_indexes[i]]; - if (key_col->attrId >= result_record->m_attrId_indexes_length || - result_record->m_attrId_indexes[key_col->attrId] < 0) + Uint32 attrId = key_record->columns[key_record->key_indexes[i]].attrId; + if (attrId >= result_record->m_attrId_indexes_length || + result_record->m_attrId_indexes[attrId] < 0 || + !BitmaskImpl::get((NDB_MAX_ATTRIBUTES_IN_TABLE+31)>>5, + m_read_mask, attrId)) { setErrorCodeAbort(4292); return -1; @@ -833,8 +836,6 @@ NdbIndexScanOperation::scanIndexImpl(con if (res==-1) return -1; - result_record->copyMask(m_read_mask, result_mask); - /* Fix theStatus as set in processIndexScanDefs(). */ theStatus= NdbOperation::UseNdbRecord;