Replace serial role IDs with machine name strings.
function user_update_8002() {
// Change serial rid columns into strings.
$column = array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'description' => 'Primary Key: Unique role ID.',
);
db_change_field('role', 'rid', 'rid', $column);
$column['description'] = 'Foreign Key: {role}.rid.';
db_change_field('role_permission', 'rid', 'rid', $column);
$column['description'] = 'Primary Key: {role}.rid for role.';
db_change_field('users_roles', 'rid', 'rid', $column);
// Enlarge the role name (label) column.
$column = array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Role label.',
'translatable' => TRUE,
);
db_change_field('role', 'name', 'name', $column);
// Remove unique index.
db_drop_unique_key('role', 'name');
// Rename the built-in serial role IDs into the hardcoded machine names.
db_update('role')
->fields(array(
'rid' => DRUPAL_ANONYMOUS_RID,
))
->condition('rid', 1)
->execute();
db_update('role')
->fields(array(
'rid' => DRUPAL_AUTHENTICATED_RID,
))
->condition('rid', 2)
->execute();
db_update('role_permission')
->fields(array(
'rid' => DRUPAL_ANONYMOUS_RID,
))
->condition('rid', 1)
->execute();
db_update('role_permission')
->fields(array(
'rid' => DRUPAL_AUTHENTICATED_RID,
))
->condition('rid', 2)
->execute();
db_update('users_roles')
->fields(array(
'rid' => DRUPAL_ANONYMOUS_RID,
))
->condition('rid', 1)
->execute();
db_update('users_roles')
->fields(array(
'rid' => DRUPAL_AUTHENTICATED_RID,
))
->condition('rid', 2)
->execute();
}