Cross reference for modules/sq/mysql_driver.c of index.

# File modules/sq/mysql_driver.c

      $Revision: 1.36 $

      SQL module (sq) - this is a MySQL implementation of the SQL module.

      Status: NOT REVUED, TESTED

## Included Files

- `#include <stdlib.h>`

- `#include <stdio.h>`

- `#include <time.h>`

- `#include <sys/timeb.h>`

- `#include <strings.h>`

- `#include <sys/types.h>`

- `#include <limits.h>`

- `#include <errno.h>`

- `#include "modules/sq/mysql_driver.h"`
  - `#include "/opt/package/mysql/include/mysql/mysql.h"`
    - `#include <sys/types.h>`
    - `#include "/opt/package/mysql/include/mysql/mysql_com.h"`
    - `#include "/opt/package/mysql/include/mysql/mysql_version.h"`
  - `#include "/opt/package/mysql/include/mysql/mysqld_error.h"`
  - `#include "include/erroutines.h"`
    - `#include <stdio.h>`
    - `#include <unistd.h>`
    - `#include <stdlib.h>`
    - `#include <assert.h>`
    - `#include <time.h>`
    - `#include <stdarg.h>`
    - `#include <strings.h>`
    - `#include <glib.h>`
    - `#include <pthread.h>`
    - `#include <include/bitmask.h>`
    - `#include <include/stubs.h>`
    - `#include "include/thread.h"`
      - `#include <pthread.h>`
    - `#include "include/er_facilities.h"`
      - `#include <include/erroutines.h>`
      - `#include "include/er_RX_errors.h"`
      - `#include "include/er_ER_errors.h"`
      - `#include "include/er_IP_errors.h"`
      - `#include "include/er_UP_errors.h"`
      - `#include "include/er_UT_errors.h"`
      - `#include "include/er_WH_errors.h"`
      - `#include "include/er_RP_errors.h"`
      - `#include "include/er_QI_errors.h"`
      - `#include "include/er_QC_errors.h"`
      - `#include "include/er_PW_errors.h"`
      - `#include "include/er_SK_errors.h"`
      - `#include "include/er_TH_errors.h"`
      - `#include "include/er_SQ_errors.h"`
      - `#include "include/er_PM_errors.h"`
      - `#include "include/er_MM_errors.h"`
      - `#include "include/er_SV_errors.h"`
      - `#include "include/er_AC_errors.h"`
      - `#include "include/er_UD_errors.h"`
      - `#include "include/er_PA_errors.h"`
      - `#include "include/er_PC_errors.h"`
    - `#include "include/er_aspects.h"`
      - `#include "include/erroutines.h"`
    - `#include "include/er_formats.h"`

- `#include "include/constants.h"`
  - `#include <glib.h>`

- `#include "include/memwrap.h"`
  - `#include <erroutines.h>`
  - `#include <glib.h>`

- `#include "include/timediff.h"`
  - `#include <sys/time.h>`

## Preprocessor definitions

String sizes

`#define STR_S 63`

`#define STR_M 255`

`#define STR_L 1023`

`#define STR_XL 4095`

`#define STR_XXL 16383`

## Global Function SQ_abort_query()

`int SQ_abort_query ( MYSQL* sql_connection )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | ER_dbg_va() | modules/er/er.c
| SQ_close_connection() | modules/sq/mysql_driver.c
| SQ_duplicate_connection() | modules/sq/mysql_driver.c
| mysql_kill()
Called by: | qi_kill_body() | modules/qi/query_instructions.c

## Global Function SQ_close_connection()

      Call this function to close a connection to the server

      SQ_connection_t *sql_connection The connection to the database.

      More:

      Authors:
            ottrey

    Online References:

        mysql_close()

`void SQ_close_connection ( MYSQL* sql_connection )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | mysql_close()
Called by: | AC_acc_load() | modules/ac/access_control.c
| AC_acl_sql() | modules/ac/access_control.c
| PM_interact() | modules/pm/protocol_mirror.c
| QI_execute() | modules/qi/query_instructions.c
| RP_sql_load_reg() | modules/rp/rp_load.c
| SQ_abort_query() | modules/sq/mysql_driver.c
| SQ_get_connection() | modules/sq/mysql_driver.c
| aa_find() | modules/aa/aa.c
| pm_get_source_info() | modules/pm/pm_serials.c
| sql_execute_watched() | modules/qi/query_instructions.c

## Global Function SQ_duplicate_connection()

`MYSQL* SQ_duplicate_connection ( MYSQL* orig )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | SQ_get_connection() | modules/sq/mysql_driver.c
Called by: | SQ_abort_query() | modules/sq/mysql_driver.c
| sql_execute_watched() | modules/qi/query_instructions.c

## Global Function SQ_errno()

      Get the error number for the last error.

      SQ_connection_t *sql_connection The connection to the database.

      More:

      Authors:
            ottrey

    Online References:

        mysql_free_result()

`int SQ_errno ( MYSQL* sql_connection )`

Prototyped in: | modules/sq/mysql_driver.h
Called by: | AC_acc_load() | modules/ac/access_control.c
| AC_dbopen_admin() | modules/ac/access_control.c
| PM_interact() | modules/pm/protocol_mirror.c
| QI_execute() | modules/qi/query_instructions.c
| RP_sql_load_attr_space() | modules/rp/rp_load.c
| __report_sql_error() | modules/qi/query_instructions.c
| aa_find() | modules/aa/aa.c
| add_ref_name() | modules/qi/query_instructions.c
| insert_radix_serials() | modules/qi/query_instructions.c
| qi_collect_domain() | modules/qi/query_instructions.c
| qi_collect_ids() | modules/qi/query_instructions.c
| qi_fetch_references() | modules/qi/query_instructions.c
| write_objects() | modules/qi/query_instructions.c

## Global Function SQ_error()

      Get the error string for the last error.

      SQ_connection_t *sql_connection The connection to the database.

      More:

      Authors:
            ottrey

    Online References:

        mysql_error()

`char* SQ_error ( MYSQL* sql_connection )`

Prototyped in: | modules/sq/mysql_driver.h
Called by: | AC_acc_load() | modules/ac/access_control.c
| AC_dbopen_admin() | modules/ac/access_control.c
| NH_comrol() | modules/nh/nh.c
| PM_get_minmax_serial() | modules/pm/pm_serials.c
| PM_get_serial_object() | modules/pm/pm_serials.c
| PM_interact() | modules/pm/protocol_mirror.c
| QI_execute() | modules/qi/query_instructions.c
| RP_sql_load_attr_space() | modules/rp/rp_load.c
| SQ_get_connection() | modules/sq/mysql_driver.c
| __report_sql_error() | modules/qi/query_instructions.c
| aa_find() | modules/aa/aa.c
| get_range() | modules/nh/nh.c

## Global Function SQ_execute_query()

      Execute the sql query.

      SQ_connection_t *sql_connection Connection to database.

      SQ_result_set_t *result ptr to the structure to hold result.
      May be NULL if no result is needed.

      Returns:
        0 if the query was successful.
        Non-zero if an error occured.

      More:

      Authors:
            ottrey, andrei, marek

    Online References:

        mysql_query()
        mysql_use_result()

`int SQ_execute_query ( MYSQL* sql_connection, const char* query, MYSQL_RES** result_ptr )`

`MYSQL* sql_connection`
  &nbs;
`const char* query`
  SQL query.
`MYSQL_RES** result_ptr`
  &nbs;

Prototyped in: | modules/sq/mysql_driver.h
Calls: | ER_dbg_va() | modules/er/er.c
| ER_is_traced() | modules/er/er.c
| SQ_get_affected_rows() | modules/sq/mysql_driver.c
| UT_timediff(), UT_timeget(), mysql_free_result(), mysql_query(), mysql_store_result()
Called by: | AC_acc_load() | modules/ac/access_control.c
| AC_acl_sql() | modules/ac/access_control.c
| NH_comrol() | modules/nh/nh.c
| PM_get_minmax_serial() | modules/pm/pm_serials.c
| PM_get_serial_object() | modules/pm/pm_serials.c
| QI_execute() | modules/qi/query_instructions.c
| RP_sql_load_attr_space() | modules/rp/rp_load.c
| RP_sql_load_reg() | modules/rp/rp_load.c
| SQ_get_table_size() | modules/sq/mysql_driver.c
| aa_find() | modules/aa/aa.c
| add_ref_name() | modules/qi/query_instructions.c
| create_range() | modules/nh/nh.c
| get_range() | modules/nh/nh.c
| insert_radix_serials() | modules/qi/query_instructions.c
| qi_collect_domain() | modules/qi/query_instructions.c
| qi_collect_ids() | modules/qi/query_instructions.c
| qi_fetch_references() | modules/qi/query_instructions.c
| sql_execute_watched() | modules/qi/query_instructions.c
| update_range() | modules/nh/nh.c

## Global Function SQ_execute_query_nostore()

`int SQ_execute_query_nostore ( MYSQL* sql_connection, const char* query, MYSQL_RES** result_ptr )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | mysql_query(), mysql_use_result()

## Global Function SQ_free_result()

      Free the result set.

      SQ_result_set_t *result The results.

      More:

      Authors:
            ottrey

    Online References:

        mysql_free_result()

`void SQ_free_result ( MYSQL_RES* result )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | mysql_free_result()
Called by: | AC_acc_load() | modules/ac/access_control.c
| AC_acl_sql() | modules/ac/access_control.c
| PM_get_minmax_serial() | modules/pm/pm_serials.c
| PM_get_serial_object() | modules/pm/pm_serials.c
| RP_sql_load_attr_space() | modules/rp/rp_load.c
| SQ_get_table_size() | modules/sq/mysql_driver.c
| aa_find() | modules/aa/aa.c
| get_range() | modules/nh/nh.c
| qi_collect_domain() | modules/qi/query_instructions.c
| qi_fetch_references() | modules/qi/query_instructions.c
| sql_execute_watched() | modules/qi/query_instructions.c
| write_objects() | modules/qi/query_instructions.c

## Global Function SQ_get_affected_rows()

      Get the row count of a table

      char *table   The table to be examined

      More:

      Authors:
            marek

`int SQ_get_affected_rows ( MYSQL* sql_connection )`

Prototyped in: | modules/sq/mysql_driver.h
Called by: | SQ_execute_query() | modules/sq/mysql_driver.c
| create_range() | modules/nh/nh.c
| qi_collect_domain() | modules/qi/query_instructions.c
| qi_collect_ids() | modules/qi/query_instructions.c
| update_range() | modules/nh/nh.c

## Global Function SQ_get_column_count()

      Get the column count.

      SQ_result_set_t *result The results from the query.

      More:

      Authors:
            ottrey

    Online References:

        mysql_num_fields()

`int SQ_get_column_count ( MYSQL_RES* result )`

Prototyped in: | modules/sq/mysql_driver.h
Called by: | RP_sql_load_attr_space() | modules/rp/rp_load.c

## Global Function SQ_get_column_int()

      Get an integer from the column.

      SQ_result_set_t *result The results.

      SQ_row_t *current_row The current row.

      returns -1 if error occurs, 0 otherwise.
      Note - it never says what error occured....

      More:

      Authors:
            ottrey

    Online References:

`int SQ_get_column_int ( MYSQL_RES* result, MYSQL_ROW* current_row, unsigned int column, long* resultptr )`

`MYSQL_RES* result`
  &nbs;
`MYSQL_ROW* current_row`
  &nbs;
`unsigned int column`
  The column index.
`long* resultptr`
  pointer where the result should be stored

Prototyped in: | modules/sq/mysql_driver.h
Calls: | strtol()
Called by: | qi_prep_run_refer() | modules/qi/query_instructions.c

## Global Function SQ_get_column_label()

      Get the column label.

      SQ_result_set_t *result The results from the query.

      More:

      Authors:
            ottrey

    Online References:

        mysql_fetch_field_direct()

`char* SQ_get_column_label ( MYSQL_RES* result, unsigned int column )`

`MYSQL_RES* result`
  &nbs;
`unsigned int column`
  The column index.

Prototyped in: | modules/sq/mysql_driver.h
Calls: | fprintf(), strcpy(), strlen(), wr_real_malloc()
Called by: | SQ_result_to_string() | modules/sq/mysql_driver.c

## Global Function SQ_get_column_max_length()

      Get the max length of the column.

      SQ_result_set_t *result The results from the query.

      More:

      Authors:
            ottrey

    Online References:

        mysql_fetch_field_direct()

`unsigned int SQ_get_column_max_length ( MYSQL_RES* result, unsigned int column )`

`MYSQL_RES* result`
  &nbs;
`unsigned int column`
  The column index.

Prototyped in: | modules/sq/mysql_driver.h
Called by: | SQ_result_to_string() | modules/sq/mysql_driver.c

## Global Function SQ_get_column_string()

      Get the column string.

      SQ_row_t *current_row The current row (obtained from a SQ_row_next() ).

      More:

      Authors:
            ottrey

    Online References:

`char* SQ_get_column_string ( MYSQL_RES* result, MYSQL_ROW* current_row, unsigned int column )`

`MYSQL_RES* result`
  &nbs;
`MYSQL_ROW* current_row`
  &nbs;
`unsigned int column`
  The column index.

Prototyped in: | modules/sq/mysql_driver.h
Calls: | fprintf(), memcpy(), mysql_fetch_lengths(), wr_real_malloc()
Called by: | AC_acc_load() | modules/ac/access_control.c
| AC_acl_sql() | modules/ac/access_control.c
| PM_get_minmax_serial() | modules/pm/pm_serials.c
| PM_get_serial_object() | modules/pm/pm_serials.c
| SQ_get_table_size() | modules/sq/mysql_driver.c
| get_range() | modules/nh/nh.c
| qi_fetch_references() | modules/qi/query_instructions.c
| qi_prep_run_refer() | modules/qi/query_instructions.c
| write_results() | modules/qi/query_instructions.c

## Global Function SQ_get_column_string_nocopy()

`char* SQ_get_column_string_nocopy ( MYSQL_RES* result, MYSQL_ROW* current_row, unsigned int column )`

Prototyped in: | modules/sq/mysql_driver.h
Called by: | aa_parserow() | modules/aa/aa.c
| make_sql2pack() | modules/rp/rp_load.c

## Global Function SQ_get_column_strings()

      Get the all the strings in one column.

      SQ_result_set_t *result The results.

      More:

      Authors:
            ottrey

    Online References:

`char* SQ_get_column_strings ( MYSQL_RES* result, unsigned int column )`

`MYSQL_RES* result`
  &nbs;
`unsigned int column`
  The column index.

Prototyped in: | modules/sq/mysql_driver.h
Calls: | fprintf(), mysql_fetch_row(), sprintf(), strcat(), strcmp(), strcpy(), strlen(), wr_real_malloc()

## Global Function SQ_get_connection()

      Get a connection to the database.

      More:

      Authors:
            ottrey

    Online References:

        mysql_init()
        mysql_real_connect()

`MYSQL* SQ_get_connection ( const char* host, unsigned int port, const char* db, const char* user, const char* password )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | ER_perror() | modules/er/er.c
| NOERR() | modules/er/er.c
| SQ_close_connection() | modules/sq/mysql_driver.c
| SQ_error() | modules/sq/mysql_driver.c
| SQ_try_connection() | modules/sq/mysql_driver.c
| fprintf(), sleep()
Called by: | AC_dbopen_admin() | modules/ac/access_control.c
| PM_interact() | modules/pm/protocol_mirror.c
| QI_execute() | modules/qi/query_instructions.c
| RP_sql_load_reg() | modules/rp/rp_load.c
| SQ_duplicate_connection() | modules/sq/mysql_driver.c
| pm_get_source_info() | modules/pm/pm_serials.c

## Global Function SQ_get_info()

      Get additional information about the most
      recently executed query.

      SQ_connection_t *sql_connection The connection to the database.
      int info[3] array of integers where information is stored

      The meaning of the numbers returned depends on the query type:

      info[SQL_RECORDS] - # of Records for INSERT
      info[SQL_MATCHES] - # of Matches for UPDATE
      info[SQL_DUPLICATES] - # of Duplicates
      info[SQL_WARNINGS] - # of Warnings

      More:

     Authors:
      andrei

    Online References:

        mysql_info()

`int SQ_get_info ( MYSQL* sql_connection, int info[3] )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | atoi()

## Global Function SQ_get_insert_id()

      Get the ID that was most recently generated for an AUTO_INCREMENT field

      More:

      Authors:
            andrei

`long SQ_get_insert_id ( MYSQL* sql_connection )`

Prototyped in: | modules/sq/mysql_driver.h
Called by: | create_range() | modules/nh/nh.c

## Global Function SQ_get_table_size()

      Get the row count of a table

      More:

      Authors:
            marek

`int SQ_get_table_size ( MYSQL* sql_connection, char* table )`

`MYSQL* sql_connection`
  &nbs;
`char* table`
  The table to be examined

Prototyped in: | modules/sq/mysql_driver.h
Calls: | SQ_execute_query() | modules/sq/mysql_driver.c
| SQ_free_result() | modules/sq/mysql_driver.c
| SQ_get_column_string() | modules/sq/mysql_driver.c
| SQ_row_next() | modules/sq/mysql_driver.c
| fprintf(), sprintf(), sscanf(), wr_real_free()

## Global Function SQ_info_to_string()

      Convert all available information about the sql server into a string.

      SQ_connection_t *sql_connection The connection to the database.

      More:

      Authors:
            ottrey

    Online References:

`char* SQ_info_to_string ( MYSQL* sql_connection )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | fprintf(), mysql_dump_debug_info(), mysql_get_client_info(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info(), mysql_ping(), mysql_stat(), sprintf(), strcat(), strcpy(), strlen(), wr_real_malloc()

## Global Function SQ_num_rows()

      Call this function to find out how many rows are in a query result

      SQ_result_set_t *result The results.

      More:

      Authors:
            ottrey

    Online References:

        mysql_num_rows()

`int SQ_num_rows ( MYSQL_RES* result )`

Prototyped in: | modules/sq/mysql_driver.h
Called by: | AC_acl_sql() | modules/ac/access_control.c
| qi_collect_domain() | modules/qi/query_instructions.c

## Global Function SQ_ping()

      Checks whether or not the connection to the server is working.
      If it has gone down, an automatic reconnection is attempted.

      Return values

      Zero if the server is alive. Non-zero if an error occurred.

      More:

      Authors:
            andrei

    Online References:

`int SQ_ping ( MYSQL* sql_connection )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | mysql_ping()

## Global Function SQ_result_to_string()

      Convert the result set to a string.

      SQ_result_set_t *result The results.

      More:

      Authors:
            ottrey

    Online References:

`char* SQ_result_to_string ( MYSQL_RES* result )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | SQ_get_column_label() | modules/sq/mysql_driver.c
| SQ_get_column_max_length() | modules/sq/mysql_driver.c
| fprintf(), mysql_fetch_row(), sprintf(), strcat(), strcpy(), strlen(), wr_real_malloc()

## Global Function SQ_row_next()

      Get the next row.

      SQ_result_set_t *result The results from the query.

      unsigned int column The column index.

      More:

      Authors:
            ottrey

    Online References:

        mysql_fetch_row()

`MYSQL_ROW* SQ_row_next ( MYSQL_RES* result )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | mysql_fetch_row()
Called by: | AC_acc_load() | modules/ac/access_control.c
| AC_acl_sql() | modules/ac/access_control.c
| PM_get_minmax_serial() | modules/pm/pm_serials.c
| PM_get_serial_object() | modules/pm/pm_serials.c
| RP_sql_load_attr_space() | modules/rp/rp_load.c
| SQ_get_table_size() | modules/sq/mysql_driver.c
| aa_parserow() | modules/aa/aa.c
| get_range() | modules/nh/nh.c
| qi_collect_domain() | modules/qi/query_instructions.c
| qi_fetch_references() | modules/qi/query_instructions.c
| write_results() | modules/qi/query_instructions.c

## Global Function SQ_try_connection()

`er_ret_t SQ_try_connection ( MYSQL** conn, const char* host, unsigned int port, const char* db, const char* user, const char* password )`

Prototyped in: | modules/sq/mysql_driver.h
Calls: | fprintf(), mysql_init(), mysql_real_connect()
Called by: | SQ_get_connection() | modules/sq/mysql_driver.c