uint32 valueOffset1 = 0, valueOffset2 = 0;
for (uint32 i = 0; i < numAttributes; i++) {
uint32 valueOffset1 = 0, valueOffset2 = 0;
for (uint32 i = 0; i < numAttributes; i++) {
// check that the query predicates form a prefix of the index key, which means that
// the first N index components are the N query predicates in some order
// check that the query predicates form a prefix of the index key, which means that
// the first N index components are the N query predicates in some order
uint32 recordNumber = index.mRecordNumberVector.at(i);
uint32 keyOffset = index.mKeyOffsetVector.at(i);
uint32 keySize = tableSection.at(keyOffset);
uint32 recordNumber = index.mRecordNumberVector.at(i);
uint32 keyOffset = index.mKeyOffsetVector.at(i);
uint32 keySize = tableSection.at(keyOffset);
// the record; detect and handle this separately since we can avoid an
// expensive recursive technique.
// the record; detect and handle this separately since we can avoid an
// expensive recursive technique.
uint32 numValues = mAttributes[i]->getNumberOfValues(packedRecord);
if (numValues == 0) {
// record does not have value required by index; for a unique index,
uint32 numValues = mAttributes[i]->getNumberOfValues(packedRecord);
if (numValues == 0) {
// record does not have value required by index; for a unique index,
offset = ws.put(offset, mIndexId);
offset = ws.put(offset, mIsUniqueIndex ? 1 : 0);
offset = ws.put(offset, mIndexId);
offset = ws.put(offset, mIsUniqueIndex ? 1 : 0);
for (uint32 i = 0; i < mAttributes.size(); i++)
offset = ws.put(offset, mAttributes[i]->attributeId());
for (uint32 i = 0; i < mAttributes.size(); i++)
offset = ws.put(offset, mAttributes[i]->attributeId());