|
GnuCash 2.4.99
|
load and save data to SQL More...
#include "config.h"#include <errno.h>#include <glib.h>#include <glib/gstdio.h>#include "gmtime_r.h"#include "gnc-backend-dbi-priv.h"#include "qof.h"#include "qofquery-p.h"#include "qofquerycore-p.h"#include "Account.h"#include "TransLog.h"#include "gnc-engine.h"#include "SX-book.h"#include "Recurrence.h"#include "gnc-gconf-utils.h"#include "gnc-uri-utils.h"#include "gnc-filepath-utils.h"#include "gnc-locale-utils.h"#include "gnc-backend-dbi.h"#include <limits.h>#include <unistd.h>Go to the source code of this file.
Data Structures | |
| struct | GncDbiSqlRow |
| struct | GncDbiSqlResult |
| struct | GncDbiSqlStatement |
Defines | |
| #define | GETPID() getpid() |
| #define | GNC_HOST_NAME_MAX 255 |
| #define | TRANSACTION_NAME "trans" |
| #define | FILE_URI_TYPE "file" |
| #define | FILE_URI_PREFIX (FILE_URI_TYPE "://") |
| #define | SQLITE3_URI_TYPE "sqlite3" |
| #define | SQLITE3_URI_PREFIX (SQLITE3_URI_TYPE "://") |
| #define | PGSQL_DEFAULT_PORT 5432 |
| #define | SQLITE3_TIMESPEC_STR_FORMAT "%04d%02d%02d%02d%02d%02d" |
| #define | MYSQL_TIMESPEC_STR_FORMAT "%04d%02d%02d%02d%02d%02d" |
| #define | PGSQL_TIMESPEC_STR_FORMAT "%04d%02d%02d %02d%02d%02d" |
| #define | GNC_DBI_PROVIDER_SQLITE (&provider_sqlite3) |
| #define | GNC_DBI_PROVIDER_MYSQL (&provider_mysql) |
| #define | GNC_DBI_PROVIDER_PGSQL (&provider_pgsql) |
| #define | DBI_MAX_CONN_ATTEMPTS 5 |
Functions | |
| void | gnc_module_init_backend_dbi (void) |
| G_MODULE_EXPORT void | qof_backend_module_init (void) |
| G_MODULE_EXPORT void | qof_backend_module_finalize (void) |
| void | gnc_module_finalize_backend_dbi (void) |
load and save data to SQL
This file implements the top-level QofBackend API for saving/ restoring data to/from an SQL db using libdbi
Definition in file gnc-backend-dbi.c.
| void gnc_module_finalize_backend_dbi | ( | void | ) |
Shutdown function which can be used when this module is statically linked into the application.
Definition at line 1923 of file gnc-backend-dbi.c.
{
dbi_shutdown();
}
| void gnc_module_init_backend_dbi | ( | void | ) |
Initialization function which can be used when this module is statically linked into the application.
Definition at line 1797 of file gnc-backend-dbi.c.
{
QofBackendProvider *prov;
const gchar* driver_dir;
int num_drivers;
gboolean have_sqlite3_driver = FALSE;
gboolean have_mysql_driver = FALSE;
gboolean have_pgsql_driver = FALSE;
/* Initialize libdbi and see which drivers are available. Only register qof backends which
have drivers available. */
driver_dir = g_getenv( "GNC_DBD_DIR" );
if ( driver_dir == NULL )
{
PINFO( "GNC_DBD_DIR not set: using libdbi built-in default\n");
}
/* dbi_initialize returns -1 in case of errors */
num_drivers = dbi_initialize( driver_dir );
if ( num_drivers <= 0 )
{
PWARN( "No DBD drivers found\n" );
}
else
{
dbi_driver driver = NULL;
PINFO( "%d DBD drivers found\n", num_drivers );
do
{
driver = dbi_driver_list( driver );
if ( driver != NULL )
{
const gchar* name = dbi_driver_get_name( driver );
PINFO( "Driver: %s\n", name );
if ( strcmp( name, "sqlite3" ) == 0 )
{
have_sqlite3_driver = TRUE;
}
else if ( strcmp( name, "mysql" ) == 0 )
{
have_mysql_driver = TRUE;
}
else if ( strcmp( name, "pgsql" ) == 0 )
{
have_pgsql_driver = TRUE;
}
}
}
while ( driver != NULL );
}
if ( have_sqlite3_driver )
{
prov = g_new0( QofBackendProvider, 1 );
g_assert( prov != NULL );
prov->provider_name = "GnuCash Libdbi (SQLITE3) Backend";
prov->access_method = FILE_URI_TYPE;
prov->partial_book_supported = FALSE;
prov->backend_new = gnc_dbi_backend_sqlite3_new;
prov->provider_free = gnc_dbi_provider_free;
prov->check_data_type = gnc_dbi_check_sqlite3_file;
qof_backend_register_provider( prov );
prov = g_new0( QofBackendProvider, 1 );
g_assert( prov != NULL );
prov->provider_name = "GnuCash Libdbi (SQLITE3) Backend";
prov->access_method = SQLITE3_URI_TYPE;
prov->partial_book_supported = FALSE;
prov->backend_new = gnc_dbi_backend_sqlite3_new;
prov->provider_free = gnc_dbi_provider_free;
prov->check_data_type = gnc_dbi_check_sqlite3_file;
qof_backend_register_provider( prov );
}
if ( have_mysql_driver )
{
prov = g_new0( QofBackendProvider, 1 );
g_assert( prov != NULL );
prov->provider_name = "GnuCash Libdbi (MYSQL) Backend";
prov->access_method = "mysql";
prov->partial_book_supported = FALSE;
prov->backend_new = gnc_dbi_backend_mysql_new;
prov->provider_free = gnc_dbi_provider_free;
prov->check_data_type = NULL;
qof_backend_register_provider( prov );
}
if ( have_pgsql_driver )
{
prov = g_new0( QofBackendProvider, 1 );
g_assert( prov != NULL );
prov->provider_name = "GnuCash Libdbi (POSTGRESQL) Backend";
prov->access_method = "postgres";
prov->partial_book_supported = FALSE;
prov->backend_new = gnc_dbi_backend_postgres_new;
prov->provider_free = gnc_dbi_provider_free;
prov->check_data_type = NULL;
qof_backend_register_provider( prov );
}
/* If needed, set log level to DEBUG so that SQl statements will be put into
the gnucash.trace file. */
/* qof_log_set_level( log_module, QOF_LOG_DEBUG ); */
}
| G_MODULE_EXPORT void qof_backend_module_init | ( | void | ) |
This is the standarized initialization function of a qof_backend GModule, but compiling this can be disabled by defining GNC_NO_LOADABLE_MODULES.
Definition at line 1910 of file gnc-backend-dbi.c.
{
gnc_module_init_backend_dbi();
}
1.7.4