Mercurial > p > mysql-python > mysqldb-2
comparison _mysql.c @ 8:fa8974a41c76 MySQLdb
New error handling code, plus some small fixes from 1.2
author | adustman |
---|---|
date | Sun, 11 Feb 2007 21:36:29 +0000 |
parents | b70cce9bd065 |
children | d55bfb1a4701 |
comparison
equal
deleted
inserted
replaced
7:b1e508854b27 | 8:fa8974a41c76 |
---|---|
28 PyTuple_SET_ITEM(t, 1, PyString_FromString("error totally whack")); | 28 PyTuple_SET_ITEM(t, 1, PyString_FromString("error totally whack")); |
29 PyErr_SetObject(_mysql_InterfaceError, t); | 29 PyErr_SetObject(_mysql_InterfaceError, t); |
30 Py_DECREF(t); | 30 Py_DECREF(t); |
31 return NULL; | 31 return NULL; |
32 } | 32 } |
33 else switch (merr) { | 33 else { |
34 case CR_COMMANDS_OUT_OF_SYNC: | 34 PyObject *py_merr = PyInt_FromLong(merr); |
35 case ER_DB_CREATE_EXISTS: | 35 e = PyDict_GetItem(_mysql_error_map, py_merr); |
36 case ER_SYNTAX_ERROR: | 36 Py_DECREF(py_merr); |
37 case ER_PARSE_ERROR: | 37 if (!e) { |
38 case ER_NO_SUCH_TABLE: | 38 if (merr < 1000) e = _mysql_InternalError; |
39 case ER_WRONG_DB_NAME: | 39 else e = _mysql_OperationalError; |
40 case ER_WRONG_TABLE_NAME: | 40 } |
41 case ER_FIELD_SPECIFIED_TWICE: | |
42 case ER_INVALID_GROUP_FUNC_USE: | |
43 case ER_UNSUPPORTED_EXTENSION: | |
44 case ER_TABLE_MUST_HAVE_COLUMNS: | |
45 #ifdef ER_CANT_DO_THIS_DURING_AN_TRANSACTION | |
46 case ER_CANT_DO_THIS_DURING_AN_TRANSACTION: | |
47 #endif | |
48 e = _mysql_ProgrammingError; | |
49 break; | |
50 #ifdef WARN_DATA_TRUNCATED | |
51 case WARN_DATA_TRUNCATED: | |
52 #ifdef WARN_NULL_TO_NOTNULL | |
53 case WARN_NULL_TO_NOTNULL: | |
54 #endif | |
55 #ifdef ER_WARN_DATA_OUT_OF_RANGE | |
56 case ER_WARN_DATA_OUT_OF_RANGE: | |
57 #endif | |
58 #ifdef ER_NO_DEFAULT | |
59 case ER_NO_DEFAULT: | |
60 #endif | |
61 #ifdef ER_PRIMARY_CANT_HAVE_NULL | |
62 case ER_PRIMARY_CANT_HAVE_NULL: | |
63 #endif | |
64 #ifdef ER_DATA_TOO_LONG | |
65 case ER_DATA_TOO_LONG: | |
66 #endif | |
67 #ifdef ER_DATETIME_FUNCTION_OVERFLOW | |
68 case ER_DATETIME_FUNCTION_OVERFLOW: | |
69 #endif | |
70 e = _mysql_DataError; | |
71 break; | |
72 #endif | |
73 case ER_DUP_ENTRY: | |
74 #ifdef ER_DUP_UNIQUE | |
75 case ER_DUP_UNIQUE: | |
76 #endif | |
77 #ifdef ER_NO_REFERENCED_ROW | |
78 case ER_NO_REFERENCED_ROW: | |
79 #endif | |
80 #ifdef ER_NO_REFERENCED_ROW_2 | |
81 case ER_NO_REFERENCED_ROW_2: | |
82 #endif | |
83 #ifdef ER_ROW_IS_REFERENCED | |
84 case ER_ROW_IS_REFERENCED: | |
85 #endif | |
86 #ifdef ER_ROW_IS_REFERENCED_2 | |
87 case ER_ROW_IS_REFERENCED_2: | |
88 #endif | |
89 #ifdef ER_CANNOT_ADD_FOREIGN | |
90 case ER_CANNOT_ADD_FOREIGN: | |
91 #endif | |
92 e = _mysql_IntegrityError; | |
93 break; | |
94 #ifdef ER_WARNING_NOT_COMPLETE_ROLLBACK | |
95 case ER_WARNING_NOT_COMPLETE_ROLLBACK: | |
96 #endif | |
97 #ifdef ER_NOT_SUPPORTED_YET | |
98 case ER_NOT_SUPPORTED_YET: | |
99 #endif | |
100 #ifdef ER_FEATURE_DISABLED | |
101 case ER_FEATURE_DISABLED: | |
102 #endif | |
103 #ifdef ER_UNKNOWN_STORAGE_ENGINE | |
104 case ER_UNKNOWN_STORAGE_ENGINE: | |
105 #endif | |
106 e = _mysql_NotSupportedError; | |
107 break; | |
108 default: | |
109 if (merr < 1000) | |
110 e = _mysql_InternalError; | |
111 else | |
112 e = _mysql_OperationalError; | |
113 break; | |
114 } | 41 } |
115 PyTuple_SET_ITEM(t, 0, PyInt_FromLong((long)merr)); | 42 PyTuple_SET_ITEM(t, 0, PyInt_FromLong((long)merr)); |
116 PyTuple_SET_ITEM(t, 1, PyString_FromString(mysql_error(&(c->connection)))); | 43 PyTuple_SET_ITEM(t, 1, PyString_FromString(mysql_error(&(c->connection)))); |
117 PyErr_SetObject(e, t); | 44 PyErr_SetObject(e, t); |
118 Py_DECREF(t); | 45 Py_DECREF(t); |
571 _mysql_NewException(dict, edict, "ProgrammingError"))) | 498 _mysql_NewException(dict, edict, "ProgrammingError"))) |
572 goto error; | 499 goto error; |
573 if (!(_mysql_NotSupportedError = | 500 if (!(_mysql_NotSupportedError = |
574 _mysql_NewException(dict, edict, "NotSupportedError"))) | 501 _mysql_NewException(dict, edict, "NotSupportedError"))) |
575 goto error; | 502 goto error; |
503 if (!(_mysql_error_map = PyDict_GetItemString(edict, "error_map"))) | |
504 goto error; | |
576 Py_DECREF(emod); | 505 Py_DECREF(emod); |
577 if (!(_mysql_NULL = PyString_FromString("NULL"))) | 506 if (!(_mysql_NULL = PyString_FromString("NULL"))) |
578 goto error; | 507 goto error; |
579 if (PyDict_SetItemString(dict, "NULL", _mysql_NULL)) goto error; | 508 if (PyDict_SetItemString(dict, "NULL", _mysql_NULL)) goto error; |
580 error: | 509 error: |