summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gnome-extra')
-rw-r--r--gnome-extra/libgda/ChangeLog12
-rw-r--r--gnome-extra/libgda/files/libgda-4.99.1-control-center-icon-collision.patch85
-rw-r--r--gnome-extra/libgda/files/libgda-4.99.1-gda-browser-doc-collision.patch43
-rw-r--r--gnome-extra/libgda/files/libgda-4.99.1-gda-browser-help-collision.patch38
-rw-r--r--gnome-extra/libgda/files/libgda-4.99.4-disable-broken-tests.patch15
-rw-r--r--gnome-extra/libgda/files/libgda-4.99.4-statement-rewriting-fix.patch465
-rw-r--r--gnome-extra/libgda/libgda-4.99.4.ebuild165
-rw-r--r--gnome-extra/libgda/metadata.xml2
8 files changed, 824 insertions, 1 deletions
diff --git a/gnome-extra/libgda/ChangeLog b/gnome-extra/libgda/ChangeLog
index d374257f2553..88512e00960b 100644
--- a/gnome-extra/libgda/ChangeLog
+++ b/gnome-extra/libgda/ChangeLog
@@ -1,6 +1,16 @@
# ChangeLog for gnome-extra/libgda
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/gnome-extra/libgda/ChangeLog,v 1.176 2011/09/13 11:46:42 pacho Exp $
+# $Header: /var/cvsroot/gentoo-x86/gnome-extra/libgda/ChangeLog,v 1.177 2011/09/30 19:27:46 nirbheek Exp $
+
+*libgda-4.99.4 (30 Sep 2011)
+
+ 30 Sep 2011; Nirbheek Chauhan <nirbheek@gentoo.org>
+ +files/libgda-4.99.1-control-center-icon-collision.patch,
+ +files/libgda-4.99.1-gda-browser-doc-collision.patch,
+ +files/libgda-4.99.1-gda-browser-help-collision.patch, +libgda-4.99.4.ebuild,
+ +files/libgda-4.99.4-disable-broken-tests.patch,
+ +files/libgda-4.99.4-statement-rewriting-fix.patch, metadata.xml:
+ Bump to 4.99.4 from the gnome overlay, ebuild updates by tetromino
13 Sep 2011; Pacho Ramos <pacho@gentoo.org> -libgda-3.0.4.ebuild:
Remove old.
diff --git a/gnome-extra/libgda/files/libgda-4.99.1-control-center-icon-collision.patch b/gnome-extra/libgda/files/libgda-4.99.1-control-center-icon-collision.patch
new file mode 100644
index 000000000000..06166e6e6e07
--- /dev/null
+++ b/gnome-extra/libgda/files/libgda-4.99.1-control-center-icon-collision.patch
@@ -0,0 +1,85 @@
+From 6ec47f4cf542ad9f7c4d30d557e4813b5c6f31d5 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gmail.com>
+Date: Sat, 4 Jun 2011 05:45:35 -0400
+Subject: [PATCH] Prevent file collision with gda-control-center-4.0's icons
+
+---
+ control-center/data/Makefile.am | 12 ++++++------
+ ... hicolor_apps_16x16_gda-control-center-5.0.png} | Bin 833 -> 833 bytes
+ ... hicolor_apps_22x22_gda-control-center-5.0.png} | Bin 1157 -> 1157 bytes
+ ... hicolor_apps_24x24_gda-control-center-5.0.png} | Bin 1144 -> 1144 bytes
+ ...icolor_apps_256x256_gda-control-center-5.0.png} | Bin 33543 -> 33543 bytes
+ ... hicolor_apps_32x32_gda-control-center-5.0.png} | Bin 1867 -> 1867 bytes
+ ... hicolor_apps_48x48_gda-control-center-5.0.png} | Bin 3144 -> 3144 bytes
+ control-center/gda-control-center-5.0.desktop.in | 2 +-
+ 8 files changed, 7 insertions(+), 7 deletions(-)
+ rename control-center/data/{hicolor_apps_16x16_gda-control-center.png => hicolor_apps_16x16_gda-control-center-5.0.png} (100%)
+ rename control-center/data/{hicolor_apps_22x22_gda-control-center.png => hicolor_apps_22x22_gda-control-center-5.0.png} (100%)
+ rename control-center/data/{hicolor_apps_24x24_gda-control-center.png => hicolor_apps_24x24_gda-control-center-5.0.png} (100%)
+ rename control-center/data/{hicolor_apps_256x256_gda-control-center.png => hicolor_apps_256x256_gda-control-center-5.0.png} (100%)
+ rename control-center/data/{hicolor_apps_32x32_gda-control-center.png => hicolor_apps_32x32_gda-control-center-5.0.png} (100%)
+ rename control-center/data/{hicolor_apps_48x48_gda-control-center.png => hicolor_apps_48x48_gda-control-center-5.0.png} (100%)
+
+diff --git a/control-center/data/Makefile.am b/control-center/data/Makefile.am
+index 03fa362..862ec88 100644
+--- a/control-center/data/Makefile.am
++++ b/control-center/data/Makefile.am
+@@ -5,12 +5,12 @@ public_icons_themes = \
+ $(NULL)
+
+ public_icons = \
+- hicolor_apps_16x16_gda-control-center.png \
+- hicolor_apps_22x22_gda-control-center.png \
+- hicolor_apps_24x24_gda-control-center.png \
+- hicolor_apps_256x256_gda-control-center.png \
+- hicolor_apps_32x32_gda-control-center.png \
+- hicolor_apps_48x48_gda-control-center.png \
++ hicolor_apps_16x16_gda-control-center-5.0.png \
++ hicolor_apps_22x22_gda-control-center-5.0.png \
++ hicolor_apps_24x24_gda-control-center-5.0.png \
++ hicolor_apps_256x256_gda-control-center-5.0.png \
++ hicolor_apps_32x32_gda-control-center-5.0.png \
++ hicolor_apps_48x48_gda-control-center-5.0.png \
+ $(NULL)
+
+ private_icons = \
+diff --git a/control-center/data/hicolor_apps_16x16_gda-control-center.png b/control-center/data/hicolor_apps_16x16_gda-control-center-5.0.png
+similarity index 100%
+rename from control-center/data/hicolor_apps_16x16_gda-control-center.png
+rename to control-center/data/hicolor_apps_16x16_gda-control-center-5.0.png
+diff --git a/control-center/data/hicolor_apps_22x22_gda-control-center.png b/control-center/data/hicolor_apps_22x22_gda-control-center-5.0.png
+similarity index 100%
+rename from control-center/data/hicolor_apps_22x22_gda-control-center.png
+rename to control-center/data/hicolor_apps_22x22_gda-control-center-5.0.png
+diff --git a/control-center/data/hicolor_apps_24x24_gda-control-center.png b/control-center/data/hicolor_apps_24x24_gda-control-center-5.0.png
+similarity index 100%
+rename from control-center/data/hicolor_apps_24x24_gda-control-center.png
+rename to control-center/data/hicolor_apps_24x24_gda-control-center-5.0.png
+diff --git a/control-center/data/hicolor_apps_256x256_gda-control-center.png b/control-center/data/hicolor_apps_256x256_gda-control-center-5.0.png
+similarity index 100%
+rename from control-center/data/hicolor_apps_256x256_gda-control-center.png
+rename to control-center/data/hicolor_apps_256x256_gda-control-center-5.0.png
+diff --git a/control-center/data/hicolor_apps_32x32_gda-control-center.png b/control-center/data/hicolor_apps_32x32_gda-control-center-5.0.png
+similarity index 100%
+rename from control-center/data/hicolor_apps_32x32_gda-control-center.png
+rename to control-center/data/hicolor_apps_32x32_gda-control-center-5.0.png
+diff --git a/control-center/data/hicolor_apps_48x48_gda-control-center.png b/control-center/data/hicolor_apps_48x48_gda-control-center-5.0.png
+similarity index 100%
+rename from control-center/data/hicolor_apps_48x48_gda-control-center.png
+rename to control-center/data/hicolor_apps_48x48_gda-control-center-5.0.png
+diff --git a/control-center/gda-control-center-5.0.desktop.in b/control-center/gda-control-center-5.0.desktop.in
+index 6fd5b58..429787d 100644
+--- a/control-center/gda-control-center-5.0.desktop.in
++++ b/control-center/gda-control-center-5.0.desktop.in
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ _Name=Database access control center
+ _Comment=Configure your database access environment
+-Icon=gda-control-center
++Icon=gda-control-center-5.0
+ Exec=gda-control-center-5.0
+ Terminal=false
+ Type=Application
+--
+1.7.5.3
+
diff --git a/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-doc-collision.patch b/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-doc-collision.patch
new file mode 100644
index 000000000000..9616a42d7ae3
--- /dev/null
+++ b/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-doc-collision.patch
@@ -0,0 +1,43 @@
+From bfb0d952d111929174c3326dbc69ab65a808a235 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gmail.com>
+Date: Sat, 4 Jun 2011 05:59:46 -0400
+Subject: [PATCH] Prevent file collision with gda-browser-4.0's gtk-doc files
+
+---
+ tools/browser/doc/Makefile.am | 2 +-
+ ...browser-docs.sgml => gda-browser-5.0-docs.sgml} | 0
+ ...r-sections.txt => gda-browser-5.0-sections.txt} | 0
+ .../{gda-browser.types => gda-browser-5.0.types} | 0
+ 4 files changed, 1 insertions(+), 1 deletions(-)
+ rename tools/browser/doc/{gda-browser-docs.sgml => gda-browser-5.0-docs.sgml} (100%)
+ rename tools/browser/doc/{gda-browser-sections.txt => gda-browser-5.0-sections.txt} (100%)
+ rename tools/browser/doc/{gda-browser.types => gda-browser-5.0.types} (100%)
+
+diff --git a/tools/browser/doc/Makefile.am b/tools/browser/doc/Makefile.am
+index 971fa79..cf6637a 100644
+--- a/tools/browser/doc/Makefile.am
++++ b/tools/browser/doc/Makefile.am
+@@ -3,7 +3,7 @@
+ AUTOMAKE_OPTIONS = 1.6
+
+ # The name of the module.
+-DOC_MODULE=gda-browser
++DOC_MODULE=gda-browser-5.0
+
+ # The top-level SGML file.
+ DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
+diff --git a/tools/browser/doc/gda-browser-docs.sgml b/tools/browser/doc/gda-browser-5.0-docs.sgml
+similarity index 100%
+rename from tools/browser/doc/gda-browser-docs.sgml
+rename to tools/browser/doc/gda-browser-5.0-docs.sgml
+diff --git a/tools/browser/doc/gda-browser-sections.txt b/tools/browser/doc/gda-browser-5.0-sections.txt
+similarity index 100%
+rename from tools/browser/doc/gda-browser-sections.txt
+rename to tools/browser/doc/gda-browser-5.0-sections.txt
+diff --git a/tools/browser/doc/gda-browser.types b/tools/browser/doc/gda-browser-5.0.types
+similarity index 100%
+rename from tools/browser/doc/gda-browser.types
+rename to tools/browser/doc/gda-browser-5.0.types
+--
+1.7.5.3
+
diff --git a/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-help-collision.patch b/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-help-collision.patch
new file mode 100644
index 000000000000..46e728234da4
--- /dev/null
+++ b/gnome-extra/libgda/files/libgda-4.99.1-gda-browser-help-collision.patch
@@ -0,0 +1,38 @@
+From 01b13e22b215647c2343ec5f633b51d3c2b37824 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gmail.com>
+Date: Sat, 4 Jun 2011 01:59:14 -0400
+Subject: [PATCH] Prevent file collision with gda-browser-4.0's help files
+
+---
+ tools/browser/help/Makefile.am | 2 +-
+ tools/browser/support.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tools/browser/help/Makefile.am b/tools/browser/help/Makefile.am
+index 93acaf8..48fcdc4 100644
+--- a/tools/browser/help/Makefile.am
++++ b/tools/browser/help/Makefile.am
+@@ -1,6 +1,6 @@
+ include $(top_srcdir)/gnome-doc-utils.make
+
+-DOC_ID = gda-browser
++DOC_ID = gda-browser-5.0
+
+ DOC_INCLUDES = legal.xml
+ DOC_FIGURES = \
+diff --git a/tools/browser/support.c b/tools/browser/support.c
+index 5b1b4e6..f462efc 100644
+--- a/tools/browser/support.c
++++ b/tools/browser/support.c
+@@ -223,7 +223,7 @@ browser_show_help (GtkWindow *parent, const gchar *topic)
+ if (strchr (lang, '.'))
+ continue;
+
+- uri = gda_gbr_get_file_path (GDA_DATA_DIR, "gnome", "help", "gda-browser", lang, NULL);
++ uri = gda_gbr_get_file_path (GDA_DATA_DIR, "gnome", "help", "gda-browser-5.0", lang, NULL);
+
+ /*g_print ("TST URI [%s]\n", uri);*/
+ if (g_file_test (uri, G_FILE_TEST_EXISTS)) {
+--
+1.7.5.3
+
diff --git a/gnome-extra/libgda/files/libgda-4.99.4-disable-broken-tests.patch b/gnome-extra/libgda/files/libgda-4.99.4-disable-broken-tests.patch
new file mode 100644
index 000000000000..1add00a025a4
--- /dev/null
+++ b/gnome-extra/libgda/files/libgda-4.99.4-disable-broken-tests.patch
@@ -0,0 +1,15 @@
+diff --git a/tests/value-holders/check_holder.c b/tests/value-holders/check_holder.c
+index d014131..289a9ca 100644
+--- a/tests/value-holders/check_holder.c
++++ b/tests/value-holders/check_holder.c
+@@ -38,8 +38,8 @@ static gboolean test13 (GError **error);
+ TestFunc tests[] = {
+ test1,
+ test2,
+- test3,
+- test4,
++// test3,
++// test4,
+ test5,
+ test6,
+ test7,
diff --git a/gnome-extra/libgda/files/libgda-4.99.4-statement-rewriting-fix.patch b/gnome-extra/libgda/files/libgda-4.99.4-statement-rewriting-fix.patch
new file mode 100644
index 000000000000..07077e5461d8
--- /dev/null
+++ b/gnome-extra/libgda/files/libgda-4.99.4-statement-rewriting-fix.patch
@@ -0,0 +1,465 @@
+From 7d7742477ad03f19a168c763b988a7807421e9ca Mon Sep 17 00:00:00 2001
+From: Vivien Malerba <malerba@gnome-db.org>
+Date: Sat, 17 Sep 2011 14:26:09 +0000
+Subject: Fixed nasty bug introduced in commit #036420a459b0bb241716cd9a14c3dd1eb2b21f63
+
+which "Improved statement rewriting for NULL parameters", and in other
+commits for each provider
+---
+diff --git a/libgda/sqlite/gda-sqlite-provider.c b/libgda/sqlite/gda-sqlite-provider.c
+index afeab3c..69ccd16 100644
+--- a/libgda/sqlite/gda-sqlite-provider.c
++++ b/libgda/sqlite/gda-sqlite-provider.c
+@@ -2935,7 +2935,33 @@ gda_sqlite_provider_statement_execute (GdaServerProvider *provider, GdaConnectio
+ else if (!rstmt)
+ return NULL;
+ else {
++ /* The strategy here is to execute @rstmt using the prepared
++ * statement associcted to @stmt, but adapted to @rstmt, so all
++ * the column names, etc remain the same.
++ *
++ * The adaptation consists to replace SQLite specific information
++ * in the GdaSqlitePStmt object.
++ *
++ * The trick is to adapt @ps, then associate @ps with @rstmt, then
++ * execute @rstmt, and then undo the trick */
+ GObject *obj;
++ GdaSqlitePStmt *tps;
++ if (!gda_sqlite_provider_statement_prepare (provider, cnc,
++ rstmt, error))
++ return NULL;
++ tps = (GdaSqlitePStmt *)
++ gda_connection_get_prepared_statement (cnc, rstmt);
++
++ /* adapt @ps with @tps's SQLite specific information */
++ GdaSqlitePStmt hps;
++ hps.sqlite_stmt = ps->sqlite_stmt; /* save */
++ ps->sqlite_stmt = tps->sqlite_stmt; /* override */
++ hps.stmt_used = ps->stmt_used; /* save */
++ ps->stmt_used = tps->stmt_used; /* override */
++ g_object_ref (tps);
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps);
++
++ /* execute rstmt (it will use @ps) */
+ obj = gda_sqlite_provider_statement_execute (provider, cnc,
+ rstmt, params,
+ model_usage,
+@@ -2943,15 +2969,14 @@ gda_sqlite_provider_statement_execute (GdaServerProvider *provider, GdaConnectio
+ last_inserted_row,
+ task_id, async_cb,
+ cb_data, error);
++
++ /* revert adaptations */
++ ps->sqlite_stmt = hps.sqlite_stmt;
++ ps->stmt_used = hps.stmt_used;
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps);
++ g_object_unref (tps);
+ g_object_unref (rstmt);
+- if (GDA_IS_DATA_SELECT (obj)) {
+- GdaPStmt *pstmt;
+- g_object_get (obj, "prepared-stmt", &pstmt, NULL);
+- if (pstmt) {
+- gda_pstmt_set_gda_statement (pstmt, stmt);
+- g_object_unref (pstmt);
+- }
+- }
++
+ if (new_ps)
+ g_object_unref (ps);
+ pending_blobs_free_list (blobs_list);
+diff --git a/providers/jdbc/gda-jdbc-provider.c b/providers/jdbc/gda-jdbc-provider.c
+index 164e67f..c1192fb 100644
+--- a/providers/jdbc/gda-jdbc-provider.c
++++ b/providers/jdbc/gda-jdbc-provider.c
+@@ -1429,9 +1429,49 @@ gda_jdbc_provider_statement_execute (GdaServerProvider *provider, GdaConnection
+ else if (!rstmt)
+ return NULL;
+ else {
+- GObject *obj;
+- g_object_unref (ps);
+ _gda_jdbc_release_jenv (jni_detach);
++
++ /* The strategy here is to execute @rstmt using the prepared
++ * statement associcted to @stmt, but adapted to @rstmt, so all
++ * the column names, etc remain the same.
++ *
++ * The adaptation consists to replace Jdbc specific information
++ * in the GdaJdbcPStmt object.
++ *
++ * The trick is to adapt @ps, then associate @ps with @rstmt, then
++ * execute @rstmt, and then undo the trick */
++ GObject *obj;
++ GdaJdbcPStmt *tps;
++ if (!gda_jdbc_provider_statement_prepare (provider, cnc,
++ rstmt, error)) {
++ g_object_unref (ps);
++ return NULL;
++ }
++ tps = (GdaJdbcPStmt *)
++ gda_connection_get_prepared_statement (cnc, rstmt);
++
++ /* adapt @ps with @tps's Jdbc specific information */
++ GdaJdbcPStmt hps;
++ hps.pstmt_obj = ps->pstmt_obj; /* save */
++ ps->pstmt_obj = tps->pstmt_obj; /* override */
++ g_object_ref (tps);
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps);
++
++ /* execute rstmt (it will use @ps) */
++ obj = gda_jdbc_provider_statement_execute (provider, cnc,
++ rstmt, params,
++ model_usage,
++ col_types,
++ last_inserted_row,
++ task_id, async_cb,
++ cb_data, error);
++
++ /* revert adaptations */
++ ps->pstmt_obj = hps.pstmt_obj;
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps);
++ g_object_unref (tps);
++ g_object_unref (rstmt);
++
+ obj = gda_jdbc_provider_statement_execute (provider, cnc,
+ rstmt, params,
+ model_usage,
+@@ -1440,14 +1480,7 @@ gda_jdbc_provider_statement_execute (GdaServerProvider *provider, GdaConnection
+ task_id, async_cb,
+ cb_data, error);
+ g_object_unref (rstmt);
+- if (GDA_IS_DATA_SELECT (obj)) {
+- GdaPStmt *pstmt;
+- g_object_get (obj, "prepared-stmt", &pstmt, NULL);
+- if (pstmt) {
+- gda_pstmt_set_gda_statement (pstmt, stmt);
+- g_object_unref (pstmt);
+- }
+- }
++ g_object_unref (ps);
+ return obj;
+ }
+ }
+diff --git a/providers/mysql/gda-mysql-provider.c b/providers/mysql/gda-mysql-provider.c
+index d581828..8baf0a3 100644
+--- a/providers/mysql/gda-mysql-provider.c
++++ b/providers/mysql/gda-mysql-provider.c
+@@ -2304,8 +2304,35 @@ gda_mysql_provider_statement_execute (GdaServerProvider *provider,
+ else if (!rstmt)
+ return NULL;
+ else {
+- GObject *obj;
+ free_bind_param_data (mem_to_free);
++
++ /* The strategy here is to execute @rstmt using the prepared
++ * statement associcted to @stmt, but adapted to @rstmt, so all
++ * the column names, etc remain the same.
++ *
++ * The adaptation consists to replace MySQL specific information
++ * in the GdaMysqlPStmt object.
++ *
++ * The trick is to adapt @ps, then associate @ps with @rstmt, then
++ * execute @rstmt, and then undo the trick */
++ GObject *obj;
++ GdaMysqlPStmt *tps;
++ if (!gda_mysql_provider_statement_prepare (provider, cnc,
++ rstmt, error))
++ return NULL;
++ tps = (GdaMysqlPStmt *)
++ gda_connection_get_prepared_statement (cnc, rstmt);
++
++ /* adapt @ps with @tps's Mysql specific information */
++ GdaMysqlPStmt hps;
++ hps.mysql_stmt = ps->mysql_stmt; /* save */
++ ps->mysql_stmt = tps->mysql_stmt; /* override */
++ hps.stmt_used = ps->stmt_used; /* save */
++ ps->stmt_used = tps->stmt_used; /* override */
++ g_object_ref (tps);
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps);
++
++ /* execute rstmt (it will use @ps) */
+ obj = gda_mysql_provider_statement_execute (provider, cnc,
+ rstmt, params,
+ model_usage,
+@@ -2313,15 +2340,13 @@ gda_mysql_provider_statement_execute (GdaServerProvider *provider,
+ last_inserted_row,
+ task_id, async_cb,
+ cb_data, error);
++
++ /* revert adaptations */
++ ps->mysql_stmt = hps.mysql_stmt;
++ ps->stmt_used = hps.stmt_used;
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps);
++ g_object_unref (tps);
+ g_object_unref (rstmt);
+- if (GDA_IS_DATA_SELECT (obj)) {
+- GdaPStmt *pstmt;
+- g_object_get (obj, "prepared-stmt", &pstmt, NULL);
+- if (pstmt) {
+- gda_pstmt_set_gda_statement (pstmt, stmt);
+- g_object_unref (pstmt);
+- }
+- }
+ return obj;
+ }
+ }
+diff --git a/providers/oracle/gda-oracle-provider.c b/providers/oracle/gda-oracle-provider.c
+index 1d40105..9d0f485 100644
+--- a/providers/oracle/gda-oracle-provider.c
++++ b/providers/oracle/gda-oracle-provider.c
+@@ -1931,8 +1931,35 @@ gda_oracle_provider_statement_execute (GdaServerProvider *provider, GdaConnectio
+ else if (!rstmt)
+ return NULL;
+ else {
++ /* The strategy here is to execute @rstmt using the prepared
++ * statement associcted to @stmt, but adapted to @rstmt, so all
++ * the column names, etc remain the same.
++ *
++ * The adaptation consists to replace Oracle specific information
++ * in the GdaOraclePStmt object.
++ *
++ * The trick is to adapt @ps, then associate @ps with @rstmt, then
++ * execute @rstmt, and then undo the trick */
+ GObject *obj;
+- g_object_unref (ps);
++ GdaOraclePStmt *tps;
++ if (!gda_oracle_provider_statement_prepare (provider, cnc,
++ rstmt, error)) {
++ g_object_unref (ps);
++ return NULL;
++ }
++ tps = (GdaOraclePStmt *)
++ gda_connection_get_prepared_statement (cnc, rstmt);
++
++ /* adapt @ps with @tps's Oracle specific information */
++ GdaOraclePStmt hps;
++ hps.hstmt = ps->hstmt; /* save */
++ ps->hstmt = tps->hstmt; /* override */
++ hps.ora_values = ps->ora_values; /* save */
++ ps->ora_values = tps->ora_values; /* override */
++ g_object_ref (tps);
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps);
++
++ /* execute rstmt (it will use @ps) */
+ obj = gda_oracle_provider_statement_execute (provider, cnc,
+ rstmt, params,
+ model_usage,
+@@ -1940,15 +1967,14 @@ gda_oracle_provider_statement_execute (GdaServerProvider *provider, GdaConnectio
+ last_inserted_row,
+ task_id, async_cb,
+ cb_data, error);
++
++ /* revert adaptations */
++ ps->hstmt = hps.hstmt;
++ ps->ora_values = hps.ora_values;
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps);
++ g_object_unref (tps);
+ g_object_unref (rstmt);
+- if (GDA_IS_DATA_SELECT (obj)) {
+- GdaPStmt *pstmt;
+- g_object_get (obj, "prepared-stmt", &pstmt, NULL);
+- if (pstmt) {
+- gda_pstmt_set_gda_statement (pstmt, stmt);
+- g_object_unref (pstmt);
+- }
+- }
++ g_object_unref (ps);
+ return obj;
+ }
+ }
+diff --git a/providers/postgres/gda-postgres-provider.c b/providers/postgres/gda-postgres-provider.c
+index 6adca14..85db58e 100644
+--- a/providers/postgres/gda-postgres-provider.c
++++ b/providers/postgres/gda-postgres-provider.c
+@@ -2017,13 +2017,39 @@ gda_postgres_provider_statement_execute (GdaServerProvider *provider, GdaConnect
+ else if (!rstmt)
+ return NULL;
+ else {
+- GObject *obj;
+ params_freev (param_values, param_mem, nb_params);
+ g_free (param_lengths);
+ g_free (param_formats);
+ if (transaction_started)
+ gda_connection_rollback_transaction (cnc, NULL, NULL);
+
++ /* The strategy here is to execute @rstmt using the prepared
++ * statement associcted to @stmt, but adapted to @rstmt, so all
++ * the column names, etc remain the same.
++ *
++ * The adaptation consists to replace Postgresql specific information
++ * in the GdaPostgresPStmt object.
++ *
++ * The trick is to adapt @ps, then associate @ps with @rstmt, then
++ * execute @rstmt, and then undo the trick */
++ GObject *obj;
++ GdaPostgresPStmt *tps;
++ if (!gda_postgres_provider_statement_prepare (provider, cnc,
++ rstmt, error))
++ return NULL;
++ tps = (GdaPostgresPStmt *)
++ gda_connection_get_prepared_statement (cnc, rstmt);
++
++ /* adapt @ps with @tps's SQLite specific information */
++ GdaPostgresPStmt hps;
++ hps.pconn = ps->pconn; /* save */
++ ps->pconn = tps->pconn; /* override */
++ hps.prep_name = ps->prep_name; /* save */
++ ps->prep_name = tps->prep_name; /* override */
++ g_object_ref (tps);
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps);
++
++ /* execute rstmt (it will use @ps) */
+ obj = gda_postgres_provider_statement_execute (provider, cnc,
+ rstmt, params,
+ model_usage,
+@@ -2031,15 +2057,13 @@ gda_postgres_provider_statement_execute (GdaServerProvider *provider, GdaConnect
+ last_inserted_row,
+ task_id, async_cb,
+ cb_data, error);
++
++ /* revert adaptations */
++ ps->pconn = hps.pconn;
++ ps->prep_name = hps.prep_name;
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps);
++ g_object_unref (tps);
+ g_object_unref (rstmt);
+- if (GDA_IS_DATA_SELECT (obj)) {
+- GdaPStmt *pstmt;
+- g_object_get (obj, "prepared-stmt", &pstmt, NULL);
+- if (pstmt) {
+- gda_pstmt_set_gda_statement (pstmt, stmt);
+- g_object_unref (pstmt);
+- }
+- }
+ return obj;
+ }
+ }
+diff --git a/providers/skel-implementation/capi/gda-capi-provider.c b/providers/skel-implementation/capi/gda-capi-provider.c
+index 653f9ea..764d027 100644
+--- a/providers/skel-implementation/capi/gda-capi-provider.c
++++ b/providers/skel-implementation/capi/gda-capi-provider.c
+@@ -1181,7 +1181,31 @@ gda_capi_provider_statement_execute (GdaServerProvider *provider, GdaConnection
+ else if (!rstmt)
+ return NULL;
+ else {
++ /* The strategy here is to execute @rstmt using the prepared
++ * statement associcted to @stmt, but adapted to @rstmt, so all
++ * the column names, etc remain the same.
++ *
++ * The adaptation consists to replace Capi specific information
++ * in the GdaCapiPStmt object.
++ *
++ * The trick is to adapt @ps, then associate @ps with @rstmt, then
++ * execute @rstmt, and then undo the trick */
+ GObject *obj;
++ GdaCapiPStmt *tps;
++ if (!gda_capi_provider_statement_prepare (provider, cnc,
++ rstmt, error))
++ return NULL;
++ tps = (GdaCapiPStmt *)
++ gda_connection_get_prepared_statement (cnc, rstmt);
++
++ /* adapt @ps with @tps's Capi specific information */
++ GdaCapiPStmt hps;
++ /* TO ADD: hps.capi_stmt = ps->capi_stmt;*/ /* save */
++ /* TO_ADD: ps->capi_stmt = tps->capi_stmt;*/ /* override */
++ g_object_ref (tps);
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps);
++
++ /* execute rstmt (it will use @ps) */
+ obj = gda_capi_provider_statement_execute (provider, cnc,
+ rstmt, params,
+ model_usage,
+@@ -1189,15 +1213,13 @@ gda_capi_provider_statement_execute (GdaServerProvider *provider, GdaConnection
+ last_inserted_row,
+ task_id, async_cb,
+ cb_data, error);
++
++ /* revert adaptations */
++ /* TO_ADD: ps->capi_stmt = hps.capi_stmt; */
++
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps);
++ g_object_unref (tps);
+ g_object_unref (rstmt);
+- if (GDA_IS_DATA_SELECT (obj)) {
+- GdaPStmt *pstmt;
+- g_object_get (obj, "prepared-stmt", &pstmt, NULL);
+- if (pstmt) {
+- gda_pstmt_set_gda_statement (pstmt, stmt);
+- g_object_unref (pstmt);
+- }
+- }
+ return obj;
+ }
+ }
+diff --git a/providers/web/gda-web-provider.c b/providers/web/gda-web-provider.c
+index 4500f01..9061126 100644
+--- a/providers/web/gda-web-provider.c
++++ b/providers/web/gda-web-provider.c
+@@ -1572,25 +1572,49 @@ gda_web_provider_statement_execute (GdaServerProvider *provider, GdaConnection *
+ else if (!rstmt)
+ return NULL;
+ else {
+- GObject *obj;
+- g_object_unref (ps);
+ xmlFreeDoc (doc);
++
++ /* The strategy here is to execute @rstmt using the prepared
++ * statement associcted to @stmt, but adapted to @rstmt, so all
++ * the column names, etc remain the same.
++ *
++ * The adaptation consists to replace Web specific information
++ * in the GdaWebPStmt object.
++ *
++ * The trick is to adapt @ps, then associate @ps with @rstmt, then
++ * execute @rstmt, and then undo the trick */
++ GObject *obj;
++ GdaWebPStmt *tps;
++ if (!gda_web_provider_statement_prepare (provider, cnc,
++ rstmt, error)) {
++ g_object_unref (ps);
++ return NULL;
++ }
++ tps = (GdaWebPStmt *)
++ gda_connection_get_prepared_statement (cnc, rstmt);
++
++ /* adapt @ps with @tps's Web specific information */
++ GdaWebPStmt hps;
++ hps.pstmt_hash = ps->pstmt_hash; /* save */
++ ps->pstmt_hash = tps->pstmt_hash; /* override */
++ g_object_ref (tps);
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) ps);
++
++ /* execute rstmt (it will use @ps) */
+ obj = gda_web_provider_statement_execute (provider, cnc,
+- rstmt, params,
+- model_usage,
+- col_types,
+- last_inserted_row,
+- task_id, async_cb,
+- cb_data, error);
++ rstmt, params,
++ model_usage,
++ col_types,
++ last_inserted_row,
++ task_id, async_cb,
++ cb_data, error);
++
++ /* revert adaptations */
++ ps->pstmt_hash = hps.pstmt_hash;
++ gda_connection_add_prepared_statement (cnc, rstmt, (GdaPStmt *) tps);
++ g_object_unref (tps);
+ g_object_unref (rstmt);
+- if (GDA_IS_DATA_SELECT (obj)) {
+- GdaPStmt *pstmt;
+- g_object_get (obj, "prepared-stmt", &pstmt, NULL);
+- if (pstmt) {
+- gda_pstmt_set_gda_statement (pstmt, stmt);
+- g_object_unref (pstmt);
+- }
+- }
++ g_object_unref (ps);
+ return obj;
+ }
+ }
+--
+cgit v0.9.0.2
diff --git a/gnome-extra/libgda/libgda-4.99.4.ebuild b/gnome-extra/libgda/libgda-4.99.4.ebuild
new file mode 100644
index 000000000000..7f57bdec9a94
--- /dev/null
+++ b/gnome-extra/libgda/libgda-4.99.4.ebuild
@@ -0,0 +1,165 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-extra/libgda/libgda-4.99.4.ebuild,v 1.1 2011/09/30 19:27:46 nirbheek Exp $
+
+EAPI="3"
+GNOME2_LA_PUNT="yes"
+GCONF_DEBUG="yes"
+GNOME_TARBALL_SUFFIX="xz" # remove when python eclass supports EAPI 4
+PYTHON_DEPEND="2"
+
+inherit autotools db-use eutils flag-o-matic gnome2 java-pkg-opt-2 python
+
+DESCRIPTION="Gnome Database Access Library"
+HOMEPAGE="http://www.gnome-db.org/"
+LICENSE="GPL-2 LGPL-2"
+
+IUSE="berkdb bindist canvas doc firebird gnome-keyring gtk graphviz http +introspection json ldap mdb mysql oci8 postgres sourceview ssl"
+SLOT="5"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
+
+# FIXME: sqlite is automagic, but maybe it is a hard-dep
+# FIXME: autoconf is a hell of inconsistencies
+RDEPEND="
+ app-text/iso-codes
+ >=dev-libs/glib-2.16:2
+ >=dev-libs/libxml2-2
+ dev-libs/libxslt
+ dev-libs/libunique:3
+ sys-libs/readline
+ sys-libs/ncurses
+ berkdb? ( sys-libs/db )
+ !bindist? ( firebird? ( dev-db/firebird ) )
+ gtk? (
+ >=x11-libs/gtk+-3.0.0:3
+ canvas? ( x11-libs/goocanvas:2.0 )
+ sourceview? ( x11-libs/gtksourceview:3.0 )
+ graphviz? ( media-gfx/graphviz )
+ )
+ gnome-keyring? ( || ( gnome-base/libgnome-keyring <gnome-base/gnome-keyring-2.29.4 ) )
+ http? ( >=net-libs/libsoup-2.24:2.4 )
+ introspection? ( >=dev-libs/gobject-introspection-0.6.5 )
+ json? ( dev-libs/json-glib )
+ ldap? ( net-nds/openldap )
+ mdb? ( >app-office/mdbtools-0.5 )
+ mysql? ( virtual/mysql )
+ postgres? ( dev-db/postgresql-base )
+ ssl? ( dev-libs/openssl )
+ >=dev-db/sqlite-3.6.22:3"
+
+DEPEND="${RDEPEND}
+ >=dev-util/pkgconfig-0.18
+ >=dev-util/intltool-0.35.5
+ >=app-text/gnome-doc-utils-0.9
+ doc? ( >=dev-util/gtk-doc-1 )"
+
+# XXX: some tests fail when run from portage (but pass when building by hand)
+RESTRICT="test"
+
+pkg_setup() {
+ DOCS="AUTHORS ChangeLog NEWS README"
+
+ if use canvas || use graphviz || use sourceview; then
+ if ! use gtk; then
+ ewarn "You must enable USE=gtk to make use of canvas, graphivz or sourceview USE flag."
+ ewarn "Disabling for now."
+ G2CONF="${G2CONF} --without-goocanvas --without-graphivz --without-gtksourceview"
+ else
+ G2CONF="${G2CONF}
+ $(use_with canvas goocanvas)
+ $(use_with graphviz)
+ $(use_with sourceview gtksourceview)"
+ fi
+ fi
+
+ G2CONF="${G2CONF}
+ --with-unique
+ --disable-scrollkeeper
+ --disable-static
+ --enable-system-sqlite
+ $(use_with berkdb bdb /usr)
+ $(use_with gnome-keyring)
+ $(use_with gtk ui)
+ $(use_with http libsoup)
+ $(use_enable introspection)
+ $(use_with java java $JAVA_HOME)
+ $(use_enable json)
+ $(use_with ldap)
+ $(use_with mdb mdb /usr)
+ $(use_with mysql mysql /usr)
+ $(use_with postgres postgres /usr)
+ $(use_enable ssl crypto)"
+
+ if use bindist; then
+ # firebird license is not GPL compatible
+ G2CONF="${G2CONF} --without-firebird"
+ else
+ G2CONF="${G2CONF} $(use_with firebird firebird /usr)"
+ fi
+
+ use berkdb && append-cppflags "-I$(db_includedir)"
+ use oci8 || G2CONF="${G2CONF} --without-oracle"
+
+ # Not in portage
+ G2CONF="${G2CONF}
+ --disable-default-binary"
+}
+
+src_prepare() {
+ # Fix build order for generated content, upstream #630958
+ #epatch "${FILESDIR}/${PN}-9999-fix-build-order.patch"
+
+ # Fix compilation failure of keyword_hash.c, upstream #630959
+ #epatch "${FILESDIR}/${PN}-4.2.0-missing-include-in-keyword_hash-generator.patch"
+
+ # Upstream patch to fix a serious statement rewriting bug, in next release
+ epatch "${FILESDIR}/${PN}-4.99.4-statement-rewriting-fix.patch"
+
+ # Disable broken tests so we can check the others
+ epatch "${FILESDIR}/${PN}-4.99.4-disable-broken-tests.patch"
+
+ # Prevent file collisions with libgda:4
+ epatch "${FILESDIR}/${PN}-4.99.1-gda-browser-help-collision.patch"
+ epatch "${FILESDIR}/${PN}-4.99.1-gda-browser-doc-collision.patch"
+ epatch "${FILESDIR}/${PN}-4.99.1-control-center-icon-collision.patch"
+ # Move files with mv (since epatch can't handle rename diffs) and
+ # update pre-generated gtk-doc files
+ local f
+ for f in tools/browser/doc/gda-browser* ; do
+ mv ${f} ${f/gda-browser/gda-browser-5.0} || die "mv ${f} failed"
+ done
+ for f in tools/browser/doc/html/gda-browser.devhelp* ; do
+ sed -e 's:name="gda-browser":name="gda-browser-5.0":' \
+ -i ${f} || die "sed ${f} failed"
+ mv ${f} ${f/gda-browser/gda-browser-5.0} || die "mv ${f} failed"
+ done
+ for f in control-center/data/*_gda-control-center.png ; do
+ mv ${f} ${f/_gda-control-center.png/_gda-control-center-5.0.png} ||
+ die "mv ${f} failed"
+ done
+
+ python_convert_shebangs -r 2 libgda-report/RML/trml2{html,pdf}
+
+ eautoreconf
+ gnome2_src_prepare
+}
+
+src_test() {
+ emake check XDG_DATA_HOME="${T}/.local" || die "tests failed"
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+ local d
+ for d in /usr/share/libgda-5.0/gda_trml2{html,pdf} ; do
+ python_mod_optimize ${d}
+ done
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+ local d
+ for d in /usr/share/libgda-5.0/gda_trml2{html,pdf} ; do
+ python_mod_cleanup ${d}
+ done
+}
diff --git a/gnome-extra/libgda/metadata.xml b/gnome-extra/libgda/metadata.xml
index aaa5090824f2..8e73c78908ef 100644
--- a/gnome-extra/libgda/metadata.xml
+++ b/gnome-extra/libgda/metadata.xml
@@ -8,6 +8,8 @@
<flag name="introspection">Use <pkg>dev-libs/gobject-introspection</pkg> for
introspection</flag>
<flag name="json">Enable support for JSON format</flag>
+ <flag name="mdb">Enable support for Microsoft Access Database using
+ <pkg>app-office/mdbtools</pkg></flag>
<flag name="sourceview">Enable support for <pkg>x11-libs/gtksourceview</pkg></flag>
</use>
</pkgmetadata>