Handle tokens in packets. More...
Classes | |
struct | namelist |
Functions | |
static TDSRET | tds5_process_dyn_result2 (TDSSOCKET *tds) |
New TDS 5.0 token for describing output parameters. | |
static TDSRET | tds5_process_optioncmd (TDSSOCKET *tds) |
static TDSRET | tds5_process_result (TDSSOCKET *tds) |
tds5_process_result() is the new TDS 5.0 result set processing routine. | |
static int | tds71_read_table_names (TDSSOCKET *tds, int remainder, struct namelist **p_head) |
static TDSRET | tds7_get_data_info (TDSSOCKET *tds, TDSCOLUMN *curcol) |
Read data information from wire. | |
static TDSRET | tds7_process_compute_result (TDSSOCKET *tds) |
tds7_process_compute_result() processes compute result sets for TDS 7/8. | |
static TDSRET | tds7_process_result (TDSSOCKET *tds) |
tds7_process_result() is the TDS 7.0 result set processing routine. | |
static int | tds_alloc_get_string (TDSSOCKET *tds, char **string, int len) |
Read a string from wire in a new allocated buffer. | |
static void | tds_free_namelist (struct namelist *head) |
static TDSRET | tds_get_data_info (TDSSOCKET *tds, TDSCOLUMN *curcol, int is_param) |
Read data information from wire. | |
int | tds_get_token_size (int marker) |
tds_get_token_size() returns the size of a fixed length token used by tds_process_cancel() to determine how to read past a token | |
TDSDYNAMIC * | tds_lookup_dynamic (TDSSOCKET *tds, const char *id) |
Find a dynamic given string id. | |
static const char * | tds_pr_op (int op) |
static TDSRET | tds_process_auth (TDSSOCKET *tds) |
TDSRET | tds_process_cancel (TDSSOCKET *tds) |
static TDSRET | tds_process_col_fmt (TDSSOCKET *tds) |
tds_process_col_fmt() is the other half of result set processing under TDS 4.2. | |
static TDSRET | tds_process_col_name (TDSSOCKET *tds) |
tds_process_col_name() is one half of the result set under TDS 4.2 it contains all the column names, a TDS_COLFMT_TOKEN should immediately follow this token with the datatype/size information This is a 4.2 only function | |
static TDSRET | tds_process_colinfo (TDSSOCKET *tds, char **names, int num_names) |
static TDSRET | tds_process_compute (TDSSOCKET *tds, TDS_INT *pcomputeid) |
tds_process_compute() processes compute rows and places them in the row buffer. | |
static TDSRET | tds_process_compute_names (TDSSOCKET *tds) |
tds_process_compute_names() processes compute result sets. | |
static TDSRET | tds_process_compute_result (TDSSOCKET *tds) |
tds_process_compute_result() processes compute result sets. | |
static TDSRET | tds_process_cursor_tokens (TDSSOCKET *tds) |
static TDSRET | tds_process_default_tokens (TDSSOCKET *tds, int marker) |
tds_process_default_tokens() is a catch all function that is called to process tokens not known to other tds_process_* routines | |
static TDSRET | tds_process_dyn_result (TDSSOCKET *tds) |
static TDSDYNAMIC * | tds_process_dynamic (TDSSOCKET *tds) |
tds_process_dynamic() finds the element of the dyns array for the id | |
static TDSRET | tds_process_end (TDSSOCKET *tds, int marker, int *flags_parm) |
tds_process_end() processes any of the DONE, DONEPROC, or DONEINPROC tokens. | |
static TDSRET | tds_process_env_chg (TDSSOCKET *tds) |
tds_process_env_chg() when ever certain things change on the server, such as database, character set, language, or block size. | |
TDSRET | tds_process_login_tokens (TDSSOCKET *tds) |
tds_process_login_tokens() is called after sending the login packet to the server. | |
static TDSRET | tds_process_msg (TDSSOCKET *tds, int marker) |
tds_process_msg() is called for MSG, ERR, or EED tokens and is responsible for calling the CLI's message handling routine returns TDS_SUCCESS if informational, TDS_FAIL if error. | |
static TDSRET | tds_process_param_result (TDSSOCKET *tds, TDSPARAMINFO **pinfo) |
process output parameters of a stored procedure. | |
static TDSRET | tds_process_param_result_tokens (TDSSOCKET *tds) |
static TDSRET | tds_process_params_result_token (TDSSOCKET *tds) |
tds_process_params_result_token() processes params on TDS5. | |
static TDSRET | tds_process_result (TDSSOCKET *tds) |
tds_process_result() is the TDS 5.0 result set processing routine. | |
static TDSRET | tds_process_row (TDSSOCKET *tds) |
tds_process_row() processes rows and places them in the row buffer. | |
TDSRET | tds_process_simple_query (TDSSOCKET *tds) |
Process results for simple query as "SET TEXTSIZE" or "USE dbname" If the statement returns results, beware they are discarded. | |
static TDSRET | tds_process_tabname (TDSSOCKET *tds) |
TDSRET | tds_process_tokens (TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag) |
process all streams. | |
const char * | tds_prtype (int token) |
static int | tds_read_namelist (TDSSOCKET *tds, int remainder, struct namelist **p_head, int large) |
static TDSRET | tds_set_spid (TDSSOCKET *tds) |
void | tds_swap_numeric (TDS_NUMERIC *num) |
Handle tokens in packets.
Many PDU (packets data unit) contain tokens. (like result description, rows, data, errors and many other).
static TDSRET tds5_process_result | ( | TDSSOCKET * | tds | ) | [static] |
tds5_process_result() is the new TDS 5.0 result set processing routine.
It is responsible for populating the tds->res_info structure. This is a TDS 5.0 only function
Read data information from wire.
tds | state information for the socket and the TDS protocol | |
curcol | column where to store information |
static TDSRET tds7_process_compute_result | ( | TDSSOCKET * | tds | ) | [static] |
tds7_process_compute_result() processes compute result sets for TDS 7/8.
They is are very similar to normal result sets.
static TDSRET tds7_process_result | ( | TDSSOCKET * | tds | ) | [static] |
tds7_process_result() is the TDS 7.0 result set processing routine.
It is responsible for populating the tds->res_info structure. This is a TDS 7.0 only function
static int tds_alloc_get_string | ( | TDSSOCKET * | tds, | |
char ** | string, | |||
int | len | |||
) | [static] |
Read a string from wire in a new allocated buffer.
tds | state information for the socket and the TDS protocol | |
len | length of string to read |
Read data information from wire.
tds | state information for the socket and the TDS protocol | |
curcol | column where to store information |
TDSDYNAMIC* tds_lookup_dynamic | ( | TDSSOCKET * | tds, | |
const char * | id | |||
) |
Find a dynamic given string id.
tds | state information for the socket and the TDS protocol | |
id | dynamic id to search |
TDSRET tds_process_cancel | ( | TDSSOCKET * | tds | ) |
static TDSRET tds_process_col_fmt | ( | TDSSOCKET * | tds | ) | [static] |
tds_process_col_fmt() is the other half of result set processing under TDS 4.2.
It follows tds_process_col_name(). It contains all the column type and size information. This is a 4.2 only function
static TDSRET tds_process_compute_result | ( | TDSSOCKET * | tds | ) | [static] |
tds_process_compute_result() processes compute result sets.
These functions need work but since they get little use, nobody has complained! It is very similar to normal result sets.
static TDSRET tds_process_end | ( | TDSSOCKET * | tds, | |
int | marker, | |||
int * | flags_parm | |||
) | [static] |
tds_process_end() processes any of the DONE, DONEPROC, or DONEINPROC tokens.
tds | state information for the socket and the TDS protocol | |
marker | TDS token number | |
flags_parm | filled with bit flags (see TDS_DONE_ constants). Is NULL nothing is returned |
static TDSRET tds_process_env_chg | ( | TDSSOCKET * | tds | ) | [static] |
tds_process_env_chg() when ever certain things change on the server, such as database, character set, language, or block size.
A environment change message is generated There is no action taken currently, but certain functions at the CLI level that return the name of the current database will need to use this.
TDSRET tds_process_login_tokens | ( | TDSSOCKET * | tds | ) |
tds_process_login_tokens() is called after sending the login packet to the server.
It returns the success or failure of the login dependent on the protocol version. 4.2 sends an ACK token only when successful, TDS 5.0 sends it always with a success byte within
static TDSRET tds_process_param_result | ( | TDSSOCKET * | tds, | |
TDSPARAMINFO ** | pinfo | |||
) | [static] |
process output parameters of a stored procedure.
This differs from regular row/compute results in that there is no total number of parameters given, they just show up singly.
static TDSRET tds_process_result | ( | TDSSOCKET * | tds | ) | [static] |
tds_process_result() is the TDS 5.0 result set processing routine.
It is responsible for populating the tds->res_info structure. This is a TDS 5.0 only function
TDSRET tds_process_simple_query | ( | TDSSOCKET * | tds | ) |
Process results for simple query as "SET TEXTSIZE" or "USE dbname" If the statement returns results, beware they are discarded.
This function was written to avoid direct calls to tds_process_default_tokens (which caused problems such as ignoring query errors). Results are read until idle state or severe failure (do not stop for statement failure).
TDSRET tds_process_tokens | ( | TDSSOCKET * | tds, | |
TDS_INT * | result_type, | |||
int * | done_flags, | |||
unsigned | flag | |||
) |
process all streams.
tds_process_tokens() is called after submitting a query with tds_submit_query() and is responsible for calling the routines to populate tds->res_info if appropriate (some query have no result sets)
tds | A pointer to the TDSSOCKET structure managing a client/server operation. | |
result_type | A pointer to an integer variable which tds_process_tokens sets to indicate the current type of result. |
TDS_DONE_RESULT | The results of a command have been completely processed. This command returned no rows. |
TDS_DONEPROC_RESULT | The results of a command have been completely processed. This command returned rows. |
TDS_DONEINPROC_RESULT | The results of a command have been completely processed. This command returned rows. |
TDS_ROWFMT_RESULT | Regular Data format information | tds->res_info now contains the result details ; tds->current_results now points to that data |
TDS_COMPUTEFMT_ RESULT | Compute data format information | tds->comp_info now contains the result data; tds->current_results now points to that data |
TDS_DESCRIBE_RESULT |
Value | Meaning | Information returned |
TDS_ROW_RESULT | Regular row results | 1 or more rows of regular data can now be retrieved |
TDS_COMPUTE_RESULT | Compute row results | A single row of compute data can now be retrieved |
TDS_PARAM_RESULT | Return parameter results | param_info or cur_dyn->params contain returned parameters |
TDS_STATUS_RESULT | Stored procedure status results | tds->ret_status contain the returned code |
flag | Flags to select token type to stop/return |
TDS_SUCCESS | if a result set is available for processing. | |
TDS_FAIL | on error. | |
TDS_NO_MORE_RESULTS | if all results have been completely processed. | |
anything | returned by one of the many functions it calls. :-( |