Index: computed_field.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/computed_field/computed_field.module,v
retrieving revision 1.17.2.8
diff -c -r1.17.2.8 computed_field.module
*** computed_field.module	31 Jul 2009 23:38:42 -0000	1.17.2.8
--- computed_field.module	26 Jan 2010 15:05:53 -0000
***************
*** 65,76 ****
          '#title' => t('Data Type'),
          '#description' => t('The SQL datatype to store this field in.'),
          '#default_value' => !empty($field['data_type']) ? $field['data_type'] : 'varchar',
!         '#options' => array('int' => 'int', 'float' => 'float', 'varchar' => 'varchar', 'text' => 'text', 'longtext' => 'longtext'),
          '#required' => FALSE,
        );
        $form['database']['data_length'] = array(
          '#type' => 'textfield',
          '#title' => t('Data Length'),
          '#default_value' => !empty($field['data_length']) ? $field['data_length'] : NULL,
          '#required' => FALSE,
        );
--- 65,77 ----
          '#title' => t('Data Type'),
          '#description' => t('The SQL datatype to store this field in.'),
          '#default_value' => !empty($field['data_type']) ? $field['data_type'] : 'varchar',
!         '#options' => array('int' => 'int', 'float' => 'float', 'decimal' => 'decimal' , 'varchar' => 'varchar', 'text' => 'text', 'longtext' => 'longtext'),
          '#required' => FALSE,
        );
        $form['database']['data_length'] = array(
          '#type' => 'textfield',
          '#title' => t('Data Length'),
+         '#description' => t('For decimal data type, use the format "PRECISION,SCALE"; for float, double is used when greater than 7.'),
          '#default_value' => !empty($field['data_length']) ? $field['data_length'] : NULL,
          '#required' => FALSE,
        );
***************
*** 109,122 ****
          if ($field['data_type'] == 'longtext') {
            $columns['value']['type'] = 'text';
            $columns['value']['size'] = 'big';
!         }
!         else {
            $columns['value']['type'] = isset($field['data_type']) ? $field['data_type'] : 'varchar';
          }
!         // text and longtext should not have a length, so we ignore it
!         if (!($field['data_type'] == 'text' || $field['data_type'] == 'longtext')) {
!           $columns['value']['length'] = isset($field['data_length']) ? $field['data_length'] : 32;
!         }
          $columns['value']['not NULL'] = isset($field['data_not_NULL']) ? $field['data_not_NULL'] : TRUE;
          $columns['value']['sortable'] = isset($field['data_sortable']) ? $field['data_sortable'] : FALSE;
          if ($field['data_default'] != '')  {
--- 110,141 ----
          if ($field['data_type'] == 'longtext') {
            $columns['value']['type'] = 'text';
            $columns['value']['size'] = 'big';
!         } else if ($field['data_type'] == 'decimal') {
!           $columns['value']['type'] = 'numeric';
!           if (isset($field['data_length'])){
!             $precision_scale = explode(',',$field['data_length']);
!             @ $columns['value']['precision'] = (int) $precision_scale[0];
!             @ $columns['value']['scale'] = (int) $precision_scale[1];
!           } else {
!             $columns['value']['precision'] = 10;
!             $columns['value']['scale'] = 0;
!           }
!         } else if ($field['data_type'] == 'float') {
!           //Float is stored as double if 'size' is 'big'.
!           //Float has a precision of 7 digits, so if you set a greater length, double is used
!           $columns['value']['type'] = 'float';
!           if (isset($field['data_length']) && $field['data_length'] > 7){
!             $columns['value']['size'] = 'big';
!           } else {
!             $columns['value']['size'] = 'normal';
!           }
!         } else {
            $columns['value']['type'] = isset($field['data_type']) ? $field['data_type'] : 'varchar';
+           if ($columns['value']['type'] != 'text') {
+             $columns['value']['length'] = isset($field['data_length']) ? $field['data_length'] : 32;
+           }
          }
!         
          $columns['value']['not NULL'] = isset($field['data_not_NULL']) ? $field['data_not_NULL'] : TRUE;
          $columns['value']['sortable'] = isset($field['data_sortable']) ? $field['data_sortable'] : FALSE;
          if ($field['data_default'] != '')  {
