[gnome-db] Patch: gda-postgres update_row.



Hello,

Attached a patch for the "update row" method for the Postgres provider. I made the following 3 changes:

-1 Place double quote (") around the field names in the SET part of the query. This allows for reserved names like "desc" to be used as fields names.

-2 Removed a call to function "gda_data_model_hash_update_row". This function does not exist, but even if it existed, a call to this function is not required. Within the function gda_postgres_recordset_update_row, the fields (or I have to call it data_model_columns now) are updated already and since those are pointers to the fields in the datamodel, there is no need to update a row in the datamodel with itself.

-3 Emit the correct 'updated' and 'changed' signals.

Please let me know any issues/concerns with this code or if OK when committed. The patch file is a diff against the latest cvs tree that includes Vivien's overhaul of DataModel from yesterday.

Thanks,
Bas,

--- ChangeLog.orig	2005-01-11 10:49:34.873652188 +1000
+++ ChangeLog	2005-01-11 11:16:22.178133184 +1000
@@ -1,3 +1,11 @@
+2005-01-11  Bas Driessen <bas driessen xobas com>
+
+	* providers/postgres/gda-postgres-recordset.c
+	(gda_postgres_recordset_update_row):
+	use " for field names in 'SET' part of query.
+	remove unnecessary call to non-existent function gda_data_model_hash_update_row.
+	emit appropriate 'updated' and 'changed' signals.
+
 2005-01-09  Vivien Malerba <malerba gnome-db org>
 	* libgda/: Implemented GdaDataModel as an interface, and added a GdaDataModelBase class to serve
 	  as a base class in relpacement of the previous GdaDataModel
--- providers/postgres/gda-postgres-recordset.c.orig	2005-01-11 10:51:29.059105686 +1000
+++ providers/postgres/gda-postgres-recordset.c	2005-01-11 11:10:24.605068574 +1000
@@ -386,7 +386,7 @@
 		/* non-unique column: update it */
 		else {
 			/* fills the 'set' part of the update command */
-			tmp = g_strdup_printf ("%s = '%s', ", 
+			tmp = g_strdup_printf ("\"%s\" = '%s', ", 
 					       column_name,
 					       newval);
 			query_set = g_strconcat (query_set, tmp, NULL);
@@ -439,8 +439,9 @@
 	g_free (query_set);
 	g_free (query_where);
 
-	if (status == TRUE)
-		status = GDA_DATA_MODEL_BASE_CLASS (parent_class)->update_row (model, row);
+	/* emit update signals */
+	gda_data_model_row_updated (GDA_DATA_MODEL (model), gda_row_get_number ((GdaRow *) row));
+	gda_data_model_changed (GDA_DATA_MODEL (model));
 
 	return status;
 }


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