~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/temporal_interval.cc

  • Committer: clint at fewbar
  • Date: 2009-07-26 15:05:31 UTC
  • mto: (1093.1.33 captain)
  • mto: This revision was merged to the branch mainline in revision 1105.
  • Revision ID: clint@fewbar.com-20090726150531-02asv7cvyoaf15kt
using constants for magic numbers and true/false instead of 1/0. renamed getIntervalInfo -> getIntervalFromString for clarity

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 
27
27
bool drizzled::TemporalInterval::initFromItem(Item *args, interval_type int_type, String *str_value)
28
28
{
29
 
  uint64_t array[5];
 
29
  uint64_t array[MAX_STRING_ELEMENTS];
30
30
  int64_t value= 0;
31
31
  const char *str= NULL;
32
32
  size_t length= 0;
41
41
      return true;
42
42
    if (value < 0)
43
43
    {
44
 
      neg= 1;
 
44
      neg= true;
45
45
      value= -value;
46
46
    }
47
47
  }
60
60
      str++;
61
61
    if (str != end && *str == '-')
62
62
    {
63
 
      neg= 1;
 
63
      neg= true;
64
64
      // skip the -
65
65
      str++;
66
66
    }
97
97
    second= value;
98
98
    break;
99
99
  case INTERVAL_YEAR_MONTH:                     // Allow YEAR-MONTH YYYYYMM
100
 
    if (getIntervalInfo(str,length,cs,2,array,0))
 
100
    if (getIntervalFromString(str,length,cs,NUM_YEAR_MONTH_STRING_ELEMENTS,array,false))
101
101
      return true;
102
102
    year=  (ulong) array[0];
103
103
    month= (ulong) array[1];
104
104
    break;
105
105
  case INTERVAL_DAY_HOUR:
106
 
    if (getIntervalInfo(str,length,cs,2,array,0))
 
106
    if (getIntervalFromString(str,length,cs,NUM_DAY_HOUR_STRING_ELEMENTS,array,false))
107
107
      return true;
108
108
    day=  (ulong) array[0];
109
109
    hour= (ulong) array[1];
110
110
    break;
111
111
  case INTERVAL_DAY_MICROSECOND:
112
 
    if (getIntervalInfo(str,length,cs,5,array,1))
 
112
    if (getIntervalFromString(str,length,cs,NUM_DAY_MICROSECOND_STRING_ELEMENTS,array,true))
113
113
      return true;
114
114
    day=    (ulong) array[0];
115
115
    hour=   (ulong) array[1];
118
118
    second_part= array[4];
119
119
    break;
120
120
  case INTERVAL_DAY_MINUTE:
121
 
    if (getIntervalInfo(str,length,cs,3,array,0))
 
121
    if (getIntervalFromString(str,length,cs,NUM_DAY_MINUTE_STRING_ELEMENTS,array,false))
122
122
      return true;
123
123
    day=    (ulong) array[0];
124
124
    hour=   (ulong) array[1];
125
125
    minute= array[2];
126
126
    break;
127
127
  case INTERVAL_DAY_SECOND:
128
 
    if (getIntervalInfo(str,length,cs,4,array,0))
 
128
    if (getIntervalFromString(str,length,cs,NUM_DAY_SECOND_STRING_ELEMENTS,array,false))
129
129
      return true;
130
130
    day=    (ulong) array[0];
131
131
    hour=   (ulong) array[1];
133
133
    second= array[3];
134
134
    break;
135
135
  case INTERVAL_HOUR_MICROSECOND:
136
 
    if (getIntervalInfo(str,length,cs,4,array,1))
 
136
    if (getIntervalFromString(str,length,cs,NUM_HOUR_MICROSECOND_STRING_ELEMENTS,array,true))
137
137
      return true;
138
138
    hour=   (ulong) array[0];
139
139
    minute= array[1];
141
141
    second_part= array[3];
142
142
    break;
143
143
  case INTERVAL_HOUR_MINUTE:
144
 
    if (getIntervalInfo(str,length,cs,2,array,0))
 
144
    if (getIntervalFromString(str,length,cs,NUM_HOUR_MINUTE_STRING_ELEMENTS,array,false))
145
145
      return true;
146
146
    hour=   (ulong) array[0];
147
147
    minute= array[1];
148
148
    break;
149
149
  case INTERVAL_HOUR_SECOND:
150
 
    if (getIntervalInfo(str,length,cs,3,array,0))
 
150
    if (getIntervalFromString(str,length,cs,NUM_HOUR_SECOND_STRING_ELEMENTS,array,false))
151
151
      return true;
152
152
    hour=   (ulong) array[0];
153
153
    minute= array[1];
154
154
    second= array[2];
155
155
    break;
156
156
  case INTERVAL_MINUTE_MICROSECOND:
157
 
    if (getIntervalInfo(str,length,cs,3,array,1))
 
157
    if (getIntervalFromString(str,length,cs,NUM_MINUTE_MICROSECOND_STRING_ELEMENTS,array,true))
158
158
      return true;
159
159
    minute= array[0];
160
160
    second= array[1];
161
161
    second_part= array[2];
162
162
    break;
163
163
  case INTERVAL_MINUTE_SECOND:
164
 
    if (getIntervalInfo(str,length,cs,2,array,0))
 
164
    if (getIntervalFromString(str,length,cs,NUM_MINUTE_SECOND_STRING_ELEMENTS,array,false))
165
165
      return true;
166
166
    minute= array[0];
167
167
    second= array[1];
168
168
    break;
169
169
  case INTERVAL_SECOND_MICROSECOND:
170
 
    if (getIntervalInfo(str,length,cs,2,array,1))
 
170
    if (getIntervalFromString(str,length,cs,NUM_SECOND_MICROSECOND_STRING_ELEMENTS,array,true))
171
171
      return true;
172
172
    second= array[0];
173
173
    second_part= array[1];
286
286
  return 1;
287
287
}
288
288
 
289
 
bool drizzled::TemporalInterval::getIntervalInfo(const char *str,uint32_t length, const CHARSET_INFO * const cs,
 
289
bool drizzled::TemporalInterval::getIntervalFromString(const char *str,uint32_t length, const CHARSET_INFO * const cs,
290
290
    uint32_t count, uint64_t *values,
291
291
    bool transform_msec)
292
292
{