switch (code)
{ case ECPG_NOT_FOUND:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("no data found on line %d"), line); break;
case ECPG_OUT_OF_MEMORY:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("out of memory on line %d"), line); break;
case ECPG_UNSUPPORTED:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("unsupported type \"%s\" on line %d"), str, line); break;
case ECPG_TOO_MANY_ARGUMENTS:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("too many arguments on line %d"), line); break;
case ECPG_TOO_FEW_ARGUMENTS:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("too few arguments on line %d"), line); break;
case ECPG_INT_FORMAT:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("invalid input syntax for type int: \"%s\", on line %d"), str, line); break;
case ECPG_UINT_FORMAT:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("invalid input syntax for type unsigned int: \"%s\", on line %d"), str, line); break;
case ECPG_FLOAT_FORMAT:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("invalid input syntax for floating-point type: \"%s\", on line %d"), str, line); break;
case ECPG_CONVERT_BOOL: if (str)
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("invalid syntax for type boolean: \"%s\", on line %d"), str, line); else
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("could not convert boolean value: size mismatch, on line %d"), line); break;
case ECPG_EMPTY:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("empty query on line %d"), line); break;
case ECPG_MISSING_INDICATOR:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("null value without indicator on line %d"), line); break;
case ECPG_NO_ARRAY:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("variable does not have an array type on line %d"), line); break;
case ECPG_DATA_NOT_ARRAY:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("data read from server is not an array on line %d"), line); break;
case ECPG_ARRAY_INSERT:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("inserting an array of variables is not supported on line %d"), line); break;
case ECPG_NO_CONN:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("connection \"%s\" does not exist on line %d"), str, line); break;
case ECPG_NOT_CONN:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("not connected to connection \"%s\" on line %d"), str, line); break;
case ECPG_INVALID_STMT:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("invalid statement name \"%s\" on line %d"), str, line); break;
case ECPG_UNKNOWN_DESCRIPTOR:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("descriptor \"%s\" not found on line %d"), str, line); break;
case ECPG_INVALID_DESCRIPTOR_INDEX:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("descriptor index out of range on line %d"), line); break;
case ECPG_UNKNOWN_DESCRIPTOR_ITEM:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("unrecognized descriptor item \"%s\" on line %d"), str, line); break;
case ECPG_VAR_NOT_NUMERIC:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("variable does not have a numeric type on line %d"), line); break;
case ECPG_VAR_NOT_CHAR:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("variable does not have a character type on line %d"), line); break;
case ECPG_TRANS:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("error in transaction processing on line %d"), line); break;
case ECPG_CONNECT:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("could not connect to database \"%s\" on line %d"), str, line); break;
default:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), /*------
translator: this string will be truncated at 149 characters expanded. */
ecpg_gettext("SQL error %d on line %d"), code, line); break;
}
sqlca->sqlerrm.sqlerrml = strlen(sqlca->sqlerrm.sqlerrmc);
ecpg_log("raising sqlcode %d on line %d: %s\n", code, line, sqlca->sqlerrm.sqlerrmc);
/* free all memory we have allocated for the user */
ECPGfree_auto_mem();
}
if (strcmp(sqlstate, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR) == 0)
{ /* *wemightgethereiftheconnectionbreaksdown,solet'scheckfor *thisinsteadofgivingjustthegenericinternalerror
*/ if (PQstatus(conn) == CONNECTION_BAD)
{
sqlstate = "57P02";
message = ecpg_gettext("the connection to the server was lost");
}
}
/* copy error message */
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), "%s on line %d", message, line);
sqlca->sqlerrm.sqlerrml = strlen(sqlca->sqlerrm.sqlerrmc);
/* free all memory we have allocated for the user */
ECPGfree_auto_mem();
}
/* filter out all error codes */ bool
ecpg_check_PQresult(PGresult *results, int lineno, PGconn *connection, enum COMPAT_MODE compat)
{ if (results == NULL)
{
ecpg_log("ecpg_check_PQresult on line %d: no result - %s", lineno, PQerrorMessage(connection));
ecpg_raise_backend(lineno, NULL, connection, compat); returnfalse;
}
switch (PQresultStatus(results))
{
case PGRES_TUPLES_OK: returntrue; break; case PGRES_EMPTY_QUERY: /* do nothing */
ecpg_raise(lineno, ECPG_EMPTY, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, NULL);
PQclear(results); returnfalse; break; case PGRES_COMMAND_OK: returntrue; break; case PGRES_NONFATAL_ERROR: case PGRES_FATAL_ERROR: case PGRES_BAD_RESPONSE:
ecpg_log("ecpg_check_PQresult on line %d: bad response - %s", lineno, PQresultErrorMessage(results));
ecpg_raise_backend(lineno, results, connection, compat);
PQclear(results); returnfalse; break; case PGRES_COPY_OUT: returntrue; break; case PGRES_COPY_IN:
ecpg_log("ecpg_check_PQresult on line %d: COPY IN data transfer in progress\n", lineno);
PQendcopy(connection);
PQclear(results); returnfalse; break; default:
ecpg_log("ecpg_check_PQresult on line %d: unknown execution status type\n",
lineno);
ecpg_raise_backend(lineno, results, connection, compat);
PQclear(results); returnfalse; break;
}
}
/* print out an error message */ void
sqlprint(void)
{ struct sqlca_t *sqlca = ECPGget_sqlca();
if (sqlca == NULL)
{
ecpg_log("out of memory"); return;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.