diff U3 E:/www/drupalista/sites/all/modules/_cck/serial/serial.install D:/Documents and Settings/Francisco/Desktop/serial/serial.install
--- E:/www/drupalista/sites/all/modules/_cck/serial/serial.install	Fri Jan 28 04:05:00 2011
+++ D:/Documents and Settings/Francisco/Desktop/serial/serial.install	Wed Feb 16 23:47:50 2011
@@ -50,8 +50,7 @@
   $table_schema = _serial_get_table_schema();
 
   // Build the schema by iteration over all the serial field instances:
-  $query = "SELECT type_name, field_name FROM {content_node_field_instance} WHERE widget_module = 'serial'";
-  $result = db_query($query);
+  $result = serial_get_all_fields();
   $schema = array();
   while ($field = db_fetch_array($result)) {
     $table = _serial_get_field_table_name($field);
@@ -60,4 +59,45 @@
 
   // Return the schema of all the assistant tables (one per serial field instance):
   return $schema;
+}
+
+/**
+ * Upgrade path.
+ *
+ * Switches from nids to uniqeid.
+ */
+function serial_update_6000() {
+  // Get the new field schema:
+  module_load_include('inc', 'serial');
+  $table_schema = _serial_get_table_schema();
+  $uniqid_schema = $table_schema['fields']['uniqid'];
+
+  // Update the schema of old assistant tables:
+  $result = serial_get_all_fields();
+  while ($field = db_fetch_array($result)) {
+    // Empty the table:
+    $table = _serial_get_field_table_name($field);
+    db_query('DELETE FROM {'. $table. '}');
+
+    // Drop the old field and key:
+    db_drop_unique_key($ret, $table, 'nid');
+    db_drop_field($ret, $table, 'nid');
+
+    // Add the new field and key:
+    db_add_field($ret, $table, 'uniqid', $uniqid_schema);
+    db_add_unique_key($ret, $table, 'uniqid', array('uniqid'));
+  }
+
+  // Return:
+  return array();
+}
+
+/**
+ * Retrieves all the managed serial fields.
+ *
+ * @return result set containing pairs of (node type name, field name).
+ */
+function serial_get_all_fields() {
+  return db_query('SELECT DISTINCT type_name, field_name '.
+      'FROM {content_node_field_instance} WHERE widget_module = \'serial\'');
 }
