~drizzle-trunk/drizzle/development

642.1.10 by Lee
move functions from item.cc/item.h to item directory
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
1999.6.1 by kalebral at gmail
update Copyright strings to a more common format to help with creating the master debian copyright file
4
 *  Copyright (C) 2008 Sun Microsystems, Inc.
642.1.10 by Lee
move functions from item.cc/item.h to item directory
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
2173.2.1 by Monty Taylor
Fixes incorrect usage of include
20
#include <config.h>
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
21
642.1.16 by Lee
header file clean up
22
#include <drizzled/item/uint.h>
642.1.10 by Lee
move functions from item.cc/item.h to item directory
23
#include <drizzled/item/outer_ref.h>
24
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
25
namespace drizzled
26
{
27
642.1.10 by Lee
move functions from item.cc/item.h to item directory
28
/*
29
  Prepare referenced outer field then call usual Item_direct_ref::fix_fields
30
31
  SYNOPSIS
32
    Item_outer_ref::fix_fields()
33
    session         thread handler
34
    reference   reference on reference where this item stored
35
36
  RETURN
37
    false   OK
38
    true    Error
39
*/
40
41
bool Item_outer_ref::fix_fields(Session *session, Item **reference)
42
{
43
  bool err;
44
  /* outer_ref->check_cols() will be made in Item_direct_ref::fix_fields */
45
  if ((*ref) && !(*ref)->fixed && ((*ref)->fix_fields(session, reference)))
46
    return true;
47
  err= Item_direct_ref::fix_fields(session, reference);
48
  if (!outer_ref)
49
    outer_ref= *ref;
50
  if ((*ref)->type() == Item::FIELD_ITEM)
51
    table_name= ((Item_field*)outer_ref)->table_name;
52
  return err;
53
}
54
846 by Brian Aker
Removing on typedeffed class.
55
void Item_outer_ref::fix_after_pullout(Select_Lex *new_parent,
779.3.10 by Monty Taylor
Turned on -Wshadow.
56
                                       Item **ref_item)
642.1.10 by Lee
move functions from item.cc/item.h to item directory
57
{
58
  if (depended_from == new_parent)
59
  {
779.3.10 by Monty Taylor
Turned on -Wshadow.
60
    *ref_item= outer_ref;
61
    outer_ref->fix_after_pullout(new_parent, ref_item);
642.1.10 by Lee
move functions from item.cc/item.h to item directory
62
  }
63
}
64
65
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
66
} /* namespace drizzled */