Drizzled Public API Documentation

select_export.h
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, 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 
21 #pragma once
22 
23 #include <drizzled/select_to_file.h>
24 
25 /*
26  List of all possible characters of a numeric value text representation.
27 */
28 #define NUMERIC_CHARS ".0123456789e+-"
29 
30 namespace drizzled
31 {
32 
34  public select_to_file
35 {
36  uint32_t field_term_length;
37  int field_sep_char,escape_char,line_sep_char;
38  int field_term_char; // first char of FIELDS TERMINATED BY or MAX_INT
39  /*
40  The is_ambiguous_field_sep field is true if a value of the field_sep_char
41  field is one of the 'n', 't', 'r' etc characters
42  (see the READ_INFO::unescape method and the ESCAPE_CHARS constant value).
43  */
44  bool is_ambiguous_field_sep;
45  /*
46  The is_ambiguous_field_term is true if field_sep_char contains the first
47  char of the FIELDS TERMINATED BY (ENCLOSED BY is empty), and items can
48  contain this character.
49  */
50  bool is_ambiguous_field_term;
51  /*
52  The is_unsafe_field_sep field is true if a value of the field_sep_char
53  field is one of the '0'..'9', '+', '-', '.' and 'e' characters
54  (see the NUMERIC_CHARS constant value).
55  */
56  bool is_unsafe_field_sep;
57  bool fixed_row_size;
58 public:
60  select_to_file(ex),
61  field_term_length(0),
62  field_sep_char(0),
63  escape_char(0),
64  line_sep_char(0),
65  field_term_char(0),
66  is_ambiguous_field_sep(0),
67  is_ambiguous_field_term(0),
68  is_unsafe_field_sep(0),
69  fixed_row_size(0)
70  {}
71  ~select_export();
72  int prepare(List<Item> &list, Select_Lex_Unit *u);
73  bool send_data(List<Item> &items);
74 private:
75  inline bool needs_escaping(char character, bool enclosed)
76  {
77  if ((character == escape_char) ||
78  (enclosed ? character == field_sep_char : character == field_term_char) ||
79  character == line_sep_char ||
80  (character == 0))
81  return true;
82 
83  return false;
84 
85  }
86 };
87 
88 } /* namespace drizzled */
89 
TODO: Rename this file - func.h is stupid.