~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/optimizer/sum.h

  • Committer: Jay Pipes
  • Date: 2009-01-30 04:01:12 UTC
  • mto: This revision was merged to the branch mainline in revision 830.
  • Revision ID: jpipes@serialcoder-20090130040112-svbn774guj98pwi4
To remain in compatibility with MySQL, added ability to interpret
decimal arguments as datetime strings for temporal functions.

Fixed YEAR(), MONTH(), DAYOFMONTH(), DAYOFYEAR(), HOUR(), MINUTE(), SECOND(), and MICROSECOND()
to accept decimal parameters and interpret them the same way as MySQL.

Fixed an issue with the TemporalFormat::matches() method which was 
incorrectly assuming all microsecond arguments were specified as 6 digits.
Added power of 10 multiplier to usecond calculation. This fixes issues with
failures in type_date and func_sapdb test cases.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 
 *
4
 
 *  Copyright (C) 2008-2009 Sun Microsystems, Inc.
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
 
#ifndef DRIZZLED_OPTIMIZER_SUM_H
21
 
#define DRIZZLED_OPTIMIZER_SUM_H
22
 
 
23
 
namespace drizzled
24
 
{
25
 
 
26
 
namespace optimizer
27
 
{
28
 
 
29
 
/**
30
 
  Test if the predicate compares a field with constants.
31
 
 
32
 
  @param func_item        Predicate item
33
 
  @param[out] args        Here we store the field followed by constants
34
 
  @param[out] inv_order   Is set to 1 if the predicate is of the form
35
 
                          'const op field'
36
 
 
37
 
  @retval
38
 
    0        func_item is a simple predicate: a field is compared with
39
 
    constants
40
 
  @retval
41
 
    1        Otherwise
42
 
*/
43
 
bool simple_pred(Item_func *func_item, Item **args, bool &inv_order);
44
 
 
45
 
/**
46
 
  Substitutes constants for some COUNT(), MIN() and MAX() functions.
47
 
 
48
 
  @param tables                list of leaves of join table tree
49
 
  @param all_fields            All fields to be returned
50
 
  @param conds                 WHERE clause
51
 
 
52
 
  @note
53
 
    This function is only called for queries with sum functions and no
54
 
    GROUP BY part.
55
 
 
56
 
  @retval
57
 
    0                    no errors
58
 
  @retval
59
 
    1                    if all items were resolved
60
 
  @retval
61
 
    HA_ERR_KEY_NOT_FOUND on impossible conditions
62
 
  @retval
63
 
    HA_ERR_... if a deadlock or a lock wait timeout happens, for example
64
 
*/
65
 
int sum_query(TableList *tables, List<Item> &all_fields, COND *conds);
66
 
 
67
 
} /* namespace optimizer */
68
 
 
69
 
} /* namespace drizzled */
70
 
 
71
 
#endif /* DRIZZLED_OPTIMIZER_SUM_H */