Greenbone Vulnerability Manager
9.0.0
|
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.