Index: content_views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/content_views.inc,v
retrieving revision 1.2.2.2
diff -u -r1.2.2.2 content_views.inc
--- content_views.inc	19 Dec 2006 00:50:01 -0000	1.2.2.2
+++ content_views.inc	29 Dec 2006 22:53:00 -0000
@@ -129,7 +129,8 @@
     }
     $query = "SELECT ".implode(', ', $query_columns).
              " FROM {node} node".
-             " LEFT JOIN {node_data_$field[field_name]} node_data_$field[field_name] ON node.vid = node_data_$field[field_name].vid".
+             // TODO : not sure this is the right table name...
+             " LEFT JOIN {". $field_info['content_db_info']['table'] ."} node_data_$field[field_name] ON node.vid = node_data_$field[field_name].vid".
              " WHERE node.nid = ".$data->nid.
              " ORDER BY node_data_$field[field_name].delta";
     $result = db_query(db_rewrite_sql($query, 'node'));
Index: content.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/content.module,v
retrieving revision 1.90.2.10
diff -u -r1.90.2.10 content.module
--- content.module	28 Dec 2006 02:10:07 -0000	1.90.2.10
+++ content.module	29 Dec 2006 22:45:31 -0000
@@ -208,20 +208,28 @@
  * Delete node type fields.
  */
 function content_delete(&$node) {
-  _content_field_invoke('delete', $node);
-  _content_field_invoke_default('delete', $node);
-  db_query('DELETE FROM {'. 'node_'. $node->type .'} WHERE nid = %d', $node->nid);
-  cache_clear_all('content:'. $node->nid, 'cache', TRUE);
+  $type = content_types($node->type);
+  if (!empty($type['fields'])) {
+    _content_field_invoke('delete', $node);
+    _content_field_invoke_default('delete', $node);
+    if (db_table_exists($type['table'])) {
+      db_query('DELETE FROM {'. $type['table'] .'} WHERE nid = %d', $node->nid);
+    }
+    cache_clear_all('content:'. $node->nid, 'cache', TRUE);
+  }
 }
 
 /**
  * delete node type fields for a revision.
  */
 function content_delete_revision(&$node) {
-  if (content_types($node->type)) {
+  $type = content_types($node->type);
+  if (!empty($type['fields'])) {
     _content_field_invoke('delete revision', $node);
     _content_field_invoke_default('delete revision', $node);
-    db_query('DELETE FROM {'. 'node_'. $node->type .'} WHERE vid = %d', $node->vid);
+    if (db_table_exists($type['table'])) {
+      db_query('DELETE FROM {'. $type['table'] .'} WHERE vid = %d', $node->vid);
+    }
     cache_clear_all('content:'. $node->nid .':'. $node->vid, 'cache');
   }
 }
@@ -707,6 +715,7 @@
       $type_result = db_query('SELECT * FROM {node_type} nt ORDER BY nt.type ASC');
       while ($type = db_fetch_array($type_result)) {
         $type['url_str'] = str_replace('_', '-', $type['type']);
+        $type['table'] = _content_tablename($type['type']);
         $type['fields'] = array();
         $field_result = db_query("SELECT nfi.field_name, nfi.weight, nfi.label, nfi.widget_type, nfi.widget_settings, nfi.description FROM {node_field_instance} nfi WHERE nfi.type_name = '%s' ORDER BY nfi.weight ASC, nfi.label ASC", $type['type']);
         while ($field = db_fetch_array($field_result)) {
@@ -789,10 +798,11 @@
   $db_info = array();
 
   if ($field['db_storage'] == CONTENT_DB_STORAGE_PER_FIELD) {
-    $db_info['table'] = 'node_data_'. $field['field_name'];
+    $db_info['table'] = _content_tablename($field['field_name'], 'field');
   }
   else {
-    $db_info['table'] = 'node_'. $field['type_name'];
+    $type = content_types($field['type_name']);
+    $db_info['table'] = $type['table'];
   }
 
   if (is_array($columns) && count($columns)) {
@@ -904,4 +914,23 @@
     $output .= '</div';
     return $output;
   }
-}
\ No newline at end of file
+}
+
+/**
+ * Generate a table name for a field or a content type.
+ *
+ * @param $name
+ *   The name of the content type or content field
+ * @param $entity
+ *   'field' or 'type'
+ *
+ * @return
+ *   A string containing the generated name for the database table
+ */
+function _content_tablename($name, $entity = 'type') {
+  switch ($entity) {
+    case 'type' :
+      return 'node_'.$name;
+    case 'field' :
+      return 'node_data_'.$name;
+  }
Index: content_crud.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/content_crud.inc,v
retrieving revision 1.4.2.2
diff -u -r1.4.2.2 content_crud.inc
--- content_crud.inc	20 Dec 2006 17:52:49 -0000	1.4.2.2
+++ content_crud.inc	29 Dec 2006 22:48:10 -0000
@@ -22,10 +22,9 @@
 
   foreach ($db_types as $content_type) {
     // Find content types that are missing the node_ table and add it
-    if (!db_table_exists('node_'. $content_type['type']) && !db_table_exists('node_'. $content_type['orig_type'])) {
-      $info = new StdClass();
-      $info->type = $content_type['type'];
-      content_type_create($info);
+    // NOTE : not sure about what to do with the 'orig_type' part here + I don't get why we need it
+    if (!db_table_exists($content_type['table']) && !db_table_exists(_content_tablename($content_type['orig_type']))) {
+      content_type_create((object)array('type' => $content_type['type']));
     }
   }
   content_clear_type_cache();
@@ -38,12 +37,13 @@
  *   value supplied by hook_node_type()
  */
 function content_type_create($info) {
-  
-  if (!db_table_exists('node_'. $info->type)) {
+  content_clear_type_cache();
+  $type = content_types($info->type);
+  if (!db_table_exists($type['table'])) {
     switch ($GLOBALS['db_type']) {
       case 'mysql':
       case 'mysqli':
-        db_query("CREATE TABLE {node_". $info->type ."} (
+        db_query("CREATE TABLE {". $type['table'] ."} (
           vid int unsigned NOT NULL default '0',
           nid int unsigned NOT NULL default '0',
           PRIMARY KEY (vid)
@@ -51,16 +51,16 @@
       break;
 
       case 'pgsql':
-        db_query("CREATE TABLE {node_". $info->type ."} (
+        db_query("CREATE TABLE {". $type['table'] ."} (
           vid integer unsigned NOT NULL default '0',
           nid integer unsigned NOT NULL default '0',
           PRIMARY KEY (vid)
         )");
       break;
     }
-    drupal_set_message(t('The content fields table node_%name has been created.', array('%name' => $info->type)));
+    drupal_set_message(t('The content fields table %name has been created.', array('%name' => $type['table'])));
   }
-  content_clear_type_cache();
+
 }
 
 /**
@@ -76,8 +76,9 @@
     db_query("UPDATE {node_field_instance} SET type_name='%s' WHERE type_name='%s'", array($info->type, $info->old_type));
 
     // Rename the content fields table to match new content type name.
-    $old_name = 'node_'. $info->old_type;
-    $new_name = 'node_'. $info->type;
+    $old_type = content_types($info->old_type);
+    $old_name = $old_type['table'];
+    $new_name = _content_tablename($info->type);
     switch ($GLOBALS['db_type']) {
       case 'mysql':
       case 'mysqli':
@@ -99,23 +100,24 @@
  *
  * @param $info
  *   value supplied by hook_node_type()
- * @return
- *   The number of fields deleted.
  */
 function content_type_delete($info) {
+  // we grab the info here while it's still available
+  $type = content_types($info->type);
 
+  // TODO : why not do a call to content_type() and use $type['fields'] ?
   $result = db_query("SELECT field_name FROM {node_field_instance} WHERE type_name = '%s'", $info->type);
   $field_names = array();
-  while ($type = db_fetch_array($result)) {
-    $field_names[] = $type['field_name'];
+  while ($field = db_fetch_array($result)) {
+    $field_names[] = $field['field_name'];
   }
   foreach ($field_names as $field_name) {
     content_field_instance_delete(array('type_name' => $info->type, 'field_name' => $field_name));
   }
 
-  if (db_table_exists("node_". $info->type)) {
-    db_query("DROP TABLE {node_". $info->type ."}");
-    drupal_set_message(t('The content fields table node_%name has been deleted.', array('%name' => $info->type)));
+  if (db_table_exists($type['table'])) {
+    db_query('DROP TABLE {'. $type['table'] .'}');
+    drupal_set_message(t('The content fields table %name has been deleted.', array('%name' => $type['table'])));
   }
 
   // reset all content type info
