EMMA Coverage Report (generated Fri May 26 15:35:26 CDT 2006)
[all classes][com.mysql.jdbc]

COVERAGE SUMMARY FOR SOURCE FILE [SQLError.java]

nameclass, %method, %block, %line, %
SQLError.java100% (1/1)67%  (6/9)90%  (1719/1902)87%  (248.3/287)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class SQLError100% (1/1)67%  (6/9)90%  (1719/1902)87%  (248.3/287)
SQLError (): void 0%   (0/1)0%   (0/3)0%   (0/1)
dumpSqlStatesMappingsAsXml (): void 0%   (0/1)0%   (0/141)0%   (0/25)
mysqlToXOpen (int): String 0%   (0/1)0%   (0/16)0%   (0/4)
mysqlToSqlState (int, boolean): String 100% (1/1)62%  (5/8)67%  (2/3)
convertShowWarningsToSQLWarnings (Connection, int, boolean): SQLWarning 100% (1/1)85%  (113/133)81%  (32.3/40)
<static initializer> 100% (1/1)100% (1575/1575)100% (208/208)
convertShowWarningsToSQLWarnings (Connection): SQLWarning 100% (1/1)100% (5/5)100% (1/1)
get (String): String 100% (1/1)100% (5/5)100% (1/1)
mysqlToSql99 (int): String 100% (1/1)100% (16/16)100% (4/4)

1/*
2 Copyright (C) 2002-2004 MySQL AB
3 
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of version 2 of the GNU General Public License as 
6 published by the Free Software Foundation.
7 
8 There are special exceptions to the terms and conditions of the GPL 
9 as it is applied to this software. View the full text of the 
10 exception in file EXCEPTIONS-CONNECTOR-J in the directory of this 
11 software distribution.
12 
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 GNU General Public License for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21 
22 
23 
24 */
25package com.mysql.jdbc;
26 
27import java.sql.DataTruncation;
28import java.sql.SQLException;
29import java.sql.SQLWarning;
30 
31import java.util.HashMap;
32import java.util.Hashtable;
33import java.util.Iterator;
34import java.util.Map;
35import java.util.TreeMap;
36 
37/**
38 * SQLError is a utility class that maps MySQL error codes to X/Open error codes
39 * as is required by the JDBC spec.
40 * 
41 * @author Mark Matthews <mmatthew_at_worldserver.com>
42 * @version $Id: SQLError.java 5122 2006-04-03 10:37:11 -0500 (Mon, 03 Apr 2006) mmatthews $
43 */
44public class SQLError {
45        static final int ER_WARNING_NOT_COMPLETE_ROLLBACK = 1196;
46 
47        private static Map mysqlToSql99State;
48 
49        private static Map mysqlToSqlState;
50 
51        public static final String SQL_STATE_BASE_TABLE_NOT_FOUND = "S0002"; //$NON-NLS-1$
52 
53        public static final String SQL_STATE_BASE_TABLE_OR_VIEW_ALREADY_EXISTS = "S0001"; //$NON-NLS-1$
54 
55        public static final String SQL_STATE_BASE_TABLE_OR_VIEW_NOT_FOUND = "42S02"; //$NON-NLS-1$
56 
57        public static final String SQL_STATE_COLUMN_ALREADY_EXISTS = "S0021"; //$NON-NLS-1$
58 
59        public static final String SQL_STATE_COLUMN_NOT_FOUND = "S0022"; //$NON-NLS-1$
60 
61        public static final String SQL_STATE_COMMUNICATION_LINK_FAILURE = "08S01"; //$NON-NLS-1$
62 
63        public static final String SQL_STATE_CONNECTION_FAIL_DURING_TX = "08007"; //$NON-NLS-1$
64 
65        public static final String SQL_STATE_CONNECTION_IN_USE = "08002"; //$NON-NLS-1$
66 
67        public static final String SQL_STATE_CONNECTION_NOT_OPEN = "08003"; //$NON-NLS-1$
68 
69        public static final String SQL_STATE_CONNECTION_REJECTED = "08004"; //$NON-NLS-1$
70 
71        public static final String SQL_STATE_DATE_TRUNCATED = "01004"; //$NON-NLS-1$
72 
73        public static final String SQL_STATE_DATETIME_FIELD_OVERFLOW = "22008"; //$NON-NLS-1$
74 
75        public static final String SQL_STATE_DEADLOCK = "41000"; //$NON-NLS-1$
76 
77        public static final String SQL_STATE_DISCONNECT_ERROR = "01002"; //$NON-NLS-1$
78 
79        public static final String SQL_STATE_DIVISION_BY_ZERO = "22012"; //$NON-NLS-1$
80 
81        public static final String SQL_STATE_DRIVER_NOT_CAPABLE = "S1C00"; //$NON-NLS-1$
82 
83        public static final String SQL_STATE_ERROR_IN_ROW = "01S01"; //$NON-NLS-1$
84 
85        public static final String SQL_STATE_GENERAL_ERROR = "S1000"; //$NON-NLS-1$
86 
87        public static final String SQL_STATE_ILLEGAL_ARGUMENT = "S1009"; //$NON-NLS-1$
88 
89        public static final String SQL_STATE_INDEX_ALREADY_EXISTS = "S0011"; //$NON-NLS-1$
90 
91        public static final String SQL_STATE_INDEX_NOT_FOUND = "S0012"; //$NON-NLS-1$
92 
93        public static final String SQL_STATE_INSERT_VALUE_LIST_NO_MATCH_COL_LIST = "21S01"; //$NON-NLS-1$
94 
95        public static final String SQL_STATE_INVALID_AUTH_SPEC = "28000"; //$NON-NLS-1$
96 
97        public static final String SQL_STATE_INVALID_CHARACTER_VALUE_FOR_CAST = "22018"; // $NON_NLS-1$
98 
99        public static final String SQL_STATE_INVALID_COLUMN_NUMBER = "S1002"; //$NON-NLS-1$
100 
101        public static final String SQL_STATE_INVALID_CONNECTION_ATTRIBUTE = "01S00"; //$NON-NLS-1$
102 
103        public static final String SQL_STATE_MEMORY_ALLOCATION_FAILURE = "S1001"; //$NON-NLS-1$
104 
105        public static final String SQL_STATE_MORE_THAN_ONE_ROW_UPDATED_OR_DELETED = "01S04"; //$NON-NLS-1$
106 
107        public static final String SQL_STATE_NO_DEFAULT_FOR_COLUMN = "S0023"; //$NON-NLS-1$
108 
109        public static final String SQL_STATE_NO_ROWS_UPDATED_OR_DELETED = "01S03"; //$NON-NLS-1$
110 
111        public static final String SQL_STATE_NUMERIC_VALUE_OUT_OF_RANGE = "22003"; //$NON-NLS-1$
112 
113        public static final String SQL_STATE_PRIVILEGE_NOT_REVOKED = "01006"; //$NON-NLS-1$
114 
115        public static final String SQL_STATE_SYNTAX_ERROR = "42000"; //$NON-NLS-1$
116 
117        public static final String SQL_STATE_TIMEOUT_EXPIRED = "S1T00"; //$NON-NLS-1$
118 
119        public static final String SQL_STATE_TRANSACTION_RESOLUTION_UNKNOWN = "08007"; // $NON_NLS-1$
120 
121        public static final String SQL_STATE_UNABLE_TO_CONNECT_TO_DATASOURCE = "08001"; //$NON-NLS-1$
122 
123        public static final String SQL_STATE_WRONG_NO_OF_PARAMETERS = "07001"; //$NON-NLS-1$
124 
125        private static Map sqlStateMessages;
126 
127        static {
128                sqlStateMessages = new HashMap();
129                sqlStateMessages.put(SQL_STATE_DISCONNECT_ERROR, Messages
130                                .getString("SQLError.35")); //$NON-NLS-1$
131                sqlStateMessages.put(SQL_STATE_DATE_TRUNCATED, Messages
132                                .getString("SQLError.36")); //$NON-NLS-1$
133                sqlStateMessages.put(SQL_STATE_PRIVILEGE_NOT_REVOKED, Messages
134                                .getString("SQLError.37")); //$NON-NLS-1$
135                sqlStateMessages.put(SQL_STATE_INVALID_CONNECTION_ATTRIBUTE, Messages
136                                .getString("SQLError.38")); //$NON-NLS-1$
137                sqlStateMessages.put(SQL_STATE_ERROR_IN_ROW, Messages
138                                .getString("SQLError.39")); //$NON-NLS-1$
139                sqlStateMessages.put(SQL_STATE_NO_ROWS_UPDATED_OR_DELETED, Messages
140                                .getString("SQLError.40")); //$NON-NLS-1$
141                sqlStateMessages.put(SQL_STATE_MORE_THAN_ONE_ROW_UPDATED_OR_DELETED,
142                                Messages.getString("SQLError.41")); //$NON-NLS-1$
143                sqlStateMessages.put(SQL_STATE_WRONG_NO_OF_PARAMETERS, Messages
144                                .getString("SQLError.42")); //$NON-NLS-1$
145                sqlStateMessages.put(SQL_STATE_UNABLE_TO_CONNECT_TO_DATASOURCE,
146                                Messages.getString("SQLError.43")); //$NON-NLS-1$
147                sqlStateMessages.put(SQL_STATE_CONNECTION_IN_USE, Messages
148                                .getString("SQLError.44")); //$NON-NLS-1$
149                sqlStateMessages.put(SQL_STATE_CONNECTION_NOT_OPEN, Messages
150                                .getString("SQLError.45")); //$NON-NLS-1$
151                sqlStateMessages.put(SQL_STATE_CONNECTION_REJECTED, Messages
152                                .getString("SQLError.46")); //$NON-NLS-1$
153                sqlStateMessages.put(SQL_STATE_CONNECTION_FAIL_DURING_TX, Messages
154                                .getString("SQLError.47")); //$NON-NLS-1$
155                sqlStateMessages.put(SQL_STATE_COMMUNICATION_LINK_FAILURE, Messages
156                                .getString("SQLError.48")); //$NON-NLS-1$
157                sqlStateMessages.put(SQL_STATE_INSERT_VALUE_LIST_NO_MATCH_COL_LIST,
158                                Messages.getString("SQLError.49")); //$NON-NLS-1$
159                sqlStateMessages.put(SQL_STATE_NUMERIC_VALUE_OUT_OF_RANGE, Messages
160                                .getString("SQLError.50")); //$NON-NLS-1$
161                sqlStateMessages.put(SQL_STATE_DATETIME_FIELD_OVERFLOW, Messages
162                                .getString("SQLError.51")); //$NON-NLS-1$
163                sqlStateMessages.put(SQL_STATE_DIVISION_BY_ZERO, Messages
164                                .getString("SQLError.52")); //$NON-NLS-1$
165                sqlStateMessages.put(SQL_STATE_DEADLOCK, Messages
166                                .getString("SQLError.53")); //$NON-NLS-1$
167                sqlStateMessages.put(SQL_STATE_INVALID_AUTH_SPEC, Messages
168                                .getString("SQLError.54")); //$NON-NLS-1$
169                sqlStateMessages.put(SQL_STATE_SYNTAX_ERROR, Messages
170                                .getString("SQLError.55")); //$NON-NLS-1$
171                sqlStateMessages.put(SQL_STATE_BASE_TABLE_OR_VIEW_NOT_FOUND, Messages
172                                .getString("SQLError.56")); //$NON-NLS-1$
173                sqlStateMessages.put(SQL_STATE_BASE_TABLE_OR_VIEW_ALREADY_EXISTS,
174                                Messages.getString("SQLError.57")); //$NON-NLS-1$
175                sqlStateMessages.put(SQL_STATE_BASE_TABLE_NOT_FOUND, Messages
176                                .getString("SQLError.58")); //$NON-NLS-1$
177                sqlStateMessages.put(SQL_STATE_INDEX_ALREADY_EXISTS, Messages
178                                .getString("SQLError.59")); //$NON-NLS-1$
179                sqlStateMessages.put(SQL_STATE_INDEX_NOT_FOUND, Messages
180                                .getString("SQLError.60")); //$NON-NLS-1$
181                sqlStateMessages.put(SQL_STATE_COLUMN_ALREADY_EXISTS, Messages
182                                .getString("SQLError.61")); //$NON-NLS-1$
183                sqlStateMessages.put(SQL_STATE_COLUMN_NOT_FOUND, Messages
184                                .getString("SQLError.62")); //$NON-NLS-1$
185                sqlStateMessages.put(SQL_STATE_NO_DEFAULT_FOR_COLUMN, Messages
186                                .getString("SQLError.63")); //$NON-NLS-1$
187                sqlStateMessages.put(SQL_STATE_GENERAL_ERROR, Messages
188                                .getString("SQLError.64")); //$NON-NLS-1$
189                sqlStateMessages.put(SQL_STATE_MEMORY_ALLOCATION_FAILURE, Messages
190                                .getString("SQLError.65")); //$NON-NLS-1$
191                sqlStateMessages.put(SQL_STATE_INVALID_COLUMN_NUMBER, Messages
192                                .getString("SQLError.66")); //$NON-NLS-1$
193                sqlStateMessages.put(SQL_STATE_ILLEGAL_ARGUMENT, Messages
194                                .getString("SQLError.67")); //$NON-NLS-1$
195                sqlStateMessages.put(SQL_STATE_DRIVER_NOT_CAPABLE, Messages
196                                .getString("SQLError.68")); //$NON-NLS-1$
197                sqlStateMessages.put(SQL_STATE_TIMEOUT_EXPIRED, Messages
198                                .getString("SQLError.69")); //$NON-NLS-1$
199 
200                mysqlToSqlState = new Hashtable();
201 
202                //
203                // Communications Errors
204                //
205                // ER_CON_COUNT_ERROR 1040
206                // ER_BAD_HOST_ERROR 1042
207                // ER_HANDSHAKE_ERROR 1043
208                // ER_UNKNOWN_COM_ERROR 1047
209                // ER_IPSOCK_ERROR 1081
210                //
211                mysqlToSqlState.put(new Integer(1040), SQL_STATE_CONNECTION_REJECTED);
212                mysqlToSqlState.put(new Integer(1042), SQL_STATE_CONNECTION_REJECTED);
213                mysqlToSqlState.put(new Integer(1043), SQL_STATE_CONNECTION_REJECTED);
214                mysqlToSqlState.put(new Integer(1047),
215                                SQL_STATE_COMMUNICATION_LINK_FAILURE);
216                mysqlToSqlState.put(new Integer(1081),
217                                SQL_STATE_COMMUNICATION_LINK_FAILURE);
218 
219                // ER_HOST_IS_BLOCKED 1129
220                // ER_HOST_NOT_PRIVILEGED 1130
221                mysqlToSqlState.put(new Integer(1129), SQL_STATE_CONNECTION_REJECTED);
222                mysqlToSqlState.put(new Integer(1130), SQL_STATE_CONNECTION_REJECTED);
223 
224                //
225                // Authentication Errors
226                //
227                // ER_ACCESS_DENIED_ERROR 1045
228                //
229                mysqlToSqlState.put(new Integer(1045), SQL_STATE_INVALID_AUTH_SPEC);
230 
231                //
232                // Resource errors
233                //
234                // ER_CANT_CREATE_FILE 1004
235                // ER_CANT_CREATE_TABLE 1005
236                // ER_CANT_LOCK 1015
237                // ER_DISK_FULL 1021
238                // ER_CON_COUNT_ERROR 1040
239                // ER_OUT_OF_RESOURCES 1041
240                //
241                // Out-of-memory errors
242                //
243                // ER_OUTOFMEMORY 1037
244                // ER_OUT_OF_SORTMEMORY 1038
245                //
246                mysqlToSqlState.put(new Integer(1037),
247                                SQL_STATE_MEMORY_ALLOCATION_FAILURE);
248                mysqlToSqlState.put(new Integer(1038),
249                                SQL_STATE_MEMORY_ALLOCATION_FAILURE);
250 
251                //
252                // Syntax Errors
253                //
254                // ER_PARSE_ERROR 1064
255                // ER_EMPTY_QUERY 1065
256                //
257                mysqlToSqlState.put(new Integer(1064), SQL_STATE_SYNTAX_ERROR);
258                mysqlToSqlState.put(new Integer(1065), SQL_STATE_SYNTAX_ERROR);
259 
260                //
261                // Invalid argument errors
262                //
263                // ER_WRONG_FIELD_WITH_GROUP 1055
264                // ER_WRONG_GROUP_FIELD 1056
265                // ER_WRONG_SUM_SELECT 1057
266                // ER_TOO_LONG_IDENT 1059
267                // ER_DUP_FIELDNAME 1060
268                // ER_DUP_KEYNAME 1061
269                // ER_DUP_ENTRY 1062
270                // ER_WRONG_FIELD_SPEC 1063
271                // ER_NONUNIQ_TABLE 1066
272                // ER_INVALID_DEFAULT 1067
273                // ER_MULTIPLE_PRI_KEY 1068
274                // ER_TOO_MANY_KEYS 1069
275                // ER_TOO_MANY_KEY_PARTS 1070
276                // ER_TOO_LONG_KEY 1071
277                // ER_KEY_COLUMN_DOES_NOT_EXIST 1072
278                // ER_BLOB_USED_AS_KEY 1073
279                // ER_TOO_BIG_FIELDLENGTH 1074
280                // ER_WRONG_AUTO_KEY 1075
281                // ER_NO_SUCH_INDEX 1082
282                // ER_WRONG_FIELD_TERMINATORS 1083
283                // ER_BLOBS_AND_NO_TERMINATED 1084
284                //
285                mysqlToSqlState.put(new Integer(1055), SQL_STATE_ILLEGAL_ARGUMENT);
286                mysqlToSqlState.put(new Integer(1056), SQL_STATE_ILLEGAL_ARGUMENT);
287                mysqlToSqlState.put(new Integer(1057), SQL_STATE_ILLEGAL_ARGUMENT);
288                mysqlToSqlState.put(new Integer(1059), SQL_STATE_ILLEGAL_ARGUMENT);
289                mysqlToSqlState.put(new Integer(1060), SQL_STATE_ILLEGAL_ARGUMENT);
290                mysqlToSqlState.put(new Integer(1061), SQL_STATE_ILLEGAL_ARGUMENT);
291                mysqlToSqlState.put(new Integer(1062), SQL_STATE_ILLEGAL_ARGUMENT);
292                mysqlToSqlState.put(new Integer(1063), SQL_STATE_ILLEGAL_ARGUMENT);
293                mysqlToSqlState.put(new Integer(1066), SQL_STATE_ILLEGAL_ARGUMENT);
294                mysqlToSqlState.put(new Integer(1067), SQL_STATE_ILLEGAL_ARGUMENT);
295                mysqlToSqlState.put(new Integer(1068), SQL_STATE_ILLEGAL_ARGUMENT);
296                mysqlToSqlState.put(new Integer(1069), SQL_STATE_ILLEGAL_ARGUMENT);
297                mysqlToSqlState.put(new Integer(1070), SQL_STATE_ILLEGAL_ARGUMENT);
298                mysqlToSqlState.put(new Integer(1071), SQL_STATE_ILLEGAL_ARGUMENT);
299                mysqlToSqlState.put(new Integer(1072), SQL_STATE_ILLEGAL_ARGUMENT);
300                mysqlToSqlState.put(new Integer(1073), SQL_STATE_ILLEGAL_ARGUMENT);
301                mysqlToSqlState.put(new Integer(1074), SQL_STATE_ILLEGAL_ARGUMENT);
302                mysqlToSqlState.put(new Integer(1075), SQL_STATE_ILLEGAL_ARGUMENT);
303                mysqlToSqlState.put(new Integer(1082), SQL_STATE_ILLEGAL_ARGUMENT);
304                mysqlToSqlState.put(new Integer(1083), SQL_STATE_ILLEGAL_ARGUMENT);
305                mysqlToSqlState.put(new Integer(1084), SQL_STATE_ILLEGAL_ARGUMENT);
306 
307                //
308                // ER_WRONG_VALUE_COUNT 1058
309                //
310                mysqlToSqlState.put(new Integer(1058),
311                                SQL_STATE_INSERT_VALUE_LIST_NO_MATCH_COL_LIST);
312 
313                // ER_CANT_CREATE_DB 1006
314                // ER_DB_CREATE_EXISTS 1007
315                // ER_DB_DROP_EXISTS 1008
316                // ER_DB_DROP_DELETE 1009
317                // ER_DB_DROP_RMDIR 1010
318                // ER_CANT_DELETE_FILE 1011
319                // ER_CANT_FIND_SYSTEM_REC 1012
320                // ER_CANT_GET_STAT 1013
321                // ER_CANT_GET_WD 1014
322                // ER_UNEXPECTED_EOF 1039
323                // ER_CANT_OPEN_FILE 1016
324                // ER_FILE_NOT_FOUND 1017
325                // ER_CANT_READ_DIR 1018
326                // ER_CANT_SET_WD 1019
327                // ER_CHECKREAD 1020
328                // ER_DUP_KEY 1022
329                // ER_ERROR_ON_CLOSE 1023
330                // ER_ERROR_ON_READ 1024
331                // ER_ERROR_ON_RENAME 1025
332                // ER_ERROR_ON_WRITE 1026
333                // ER_FILE_USED 1027
334                // ER_FILSORT_ABORT 1028
335                // ER_FORM_NOT_FOUND 1029
336                // ER_GET_ERRNO 1030
337                // ER_ILLEGAL_HA 1031
338                // ER_KEY_NOT_FOUND 1032
339                // ER_NOT_FORM_FILE 1033
340                // ER_DBACCESS_DENIED_ERROR 1044
341                // ER_NO_DB_ERROR 1046
342                // ER_BAD_NULL_ERROR 1048
343                // ER_BAD_DB_ERROR 1049
344                // ER_TABLE_EXISTS_ERROR 1050
345                // ER_BAD_TABLE_ERROR 1051
346                mysqlToSqlState.put(new Integer(1051),
347                                SQL_STATE_BASE_TABLE_OR_VIEW_NOT_FOUND);
348 
349                // ER_NON_UNIQ_ERROR 1052
350                // ER_BAD_FIELD_ERROR 1054
351                mysqlToSqlState.put(new Integer(1054), SQL_STATE_COLUMN_NOT_FOUND);
352 
353                // ER_TEXTFILE_NOT_READABLE 1085
354                // ER_FILE_EXISTS_ERROR 1086
355                // ER_LOAD_INFO 1087
356                // ER_ALTER_INFO 1088
357                // ER_WRONG_SUB_KEY 1089
358                // ER_CANT_REMOVE_ALL_FIELDS 1090
359                // ER_CANT_DROP_FIELD_OR_KEY 1091
360                // ER_INSERT_INFO 1092
361                // ER_INSERT_TABLE_USED 1093
362                // ER_LOCK_DEADLOCK 1213
363                mysqlToSqlState.put(new Integer(1205), SQL_STATE_DEADLOCK);
364                mysqlToSqlState.put(new Integer(1213), SQL_STATE_DEADLOCK);
365 
366                mysqlToSql99State = new HashMap();
367 
368                mysqlToSql99State.put(new Integer(1205), SQL_STATE_DEADLOCK);
369                mysqlToSql99State.put(new Integer(1213), SQL_STATE_DEADLOCK);
370                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_KEY),
371                                "23000");
372                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_OUTOFMEMORY),
373                                "HY001");
374                mysqlToSql99State.put(new Integer(
375                                MysqlErrorNumbers.ER_OUT_OF_SORTMEMORY), "HY001");
376                mysqlToSql99State.put(
377                                new Integer(MysqlErrorNumbers.ER_CON_COUNT_ERROR), "08004");
378                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_BAD_HOST_ERROR),
379                                "08S01");
380                mysqlToSql99State.put(
381                                new Integer(MysqlErrorNumbers.ER_HANDSHAKE_ERROR), "08S01");
382                mysqlToSql99State.put(new Integer(
383                                MysqlErrorNumbers.ER_DBACCESS_DENIED_ERROR), "42000");
384                mysqlToSql99State.put(new Integer(
385                                MysqlErrorNumbers.ER_ACCESS_DENIED_ERROR), "28000");
386                mysqlToSql99State.put(new Integer(
387                                MysqlErrorNumbers.ER_TABLE_EXISTS_ERROR), "42S01");
388                mysqlToSql99State.put(
389                                new Integer(MysqlErrorNumbers.ER_BAD_TABLE_ERROR), "42S02");
390                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NON_UNIQ_ERROR),
391                                "23000");
392                mysqlToSql99State.put(
393                                new Integer(MysqlErrorNumbers.ER_SERVER_SHUTDOWN), "08S01");
394                mysqlToSql99State.put(
395                                new Integer(MysqlErrorNumbers.ER_BAD_FIELD_ERROR), "42S22");
396                mysqlToSql99State.put(new Integer(
397                                MysqlErrorNumbers.ER_WRONG_FIELD_WITH_GROUP), "42000");
398                mysqlToSql99State.put(new Integer(
399                                MysqlErrorNumbers.ER_WRONG_GROUP_FIELD), "42000");
400                mysqlToSql99State.put(
401                                new Integer(MysqlErrorNumbers.ER_WRONG_SUM_SELECT), "42000");
402                mysqlToSql99State.put(new Integer(
403                                MysqlErrorNumbers.ER_WRONG_VALUE_COUNT), "21S01");
404                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_LONG_IDENT),
405                                "42000");
406                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_FIELDNAME),
407                                "42S21");
408                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_KEYNAME),
409                                "42000");
410                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_ENTRY),
411                                "23000");
412                mysqlToSql99State.put(
413                                new Integer(MysqlErrorNumbers.ER_WRONG_FIELD_SPEC), "42000");
414                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_PARSE_ERROR),
415                                "42000");
416                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_EMPTY_QUERY),
417                                "42000");
418                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NONUNIQ_TABLE),
419                                "42000");
420                mysqlToSql99State.put(
421                                new Integer(MysqlErrorNumbers.ER_INVALID_DEFAULT), "42000");
422                mysqlToSql99State.put(
423                                new Integer(MysqlErrorNumbers.ER_MULTIPLE_PRI_KEY), "42000");
424                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_MANY_KEYS),
425                                "42000");
426                mysqlToSql99State.put(new Integer(
427                                MysqlErrorNumbers.ER_TOO_MANY_KEY_PARTS), "42000");
428                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_LONG_KEY),
429                                "42000");
430                mysqlToSql99State.put(new Integer(
431                                MysqlErrorNumbers.ER_KEY_COLUMN_DOES_NOT_EXITS), "42000");
432                mysqlToSql99State.put(
433                                new Integer(MysqlErrorNumbers.ER_BLOB_USED_AS_KEY), "42000");
434                mysqlToSql99State.put(new Integer(
435                                MysqlErrorNumbers.ER_TOO_BIG_FIELDLENGTH), "42000");
436                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_WRONG_AUTO_KEY),
437                                "42000");
438                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_FORCING_CLOSE),
439                                "08S01");
440                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_IPSOCK_ERROR),
441                                "08S01");
442                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NO_SUCH_INDEX),
443                                "42S12");
444                mysqlToSql99State.put(new Integer(
445                                MysqlErrorNumbers.ER_WRONG_FIELD_TERMINATORS), "42000");
446                mysqlToSql99State.put(new Integer(
447                                MysqlErrorNumbers.ER_BLOBS_AND_NO_TERMINATED), "42000");
448                mysqlToSql99State.put(new Integer(
449                                MysqlErrorNumbers.ER_CANT_REMOVE_ALL_FIELDS), "42000");
450                mysqlToSql99State.put(new Integer(
451                                MysqlErrorNumbers.ER_CANT_DROP_FIELD_OR_KEY), "42000");
452                mysqlToSql99State.put(new Integer(
453                                MysqlErrorNumbers.ER_BLOB_CANT_HAVE_DEFAULT), "42000");
454                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_WRONG_DB_NAME),
455                                "42000");
456                mysqlToSql99State.put(
457                                new Integer(MysqlErrorNumbers.ER_WRONG_TABLE_NAME), "42000");
458                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_BIG_SELECT),
459                                "42000");
460                mysqlToSql99State.put(new Integer(
461                                MysqlErrorNumbers.ER_UNKNOWN_PROCEDURE), "42000");
462                mysqlToSql99State.put(new Integer(
463                                MysqlErrorNumbers.ER_WRONG_PARAMCOUNT_TO_PROCEDURE), "42000");
464                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_UNKNOWN_TABLE),
465                                "42S02");
466                mysqlToSql99State.put(new Integer(
467                                MysqlErrorNumbers.ER_FIELD_SPECIFIED_TWICE), "42000");
468                mysqlToSql99State.put(new Integer(
469                                MysqlErrorNumbers.ER_UNSUPPORTED_EXTENSION), "42000");
470                mysqlToSql99State.put(new Integer(
471                                MysqlErrorNumbers.ER_TABLE_MUST_HAVE_COLUMNS), "42000");
472                mysqlToSql99State.put(new Integer(
473                                MysqlErrorNumbers.ER_UNKNOWN_CHARACTER_SET), "42000");
474                mysqlToSql99State.put(
475                                new Integer(MysqlErrorNumbers.ER_TOO_BIG_ROWSIZE), "42000");
476                mysqlToSql99State.put(
477                                new Integer(MysqlErrorNumbers.ER_WRONG_OUTER_JOIN), "42000");
478                mysqlToSql99State.put(new Integer(
479                                MysqlErrorNumbers.ER_NULL_COLUMN_IN_INDEX), "42000");
480                mysqlToSql99State.put(new Integer(
481                                MysqlErrorNumbers.ER_PASSWORD_ANONYMOUS_USER), "42000");
482                mysqlToSql99State.put(new Integer(
483                                MysqlErrorNumbers.ER_PASSWORD_NOT_ALLOWED), "42000");
484                mysqlToSql99State.put(new Integer(
485                                MysqlErrorNumbers.ER_PASSWORD_NO_MATCH), "42000");
486                mysqlToSql99State.put(new Integer(
487                                MysqlErrorNumbers.ER_WRONG_VALUE_COUNT_ON_ROW), "21S01");
488                mysqlToSql99State.put(new Integer(
489                                MysqlErrorNumbers.ER_INVALID_USE_OF_NULL), "42000");
490                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_REGEXP_ERROR),
491                                "42000");
492                mysqlToSql99State.put(new Integer(
493                                MysqlErrorNumbers.ER_MIX_OF_GROUP_FUNC_AND_FIELDS), "42000");
494                mysqlToSql99State.put(new Integer(
495                                MysqlErrorNumbers.ER_NONEXISTING_GRANT), "42000");
496                mysqlToSql99State.put(new Integer(
497                                MysqlErrorNumbers.ER_TABLEACCESS_DENIED_ERROR), "42000");
498                mysqlToSql99State.put(new Integer(
499                                MysqlErrorNumbers.ER_COLUMNACCESS_DENIED_ERROR), "42000");
500                mysqlToSql99State.put(new Integer(
501                                MysqlErrorNumbers.ER_ILLEGAL_GRANT_FOR_TABLE), "42000");
502                mysqlToSql99State.put(new Integer(
503                                MysqlErrorNumbers.ER_GRANT_WRONG_HOST_OR_USER), "42000");
504                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NO_SUCH_TABLE),
505                                "42S02");
506                mysqlToSql99State.put(new Integer(
507                                MysqlErrorNumbers.ER_NONEXISTING_TABLE_GRANT), "42000");
508                mysqlToSql99State.put(new Integer(
509                                MysqlErrorNumbers.ER_NOT_ALLOWED_COMMAND), "42000");
510                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_SYNTAX_ERROR),
511                                "42000");
512                mysqlToSql99State.put(new Integer(
513                                MysqlErrorNumbers.ER_ABORTING_CONNECTION), "08S01");
514                mysqlToSql99State.put(new Integer(
515                                MysqlErrorNumbers.ER_NET_PACKET_TOO_LARGE), "08S01");
516                mysqlToSql99State.put(new Integer(
517                                MysqlErrorNumbers.ER_NET_READ_ERROR_FROM_PIPE), "08S01");
518                mysqlToSql99State.put(
519                                new Integer(MysqlErrorNumbers.ER_NET_FCNTL_ERROR), "08S01");
520                mysqlToSql99State.put(new Integer(
521                                MysqlErrorNumbers.ER_NET_PACKETS_OUT_OF_ORDER), "08S01");
522                mysqlToSql99State.put(new Integer(
523                                MysqlErrorNumbers.ER_NET_UNCOMPRESS_ERROR), "08S01");
524                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NET_READ_ERROR),
525                                "08S01");
526                mysqlToSql99State.put(new Integer(
527                                MysqlErrorNumbers.ER_NET_READ_INTERRUPTED), "08S01");
528                mysqlToSql99State.put(new Integer(
529                                MysqlErrorNumbers.ER_NET_ERROR_ON_WRITE), "08S01");
530                mysqlToSql99State.put(new Integer(
531                                MysqlErrorNumbers.ER_NET_WRITE_INTERRUPTED), "08S01");
532                mysqlToSql99State.put(
533                                new Integer(MysqlErrorNumbers.ER_TOO_LONG_STRING), "42000");
534                mysqlToSql99State.put(new Integer(
535                                MysqlErrorNumbers.ER_TABLE_CANT_HANDLE_BLOB), "42000");
536                mysqlToSql99State
537                                .put(new Integer(
538                                                MysqlErrorNumbers.ER_TABLE_CANT_HANDLE_AUTO_INCREMENT),
539                                                "42000");
540                mysqlToSql99State.put(new Integer(
541                                MysqlErrorNumbers.ER_WRONG_COLUMN_NAME), "42000");
542                mysqlToSql99State.put(
543                                new Integer(MysqlErrorNumbers.ER_WRONG_KEY_COLUMN), "42000");
544                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_UNIQUE),
545                                "23000");
546                mysqlToSql99State.put(new Integer(
547                                MysqlErrorNumbers.ER_BLOB_KEY_WITHOUT_LENGTH), "42000");
548                mysqlToSql99State.put(new Integer(
549                                MysqlErrorNumbers.ER_PRIMARY_CANT_HAVE_NULL), "42000");
550                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_MANY_ROWS),
551                                "42000");
552                mysqlToSql99State.put(new Integer(
553                                MysqlErrorNumbers.ER_REQUIRES_PRIMARY_KEY), "42000");
554                mysqlToSql99State.put(new Integer(
555                                MysqlErrorNumbers.ER_CHECK_NO_SUCH_TABLE), "42000");
556                mysqlToSql99State.put(new Integer(
557                                MysqlErrorNumbers.ER_CHECK_NOT_IMPLEMENTED), "42000");
558                mysqlToSql99State.put(new Integer(
559                                MysqlErrorNumbers.ER_CANT_DO_THIS_DURING_AN_TRANSACTION),
560                                "25000");
561                mysqlToSql99State.put(new Integer(
562                                MysqlErrorNumbers.ER_NEW_ABORTING_CONNECTION), "08S01");
563                mysqlToSql99State.put(
564                                new Integer(MysqlErrorNumbers.ER_MASTER_NET_READ), "08S01");
565                mysqlToSql99State.put(
566                                new Integer(MysqlErrorNumbers.ER_MASTER_NET_WRITE), "08S01");
567                mysqlToSql99State.put(new Integer(
568                                MysqlErrorNumbers.ER_TOO_MANY_USER_CONNECTIONS), "42000");
569                mysqlToSql99State.put(new Integer(
570                                MysqlErrorNumbers.ER_READ_ONLY_TRANSACTION), "25000");
571                mysqlToSql99State.put(new Integer(
572                                MysqlErrorNumbers.ER_NO_PERMISSION_TO_CREATE_USER), "42000");
573                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_LOCK_DEADLOCK),
574                                "40001");
575                mysqlToSql99State.put(new Integer(
576                                MysqlErrorNumbers.ER_NO_REFERENCED_ROW), "23000");
577                mysqlToSql99State.put(new Integer(
578                                MysqlErrorNumbers.ER_ROW_IS_REFERENCED), "23000");
579                mysqlToSql99State.put(new Integer(
580                                MysqlErrorNumbers.ER_CONNECT_TO_MASTER), "08S01");
581                mysqlToSql99State.put(new Integer(
582                                MysqlErrorNumbers.ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT),
583                                "21000");
584                mysqlToSql99State.put(new Integer(
585                                MysqlErrorNumbers.ER_USER_LIMIT_REACHED), "42000");
586                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NO_DEFAULT),
587                                "42000");
588                mysqlToSql99State.put(new Integer(
589                                MysqlErrorNumbers.ER_WRONG_VALUE_FOR_VAR), "42000");
590                mysqlToSql99State.put(new Integer(
591                                MysqlErrorNumbers.ER_WRONG_TYPE_FOR_VAR), "42000");
592                mysqlToSql99State.put(new Integer(
593                                MysqlErrorNumbers.ER_CANT_USE_OPTION_HERE), "42000");
594                mysqlToSql99State.put(new Integer(
595                                MysqlErrorNumbers.ER_NOT_SUPPORTED_YET), "42000");
596                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_WRONG_FK_DEF),
597                                "42000");
598                mysqlToSql99State.put(
599                                new Integer(MysqlErrorNumbers.ER_OPERAND_COLUMNS), "21000");
600                mysqlToSql99State.put(new Integer(
601                                MysqlErrorNumbers.ER_SUBQUERY_NO_1_ROW), "21000");
602                mysqlToSql99State.put(new Integer(
603                                MysqlErrorNumbers.ER_ILLEGAL_REFERENCE), "42S22");
604                mysqlToSql99State.put(new Integer(
605                                MysqlErrorNumbers.ER_DERIVED_MUST_HAVE_ALIAS), "42000");
606                mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_SELECT_REDUCED),
607                                "01000");
608                mysqlToSql99State.put(new Integer(
609                                MysqlErrorNumbers.ER_TABLENAME_NOT_ALLOWED_HERE), "42000");
610                mysqlToSql99State.put(new Integer(
611                                MysqlErrorNumbers.ER_NOT_SUPPORTED_AUTH_MODE), "08004");
612                mysqlToSql99State.put(new Integer(
613                                MysqlErrorNumbers.ER_SPATIAL_CANT_HAVE_NULL), "42000");
614                mysqlToSql99State.put(new Integer(
615                                MysqlErrorNumbers.ER_COLLATION_CHARSET_MISMATCH), "42000");
616                mysqlToSql99State.put(new Integer(
617                                MysqlErrorNumbers.ER_WARN_TOO_FEW_RECORDS), "01000");
618                mysqlToSql99State.put(new Integer(
619                                MysqlErrorNumbers.ER_WARN_TOO_MANY_RECORDS), "01000");
620                mysqlToSql99State.put(new Integer(
621                                MysqlErrorNumbers.ER_WARN_NULL_TO_NOTNULL), "01000");
622                mysqlToSql99State.put(new Integer(
623                                MysqlErrorNumbers.ER_WARN_DATA_OUT_OF_RANGE), "01000");
624                mysqlToSql99State.put(new Integer(
625                                MysqlErrorNumbers.ER_WARN_DATA_TRUNCATED), "01000");
626                mysqlToSql99State.put(new Integer(
627                                MysqlErrorNumbers.ER_WRONG_NAME_FOR_INDEX), "42000");
628                mysqlToSql99State.put(new Integer(
629                                MysqlErrorNumbers.ER_WRONG_NAME_FOR_CATALOG), "42000");
630                mysqlToSql99State.put(new Integer(
631                                MysqlErrorNumbers.ER_UNKNOWN_STORAGE_ENGINE), "42000");
632        }
633 
634        /**
635         * Turns output of 'SHOW WARNINGS' into JDBC SQLWarning instances.
636         * 
637         * If 'forTruncationOnly' is true, only looks for truncation warnings, and
638         * actually throws DataTruncation as an exception.
639         * 
640         * @param connection
641         *            the connection to use for getting warnings.
642         * 
643         * @return the SQLWarning chain (or null if no warnings)
644         * 
645         * @throws SQLException
646         *             if the warnings could not be retrieved
647         */
648        static SQLWarning convertShowWarningsToSQLWarnings(Connection connection)
649                        throws SQLException {
650                return convertShowWarningsToSQLWarnings(connection, 0, false);
651        }
652 
653        /**
654         * Turns output of 'SHOW WARNINGS' into JDBC SQLWarning instances.
655         * 
656         * If 'forTruncationOnly' is true, only looks for truncation warnings, and
657         * actually throws DataTruncation as an exception.
658         * 
659         * @param connection
660         *            the connection to use for getting warnings.
661         * @param warningCountIfKnown
662         *            the warning count (if known), otherwise set it to 0.
663         * @param forTruncationOnly
664         *            if this method should only scan for data truncation warnings
665         * 
666         * @return the SQLWarning chain (or null if no warnings)
667         * 
668         * @throws SQLException
669         *             if the warnings could not be retrieved, or if data truncation
670         *             is being scanned for and truncations were found.
671         */
672        static SQLWarning convertShowWarningsToSQLWarnings(Connection connection,
673                        int warningCountIfKnown, boolean forTruncationOnly)
674                        throws SQLException {
675                java.sql.Statement stmt = null;
676                java.sql.ResultSet warnRs = null;
677 
678                SQLWarning currentWarning = null;
679 
680                try {
681                        if (warningCountIfKnown < 100) {
682                                stmt = connection.createStatement();
683 
684                                if (stmt.getMaxRows() != 0) {
685                                        stmt.setMaxRows(0);
686                                }
687                        } else {
688                                // stream large warning counts
689                                stmt = connection.createStatement(
690                                                java.sql.ResultSet.TYPE_FORWARD_ONLY,
691                                                java.sql.ResultSet.CONCUR_READ_ONLY);
692                                stmt.setFetchSize(Integer.MIN_VALUE);
693                        }
694 
695                        warnRs = stmt.executeQuery("SHOW WARNINGS"); //$NON-NLS-1$
696 
697                        while (warnRs.next()) {
698                                int code = warnRs.getInt("Code"); //$NON-NLS-1$
699 
700                                if (forTruncationOnly) {
701                                        if (code == 1264 || code == 1265) {
702                                                DataTruncation newTruncation = new MysqlDataTruncation(
703                                                                warnRs.getString("Message"), 0, false, false, 0, 0); //$NON-NLS-1$
704 
705                                                if (currentWarning == null) {
706                                                        currentWarning = newTruncation;
707                                                } else {
708                                                        currentWarning.setNextWarning(newTruncation);
709                                                }
710                                        }
711                                } else {
712                                        String level = warnRs.getString("Level"); //$NON-NLS-1$
713                                        String message = warnRs.getString("Message"); //$NON-NLS-1$
714 
715                                        SQLWarning newWarning = new SQLWarning(message, SQLError
716                                                        .mysqlToSqlState(code, connection
717                                                                        .getUseSqlStateCodes()), code);
718 
719                                        if (currentWarning == null) {
720                                                currentWarning = newWarning;
721                                        } else {
722                                                currentWarning.setNextWarning(newWarning);
723                                        }
724                                }
725                        }
726 
727                        if (forTruncationOnly && (currentWarning != null)) {
728                                throw currentWarning;
729                        }
730 
731                        return currentWarning;
732                } finally {
733                        SQLException reThrow = null;
734 
735                        if (warnRs != null) {
736                                try {
737                                        warnRs.close();
738                                } catch (SQLException sqlEx) {
739                                        reThrow = sqlEx;
740                                }
741                        }
742 
743                        if (stmt != null) {
744                                try {
745                                        stmt.close();
746                                } catch (SQLException sqlEx) {
747                                        // ideally, we'd use chained exceptions here,
748                                        // but we still support JDK-1.2.x with this driver
749                                        // which doesn't have them....
750                                        reThrow = sqlEx;
751                                }
752                        }
753 
754                        if (reThrow != null) {
755                                throw reThrow;
756                        }
757                }
758        }
759 
760        public static void dumpSqlStatesMappingsAsXml() throws Exception {
761                TreeMap allErrorNumbers = new TreeMap();
762                Map mysqlErrorNumbersToNames = new HashMap();
763 
764                Integer errorNumber = null;
765 
766                // 
767                // First create a list of all 'known' error numbers that
768                // are mapped.
769                //
770                for (Iterator mysqlErrorNumbers = mysqlToSql99State.keySet().iterator(); mysqlErrorNumbers
771                                .hasNext();) {
772                        errorNumber = (Integer) mysqlErrorNumbers.next();
773                        allErrorNumbers.put(errorNumber, errorNumber);
774                }
775 
776                for (Iterator mysqlErrorNumbers = mysqlToSqlState.keySet().iterator(); mysqlErrorNumbers
777                                .hasNext();) {
778                        errorNumber = (Integer) mysqlErrorNumbers.next();
779                        allErrorNumbers.put(errorNumber, errorNumber);
780                }
781 
782                //
783                // Now create a list of the actual MySQL error numbers we know about
784                //
785                java.lang.reflect.Field[] possibleFields = MysqlErrorNumbers.class
786                                .getDeclaredFields();
787 
788                for (int i = 0; i < possibleFields.length; i++) {
789                        String fieldName = possibleFields[i].getName();
790 
791                        if (fieldName.startsWith("ER_")) {
792                                mysqlErrorNumbersToNames.put(possibleFields[i].get(null),
793                                                fieldName);
794                        }
795                }
796 
797                System.out.println("<ErrorMappings>");
798 
799                for (Iterator allErrorNumbersIter = allErrorNumbers.keySet().iterator(); allErrorNumbersIter
800                                .hasNext();) {
801                        errorNumber = (Integer) allErrorNumbersIter.next();
802 
803                        String sql92State = mysqlToSql99(errorNumber.intValue());
804                        String oldSqlState = mysqlToXOpen(errorNumber.intValue());
805 
806                        System.out.println("   <ErrorMapping mysqlErrorNumber=\""
807                                        + errorNumber + "\" mysqlErrorName=\""
808                                        + mysqlErrorNumbersToNames.get(errorNumber)
809                                        + "\" legacySqlState=\""
810                                        + ((oldSqlState == null) ? "" : oldSqlState)
811                                        + "\" sql92SqlState=\""
812                                        + ((sql92State == null) ? "" : sql92State) + "\"/>");
813                }
814 
815                System.out.println("</ErrorMappings>");
816        }
817 
818        static String get(String stateCode) {
819                return (String) sqlStateMessages.get(stateCode);
820        }
821 
822        private static String mysqlToSql99(int errno) {
823                Integer err = new Integer(errno);
824 
825                if (mysqlToSql99State.containsKey(err)) {
826                        return (String) mysqlToSql99State.get(err);
827                }
828 
829                return "HY000";
830        }
831 
832        /**
833         * Map MySQL error codes to X/Open or SQL-92 error codes
834         * 
835         * @param errno
836         *            the MySQL error code
837         * 
838         * @return the corresponding X/Open or SQL-92 error code
839         */
840        static String mysqlToSqlState(int errno, boolean useSql92States) {
841                if (useSql92States) {
842                        return mysqlToSql99(errno);
843                }
844 
845                return mysqlToXOpen(errno);
846        }
847 
848        private static String mysqlToXOpen(int errno) {
849                Integer err = new Integer(errno);
850 
851                if (mysqlToSqlState.containsKey(err)) {
852                        return (String) mysqlToSqlState.get(err);
853                }
854 
855                return SQL_STATE_GENERAL_ERROR;
856        }
857}

[all classes][com.mysql.jdbc]
EMMA 2.0.4217 (C) Vladimir Roubtsov