|
Greenbone Vulnerability Manager
9.0.1
|
Generic SQL interface. More...
#include "sql.h"#include <assert.h>#include <errno.h>#include <stdlib.h>#include <string.h>Macros | |
| #define | G_LOG_DOMAIN "md manage" |
| GLib log domain. | |
Functions | |
| int | sql_prepare_internal (int, int, const char *, va_list, sql_stmt_t **) |
| Prepare a statement. More... | |
| int | sql_exec_internal (int, sql_stmt_t *) |
| Execute a prepared statement. More... | |
| int | sql_explain_internal (const char *, va_list) |
| Write debug messages with the query plan for an SQL query to the log. More... | |
| gchar * | sql_nquote (const char *string, size_t length) |
| Quotes a string of a known length to be passed to sql statements. More... | |
| gchar * | sql_quote (const char *string) |
| Quotes a string to be passed to sql statements. More... | |
| gchar * | sql_insert (const char *string) |
| Get the SQL insert expression for a string. More... | |
| int | sqlv (int retry, char *sql, va_list args) |
| Perform an SQL statement. More... | |
| void | sql (char *sql,...) |
| Perform an SQL statement, retrying if database is busy or locked. More... | |
| int | sql_error (char *sql,...) |
| Perform an SQL statement, retrying if database is busy or locked. More... | |
| int | sql_giveup (char *sql,...) |
| Perform an SQL statement, giving up if database is busy or locked. More... | |
| static int | sql_x_internal (int log, char *sql, va_list args, sql_stmt_t **stmt_return) |
| Get a particular cell from a SQL query. More... | |
| int | sql_x (char *sql, va_list args, sql_stmt_t **stmt_return) |
| Get a particular cell from a SQL query. More... | |
| double | sql_double (char *sql,...) |
| Get the first value from a SQL query, as a double. More... | |
| int | sql_int (char *sql,...) |
| Get a particular cell from a SQL query, as an int. More... | |
| char * | sql_string (char *sql,...) |
| Get a particular cell from a SQL query, as an string. More... | |
| int | sql_int64 (long long int *ret, char *sql,...) |
| Get a particular cell from a SQL query, as an int64. More... | |
| long long int | sql_int64_0 (char *sql,...) |
| Get a first column of first row from a SQL query, as an int64. More... | |
| int | sql_explain (const char *sql,...) |
| Write debug messages with the query plan for an SQL query to the log. More... | |
| void | init_prepared_iterator (iterator_t *iterator, sql_stmt_t *stmt) |
| Initialise an iterator. More... | |
| void | init_iterator (iterator_t *iterator, const char *sql,...) |
| Initialise an iterator. More... | |
| double | iterator_double (iterator_t *iterator, int col) |
| Get a double column from an iterator. More... | |
| int | iterator_int (iterator_t *iterator, int col) |
| Get a int column from an iterator. More... | |
| long long int | iterator_int64 (iterator_t *iterator, int col) |
| Get an integer column from an iterator. More... | |
| const char * | iterator_string (iterator_t *iterator, int col) |
| Get a string column from an iterator. More... | |
| void | cleanup_iterator (iterator_t *iterator) |
| Cleanup an iterator. More... | |
| gboolean | next (iterator_t *iterator) |
| Increment an iterator. More... | |
| sql_stmt_t * | sql_prepare (const char *sql,...) |
| Prepare a statement. More... | |
| int | sql_exec (sql_stmt_t *stmt) |
| Execute a prepared statement. More... | |
Variables | |
| int | log_errors = 1 |
| Whether to log errors. More... | |
Generic SQL interface.
This is a small generic interface for SQL database access.
To add support for a specific database, like Postgres, a few functions (for example, sql_prepare_internal and sql_exec_internal) need to be implemented for that database.
| void cleanup_iterator | ( | iterator_t * | iterator | ) |
Cleanup an iterator.
| [in] | iterator | Iterator. |
| void init_iterator | ( | iterator_t * | iterator, |
| const char * | sql, | ||
| ... | |||
| ) |
Initialise an iterator.
| [in] | iterator | Iterator. |
| [in] | sql | Format string for SQL. |
| void init_prepared_iterator | ( | iterator_t * | iterator, |
| sql_stmt_t * | stmt | ||
| ) |
Initialise an iterator.
| [in] | iterator | Iterator. |
| [in] | stmt | Statement. |
| double iterator_double | ( | iterator_t * | iterator, |
| int | col | ||
| ) |
Get a double column from an iterator.
| [in] | iterator | Iterator. |
| [in] | col | Column offset. |
| int iterator_int | ( | iterator_t * | iterator, |
| int | col | ||
| ) |
Get a int column from an iterator.
| [in] | iterator | Iterator. |
| [in] | col | Column offset. |
| long long int iterator_int64 | ( | iterator_t * | iterator, |
| int | col | ||
| ) |
Get an integer column from an iterator.
| [in] | iterator | Iterator. |
| [in] | col | Column offset. |
| const char* iterator_string | ( | iterator_t * | iterator, |
| int | col | ||
| ) |
Get a string column from an iterator.
| [in] | iterator | Iterator. |
| [in] | col | Column offset. |
| gboolean next | ( | iterator_t * | iterator | ) |
Increment an iterator.
| [in] | iterator | Iterator. |
| void sql | ( | char * | sql, |
| ... | |||
| ) |
Perform an SQL statement, retrying if database is busy or locked.
| [in] | sql | Format string for SQL statement. |
| [in] | ... | Arguments for format string. |
| double sql_double | ( | char * | sql, |
| ... | |||
| ) |
Get the first value from a SQL query, as a double.
row. The caller must ensure that the query will return sufficient rows.| [in] | sql | Format string for SQL query. |
| [in] | ... | Arguments for format string. |
| int sql_error | ( | char * | sql, |
| ... | |||
| ) |
Perform an SQL statement, retrying if database is busy or locked.
Return on error, instead of aborting.
| [in] | sql | Format string for SQL statement. |
| [in] | ... | Arguments for format string. |
| int sql_exec | ( | sql_stmt_t * | stmt | ) |
Execute a prepared statement.
| [in] | stmt | Statement. |
| int sql_exec_internal | ( | int | retry, |
| sql_stmt_t * | stmt | ||
| ) |
Execute a prepared statement.
| [in] | retry | Whether to keep retrying while database is busy or locked. |
| [in] | stmt | Statement. |
| int sql_explain | ( | const char * | sql, |
| ... | |||
| ) |
Write debug messages with the query plan for an SQL query to the log.
| [in] | sql | Format string for the SQL query. |
| [in] | ... | Format string arguments. |
| int sql_explain_internal | ( | const char * | sql, |
| va_list | args | ||
| ) |
Write debug messages with the query plan for an SQL query to the log.
| [in] | sql | Format string for the SQL query. |
| [in] | args | Format string arguments in a va_list. |
| int sql_giveup | ( | char * | sql, |
| ... | |||
| ) |
Perform an SQL statement, giving up if database is busy or locked.
| [in] | sql | Format string for SQL statement. |
| [in] | ... | Arguments for format string. |
| gchar* sql_insert | ( | const char * | string | ) |
Get the SQL insert expression for a string.
| [in] | string | The string, which may be NULL. |
| int sql_int | ( | char * | sql, |
| ... | |||
| ) |
Get a particular cell from a SQL query, as an int.
row. The caller must ensure that the query will return sufficient rows.| [in] | sql | Format string for SQL query. |
| [in] | ... | Arguments for format string. |
| int sql_int64 | ( | long long int * | ret, |
| char * | sql, | ||
| ... | |||
| ) |
Get a particular cell from a SQL query, as an int64.
| [in] | ret | Return value. |
| [in] | sql | Format string for SQL query. |
| [in] | ... | Arguments for format string. |
| long long int sql_int64_0 | ( | char * | sql, |
| ... | |||
| ) |
Get a first column of first row from a SQL query, as an int64.
Return 0 on error.
| [in] | sql | Format string for SQL query. |
| [in] | ... | Arguments for format string. |
| gchar* sql_nquote | ( | const char * | string, |
| size_t | length | ||
| ) |
Quotes a string of a known length to be passed to sql statements.
| [in] | string | String to quote. |
| [in] | length | Size of string. |
| sql_stmt_t* sql_prepare | ( | const char * | sql, |
| ... | |||
| ) |
Prepare a statement.
| [in] | sql | Format string for SQL. |
| int sql_prepare_internal | ( | int | retry, |
| int | log, | ||
| const char * | sql, | ||
| va_list | args, | ||
| sql_stmt_t ** | stmt | ||
| ) |
Prepare a statement.
| [in] | retry | Whether to keep retrying while database is busy or locked. |
| [in] | log | Whether to keep retrying while database is busy or locked. |
| [in] | sql | Format string for SQL statement. |
| [in] | args | Arguments for format string. |
| [out] | stmt | Statement return. |
| gchar* sql_quote | ( | const char * | string | ) |
Quotes a string to be passed to sql statements.
| [in] | string | String to quote, has to be \0 terminated. |
| char* sql_string | ( | char * | sql, |
| ... | |||
| ) |
Get a particular cell from a SQL query, as an string.
| [in] | sql | Format string for SQL query. |
| [in] | ... | Arguments for format string. |
| int sql_x | ( | char * | sql, |
| va_list | args, | ||
| sql_stmt_t ** | stmt_return | ||
| ) |
Get a particular cell from a SQL query.
Do logging as usual.
| [in] | sql | Format string for SQL query. |
| [in] | args | Arguments for format string. |
| [out] | stmt_return | Return from statement. |
|
static |
Get a particular cell from a SQL query.
| [in] | log | Whether to do g_debug logging. |
| [in] | sql | Format string for SQL query. |
| [in] | args | Arguments for format string. |
| [out] | stmt_return | Return from statement. |
| int sqlv | ( | int | retry, |
| char * | sql, | ||
| va_list | args | ||
| ) |
Perform an SQL statement.
| [in] | retry | Whether to keep retrying while database is busy or locked. |
| [in] | sql | Format string for SQL statement. |
| [in] | args | Arguments for format string. |
| int log_errors = 1 |
Whether to log errors.
Used to turn off logging when cancelling statements on exit.