~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item_timefunc.cc

  • Committer: Brian Aker
  • Date: 2008-07-28 03:45:43 UTC
  • mfrom: (212.1.8 codestyle)
  • Revision ID: brian@tangent.org-20080728034543-qulvxdig8powjsj1
Merge from Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
950
950
{
951
951
  if (args[0]->type() == Item::FIELD_ITEM)
952
952
  {
953
 
    if (args[0]->field_type() == MYSQL_TYPE_NEWDATE)
 
953
    if (args[0]->field_type() == DRIZZLE_TYPE_NEWDATE)
954
954
      return MONOTONIC_STRICT_INCREASING;
955
 
    if (args[0]->field_type() == MYSQL_TYPE_DATETIME)
 
955
    if (args[0]->field_type() == DRIZZLE_TYPE_DATETIME)
956
956
      return MONOTONIC_INCREASING;
957
957
  }
958
958
  return NON_MONOTONIC;
971
971
  }
972
972
  res=(int64_t) calc_daynr(ltime.year,ltime.month,ltime.day);
973
973
  
974
 
  if (args[0]->field_type() == MYSQL_TYPE_NEWDATE)
 
974
  if (args[0]->field_type() == DRIZZLE_TYPE_NEWDATE)
975
975
  {
976
976
    // TO_DAYS() is strictly monotonic for dates, leave incl_endp intact
977
977
    return res;
1206
1206
enum_monotonicity_info Item_func_year::get_monotonicity_info() const
1207
1207
{
1208
1208
  if (args[0]->type() == Item::FIELD_ITEM &&
1209
 
      (args[0]->field_type() == MYSQL_TYPE_NEWDATE ||
1210
 
       args[0]->field_type() == MYSQL_TYPE_DATETIME))
 
1209
      (args[0]->field_type() == DRIZZLE_TYPE_NEWDATE ||
 
1210
       args[0]->field_type() == DRIZZLE_TYPE_DATETIME))
1211
1211
    return MONOTONIC_INCREASING;
1212
1212
  return NON_MONOTONIC;
1213
1213
}
1254
1254
  if (args[0]->type() == FIELD_ITEM)
1255
1255
  {                                             // Optimize timestamp field
1256
1256
    Field *field=((Item_field*) args[0])->field;
1257
 
    if (field->type() == MYSQL_TYPE_TIMESTAMP)
 
1257
    if (field->type() == DRIZZLE_TYPE_TIMESTAMP)
1258
1258
      return ((Field_timestamp*) field)->get_timestamp(&null_value);
1259
1259
  }
1260
1260
  
2016
2016
    The field type for the result of an Item_date function is defined as
2017
2017
    follows:
2018
2018
 
2019
 
    - If first arg is a MYSQL_TYPE_DATETIME result is MYSQL_TYPE_DATETIME
2020
 
    - If first arg is a MYSQL_TYPE_NEWDATE and the interval type uses hours,
2021
 
      minutes or seconds then type is MYSQL_TYPE_DATETIME.
2022
 
    - Otherwise the result is MYSQL_TYPE_STRING
 
2019
    - If first arg is a DRIZZLE_TYPE_DATETIME result is DRIZZLE_TYPE_DATETIME
 
2020
    - If first arg is a DRIZZLE_TYPE_NEWDATE and the interval type uses hours,
 
2021
      minutes or seconds then type is DRIZZLE_TYPE_DATETIME.
 
2022
    - Otherwise the result is DRIZZLE_TYPE_STRING
2023
2023
      (This is because you can't know if the string contains a DATE, MYSQL_TIME or
2024
2024
      DATETIME argument)
2025
2025
  */
2026
 
  cached_field_type= MYSQL_TYPE_STRING;
 
2026
  cached_field_type= DRIZZLE_TYPE_STRING;
2027
2027
  arg0_field_type= args[0]->field_type();
2028
 
  if (arg0_field_type == MYSQL_TYPE_DATETIME ||
2029
 
      arg0_field_type == MYSQL_TYPE_TIMESTAMP)
2030
 
    cached_field_type= MYSQL_TYPE_DATETIME;
2031
 
  else if (arg0_field_type == MYSQL_TYPE_NEWDATE)
 
2028
  if (arg0_field_type == DRIZZLE_TYPE_DATETIME ||
 
2029
      arg0_field_type == DRIZZLE_TYPE_TIMESTAMP)
 
2030
    cached_field_type= DRIZZLE_TYPE_DATETIME;
 
2031
  else if (arg0_field_type == DRIZZLE_TYPE_NEWDATE)
2032
2032
  {
2033
2033
    if (int_type <= INTERVAL_DAY || int_type == INTERVAL_YEAR_MONTH)
2034
2034
      cached_field_type= arg0_field_type;
2035
2035
    else
2036
 
      cached_field_type= MYSQL_TYPE_DATETIME;
 
2036
      cached_field_type= DRIZZLE_TYPE_DATETIME;
2037
2037
  }
2038
2038
}
2039
2039
 
2626
2626
    The field type for the result of an Item_func_add_time function is defined
2627
2627
    as follows:
2628
2628
 
2629
 
    - If first arg is a MYSQL_TYPE_DATETIME or MYSQL_TYPE_TIMESTAMP 
2630
 
      result is MYSQL_TYPE_DATETIME
2631
 
    - If first arg is a MYSQL_TYPE_TIME result is MYSQL_TYPE_TIME
2632
 
    - Otherwise the result is MYSQL_TYPE_STRING
 
2629
    - If first arg is a DRIZZLE_TYPE_DATETIME or DRIZZLE_TYPE_TIMESTAMP 
 
2630
      result is DRIZZLE_TYPE_DATETIME
 
2631
    - If first arg is a DRIZZLE_TYPE_TIME result is DRIZZLE_TYPE_TIME
 
2632
    - Otherwise the result is DRIZZLE_TYPE_STRING
2633
2633
  */
2634
2634
 
2635
 
  cached_field_type= MYSQL_TYPE_STRING;
 
2635
  cached_field_type= DRIZZLE_TYPE_STRING;
2636
2636
  arg0_field_type= args[0]->field_type();
2637
 
  if (arg0_field_type == MYSQL_TYPE_NEWDATE ||
2638
 
      arg0_field_type == MYSQL_TYPE_DATETIME ||
2639
 
      arg0_field_type == MYSQL_TYPE_TIMESTAMP)
2640
 
    cached_field_type= MYSQL_TYPE_DATETIME;
2641
 
  else if (arg0_field_type == MYSQL_TYPE_TIME)
2642
 
    cached_field_type= MYSQL_TYPE_TIME;
 
2637
  if (arg0_field_type == DRIZZLE_TYPE_NEWDATE ||
 
2638
      arg0_field_type == DRIZZLE_TYPE_DATETIME ||
 
2639
      arg0_field_type == DRIZZLE_TYPE_TIMESTAMP)
 
2640
    cached_field_type= DRIZZLE_TYPE_DATETIME;
 
2641
  else if (arg0_field_type == DRIZZLE_TYPE_TIME)
 
2642
    cached_field_type= DRIZZLE_TYPE_TIME;
2643
2643
}
2644
2644
 
2645
2645
/**
3160
3160
{
3161
3161
  maybe_null= 1;
3162
3162
  decimals=0;
3163
 
  cached_field_type= MYSQL_TYPE_DATETIME;
 
3163
  cached_field_type= DRIZZLE_TYPE_DATETIME;
3164
3164
  max_length= MAX_DATETIME_FULL_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
3165
3165
  cached_timestamp_type= MYSQL_TIMESTAMP_NONE;
3166
3166
  if ((const_item= args[1]->const_item()))
3175
3175
      switch (cached_format_type) {
3176
3176
      case DATE_ONLY:
3177
3177
        cached_timestamp_type= MYSQL_TIMESTAMP_DATE;
3178
 
        cached_field_type= MYSQL_TYPE_NEWDATE; 
 
3178
        cached_field_type= DRIZZLE_TYPE_NEWDATE; 
3179
3179
        max_length= MAX_DATE_WIDTH * MY_CHARSET_BIN_MB_MAXLEN;
3180
3180
        break;
3181
3181
      case TIME_ONLY:
3182
3182
      case TIME_MICROSECOND:
3183
3183
        cached_timestamp_type= MYSQL_TIMESTAMP_TIME;
3184
 
        cached_field_type= MYSQL_TYPE_TIME; 
 
3184
        cached_field_type= DRIZZLE_TYPE_TIME; 
3185
3185
        max_length= MAX_TIME_WIDTH * MY_CHARSET_BIN_MB_MAXLEN;
3186
3186
        break;
3187
3187
      default:
3188
3188
        cached_timestamp_type= MYSQL_TIMESTAMP_DATETIME;
3189
 
        cached_field_type= MYSQL_TYPE_DATETIME; 
 
3189
        cached_field_type= DRIZZLE_TYPE_DATETIME; 
3190
3190
        break;
3191
3191
      }
3192
3192
    }