libgda r3304 - in trunk: . doc/C/tmpl libgda po providers/postgres



Author: vivien
Date: Wed Jan 28 13:38:39 2009
New Revision: 3304
URL: http://svn.gnome.org/viewvc/libgda?rev=3304&view=rev

Log:
2009-01-28  Vivien Malerba <malerba gnome-db org>

	* libgda/gda-server-provider.c: fixed a bug where the connection would remain
	locked.
	* providers/postgres/gda-postgres-meta.c: fix for bug #143576
	* po/: ran "make update-po"


Modified:
   trunk/ChangeLog
   trunk/doc/C/tmpl/gda-meta-struct.sgml
   trunk/libgda/gda-server-provider.c
   trunk/po/ar.po
   trunk/po/az.po
   trunk/po/ca.po
   trunk/po/cs.po
   trunk/po/da.po
   trunk/po/de.po
   trunk/po/dz.po
   trunk/po/el.po
   trunk/po/en_CA.po
   trunk/po/en_GB.po
   trunk/po/es.po
   trunk/po/eu.po
   trunk/po/fa.po
   trunk/po/fi.po
   trunk/po/fr.po
   trunk/po/ga.po
   trunk/po/gl.po
   trunk/po/hr.po
   trunk/po/hu.po
   trunk/po/it.po
   trunk/po/ja.po
   trunk/po/ko.po
   trunk/po/lt.po
   trunk/po/mk.po
   trunk/po/ml.po
   trunk/po/ms.po
   trunk/po/nb.po
   trunk/po/ne.po
   trunk/po/nl.po
   trunk/po/oc.po
   trunk/po/pa.po
   trunk/po/pl.po
   trunk/po/pt.po
   trunk/po/pt_BR.po
   trunk/po/ru.po
   trunk/po/rw.po
   trunk/po/sk.po
   trunk/po/sl.po
   trunk/po/sq.po
   trunk/po/sr.po
   trunk/po/sr Latn po
   trunk/po/sv.po
   trunk/po/tr.po
   trunk/po/uk.po
   trunk/po/vi.po
   trunk/po/zh_CN.po
   trunk/po/zh_HK.po
   trunk/po/zh_TW.po
   trunk/providers/postgres/gda-postgres-meta.c

Modified: trunk/doc/C/tmpl/gda-meta-struct.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-meta-struct.sgml	(original)
+++ trunk/doc/C/tmpl/gda-meta-struct.sgml	Wed Jan 28 13:38:39 2009
@@ -223,7 +223,7 @@
 </para>
 
 @tcol: 
- att_name: 
+ attribute: 
 @Returns: 
 
 
@@ -233,7 +233,7 @@
 </para>
 
 @tcol: 
- att_name: 
+ attribute: 
 @value: 
 @destroy: 
 

Modified: trunk/libgda/gda-server-provider.c
==============================================================================
--- trunk/libgda/gda-server-provider.c	(original)
+++ trunk/libgda/gda-server-provider.c	Wed Jan 28 13:38:39 2009
@@ -870,7 +870,7 @@
 		gda_lockable_lock ((GdaLockable*) cnc);
 	dh = gda_server_provider_get_data_handler_g_type (provider, cnc, G_VALUE_TYPE (from));
 	if (dh)
-		return gda_data_handler_get_sql_from_value (dh, from);
+		retval = gda_data_handler_get_sql_from_value (dh, from);
 	if (cnc)
 		gda_lockable_unlock ((GdaLockable*) cnc);
 	return retval;

Modified: trunk/providers/postgres/gda-postgres-meta.c
==============================================================================
--- trunk/providers/postgres/gda-postgres-meta.c	(original)
+++ trunk/providers/postgres/gda-postgres-meta.c	Wed Jan 28 13:38:39 2009
@@ -814,6 +814,8 @@
 	for (i = 0; i < nrows; i++) {
 		const GValue *value;
 		GType type;
+
+		/* GType */
 		value = gda_data_model_get_value_at (model, 24, i, error);
 		if (!value) {
 			retval = FALSE;
@@ -829,6 +831,39 @@
 			if (!retval)
 				break;
 		}
+
+		/* column default: remove the datatype cast on strings:
+		 * 'abd'::character varying  => 'abd' */
+		value = gda_data_model_get_value_at (model, 5, i, error);
+		if (!value) {
+			retval = FALSE;
+			break;
+		}
+		
+		if (G_VALUE_TYPE (value) == G_TYPE_STRING) {
+			const gchar *cstr;
+			cstr = g_value_get_string (value);
+			if (cstr && (*cstr == '\'')) {
+				gint len;
+				len = strlen (cstr);
+				if (cstr [len-1] != '\'') {
+					gchar *tmp = g_strdup (cstr);
+					gint k;
+					for (k = len - 1; k > 0; k--) {
+						if (tmp [k] == '\'') {
+							tmp [k+1] = 0;
+							break;
+						}
+					}
+					GValue *v;
+					g_value_take_string (v = gda_value_new (G_TYPE_STRING), tmp);
+					retval = gda_data_model_set_value_at (proxy, 5, i, v, error);
+					gda_value_free (v);
+					if (!retval)
+						break;
+				}
+			}
+		}
 	}
 
 	/* modify meta store with @proxy */
@@ -883,6 +918,8 @@
 	for (i = 0; i < nrows; i++) {
 		const GValue *value;
 		GType type;
+
+		/* GType */
 		value = gda_data_model_get_value_at (model, 24, i, error);
 		if (!value) {
 			retval = FALSE;
@@ -898,6 +935,39 @@
 			if (!retval)
 				break;
 		}
+
+		/* column default: remove the datatype cast on strings:
+		 * 'abd'::character varying  => 'abd' */
+		value = gda_data_model_get_value_at (model, 5, i, error);
+		if (!value) {
+			retval = FALSE;
+			break;
+		}
+		
+		if (G_VALUE_TYPE (value) == G_TYPE_STRING) {
+			const gchar *cstr;
+			cstr = g_value_get_string (value);
+			if (cstr && (*cstr == '\'')) {
+				gint len;
+				len = strlen (cstr);
+				if (cstr [len-1] != '\'') {
+					gchar *tmp = g_strdup (cstr);
+					gint k;
+					for (k = len - 1; k > 0; k--) {
+						if (tmp [k] == '\'') {
+							tmp [k+1] = 0;
+							break;
+						}
+					}
+					GValue *v;
+					g_value_take_string (v = gda_value_new (G_TYPE_STRING), tmp);
+					retval = gda_data_model_set_value_at (proxy, 5, i, v, error);
+					gda_value_free (v);
+					if (!retval)
+						break;
+				}
+			}
+		}
 	}
 
 	/* modify meta store with @proxy */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]