db-lib
for self-help.
More...Functions | |
int | _dblib_client_msg (DBPROCESS *dbproc, int dberr, int severity, const char *dberrstr) |
For internal use only.
| |
RETCODE | dbcmdrow (DBPROCESS *dbproc) |
For internal use only.
| |
DBINT | dbcount (DBPROCESS *dbproc) |
For internal use only.
| |
int | dbcurcmd (DBPROCESS *dbproc) |
For internal use only.
| |
DBINT | dbcurrow (DBPROCESS *dbproc) |
For internal use only.
| |
DBBOOL | dbdead (DBPROCESS *dbproc) |
For internal use only.
| |
DBINT | dbfirstrow (DBPROCESS *dbproc) |
For internal use only.
| |
int | dbiordesc (DBPROCESS *dbproc) |
For internal use only.
| |
int | dbiowdesc (DBPROCESS *dbproc) |
For internal use only.
| |
DBINT | dblastrow (DBPROCESS *dbproc) |
For internal use only.
| |
int | dbperror (DBPROCESS *dbproc, DBINT msgno, int errnum) |
For internal use only.
| |
RETCODE | dbrows (DBPROCESS *dbproc) |
For internal use only.
| |
STATUS | dbrowtype (DBPROCESS *dbproc) |
For internal use only.
| |
void | dbsetavail (DBPROCESS *dbproc) |
For internal use only.
| |
int | dbtds (DBPROCESS *dbproc) |
For internal use only.
| |
DBPROCESS * | tdsdbopen (LOGINREC *login, char *server, int msdblib) |
For internal use only.
|
db-lib
for self-help.
These functions are of interest only to people hacking on the FreeTDS db-lib implementation.
int _dblib_client_msg | ( | DBPROCESS * | dbproc, | |
int | dberr, | |||
int | severity, | |||
const char * | dberrstr | |||
) |
For internal use only.
Pass a server-generated error message to the client's installed handler.
dbproc | contains all information needed by db-lib to manage communications with the server. | |
dberr | error number | |
severity | severity level | |
dberrstr | null-terminated ASCII string, the error message. |
RETCODE dbcmdrow | ( | DBPROCESS * | dbproc | ) |
For internal use only.
See if the current command can return rows.
dbproc | contains all information needed by db-lib to manage communications with the server. |
SUCCEED | Yes, it can. | |
FAIL | No, it can't. |
DBINT dbcount | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get count of rows processed
dbproc | contains all information needed by db-lib to manage communications with the server. |
int dbcurcmd | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get number of the row just returned.
dbproc | contains all information needed by db-lib to manage communications with the server. |
DBINT dbcurrow | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get number of the row currently being read.
dbproc | contains all information needed by db-lib to manage communications with the server. |
0 | Always. |
DBBOOL dbdead | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Check if dbproc is an ex-parrot.
dbproc | contains all information needed by db-lib to manage communications with the server. |
TRUE | process has been marked dead. | |
FALSE | process is OK. |
FALSE
. DBINT dbfirstrow | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get number of the first row in the row buffer.
dbproc | contains all information needed by db-lib to manage communications with the server. |
int dbiordesc | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get file descriptor of the socket used by a DBPROCESS
to read data coming from the server. (!)
dbproc | contains all information needed by db-lib to manage communications with the server. |
int dbiowdesc | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get file descriptor of the socket used by a DBPROCESS
to write data coming to the server. (!)
dbproc | contains all information needed by db-lib to manage communications with the server. |
DBINT dblastrow | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get number of the last row in the row buffer.
dbproc | contains all information needed by db-lib to manage communications with the server. |
int dbperror | ( | DBPROCESS * | dbproc, | |
DBINT | msgno, | |||
int | errnum | |||
) |
For internal use only.
Call client-installed error handler
dbproc | contains all information needed by db-lib to manage communications with the server. | |
msgno | identifies the error message to be passed to the client's handler. | |
errnum | identifies the OS error (errno), if any. Use 0 if not applicable. |
Instead of sprinkling error text all over db-lib, we consolidate it here, where it can be translated (one day), and where it can be mapped to the TDS error number. The libraries don't use consistent error numbers or messages, so when libtds has to emit an error message, it can't include the text. It can pass its error number to a client-library function, which will interpret it, add the text, call the application's installed handler (if any) and return the handler's return code back to the caller.
The call stack may look something like this:
The error handling in this case is unambiguous: the caller invokes this function, the client's handler returns its instruction, which the caller receives. Quite often the caller will get INT_CANCEL, in which case it should put its house in order and return FAIL.
The call stack may otherwise look something like this:
Here libtds invokes the client's handler. Because different client libraries specify their handler semantics differently, and because libtds doesn't know which client library is in charge of any given connection, it cannot interpret the raw return code. Similarly, the libtds error message number will not be in the db-lib msgno list. For these reasons, libtds calls _dblib_handle_err_message which translates between libtds and db-lib semantics.
RETCODE dbrows | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Indicate whether a query returned rows.
dbproc | contains all information needed by db-lib to manage communications with the server. |
STATUS dbrowtype | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get returned row's type.
dbproc | contains all information needed by db-lib to manage communications with the server. |
void dbsetavail | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Mark a DBPROCESS
as "available".
dbproc | contains all information needed by db-lib to manage communications with the server. |
FreeTDS
behaves the way Sybase's implementation does, but so what? Many db-lib
functions set the DBPROCESS
to "not available", but only dbsetavail() resets it to "available". int dbtds | ( | DBPROCESS * | dbproc | ) |
For internal use only.
Get the TDS version in use for dbproc.
dbproc | contains all information needed by db-lib to manage communications with the server. |
DBTDS*
token. DBPROCESS* tdsdbopen | ( | LOGINREC * | login, | |
char * | server, | |||
int | msdblib | |||
) |
For internal use only.
Form a connection with the server.
Called by the dbopen()
macro, normally. If FreeTDS was configured with --enable-msdblib
, this function is called by (exported) dbopen()
function. tdsdbopen
is so-named to avoid namespace conflicts with other database libraries that use the same function name.
login | LOGINREC* carrying the account information. | |
server | name of the dataserver to connect to. |
NULL | insufficient memory, unable to connect for any reason. |
asprintf()
to avoid buffer overflow.