/**
  * Copy all eav attribute values for a specified attribute from one table to another eav attribute table,
  * updating the attribute id. The old records remain in the old value table.
  *
  * @param Mage_Eav_Model_Entity_Attribute $oldAttribute
  * @param Mage_Eav_Model_Entity_Attribute $newAttribute
  * @return array Affected entity ids
  */
 public function copyAttributeValues(Mage_Eav_Model_Entity_Attribute $oldAttribute, Mage_Eav_Model_Entity_Attribute $newAttribute)
 {
     $select = $this->_getReadAdapter()->select()->reset()->distinct(true)->from($oldAttribute->getBackendTable(), 'entity_id')->where('attribute_id=:attribute_id');
     $entityIds = $this->_getReadAdapter()->fetchCol($select, array('attribute_id' => $oldAttribute->getId()));
     // Remove new attribute value records for entities that are being migrated
     $this->_getWriteAdapter()->delete($newAttribute->getBackendTable(), array('attribute_id=?' => $newAttribute->getId(), 'entity_id IN(?)' => $entityIds));
     // Copy old attribute values to the new attribute
     $selectFields = array('entity_type_id', new Zend_Db_Expr($newAttribute->getId()), 'store_id', 'entity_id', 'value');
     $insertFields = array('entity_type_id', 'attribute_id', 'store_id', 'entity_id', 'value');
     $select->reset()->from($oldAttribute->getBackendTable(), $selectFields)->where('attribute_id=?', $oldAttribute->getId());
     $update = $this->_getWriteAdapter()->insertFromSelect($select, $newAttribute->getBackendTable(), $insertFields, Varien_Db_Adapter_Interface::INSERT_IGNORE);
     $this->_getWriteAdapter()->query($update);
     return $entityIds;
 }