MCPcopy Create free account
hub / github.com/MariaDB/server / init_interval

Method init_interval

sql/event_parse_data.cc:266–362  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

264*/
265
266int
267Event_parse_data::init_interval(THD *thd)
268{
269 INTERVAL interval_tmp;
270
271 DBUG_ENTER("Event_parse_data::init_interval");
272 if (!item_expression)
273 DBUG_RETURN(0);
274
275 switch (interval) {
276 case INTERVAL_MINUTE_MICROSECOND:
277 case INTERVAL_HOUR_MICROSECOND:
278 case INTERVAL_DAY_MICROSECOND:
279 case INTERVAL_SECOND_MICROSECOND:
280 case INTERVAL_MICROSECOND:
281 my_error(ER_NOT_SUPPORTED_YET, MYF(0), "MICROSECOND");
282 DBUG_RETURN(EVEX_BAD_PARAMS);
283 default:
284 break;
285 }
286
287 if (item_expression->fix_fields(thd, &item_expression))
288 goto wrong_value;
289
290 if (item_expression->check_cols(1))
291 {
292 // Don't go to wrong_value, it will call val_str() and hit DBUG_ASSERT(0)
293 DBUG_RETURN(ER_WRONG_VALUE);
294 }
295
296 if (get_interval_value(thd, item_expression, interval, &interval_tmp))
297 goto wrong_value;
298
299 expression= 0;
300
301 switch (interval) {
302 case INTERVAL_YEAR:
303 expression= interval_tmp.year;
304 break;
305 case INTERVAL_QUARTER:
306 case INTERVAL_MONTH:
307 expression= interval_tmp.month;
308 break;
309 case INTERVAL_WEEK:
310 case INTERVAL_DAY:
311 expression= interval_tmp.day;
312 break;
313 case INTERVAL_HOUR:
314 expression= interval_tmp.hour;
315 break;
316 case INTERVAL_MINUTE:
317 expression= interval_tmp.minute;
318 break;
319 case INTERVAL_SECOND:
320 expression= interval_tmp.second;
321 break;
322 case INTERVAL_YEAR_MONTH: // Allow YEAR-MONTH YYYYYMM
323 expression= interval_tmp.year* 12 + interval_tmp.month;

Callers

nothing calls this directly

Calls 4

my_errorFunction · 0.85
get_interval_valueFunction · 0.85
fix_fieldsMethod · 0.45
check_colsMethod · 0.45

Tested by

no test coverage detected