~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_state.cc

  • Committer: Brian Aker
  • Date: 2011-02-01 17:15:16 UTC
  • mto: (2132.1.4 drizzle-build)
  • mto: This revision was merged to the branch mainline in revision 2134.
  • Revision ID: brian@tangent.org-20110201171516-h7rpqlmj6vyt6fc3
Additional error cleanup (passing error correctly to the client code).

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
#include <algorithm>
25
25
 
 
26
#include <drizzled/error.h>
26
27
#include <drizzled/sql_state.h>
27
 
#include <drizzled/error.h>
28
28
 
29
29
using namespace std;
30
30
 
31
31
namespace drizzled
32
32
{
33
33
 
34
 
typedef struct st_map_errno_to_sqlstate
 
34
struct sql_state_t
35
35
{
36
 
  uint32_t drizzle_errno;
 
36
  drizzled::error_t drizzle_errno;
37
37
  const char *odbc_state;
38
38
  const char *jdbc_state;
39
 
} errno_sqlstate_map;
 
39
};
40
40
 
41
 
errno_sqlstate_map sqlstate_map[]=
 
41
sql_state_t sqlstate_map[]=
42
42
{
43
43
  { ER_DUP_KEY                              ,"23000", "" },
44
44
  { ER_OUTOFMEMORY                          ,"HY001", "S1001" },
168
168
  { ER_DUP_ENTRY_WITH_KEY_NAME              ,"23000", "S1009" },
169
169
};
170
170
 
171
 
static bool compare_errno_map(errno_sqlstate_map a,
172
 
                              errno_sqlstate_map b)
 
171
static bool compare_errno_map(sql_state_t a,
 
172
                              sql_state_t b)
173
173
{
174
174
  return (a.drizzle_errno < b.drizzle_errno);
175
175
}
176
176
 
177
 
const char *drizzle_errno_to_sqlstate(uint32_t drizzle_errno)
 
177
const char *drizzle_errno_to_sqlstate(drizzled::error_t drizzle_errno)
178
178
{
179
179
 
180
 
  errno_sqlstate_map drizzle_err_state= {drizzle_errno, NULL, NULL};
181
 
  errno_sqlstate_map* result=
 
180
  sql_state_t drizzle_err_state= {drizzle_errno, NULL, NULL};
 
181
  sql_state_t* result=
182
182
    lower_bound(&sqlstate_map[0],
183
183
                &sqlstate_map[sizeof(sqlstate_map)/sizeof(*sqlstate_map)],
184
184
                drizzle_err_state, compare_errno_map);
185
185
 
186
186
  if ((*result).drizzle_errno == drizzle_errno)
187
187
    return (*result).odbc_state;
 
188
 
188
189
  /* General error */
189
190
  return "HY000";
190
 
 
191
191
}
192
192
 
193
193
} /* namespace drizzled */