~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_state.cc

  • Committer: Lee Bieber
  • Date: 2010-12-23 23:11:00 UTC
  • mfrom: (2024.1.1 clean)
  • Revision ID: kalebral@gmail.com-20101223231100-0rqirgz7ugkl10yp
Merge Brian - session list cleanup

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
#include <algorithm>
25
25
 
 
26
#include <drizzled/sql_state.h>
26
27
#include <drizzled/error.h>
27
 
#include <drizzled/error/sql_state.h>
28
28
 
29
29
using namespace std;
30
30
 
31
31
namespace drizzled
32
32
{
33
33
 
34
 
namespace error
35
 
{
36
 
 
37
 
struct sql_state_t
38
 
{
39
 
  drizzled::error_t drizzle_errno;
 
34
typedef struct st_map_errno_to_sqlstate
 
35
{
 
36
  uint32_t drizzle_errno;
40
37
  const char *odbc_state;
41
38
  const char *jdbc_state;
42
 
};
 
39
} errno_sqlstate_map;
43
40
 
44
 
sql_state_t sqlstate_map[]=
 
41
errno_sqlstate_map sqlstate_map[]=
45
42
{
46
43
  { ER_DUP_KEY                              ,"23000", "" },
47
44
  { ER_OUTOFMEMORY                          ,"HY001", "S1001" },
103
100
  { ER_NULL_COLUMN_IN_INDEX                 ,"42000", "" },
104
101
  { ER_WRONG_VALUE_COUNT_ON_ROW             ,"21S01", "" },
105
102
  { ER_MIX_OF_GROUP_FUNC_AND_FIELDS         ,"42000", "" },
106
 
  { ER_TABLE_UNKNOWN                        ,"42S02", "" },
 
103
  { ER_NO_SUCH_TABLE                        ,"42S02", "" },
107
104
  { ER_SYNTAX_ERROR                         ,"42000", "" },
108
105
  { ER_NET_PACKET_TOO_LARGE                 ,"08S01", "" },
109
106
  { ER_NET_PACKETS_OUT_OF_ORDER             ,"08S01", "" },
171
168
  { ER_DUP_ENTRY_WITH_KEY_NAME              ,"23000", "S1009" },
172
169
};
173
170
 
174
 
static bool compare_errno_map(sql_state_t a,
175
 
                              sql_state_t b)
 
171
static bool compare_errno_map(errno_sqlstate_map a,
 
172
                              errno_sqlstate_map b)
176
173
{
177
174
  return (a.drizzle_errno < b.drizzle_errno);
178
175
}
179
176
 
180
 
const char *convert_to_sqlstate(drizzled::error_t drizzle_errno)
 
177
const char *drizzle_errno_to_sqlstate(uint32_t drizzle_errno)
181
178
{
182
179
 
183
 
  sql_state_t drizzle_err_state= {drizzle_errno, NULL, NULL};
184
 
  sql_state_t* result=
 
180
  errno_sqlstate_map drizzle_err_state= {drizzle_errno, NULL, NULL};
 
181
  errno_sqlstate_map* result=
185
182
    lower_bound(&sqlstate_map[0],
186
183
                &sqlstate_map[sizeof(sqlstate_map)/sizeof(*sqlstate_map)],
187
184
                drizzle_err_state, compare_errno_map);
188
185
 
189
186
  if ((*result).drizzle_errno == drizzle_errno)
190
187
    return (*result).odbc_state;
191
 
 
192
188
  /* General error */
193
189
  return "HY000";
 
190
 
194
191
}
195
192
 
196
 
} /* namespace error */
197
193
} /* namespace drizzled */