~drizzle-trunk/drizzle/development

574.3.17 by Lee
moving functions from item_timefunc to functions/time directory
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2008 Sun Microsystems
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; version 2 of the License.
9
 *
10
 *  This program is distributed in the hope that it will be useful,
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 *  GNU General Public License for more details.
14
 *
15
 *  You should have received a copy of the GNU General Public License
16
 *  along with this program; if not, write to the Free Software
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
 */
19
20
#include <drizzled/server_includes.h>
670.2.1 by Monty Taylor
Moved pthread keys
21
#include <drizzled/current_session.h>
574.3.17 by Lee
moving functions from item_timefunc to functions/time directory
22
#include CSTDINT_H
670.1.20 by Monty Taylor
Renamed functions to function... everything else is singular.
23
#include <drizzled/function/time/make_datetime_with_warn.h>
670.1.22 by Monty Taylor
Merged from Lee.
24
#include <drizzled/function/time/make_datetime.h>
574.3.17 by Lee
moving functions from item_timefunc to functions/time directory
25
26
/*
27
  Wrapper over make_datetime() with validation of the input DRIZZLE_TIME value
28
29
  NOTE
30
    see make_datetime() for more information
31
32
  RETURN
33
    1    if there was an error during converion
34
    0    otherwise
35
*/
36
37
bool make_datetime_with_warn(date_time_format_types format, DRIZZLE_TIME *ltime,
38
                                    String *str)
39
{
40
  int warning= 0;
41
42
  if (make_datetime(format, ltime, str))
43
    return 1;
44
  if (check_time_range(ltime, &warning))
45
    return 1;
46
  if (!warning)
47
    return 0;
48
49
  make_truncated_value_warning(current_session, DRIZZLE_ERROR::WARN_LEVEL_WARN,
50
                               str->ptr(), str->length(),
51
                               DRIZZLE_TIMESTAMP_TIME, NULL);
52
  return make_datetime(format, ltime, str);
53
}
54