[libgda] SQLite: using sqlite3_create_function_v2
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] SQLite: using sqlite3_create_function_v2
- Date: Thu, 7 Mar 2019 20:43:33 +0000 (UTC)
commit 9fb2ab10c4a668d4b6a9928577ecc453381ff579
Author: Daniel Espinosa Ortiz <esodan gmail com>
Date: Thu Mar 7 14:12:03 2019 -0600
SQLite: using sqlite3_create_function_v2
Fix https://gitlab.gnome.org/GNOME/libgda/issues/183
libgda/sqlite/gda-sqlite-provider.c | 12 ++++++++----
libgda/sqlite/gda-sqlite.h | 1 +
2 files changed, 9 insertions(+), 4 deletions(-)
---
diff --git a/libgda/sqlite/gda-sqlite-provider.c b/libgda/sqlite/gda-sqlite-provider.c
index 3702804f9..75a6cd3b3 100644
--- a/libgda/sqlite/gda-sqlite-provider.c
+++ b/libgda/sqlite/gda-sqlite-provider.c
@@ -1376,10 +1376,11 @@ gda_sqlite_provider_prepare_connection (GdaServerProvider *provider, GdaConnecti
for (i = 0; i < sizeof (scalars) / sizeof (ScalarFunction); i++) {
ScalarFunction *func = (ScalarFunction *) &(scalars [i]);
- gint res = (s3r->sqlite3_create_function) (cdata->connection,
+ g_object_ref (prov);
+ gint res = (s3r->sqlite3_create_function_v2) (cdata->connection,
func->name,
func->nargs,
SQLITE_UTF8, prov,
- func->xFunc, NULL,
NULL);
+ func->xFunc, NULL,
NULL, g_object_unref);
if (res != SQLITE_OK) {
gda_connection_add_event_string (cnc, _("Could not register function
'%s'"),
func->name);
@@ -1395,10 +1396,11 @@ gda_sqlite_provider_prepare_connection (GdaServerProvider *provider, GdaConnecti
for (i = 0; i < sizeof (regexp_functions) / sizeof (ScalarFunction); i++) {
ScalarFunction *func = (ScalarFunction *) &(regexp_functions [i]);
- gint res = (s3r->sqlite3_create_function) (cdata->connection,
+ g_object_ref (prov);
+ gint res = (s3r->sqlite3_create_function_v2) (cdata->connection,
func->name,
func->nargs,
SQLITE_UTF8, prov,
- func->xFunc, NULL,
NULL);
+ func->xFunc, NULL,
NULL, g_object_unref);
if (res != SQLITE_OK) {
gda_connection_add_event_string (cnc, _("Could not register function
'%s'"),
func->name);
@@ -5311,6 +5313,8 @@ gda_sqlite_load_symbols (GModule *module, Sqlite3ApiRoutines** apilib)
goto onerror;
if (! g_module_symbol (module, "sqlite3_create_function", (gpointer*)
&((*apilib)->sqlite3_create_function)))
goto onerror;
+ if (! g_module_symbol (module, "sqlite3_create_function_v2", (gpointer*)
&((*apilib)->sqlite3_create_function_v2)))
+ goto onerror;
if (! g_module_symbol (module, "sqlite3_create_module", (gpointer*)
&((*apilib)->sqlite3_create_module)))
goto onerror;
if (! g_module_symbol (module, "sqlite3_db_handle", (gpointer*) &((*apilib)->sqlite3_db_handle)))
diff --git a/libgda/sqlite/gda-sqlite.h b/libgda/sqlite/gda-sqlite.h
index 7915735de..1321b6e70 100644
--- a/libgda/sqlite/gda-sqlite.h
+++ b/libgda/sqlite/gda-sqlite.h
@@ -98,6 +98,7 @@ typedef struct {
int (*sqlite3_config) (int, ...);
int (*sqlite3_create_function)(sqlite3*,const char*,int,int,void*,void
(*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void
(*xFinal)(sqlite3_context*));
+ int (*sqlite3_create_function_v2)(sqlite3*,const char*,int,int,void*,void
(*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void
(*xFinal)(sqlite3_context*),void(*xDestroy)(void*));
int (*sqlite3_create_module)(sqlite3*,const char*,const sqlite3_module*,void*);
sqlite3 * (*sqlite3_db_handle)(sqlite3_stmt*);
int (*sqlite3_declare_vtab)(sqlite3*,const char*);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]