1 /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/error.c,v 1.18 2003/02/13 18:13:22 tgl Exp $ */
3 #include "postgres_fe.h"
13 /* This should hold the back-end error message from
14 * the last back-end operation. */
19 ECPGraise(int line, int code, const char *str)
26 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
27 "No data found in line %d.", line);
30 case ECPG_OUT_OF_MEMORY:
31 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
32 "Out of memory in line %d.", line);
35 case ECPG_UNSUPPORTED:
36 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
37 "Unsupported type %s in line %d.", str, line);
40 case ECPG_TOO_MANY_ARGUMENTS:
41 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
42 "Too many arguments in line %d.", line);
45 case ECPG_TOO_FEW_ARGUMENTS:
46 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
47 "Too few arguments in line %d.", line);
51 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
52 "Not correctly formatted int type: %s line %d.", str, line);
55 case ECPG_UINT_FORMAT:
56 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
57 "Not correctly formatted unsigned type: %s in line %d.", str, line);
60 case ECPG_FLOAT_FORMAT:
61 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
62 "Not correctly formatted floating-point type: %s in line %d.", str, line);
65 case ECPG_CONVERT_BOOL:
66 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
67 "Unable to convert %s to bool on line %d.", str, line);
71 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
72 "Empty query in line %d.", line);
75 case ECPG_MISSING_INDICATOR:
76 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
77 "NULL value without indicator in line %d.", line);
81 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
82 "Variable is not an array in line %d.", line);
85 case ECPG_DATA_NOT_ARRAY:
86 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
87 "Data read from backend is not an array in line %d.", line);
90 case ECPG_ARRAY_INSERT:
91 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
92 "Trying to insert an array of variables in line %d.", line);
96 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
97 "No such connection %s in line %d.", str, line);
101 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
102 "Not connected to '%s' in line %d.", str, line);
105 case ECPG_INVALID_STMT:
106 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
107 "Invalid statement name %s in line %d.", str, line);
110 case ECPG_UNKNOWN_DESCRIPTOR:
111 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
112 "Descriptor %s not found in line %d.", str, line);
115 case ECPG_INVALID_DESCRIPTOR_INDEX:
116 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
117 "Descriptor index out of range in line %d.", line);
120 case ECPG_UNKNOWN_DESCRIPTOR_ITEM:
121 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
122 "Unknown descriptor item %s in line %d.", str, line);
125 case ECPG_VAR_NOT_NUMERIC:
126 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
127 "Variable is not a numeric type in line %d.", line);
130 case ECPG_VAR_NOT_CHAR:
131 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
132 "Variable is not a character type in line %d.", line);
137 int slen = strlen(str);
139 /* strip trailing newline */
140 if (slen > 0 && str[slen - 1] == '\n')
142 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
143 "'%.*s' in line %d.", slen, str, line);
148 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
149 "Error in transaction processing in line %d.", line);
153 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
154 "Could not connect to database %s in line %d.", str, line);
158 snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
159 "SQL error #%d in line %d.", code, line);
163 sqlca.sqlerrm.sqlerrml = strlen(sqlca.sqlerrm.sqlerrmc);
164 ECPGlog("raising sqlcode %d in line %d, '%s'.\n", code, line, sqlca.sqlerrm.sqlerrmc);
166 /* free all memory we have allocated for the user */
170 /* Set the error message string from the backend */
172 set_backend_err(const char *err, int lineno)
183 ECPGerr = ECPGstrdup(err, lineno);
186 /* Retrieve the error message from the backend. */
193 /* print out an error message */
197 sqlca.sqlerrm.sqlerrmc[sqlca.sqlerrm.sqlerrml] = '\0';
198 fprintf(stderr, "sql error %s\n", sqlca.sqlerrm.sqlerrmc);