private static function get_add_column_string(moojon_base_column $column)
 {
     switch (get_class($column)) {
         case 'moojon_binary_column':
             return '`' . $column->get_name() . '` BINARY(' . $column->get_limit() . ') ' . moojon_db_driver::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_boolean_column':
             return '`' . $column->get_name() . '` TINYINT(1) ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_date_column':
             return '`' . $column->get_name() . '` DATE ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_datetime_column':
             return '`' . $column->get_name() . '` DATETIME ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_decimal_column':
             return '`' . $column->get_name() . '` DECIMAL(' . $column->get_limit() . ', ' . $column->get_decimals() . ') ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_float_column':
             return '`' . $column->get_name() . '` FLOAT(' . $column->get_limit() . ', ' . $column->get_decimals() . ') ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_integer_column':
             return '`' . $column->get_name() . '` INTEGER(' . $column->get_limit() . ') ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_primary_key':
             return '`' . $column->get_name() . '` INTEGER(' . $column->get_limit() . ') ' . self::get_null_string($column) . ' ' . self::get_default_string($column) . ' ' . $column->get_options();
             break;
         case 'moojon_string_column':
             return '`' . $column->get_name() . '` VARCHAR(' . $column->get_limit() . ') ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_text_column':
             $binary_string = !$column->get_binary() ? '' : 'BINARY ';
             return '`' . $column->get_name() . "` TEXT {$binary_string}" . self::get_null_string($column);
             break;
         case 'moojon_time_column':
             return '`' . $column->get_name() . '` TIME ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         case 'moojon_timestamp_column':
             return '`' . $column->get_name() . '` TIMESTAMP ' . self::get_null_string($column) . ' ' . self::get_default_string($column);
             break;
         default:
             throw new moojon_exception('create_table can only accept columns of moojon_base_column (' . get_class($column) . ' found).');
             break;
     }
 }