~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/join.cc

  • Committer: Brian Aker
  • Date: 2010-12-18 02:06:13 UTC
  • Revision ID: brian@tangent.org-20101218020613-8lxhcvsy812bu960
Formatting + remove default from switch/case.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3016
3016
      case REAL_RESULT:
3017
3017
        key_length+= sizeof(double);
3018
3018
        break;
 
3019
 
3019
3020
      case INT_RESULT:
3020
3021
        key_length+= sizeof(int64_t);
3021
3022
        break;
 
3023
 
3022
3024
      case DECIMAL_RESULT:
3023
3025
        key_length+= my_decimal_get_binary_size(group_item->max_length -
3024
3026
                                                (group_item->decimals ? 1 : 0),
3025
3027
                                                group_item->decimals);
3026
3028
        break;
 
3029
 
3027
3030
      case STRING_RESULT:
3028
 
      {
3029
 
        enum enum_field_types type= group_item->field_type();
3030
 
        /*
3031
 
          As items represented as DATE/TIME fields in the group buffer
3032
 
          have STRING_RESULT result type, we increase the length
3033
 
          by 8 as maximum pack length of such fields.
3034
 
        */
3035
 
        if (type == DRIZZLE_TYPE_DATE ||
3036
 
            type == DRIZZLE_TYPE_DATETIME ||
3037
 
            type == DRIZZLE_TYPE_TIMESTAMP)
3038
 
        {
3039
 
          key_length+= 8;
3040
 
        }
3041
 
        else
3042
 
        {
 
3031
        {
 
3032
          enum enum_field_types type= group_item->field_type();
3043
3033
          /*
3044
 
            Group strings are taken as varstrings and require an length field.
3045
 
            A field is not yet created by create_tmp_field()
3046
 
            and the sizes should match up.
 
3034
            As items represented as DATE/TIME fields in the group buffer
 
3035
            have STRING_RESULT result type, we increase the length
 
3036
            by 8 as maximum pack length of such fields.
3047
3037
          */
3048
 
          key_length+= group_item->max_length + HA_KEY_BLOB_LENGTH;
 
3038
          if (type == DRIZZLE_TYPE_DATE ||
 
3039
              type == DRIZZLE_TYPE_DATETIME ||
 
3040
              type == DRIZZLE_TYPE_TIMESTAMP)
 
3041
          {
 
3042
            key_length+= 8;
 
3043
          }
 
3044
          else
 
3045
          {
 
3046
            /*
 
3047
              Group strings are taken as varstrings and require an length field.
 
3048
              A field is not yet created by create_tmp_field()
 
3049
              and the sizes should match up.
 
3050
            */
 
3051
            key_length+= group_item->max_length + HA_KEY_BLOB_LENGTH;
 
3052
          }
 
3053
          break;
3049
3054
        }
3050
 
        break;
3051
 
      }
3052
 
      default:
 
3055
 
 
3056
      case ROW_RESULT:
3053
3057
        /* This case should never be choosen */
3054
3058
        assert(0);
3055
3059
        my_error(ER_OUT_OF_RESOURCES, MYF(ME_FATALERROR));
3056
3060
      }
3057
3061
    }
 
3062
 
3058
3063
    parts++;
 
3064
 
3059
3065
    if (group_item->maybe_null)
3060
3066
      null_parts++;
3061
3067
  }
 
3068
 
3062
3069
  join->tmp_table_param.group_length=key_length+null_parts;
3063
3070
  join->tmp_table_param.group_parts=parts;
3064
3071
  join->tmp_table_param.group_null_parts=null_parts;