~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle/sql_common.h

  • Committer: Padraig O'Sullivan
  • Date: 2009-06-29 17:24:02 UTC
  • mto: This revision was merged to the branch mainline in revision 1081.
  • Revision ID: osullivan.padraig@gmail.com-20090629172402-9c5n1kr7ry7xgau7
Removed the dependency on knowing the position of an I_S table in the
schema_tables array defined in show.cc. This issue crops up in
prepare_schema_table. An issue with my design is that it increases the time
complexity from O(1) to O(n) in numerous places to determine an I_S table to
work on since we don't have an explicit index into the array and instead
need to search by name. However, as n is the number of I_S tables and this
number is quite small (at the moment n is < 30), we don't see this causing
any issue. This design makes the code much more maintainable and easier to
understand. Previously, modifying anything to do with the I_S tables meant
having to tip-toe around the issue of hard-coded indexes into the
schema_tables array.

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 MySQL
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; either version 2 of the License, or
9
 
 *  (at your option) any later version.
10
 
 *
11
 
 *  This program is distributed in the hope that it will be useful,
12
 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
 *  GNU General Public License for more details.
15
 
 *
16
 
 *  You should have received a copy of the GNU General Public License
17
 
 *  along with this program; if not, write to the Free Software
18
 
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
 
 */
20
 
 
21
 
#ifndef _libdrizzle_sql_common_h
22
 
#define _libdrizzle_sql_common_h
23
 
 
24
 
extern const char       *unknown_sqlstate;
25
 
extern const char       *cant_connect_sqlstate;
26
 
extern const char       *not_error_sqlstate;
27
 
 
28
 
#ifdef  __cplusplus
29
 
extern "C" {
30
 
#endif
31
 
#include <mystrings/m_ctype.h>
32
 
 
33
 
extern CHARSET_INFO *default_client_charset_info;
34
 
DRIZZLE_FIELD *unpack_fields(DRIZZLE_DATA *data, MEM_ROOT *alloc, uint fields,
35
 
                                         bool default_value);
36
 
void free_rows(DRIZZLE_DATA *cur);
37
 
void free_old_query(DRIZZLE *drizzle);
38
 
void end_server(DRIZZLE *drizzle);
39
 
bool drizzle_reconnect(DRIZZLE *drizzle);
40
 
void drizzle_read_default_options(struct st_drizzle_options *options,
41
 
                                const char *filename,const char *group);
42
 
bool
43
 
cli_advanced_command(DRIZZLE *drizzle, enum enum_server_command command,
44
 
                     const unsigned char *header, uint32_t header_length,
45
 
                     const unsigned char *arg, uint32_t arg_length, bool skip_check);
46
 
uint32_t cli_safe_read(DRIZZLE *drizzle);
47
 
void net_clear_error(NET *net);
48
 
void set_drizzle_error(DRIZZLE *drizzle, int errcode, const char *sqlstate);
49
 
#ifdef  __cplusplus
50
 
}
51
 
#endif
52
 
 
53
 
#endif