code: @Override
  	public void insert(SearchKey key, RecordId dataRecordId, boolean doLogicalLogging) {
  		// search the position
  		beforeFirst(new SearchRange(key));
  		
  		// log the logical operation starts
  		if (doLogicalLogging)
  			tx.recoveryMgr().logLogicalStart();
  		
  		// insert the data
  		rf.insert();
  		for (int i = 0; i < keyType.length(); i++)
  			rf.setVal(keyFieldName(i), key.get(i));
  		rf.setVal(SCHEMA_RID_BLOCK, new BigIntConstant(dataRecordId.block()
  				.number()));
  		rf.setVal(SCHEMA_RID_ID, new IntegerConstant(dataRecordId.id()));
  		
  		// log the logical operation ends
  		if (doLogicalLogging)
  			tx.recoveryMgr().logIndexInsertionEnd(ii.indexName(), key,
  					dataRecordId.block().number(), dataRecordId.id());
  	}
docs: Inserts a new index record into this index.
  
  @see Index#insert(SearchKey, RecordId, boolean)