Index: includes/bootstrap.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/bootstrap.inc,v
retrieving revision 1.423
diff -u -p -r1.423 bootstrap.inc
--- includes/bootstrap.inc	7 Oct 2010 03:35:03 -0000	1.423
+++ includes/bootstrap.inc	7 Oct 2010 18:56:40 -0000
@@ -180,12 +180,12 @@ define('DRUPAL_BOOTSTRAP_FULL', 7);
 /**
  * Role ID for anonymous users; should match what's in the "role" table.
  */
-define('DRUPAL_ANONYMOUS_RID', 1);
+define('DRUPAL_ANONYMOUS_RID', 'anonymous');
 
 /**
  * Role ID for authenticated users; should match what's in the "role" table.
  */
-define('DRUPAL_AUTHENTICATED_RID', 2);
+define('DRUPAL_AUTHENTICATED_RID', 'authenticated');
 
 /**
  * The number of bytes in a kilobyte. For more information, visit
Index: modules/block/block.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.install,v
retrieving revision 1.46
diff -u -p -r1.46 block.install
--- modules/block/block.install	28 Sep 2010 03:30:37 -0000	1.46
+++ modules/block/block.install	7 Oct 2010 19:17:04 -0000
@@ -119,9 +119,9 @@ function block_schema() {
         'description' => "The block's unique delta within module, from {block}.delta.",
       ),
       'rid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => FALSE,
         'description' => "The user's role ID from {users_roles}.rid.",
       ),
     ),
@@ -445,6 +445,26 @@ function block_update_7006() {
 }
 
 /**
+ * Change {block_role}.rid into varchar.
+ */
+function block_update_7007() {
+  db_change_field('block_role', 'rid', 'rid', array(
+    'type' => 'varchar',
+    'length' => 64,
+    'not null' => FALSE,
+    'description' => "The user's role ID from {users_roles}.rid.",
+  ));
+  db_update('block_role')
+    ->fields(array('rid' => 'anonymous'))
+    ->condition('rid', 1)
+    ->execute();
+  db_update('block_role')
+    ->fields(array('rid' => 'authenticated'))
+    ->condition('rid', 2)
+    ->execute();
+}
+
+/**
  * @} End of "defgroup updates-6.x-to-7.x"
  * The next series of updates should start at 8000.
  */
Index: modules/contact/contact.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.install,v
retrieving revision 1.25
diff -u -p -r1.25 contact.install
--- modules/contact/contact.install	8 Jun 2010 03:48:14 -0000	1.25
+++ modules/contact/contact.install	7 Oct 2010 18:59:17 -0000
@@ -121,7 +121,8 @@ function contact_update_7002() {
   // disabled.
   db_merge('role_permission')
     ->key(array(
-      'rid' => DRUPAL_AUTHENTICATED_RID,
+      // 2 == DRUPAL_AUTHENTICATED_RID
+      'rid' => 2,
       'permission' => 'access user contact forms',
       'module' => 'contact',
     ))
Index: modules/system/system.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.install,v
retrieving revision 1.515
diff -u -p -r1.515 system.install
--- modules/system/system.install	6 Oct 2010 13:38:40 -0000	1.515
+++ modules/system/system.install	7 Oct 2010 18:59:15 -0000
@@ -2101,7 +2101,8 @@ function system_update_7027() {
 function system_update_7029() {
   db_insert('role_permission')
     ->fields(array(
-      'rid' => DRUPAL_AUTHENTICATED_RID,
+      // 2 == DRUPAL_AUTHENTICATED_RID
+      'rid' => 2,
       'permission' => 'view own unpublished content',
     ))
     ->execute();
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.119
diff -u -p -r1.119 user.admin.inc
--- modules/user/user.admin.inc	6 Oct 2010 13:38:40 -0000	1.119
+++ modules/user/user.admin.inc	7 Oct 2010 19:24:00 -0000
@@ -847,6 +847,11 @@ function user_admin_roles($form, $form_s
     '#size' => 32,
     '#maxlength' => 64,
   );
+  $form['rid'] = array(
+    '#type' => 'textfield', // @todo http://drupal.org/node/902644
+    '#required' => TRUE,
+    '#maxlength' => 64,
+  );
   $form['add'] = array(
     '#type' => 'submit',
     '#value' => t('Add role'),
@@ -891,13 +896,13 @@ function theme_user_admin_roles($variabl
     $name = $form['roles'][$rid]['#role']->name;
     $row = array();
     if (in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) {
-      $row[] = t('@name <em>(locked)</em>', array('@name' => $name));
+      $row[] = t('@name <em>(locked)</em> <small>(Machine name: @rid)</small>', array('@name' => $name, '@rid' => $rid));
       $row[] = drupal_render($form['roles'][$rid]['weight']);
       $row[] = '';
       $row[] = l(t('edit permissions'), 'admin/people/permissions/' . $rid);
     }
     else {
-      $row[] = check_plain($name);
+      $row[] = t('@name <small>(Machine name: @rid)</small>', array('@name' => $name, '@rid' => $rid));
       $row[] = drupal_render($form['roles'][$rid]['weight']);
       $row[] = l(t('edit role'), 'admin/people/permissions/roles/edit/' . $rid);
       $row[] = l(t('edit permissions'), 'admin/people/permissions/' . $rid);
@@ -937,8 +942,11 @@ function user_admin_role($form, $form_st
     '#description' => t('The name for this role. Example: "moderator", "editorial board", "site architect".'),
   );
   $form['rid'] = array(
-    '#type' => 'value',
+    '#type' => 'textfield', // @todo http://drupal.org/node/902644
+    '#required' => TRUE,
+    '#maxlength' => 64,
     '#value' => $role->rid,
+    '#disabled' => TRUE,
   );
   $form['weight'] = array(
     '#type' => 'value',
Index: modules/user/user.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.install,v
retrieving revision 1.67
diff -u -p -r1.67 user.install
--- modules/user/user.install	5 Oct 2010 06:17:29 -0000	1.67
+++ modules/user/user.install	7 Oct 2010 19:16:28 -0000
@@ -56,9 +56,9 @@ function user_schema() {
     'description' => 'Stores the permissions assigned to user roles.',
     'fields' => array(
       'rid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => FALSE,
         'description' => 'Foreign Key: {role}.rid.',
       ),
       'permission' => array(
@@ -92,9 +92,9 @@ function user_schema() {
     'description' => 'Stores user roles.',
     'fields' => array(
       'rid' => array(
-        'type' => 'serial',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => FALSE,
         'description' => 'Primary Key: Unique role ID.',
       ),
       'name' => array(
@@ -259,10 +259,9 @@ function user_schema() {
         'description' => 'Primary Key: {users}.uid for user.',
       ),
       'rid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => FALSE,
         'description' => 'Primary Key: {role}.rid for role.',
       ),
     ),
@@ -314,27 +313,11 @@ function user_install() {
 
   // Built-in roles.
   $rid_anonymous = db_insert('role')
-    ->fields(array('name' => 'anonymous user', 'weight' => 0))
+    ->fields(array('rid' => 'anonymous', 'name' => 'anonymous user', 'weight' => 0))
     ->execute();
   $rid_authenticated = db_insert('role')
-    ->fields(array('name' => 'authenticated user', 'weight' => 1))
+    ->fields(array('rid' => 'authenticated', 'name' => 'authenticated user', 'weight' => 1))
     ->execute();
-
-  // Sanity check to ensure the anonymous and authenticated role IDs are the
-  // same as the drupal defined constants. In certain situations, this will
-  // not be true.
-  if ($rid_anonymous != DRUPAL_ANONYMOUS_RID) {
-    db_update('role')
-      ->fields(array('rid' => DRUPAL_ANONYMOUS_RID))
-      ->condition('rid', $rid_anonymous)
-      ->execute();
-  }
-  if ($rid_authenticated != DRUPAL_AUTHENTICATED_RID) {
-    db_update('role')
-      ->fields(array('rid' => DRUPAL_AUTHENTICATED_RID))
-      ->condition('rid', $rid_authenticated)
-      ->execute();
-  }
 }
 
 /**
@@ -838,6 +821,40 @@ function user_update_7014() {
 }
 
 /**
+ * Change all .rid columns in user schema to varchar.
+ */
+function user_update_7015() {
+  db_change_field('role_permission', 'rid', 'rid', array(
+    'type' => 'varchar',
+    'length' => 64,
+    'not null' => FALSE,
+    'description' => 'Foreign Key: {role}.rid.',
+  ));
+  db_change_field('role', 'rid', 'rid', array(
+    'type' => 'varchar',
+    'length' => 64,
+    'not null' => FALSE,
+    'description' => 'Primary Key: Unique role ID.',
+  ));
+  db_change_field('users_roles', 'rid', 'rid', array(
+    'type' => 'varchar',
+    'length' => 64,
+    'not null' => FALSE,
+    'description' => 'Primary Key: {role}.rid for role.',
+  ));
+  foreach (array('role_permission', 'role', 'users_roles') as $table) {
+    db_update($table)
+      ->fields(array('rid' => 'anonymous'))
+      ->condition('rid', 1)
+      ->execute();
+    db_update($table)
+      ->fields(array('rid' => 'authenticated'))
+      ->condition('rid', 2)
+      ->execute();
+  }
+}
+
+/**
  * @} End of "defgroup user-updates-6.x-to-7.x"
  * The next series of updates should start at 8000.
  */
