libgda r3203 - in trunk: . doc/C doc/C/tmpl libgda libgda-report/DocBook libgda-report/engine libgda/sqlite libgda/sqlite/virtual providers/postgres samples/SqlParserConsole tests tests/data-models



Author: vivien
Date: Mon Sep  8 20:51:39 2008
New Revision: 3203
URL: http://svn.gnome.org/viewvc/libgda?rev=3203&view=rev

Log:
2008-09-08  Vivien Malerba <malerba gnome-db org>

	* libgda/gda-data-model-query.c: re-run the SELECT statement when any parameter
	required to execute it changes
	* libgda/gda-data-select.c: iterator related fixes, and don't change the GdaHolder's
	not NULL attribute when moving an iterator (it's not needed as this is set when the
	iterator was first created)
	* libgda/gda-data-select.h:
	* libgda/gda-set.h: removed unused error codes
	* tests/data-models: more testing
	* providers/postgres/gda-postgres-recordset.c:
	* tests/data-models/check_data_proxy.c:
	* samples/SqlParserConsole/graph.c:
	* libgda-report/engine/gda-report-engine.c:
	* libgda-report/DocBook/gda-report-docbook-document.c:
	* libgda/sqlite/virtual/gda-virtual-connection.c:
	* libgda/sqlite/virtual/gda-vprovider-data-model.c:
	* libgda/sqlite/virtual/gda-vconnection-data-model.c:
	* libgda/gda-data-model-import.c:
	* libgda/gda-data-model.c:
	* libgda/gda-data-proxy.c:
	* libgda/gda-data-model-array.c:
	* libgda/gda-data-select.c:
	* libgda/gda-set.c:
	* libgda/gda-config.c:
	* libgda/gda-connection.c:
	* libgda/gda-data-model-bdb.c:
	* libgda/gda-meta-store.c:
	* libgda/gda-holder.c:
	* libgda/gda-row.c:
	* libgda/gda-server-operation.c:
	* libgda/gda-data-model-iter.c: all signal names now only use the '-' and not '_', and
	renamed the "provider_obj" to "provider", "user-file" to "user-filename",
	"system-file" to "system-filename" and "spec-file" to "spec-filename"
	* libgda/gda-data-model-iter.c:
	* doc/C: documentation updates


Added:
   trunk/doc/C/GdaDataModelIter.dia   (contents, props changed)
   trunk/doc/C/GdaDataModelIter.png   (contents, props changed)
Modified:
   trunk/ChangeLog
   trunk/NEWS
   trunk/doc/C/Makefile.am
   trunk/doc/C/libgda-4.0-sections.txt
   trunk/doc/C/tmpl/gda-config.sgml
   trunk/doc/C/tmpl/gda-connection.sgml
   trunk/doc/C/tmpl/gda-data-model-iter.sgml
   trunk/doc/C/tmpl/gda-data-model-query.sgml
   trunk/doc/C/tmpl/gda-data-model.sgml
   trunk/doc/C/tmpl/gda-data-select.sgml
   trunk/doc/C/tmpl/gda-server-operation.sgml
   trunk/doc/C/tmpl/gda-sql-statement.sgml
   trunk/libgda-report/DocBook/gda-report-docbook-document.c
   trunk/libgda-report/engine/gda-report-engine.c
   trunk/libgda/gda-config.c
   trunk/libgda/gda-connection.c
   trunk/libgda/gda-data-model-array.c
   trunk/libgda/gda-data-model-bdb.c
   trunk/libgda/gda-data-model-import.c
   trunk/libgda/gda-data-model-iter.c
   trunk/libgda/gda-data-model-query.c
   trunk/libgda/gda-data-model.c
   trunk/libgda/gda-data-proxy.c
   trunk/libgda/gda-data-select.c
   trunk/libgda/gda-data-select.h
   trunk/libgda/gda-holder.c
   trunk/libgda/gda-meta-store.c
   trunk/libgda/gda-row.c
   trunk/libgda/gda-server-operation.c
   trunk/libgda/gda-set.c
   trunk/libgda/gda-set.h
   trunk/libgda/sqlite/gda-sqlite-recordset.c
   trunk/libgda/sqlite/virtual/gda-vconnection-data-model.c
   trunk/libgda/sqlite/virtual/gda-virtual-connection.c
   trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c
   trunk/libgda/sqlite/virtual/gda-vprovider-hub.c
   trunk/providers/postgres/gda-postgres-recordset.c
   trunk/samples/SqlParserConsole/graph.c
   trunk/tests/data-models/check_data_proxy.c
   trunk/tests/data-models/check_model_query.c
   trunk/tests/gda-ddl-creator.h

Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS	(original)
+++ trunk/NEWS	Mon Sep  8 20:51:39 2008
@@ -1,3 +1,6 @@
+
+ - bug fixes: #549953
+
 libgda 3.99.3, 2008-07-06
 
  This version includes:

Added: trunk/doc/C/GdaDataModelIter.dia
==============================================================================
Binary file. No diff available.

Added: trunk/doc/C/GdaDataModelIter.png
==============================================================================
Binary file. No diff available.

Modified: trunk/doc/C/Makefile.am
==============================================================================
--- trunk/doc/C/Makefile.am	(original)
+++ trunk/doc/C/Makefile.am	Mon Sep  8 20:51:39 2008
@@ -50,7 +50,7 @@
 	architecture.png parts.png stmt-unknown.png stmt-select.png stmt-insert1.png stmt-insert2.png \
 	stmt-update.png stmt-compound.png information_schema.png \
 	MetaStore1.png MetaStore2.png i_s_data_types.png \
-	writable_data_model.png
+	writable_data_model.png GdaDataModelIter.png
 
 # Extra options to supply to gtkdoc-fixref
 FIXXREF_OPTIONS=

Modified: trunk/doc/C/libgda-4.0-sections.txt
==============================================================================
--- trunk/doc/C/libgda-4.0-sections.txt	(original)
+++ trunk/doc/C/libgda-4.0-sections.txt	Mon Sep  8 20:51:39 2008
@@ -228,14 +228,17 @@
 <FILE>gda-data-model-query</FILE>
 <TITLE>GdaDataModelQuery</TITLE>
 GdaDataModelQuery
-GdaDataModelQueryOptions
+GdaDataModelQueryError
 GdaDataModelQueryClass
 GdaDataModelQueryPrivate
 gda_data_model_query_new
-gda_data_model_query_get_parameter_list
 gda_data_model_query_refresh
-gda_data_model_query_set_modification_query
-gda_data_model_query_compute_modification_queries
+gda_data_model_query_set_row_selection_condition
+gda_data_model_query_set_row_selection_condition_sql
+gda_data_model_query_compute_row_selection_condition
+gda_data_model_query_set_modification_statement
+gda_data_model_query_set_modification_statement_sql
+gda_data_model_query_compute_modification_statements
 <SUBSECTION Standard>
 GDA_DATA_MODEL_QUERY
 GDA_DATA_MODEL_QUERY_CLASS
@@ -285,6 +288,7 @@
 <FILE>gda-data-model</FILE>
 <TITLE>GdaDataModel</TITLE>
 GdaDataModel
+GdaDataModelError
 gda_data_model_get_n_rows
 gda_data_model_get_n_columns
 gda_data_model_describe_column

Modified: trunk/doc/C/tmpl/gda-config.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-config.sgml	(original)
+++ trunk/doc/C/tmpl/gda-config.sgml	Mon Sep  8 20:51:39 2008
@@ -80,12 +80,12 @@
 @gdaconfig: the object which received the signal.
 @arg1: 
 
-<!-- ##### ARG GdaConfig:system-file ##### -->
+<!-- ##### ARG GdaConfig:system-filename ##### -->
 <para>
 
 </para>
 
-<!-- ##### ARG GdaConfig:user-file ##### -->
+<!-- ##### ARG GdaConfig:user-filename ##### -->
 <para>
 
 </para>

Modified: trunk/doc/C/tmpl/gda-connection.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-connection.sgml	(original)
+++ trunk/doc/C/tmpl/gda-connection.sgml	Mon Sep  8 20:51:39 2008
@@ -6,14 +6,13 @@
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-  The #GdaConnection class offers access to all operations involving an
-  opened connection to a database. #GdaConnection objects are not instiated directly
-  but by #GdaClient objects using gda_client_open_connection() and gda_client_open_connection_from_string()
+  Each connection to a database is represented by a #GdaConnection object. A connection is created (and opened)
+  using gda_connection_open_from_dsn() if a data source has been defined, or gda_connection_open_from_string() otherwise.
+  It is not recommended to create a #GdaConnection object using g_object_new() as the results are unpredictable (some
+  parts won't correctly be initialized).
 </para>
 <para>
-  Applications can then use #GdaConnection objects to execute commands,
-  run transactions, and get information about all objects stored in the
-  underlying database.
+  Use the connection object to execute statements, use transactions, get meta data information, ...
 </para>
 
 <!-- ##### SECTION See_Also ##### -->
@@ -98,7 +97,7 @@
 
 </para>
 
-<!-- ##### ARG GdaConnection:provider-obj ##### -->
+<!-- ##### ARG GdaConnection:provider ##### -->
 <para>
 
 </para>

Modified: trunk/doc/C/tmpl/gda-data-model-iter.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-data-model-iter.sgml	(original)
+++ trunk/doc/C/tmpl/gda-data-model-iter.sgml	Mon Sep  8 20:51:39 2008
@@ -36,6 +36,17 @@
   The gda_data_model_iter_set_at_row() method, if the iterator can be moved both forward and backwards, can move the 
   iterator to a specific row (sometimes faster than moving it forward or backwards a number of times).
 </para>
+<para>
+  The following figure illustrates the #GdaDataModelIter usage:
+  <mediaobject>
+    <imageobject role="html">
+      <imagedata fileref="GdaDataModelIter.png" format="PNG" contentwidth="180mm"/>
+    </imageobject>
+    <textobject>
+      <phrase>GdaDataModelIter's usage</phrase>
+    </textobject>
+  </mediaobject>
+</para>
 
 <!-- ##### SECTION See_Also ##### -->
 <para>

Modified: trunk/doc/C/tmpl/gda-data-model-query.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-data-model-query.sgml	(original)
+++ trunk/doc/C/tmpl/gda-data-model-query.sgml	Mon Sep  8 20:51:39 2008
@@ -6,9 +6,18 @@
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-The #GdaDataModelQuery data model simply stores the values returned by a SELECT query. The connection
-used to execute the SELECT query (given when the object is constructed) is the same as the
-one provided th the #GdaDict object to which the query relates.
+  The #GdaDataModelQuery data model executes a SELECT statement and acts as a thin wrapper
+  around the resulting #GdaDataModel. The benefits of using a #GdaDataModelQuery object are:
+  <itemizedlist>
+    <listitem><para>The data model can re-execute the SELECT statement anytime to have
+	some up-to-date data (appearing in the same data model instead of one new data model
+	object everytime the SELECT statement is executed)</para></listitem>
+    <listitem><para>If the statement needs some parameters, then anytime a parameter is changed, the
+	SELECT statement is re-executed with the new paramet's values</para></listitem>
+    <listitem><para>The #GdaDataModelQuery data model can be modified, the same rules as for the #GdaDataSelect
+	object apply.</para></listitem>
+    <listitem><para>If multiple modifications are to be done, then it can perform them in a transaction</para></listitem>
+  </itemizedlist>
 </para>
 
 <!-- ##### SECTION See_Also ##### -->
@@ -40,6 +49,14 @@
 
 </para>
 
+<!-- ##### ENUM GdaDataModelQueryError ##### -->
+<para>
+
+</para>
+
+ GDA_DATA_MODEL_QUERY_SELECT_STATEMENT_ERROR: 
+ GDA_DATA_MODEL_QUERY_CONNECTION_ERROR: 
+
 <!-- ##### STRUCT GdaDataModelQueryClass ##### -->
 <para>
 
@@ -74,3 +91,67 @@
 @Returns: 
 
 
+<!-- ##### FUNCTION gda_data_model_query_set_row_selection_condition ##### -->
+<para>
+
+</para>
+
+ model: 
+ expr: 
+ error: 
+ Returns: 
+
+
+<!-- ##### FUNCTION gda_data_model_query_set_row_selection_condition_sql ##### -->
+<para>
+
+</para>
+
+ model: 
+ sql_where: 
+ error: 
+ Returns: 
+
+
+<!-- ##### FUNCTION gda_data_model_query_compute_row_selection_condition ##### -->
+<para>
+
+</para>
+
+ model: 
+ error: 
+ Returns: 
+
+
+<!-- ##### FUNCTION gda_data_model_query_set_modification_statement ##### -->
+<para>
+
+</para>
+
+ model: 
+ mod_stmt: 
+ error: 
+ Returns: 
+
+
+<!-- ##### FUNCTION gda_data_model_query_set_modification_statement_sql ##### -->
+<para>
+
+</para>
+
+ model: 
+ sql: 
+ error: 
+ Returns: 
+
+
+<!-- ##### FUNCTION gda_data_model_query_compute_modification_statements ##### -->
+<para>
+
+</para>
+
+ model: 
+ error: 
+ Returns: 
+
+

Modified: trunk/doc/C/tmpl/gda-data-model.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-data-model.sgml	(original)
+++ trunk/doc/C/tmpl/gda-data-model.sgml	Mon Sep  8 20:51:39 2008
@@ -6,7 +6,7 @@
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-A #GdaDataMode represents an array of values organized in rows and columns. All the data in the same 
+A #GdaDataModel represents an array of values organized in rows and columns. All the data in the same 
 column have the same type, and all the data in each row have the same semantic meaning. The #GdaDataModel is
 actually an interface implemented by other objects to support various kinds of data storage and operations.
 </para>

Modified: trunk/doc/C/tmpl/gda-data-select.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-data-select.sgml	(original)
+++ trunk/doc/C/tmpl/gda-data-select.sgml	Mon Sep  8 20:51:39 2008
@@ -53,7 +53,7 @@
 
 </para>
 
-<!-- ##### ARG GdaDataSelect:delete-query ##### -->
+<!-- ##### ARG GdaDataSelect:delete-stmt ##### -->
 <para>
 
 </para>
@@ -63,7 +63,7 @@
 
 </para>
 
-<!-- ##### ARG GdaDataSelect:insert-query ##### -->
+<!-- ##### ARG GdaDataSelect:insert-stmt ##### -->
 <para>
 
 </para>
@@ -83,7 +83,7 @@
 
 </para>
 
-<!-- ##### ARG GdaDataSelect:update-query ##### -->
+<!-- ##### ARG GdaDataSelect:update-stmt ##### -->
 <para>
 
 </para>

Modified: trunk/doc/C/tmpl/gda-server-operation.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-server-operation.sgml	(original)
+++ trunk/doc/C/tmpl/gda-server-operation.sgml	Mon Sep  8 20:51:39 2008
@@ -59,12 +59,12 @@
 
 </para>
 
-<!-- ##### ARG GdaServerOperation:provider-obj ##### -->
+<!-- ##### ARG GdaServerOperation:provider ##### -->
 <para>
 
 </para>
 
-<!-- ##### ARG GdaServerOperation:spec-file ##### -->
+<!-- ##### ARG GdaServerOperation:spec-filename ##### -->
 <para>
 
 </para>

Modified: trunk/doc/C/tmpl/gda-sql-statement.sgml
==============================================================================
--- trunk/doc/C/tmpl/gda-sql-statement.sgml	(original)
+++ trunk/doc/C/tmpl/gda-sql-statement.sgml	Mon Sep  8 20:51:39 2008
@@ -853,7 +853,7 @@
 </para>
 
 @any: inheritance structure
- operator: type of operation
+ operator_type: 
 @operands: list of #GdaSqlExpr operands
 
 <!-- ##### ENUM GdaSqlOperatorType ##### -->
@@ -1154,7 +1154,7 @@
 @type: type of join
 @position: represents a join between a target at (pos &lt; @position) and the one at @position
 @expr: joining expression
- using: list of #GdaSqlField identifying the columns the join is on
+ use: 
 
 <!-- ##### FUNCTION gda_sql_select_join_new ##### -->
 <para>

Modified: trunk/libgda-report/DocBook/gda-report-docbook-document.c
==============================================================================
--- trunk/libgda-report/DocBook/gda-report-docbook-document.c	(original)
+++ trunk/libgda-report/DocBook/gda-report-docbook-document.c	Mon Sep  8 20:51:39 2008
@@ -95,7 +95,7 @@
                                          g_param_spec_string ("java-home", NULL, NULL, NULL, 
 							      G_PARAM_WRITABLE | G_PARAM_READABLE));
 	g_object_class_install_property (object_class, PROP_FOP_PATH,
-                                         g_param_spec_string ("fop_path", NULL, NULL, NULL, 
+                                         g_param_spec_string ("fop-path", NULL, NULL, NULL, 
 							      G_PARAM_WRITABLE | G_PARAM_READABLE));
 
 	/* virtual methods */

Modified: trunk/libgda-report/engine/gda-report-engine.c
==============================================================================
--- trunk/libgda-report/engine/gda-report-engine.c	(original)
+++ trunk/libgda-report/engine/gda-report-engine.c	Mon Sep  8 20:51:39 2008
@@ -274,7 +274,7 @@
 GdaReportEngine *
 gda_report_engine_new_from_file (const gchar *spec_file_name)
 {
-	return (GdaReportEngine *) g_object_new (GDA_TYPE_REPORT_ENGINE, "spec_file", spec_file_name, NULL);
+	return (GdaReportEngine *) g_object_new (GDA_TYPE_REPORT_ENGINE, "spec-filename", spec_file_name, NULL);
 }
 
 /**

Modified: trunk/libgda/gda-config.c
==============================================================================
--- trunk/libgda/gda-config.c	(original)
+++ trunk/libgda/gda-config.c	Mon Sep  8 20:51:39 2008
@@ -173,12 +173,12 @@
 
 	/* To translators: DSN stands for Data Source Name, it's a named connection string defined in ~/.libgda/config */
 	g_object_class_install_property (object_class, PROP_USER_FILE,
-                                         g_param_spec_string ("user_file", _("File to use for per-user DSN list"), 
+                                         g_param_spec_string ("user-filename", _("File to use for per-user DSN list"), 
 							      NULL, NULL,
 							      (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	/* To translators: DSN stands for Data Source Name, it's a named connection string defined in $PREFIX/etc/libgda-4.0/config */
 	g_object_class_install_property (object_class, PROP_USER_FILE,
-                                         g_param_spec_string ("system_file", _("File to use for system-wide DSN list"), 
+                                         g_param_spec_string ("system-filename", _("File to use for system-wide DSN list"), 
 							      NULL, NULL,
 							      (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	
@@ -403,11 +403,11 @@
 								     construct_properties);
 		for (i = 0; i< n_construct_properties; i++) {
 			GObjectConstructParam *prop = &(construct_properties[i]);
-			if (!strcmp (g_param_spec_get_name (prop->pspec), "user_file")) {
+			if (!strcmp (g_param_spec_get_name (prop->pspec), "user-filename")) {
 				user_file_set = TRUE;
 				/*g_print ("GdaConfig user dir set\n");*/
 			}
-			else if (!strcmp (g_param_spec_get_name (prop->pspec), "system_file")) {
+			else if (!strcmp (g_param_spec_get_name (prop->pspec), "system-filename")) {
 				system_file_set = TRUE;
 				/*g_print ("GdaConfig system dir set\n");*/
 			}

Modified: trunk/libgda/gda-connection.c
==============================================================================
--- trunk/libgda/gda-connection.c	(original)
+++ trunk/libgda/gda-connection.c	Mon Sep  8 20:51:39 2008
@@ -188,15 +188,15 @@
                                          g_param_spec_string ("dsn", NULL, _("DSN to use"), NULL,
 							      (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_CNC_STRING,
-                                         g_param_spec_string ("cnc_string", NULL, _("Connection string to use"), NULL,
+                                         g_param_spec_string ("cnc-string", NULL, _("Connection string to use"), NULL,
 							      (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_PROVIDER_OBJ,
-                                         g_param_spec_object ("provider_obj", NULL, _("Provider to use"),
+                                         g_param_spec_object ("provider", NULL, _("Provider to use"),
                                                                GDA_TYPE_SERVER_PROVIDER,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 
         g_object_class_install_property (object_class, PROP_AUTH_STRING,
-                                         g_param_spec_string ("auth_string", NULL,_("Authentication string to use"),
+                                         g_param_spec_string ("auth-string", NULL,_("Authentication string to use"),
                                                               NULL,
                                                               (G_PARAM_READABLE | G_PARAM_WRITABLE)));
         g_object_class_install_property (object_class, PROP_OPTIONS,
@@ -556,16 +556,16 @@
 				cnc = PROV_CLASS (prov)->create_connection (prov);
 				if (cnc) 
 					g_object_set (G_OBJECT (cnc), 
-						      "provider_obj", prov,
+						      "provider", prov,
 						      "dsn", real_dsn,
-						      "auth_string", auth_string ? auth_string : real_auth_string, 
+						      "auth-string", auth_string ? auth_string : real_auth_string, 
 						      "options", options, NULL);
 			}
 			else
 				cnc = g_object_new (GDA_TYPE_CONNECTION, 
-						    "provider_obj", prov, 
+						    "provider", prov, 
 						    "dsn", real_dsn, 
-						    "auth_string", auth_string ? auth_string : real_auth_string, 
+						    "auth-string", auth_string ? auth_string : real_auth_string, 
 						    "options", options, NULL);
 			
 			/* open connection */
@@ -683,16 +683,16 @@
 				cnc = PROV_CLASS (prov)->create_connection (prov);
 				if (cnc) 
 					g_object_set (G_OBJECT (cnc), 
-						      "provider_obj", prov,
-						      "cnc_string", real_cnc,
-						      "auth_string", auth_string ? auth_string : real_auth_string, 
+						      "provider", prov,
+						      "cnc-string", real_cnc,
+						      "auth-string", auth_string ? auth_string : real_auth_string, 
 						      "options", options, NULL);
 			}
 			else 
 				cnc = (GdaConnection *) g_object_new (GDA_TYPE_CONNECTION, 
-								      "provider_obj", prov,
+								      "provider", prov,
 								      "cnc-string", real_cnc, 
-								      "auth_string", auth_string ? auth_string : real_auth_string, 
+								      "auth-string", auth_string ? auth_string : real_auth_string, 
 								      "options", options, NULL);
 			
 			/* open the connection */

Modified: trunk/libgda/gda-data-model-array.c
==============================================================================
--- trunk/libgda/gda-data-model-array.c	(original)
+++ trunk/libgda/gda-data-model-array.c	Mon Sep  8 20:51:39 2008
@@ -165,7 +165,7 @@
 	                                                    0,
 	                                                    G_PARAM_READWRITE));
 	g_object_class_install_property (object_class, PROP_READ_ONLY,
-                                         g_param_spec_boolean ("read_only", NULL, 
+                                         g_param_spec_boolean ("read-only", NULL, 
 							       _("Whether data model can be modified"),
                                                                FALSE,
                                                                G_PARAM_READABLE | G_PARAM_WRITABLE));

Modified: trunk/libgda/gda-data-model-bdb.c
==============================================================================
--- trunk/libgda/gda-data-model-bdb.c	(original)
+++ trunk/libgda/gda-data-model-bdb.c	Mon Sep  8 20:51:39 2008
@@ -158,7 +158,7 @@
                                                               G_PARAM_READABLE | G_PARAM_WRITABLE |
                                                               G_PARAM_CONSTRUCT_ONLY));
         g_object_class_install_property (object_class, PROP_DB_NAME,
-                                         g_param_spec_string ("db_name", "Name of the database", NULL, NULL,
+                                         g_param_spec_string ("db-name", "Name of the database", NULL, NULL,
                                                               G_PARAM_READABLE | G_PARAM_WRITABLE |
                                                               G_PARAM_CONSTRUCT_ONLY));
 
@@ -431,7 +431,7 @@
 
 	g_return_val_if_fail (filename && *filename, NULL);
 
-	model = (GdaDataModel *) g_object_new (GDA_TYPE_DATA_MODEL_BDB, "db_name", db_name, 
+	model = (GdaDataModel *) g_object_new (GDA_TYPE_DATA_MODEL_BDB, "db-name", db_name, 
 					       "filename", filename, NULL);
 
 	return model;

Modified: trunk/libgda/gda-data-model-import.c
==============================================================================
--- trunk/libgda/gda-data-model-import.c	(original)
+++ trunk/libgda/gda-data-model-import.c	Mon Sep  8 20:51:39 2008
@@ -223,7 +223,7 @@
 	object_class->set_property = gda_data_model_import_set_property;
         object_class->get_property = gda_data_model_import_get_property;
 	g_object_class_install_property (object_class, PROP_RANDOM_ACCESS,
-                                         g_param_spec_boolean ("random_access", "Features random access", NULL,
+                                         g_param_spec_boolean ("random-access", "Features random access", NULL,
 							       FALSE,
 							       G_PARAM_READABLE | G_PARAM_WRITABLE |
 							       G_PARAM_CONSTRUCT_ONLY));
@@ -232,11 +232,11 @@
 							      G_PARAM_READABLE | G_PARAM_WRITABLE |
 							      G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (object_class, PROP_DATA_STRING,
-                                         g_param_spec_string ("data_string", "String to import", NULL, NULL,
+                                         g_param_spec_string ("data-string", "String to import", NULL, NULL,
 							      G_PARAM_READABLE | G_PARAM_WRITABLE |
 							      G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (object_class, PROP_XML_NODE,
-                                         g_param_spec_pointer ("xml_node", "XML node to import from", NULL,
+                                         g_param_spec_pointer ("xml-node", "XML node to import from", NULL,
 							      G_PARAM_READABLE | G_PARAM_WRITABLE |
 							      G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (object_class, PROP_OPTIONS,
@@ -696,7 +696,7 @@
 	g_return_val_if_fail (filename, NULL);
 	
 	model = g_object_new (GDA_TYPE_DATA_MODEL_IMPORT,
-			      "random_access", random_access,
+			      "random-access", random_access,
 			      "options", options,
 			      "filename", filename, NULL);
 
@@ -722,9 +722,9 @@
 	GdaDataModelImport *model;
 
 	model = g_object_new (GDA_TYPE_DATA_MODEL_IMPORT,
-			      "random_access", random_access,
+			      "random-access", random_access,
 			      "options", options,
-			      "data_string", data, NULL);
+			      "data-string", data, NULL);
 
 	return GDA_DATA_MODEL (model);
 }
@@ -744,7 +744,7 @@
 	GdaDataModelImport *model;
 
 	model = g_object_new (GDA_TYPE_DATA_MODEL_IMPORT,
-			      "xml_node", node, NULL);
+			      "xml-node", node, NULL);
 
 	return GDA_DATA_MODEL (model);
 }
@@ -1770,7 +1770,7 @@
 	}
 	else
 		iter = (GdaDataModelIter *) g_object_new (GDA_TYPE_DATA_MODEL_ITER, 
-							  "data_model", model, NULL);
+							  "data-model", model, NULL);
 	return iter;
 }
 
@@ -1864,8 +1864,8 @@
 		gboolean update_model;
 		gboolean allok = TRUE;
 		
-		g_object_get (G_OBJECT (iter), "update_model", &update_model, NULL);
-		g_object_set (G_OBJECT (iter), "update_model", FALSE, NULL);
+		g_object_get (G_OBJECT (iter), "update-model", &update_model, NULL);
+		g_object_set (G_OBJECT (iter), "update-model", FALSE, NULL);
 		for (plist = ((GdaSet *) iter)->holders, vlist = next_values;
 		     plist && vlist;
 		     plist = plist->next, vlist = vlist->next) {
@@ -1896,7 +1896,7 @@
 			imodel->priv->iter_row = 0;
 
 		g_object_set (G_OBJECT (iter), "current-row", imodel->priv->iter_row, 
-			      "update_model", update_model, NULL);
+			      "update-model", update_model, NULL);
 
 		return allok;
 	}
@@ -1937,8 +1937,8 @@
 		gboolean update_model;
 		gboolean allok = TRUE;
 
-		g_object_get (G_OBJECT (iter), "update_model", &update_model, NULL);
-		g_object_set (G_OBJECT (iter), "update_model", FALSE, NULL);
+		g_object_get (G_OBJECT (iter), "update-model", &update_model, NULL);
+		g_object_set (G_OBJECT (iter), "update-model", FALSE, NULL);
 		for (plist = ((GdaSet *) iter)->holders, vlist = imodel->priv->cursor_values;
 		     plist && vlist;
 		     plist = plist->next, vlist = vlist->next) {
@@ -1969,7 +1969,7 @@
 
 		g_assert (imodel->priv->iter_row >= 0);
 		g_object_set (G_OBJECT (iter), "current-row", imodel->priv->iter_row, 
-			      "update_model", update_model, NULL);
+			      "update-model", update_model, NULL);
 		return allok;
 	}
 	else {

Modified: trunk/libgda/gda-data-model-iter.c
==============================================================================
--- trunk/libgda/gda-data-model-iter.c	(original)
+++ trunk/libgda/gda-data-model-iter.c	Mon Sep  8 20:51:39 2008
@@ -186,20 +186,20 @@
 	object_class->set_property = gda_data_model_iter_set_property;
 	object_class->get_property = gda_data_model_iter_get_property;
 	g_object_class_install_property (object_class, PROP_DATA_MODEL,
-					 g_param_spec_object ("data_model", "Data model for which the iter is for", NULL,
+					 g_param_spec_object ("data-model", "Data model for which the iter is for", NULL,
                                                                GDA_TYPE_DATA_MODEL, 
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE |
 								G_PARAM_CONSTRUCT_ONLY)));
 	g_object_class_install_property (object_class, PROP_FORCED_MODEL,
-					 g_param_spec_object ("forced_model", NULL, NULL, 
+					 g_param_spec_object ("forced-model", NULL, NULL, 
                                                                GDA_TYPE_DATA_MODEL,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_CURRENT_ROW,
-					 g_param_spec_int ("current_row", "Current represented row in the data model", 
+					 g_param_spec_int ("current-row", "Current represented row in the data model", 
 							   NULL, -1, G_MAXINT, -1,
 							   (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_UPDATE_MODEL,
-					 g_param_spec_boolean ("update_model", "Tells if parameters changes are forwarded "
+					 g_param_spec_boolean ("update-model", "Tells if parameters changes are forwarded "
 							       "to the GdaDataModel", NULL, TRUE,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 }
@@ -398,9 +398,10 @@
 				gchar *str;
 				column = gda_data_model_describe_column (model, col);
 				param = (GdaHolder *) g_object_new (GDA_TYPE_HOLDER, 
-								    "g_type", 
+								    "g-type", 
 								    gda_column_get_g_type (column), NULL);
 
+				/*g_print ("COL %d allow null=%d\n", col, gda_column_get_allow_null (column));*/
 				gda_holder_set_not_null (param, !gda_column_get_allow_null (column));
 				g_object_get (G_OBJECT (column), "id", &str, NULL);
 				if (str) {
@@ -530,7 +531,7 @@
  * Synchronizes the values of the parameters in @iter with the values at the @row row.
  *
  * If @row is not a valid row, then the returned value is FALSE, and the "current-row"
- * property is set to -1.
+ * property is set to -1 (which means that gda_data_model_iter_is_valid() would return FALSE)
  *
  * If any other error occurred then the returned value is FALSE, but the "current-row"
  * property is set to the @row row.
@@ -564,8 +565,8 @@
  * (synchronizes the values of the parameters in @iter with the values at the new row).
  *
  * If the iterator was on the data model's last row, then it can't be moved forward
- * anymore, and the returned value is FALSE (nore also that the "current-row" property
- * is set to -1).
+ * anymore, and the returned value is FALSE; nore also that the "current-row" property
+ * is set to -1 (which means that gda_data_model_iter_is_valid() would return FALSE)
  *
  * If any other error occurred then the returned value is FALSE, but the "current-row"
  * property is set to the new current row (one row more than it was before the call).
@@ -589,8 +590,8 @@
  * with the values at the new row).
  *
  * If the iterator was on the data model's first row, then it can't be moved backwards
- * anymore, and the returned value is FALSE (nore also that the "current-row" property
- * is set to -1).
+ * anymore, and the returned value is FALSE; note also that the "current-row" property
+ * is set to -1 (which means that gda_data_model_iter_is_valid() would return FALSE).
  *
  * If any other error occurred then the returned value is FALSE, but the "current-row"
  * property is set to the new current row (one row less than it was before the call).
@@ -612,7 +613,7 @@
  *
  * Get the row which @iter represents in the data model
  *
- * Returns: the row number, or -1 if not available
+ * Returns: the row number, or -1 if @iter is invalid
  */
 gint
 gda_data_model_iter_get_row (GdaDataModelIter *iter)
@@ -709,9 +710,9 @@
  * @iter: a #GdaDataModelIter object
  * @col: the requested column
  *
- * Get the value stored at the column @col in @iter
+ * Get the value stored at the column @col in @iter. The returned value must not be modified.
  *
- * Returns: the #GValue, or %NULL
+ * Returns: the #GValue, or %NULL if the value could not be fetched
  */
 const GValue *
 gda_data_model_iter_get_value_at (GdaDataModelIter *iter, gint col)

Modified: trunk/libgda/gda-data-model-query.c
==============================================================================
--- trunk/libgda/gda-data-model-query.c	(original)
+++ trunk/libgda/gda-data-model-query.c	Mon Sep  8 20:51:39 2008
@@ -326,8 +326,11 @@
 			break;
 		case PROP_PARAMS:
 			model->priv->params = g_value_get_object (value);
-			if (model->priv->params)
+			if (model->priv->params) {
 				g_object_ref (model->priv->params);
+				g_signal_connect (model->priv->params, "holder-changed",
+						  G_CALLBACK (holder_changed_cb), model);
+			}
 			break;
 		default:
 			g_assert_not_reached ();
@@ -367,6 +370,7 @@
 static void
 holder_changed_cb (GdaSet *paramlist, GdaHolder *param, GdaDataModelQuery *model)
 {
+	gda_data_model_query_refresh (model, NULL);
 }
 
 /**
@@ -378,6 +382,10 @@
  * Creates a new #GdaDataModel object using the data returned by the execution of the
  * @select_stmt SELECT statement.
  *
+ * Note: if @select_stmt contains one or more parameters, then @params should not be %NULL otherwise
+ * the resulting object will never contain anything and will be unuseable as the SELECT statement
+ * will never be successfully be executed.
+ *
  * Returns: a pointer to the newly created #GdaDataModel.
  */
 GdaDataModelQuery *
@@ -502,6 +510,7 @@
 	g_signal_connect (model->priv->data, "row-updated",
 			  G_CALLBACK (data_select_row_updated_cb), model);
 
+	/* emit the "reset" signal */
 	gda_data_model_reset ((GdaDataModel *) model);
 	return TRUE;
 }
@@ -737,10 +746,10 @@
 	selmodel = (GdaDataModelQuery*) model;
 	g_return_val_if_fail (selmodel->priv, 0);
 	
-	if (selmodel->priv->data)
-		return gda_data_model_get_n_columns (selmodel->priv->data);
-	else
+	if (!selmodel->priv->data)
 		return 0;
+	else
+		return gda_data_model_get_n_columns (selmodel->priv->data);
 }
 
 static GdaColumn *

Modified: trunk/libgda/gda-data-model.c
==============================================================================
--- trunk/libgda/gda-data-model.c	(original)
+++ trunk/libgda/gda-data-model.c	Mon Sep  8 20:51:39 2008
@@ -766,7 +766,7 @@
 	else 
 		/* default method */
 		return  g_object_new (GDA_TYPE_DATA_MODEL_ITER, 
-				      "data_model", model, NULL);
+				      "data-model", model, NULL);
 }
 
 /**
@@ -814,33 +814,33 @@
 	/* validity tests */
 	if ((row < 0) || (row >= gda_data_model_get_n_rows (model))) {
 		gda_data_model_iter_invalidate_contents (iter);
-		g_object_set (G_OBJECT (iter), "current_row", -1, NULL);
+		g_object_set (G_OBJECT (iter), "current-row", -1, NULL);
 		return FALSE;
 	}
 		
 	g_return_val_if_fail (GDA_IS_DATA_MODEL_ITER (iter), FALSE);
 	
-	g_object_get (G_OBJECT (iter), "data_model", &test, NULL);
+	g_object_get (G_OBJECT (iter), "data-model", &test, NULL);
 	g_return_val_if_fail (test == model, FALSE);
 	g_object_unref (test);
 	
 	/* actual sync. */
-	g_object_get (G_OBJECT (iter), "update_model", &update_model, NULL);
-	g_object_set (G_OBJECT (iter), "update_model", FALSE, NULL);
+	g_object_get (G_OBJECT (iter), "update-model", &update_model, NULL);
+	g_object_set (G_OBJECT (iter), "update-model", FALSE, NULL);
 	for (col = 0, list = ((GdaSet *) iter)->holders; list; col++, list = list->next) {
 		const GValue *cvalue;
 		cvalue = gda_data_model_get_value_at (model, col, row, NULL);
 		if (!cvalue || 
 		    !gda_holder_set_value ((GdaHolder*) list->data, cvalue, NULL)) {
-			g_object_set (G_OBJECT (iter), "current_row", row, 
-				      "update_model", update_model, NULL);
+			g_object_set (G_OBJECT (iter), "current-row", row, 
+				      "update-model", update_model, NULL);
 			gda_data_model_iter_invalidate_contents (iter);
 			return FALSE;
 		}
 		set_param_attributes ((GdaHolder*) list->data, 
 				      gda_data_model_get_attributes_at (model, col, row));
 	}
-	g_object_set (G_OBJECT (iter), "current_row", row, "update_model", update_model, NULL);
+	g_object_set (G_OBJECT (iter), "current-row", row, "update-model", update_model, NULL);
 	return TRUE;
 }
 
@@ -850,7 +850,6 @@
 	if (flags & GDA_VALUE_ATTR_IS_DEFAULT)
 		gda_holder_set_value_to_default (holder);
 
-	gda_holder_set_not_null (holder, ! (flags & GDA_VALUE_ATTR_CAN_BE_NULL));
 	if (flags & GDA_VALUE_ATTR_IS_NULL)
 		gda_holder_set_value (holder, NULL, NULL);
 	if (flags & GDA_VALUE_ATTR_DATA_NON_VALID)
@@ -897,36 +896,36 @@
 	
 	g_return_val_if_fail (GDA_IS_DATA_MODEL_ITER (iter), FALSE);
 	
-	g_object_get (G_OBJECT (iter), "data_model", &test, NULL);
+	g_object_get (G_OBJECT (iter), "data-model", &test, NULL);
 	g_return_val_if_fail (test == model, FALSE);
 	g_object_unref (test);
 
-	g_object_get (G_OBJECT (iter), "current_row", &row, NULL);
+	g_object_get (G_OBJECT (iter), "current-row", &row, NULL);
 	row++;
 	if (row >= gda_data_model_get_n_rows (model)) {
 		gda_data_model_iter_invalidate_contents (iter);
-		g_object_set (G_OBJECT (iter), "current_row", -1, NULL);
+		g_object_set (G_OBJECT (iter), "current-row", -1, NULL);
 		return FALSE;
 	}
 	
 	/* actual sync. */
-	g_object_get (G_OBJECT (iter), "update_model", &update_model, NULL);
-	g_object_set (G_OBJECT (iter), "update_model", FALSE, NULL);
+	g_object_get (G_OBJECT (iter), "update-model", &update_model, NULL);
+	g_object_set (G_OBJECT (iter), "update-model", FALSE, NULL);
 	for (col = 0, list = ((GdaSet *) iter)->holders; list; col++, list = list->next) {
 		const GValue *cvalue;
 		cvalue = gda_data_model_get_value_at (model, col, row, NULL);
 		if (!cvalue || 
 		    !gda_holder_set_value ((GdaHolder *) list->data, cvalue, NULL)) {
-			g_object_set (G_OBJECT (iter), "current_row", row, 
-				      "update_model", update_model, NULL);
+			g_object_set (G_OBJECT (iter), "current-row", row, 
+				      "update-model", update_model, NULL);
 			gda_data_model_iter_invalidate_contents (iter);
 			return FALSE;
 		}
 		set_param_attributes ((GdaHolder *) list->data, 
 				      gda_data_model_get_attributes_at (model, col, row));
 	}
-	g_object_set (G_OBJECT (iter), "current_row", row, 
-		      "update_model", update_model, NULL);
+	g_object_set (G_OBJECT (iter), "current-row", row, 
+		      "update-model", update_model, NULL);
 	return TRUE;
 }
 
@@ -970,36 +969,36 @@
 	
 	g_return_val_if_fail (GDA_IS_DATA_MODEL_ITER (iter), FALSE);
 	
-	g_object_get (G_OBJECT (iter), "data_model", &test, NULL);
+	g_object_get (G_OBJECT (iter), "data-model", &test, NULL);
 	g_return_val_if_fail (test == model, FALSE);
 	g_object_unref (test);
 
-	g_object_get (G_OBJECT (iter), "current_row", &row, NULL);
+	g_object_get (G_OBJECT (iter), "current-row", &row, NULL);
 	row--;
 	if (row < 0) {
 		gda_data_model_iter_invalidate_contents (iter);
-		g_object_set (G_OBJECT (iter), "current_row", -1, NULL);
+		g_object_set (G_OBJECT (iter), "current-row", -1, NULL);
 		return FALSE;
 	}
 	
 	/* actual sync. */
-	g_object_get (G_OBJECT (iter), "update_model", &update_model, NULL);
-	g_object_set (G_OBJECT (iter), "update_model", FALSE, NULL);
+	g_object_get (G_OBJECT (iter), "update-model", &update_model, NULL);
+	g_object_set (G_OBJECT (iter), "update-model", FALSE, NULL);
 	for (col = 0, list = ((GdaSet *) iter)->holders; list; col++, list = list->next) {
 		const GValue *cvalue;
 		cvalue = gda_data_model_get_value_at (model, col, row, NULL);
 		if (!cvalue || 
 		    !gda_holder_set_value ((GdaHolder*) list->data, cvalue, NULL)) {
-			g_object_set (G_OBJECT (iter), "current_row", row, 
-				      "update_model", update_model, NULL);
+			g_object_set (G_OBJECT (iter), "current-row", row, 
+				      "update-model", update_model, NULL);
 			gda_data_model_iter_invalidate_contents (iter);
 			return FALSE;
 		}
 		set_param_attributes ((GdaHolder*) list->data,
 				      gda_data_model_get_attributes_at (model, col, row));
 	}
-	g_object_set (G_OBJECT (iter), "current_row", row, 
-		      "update_model", update_model, NULL);
+	g_object_set (G_OBJECT (iter), "current-row", row, 
+		      "update-model", update_model, NULL);
 	return TRUE;
 }
 

Modified: trunk/libgda/gda-data-proxy.c
==============================================================================
--- trunk/libgda/gda-data-proxy.c	(original)
+++ trunk/libgda/gda-data-proxy.c	Mon Sep  8 20:51:39 2008
@@ -602,13 +602,13 @@
                                                                GDA_TYPE_DATA_MODEL,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)));
 	g_object_class_install_property (object_class, PROP_ADD_NULL_ENTRY,
-					 g_param_spec_boolean ("prepend_null_entry", NULL, NULL, FALSE,
+					 g_param_spec_boolean ("prepend-null-entry", NULL, NULL, FALSE,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_DEFER_SYNC,
-					 g_param_spec_boolean ("defer_sync", NULL, NULL, TRUE,
+					 g_param_spec_boolean ("defer-sync", NULL, NULL, TRUE,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_SAMPLE_SIZE,
-					 g_param_spec_int ("sample_size", NULL, NULL, 0, G_MAXINT - 1, 300,
+					 g_param_spec_int ("sample-size", NULL, NULL, 0, G_MAXINT - 1, 300,
 							   (G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)));
 
 	g_static_mutex_lock (&parser_mutex);
@@ -1054,7 +1054,7 @@
 	g_object_ref (G_OBJECT (model));
 	clean_proxy (proxy);
 	gda_data_proxy_init (proxy);
-	g_object_set (G_OBJECT (proxy), "model", model, "prepend_null_entry", add_null_entry, NULL);
+	g_object_set (G_OBJECT (proxy), "model", model, "prepend-null-entry", add_null_entry, NULL);
 	g_object_unref (G_OBJECT (model));
 	gda_data_model_reset (GDA_DATA_MODEL (proxy));
 }
@@ -3359,7 +3359,7 @@
 	g_return_val_if_fail (proxy->priv, FALSE);
 
 	iter = gda_data_model_create_iter (proxy->priv->model);
-	g_object_set (G_OBJECT (iter), "forced_model", proxy, NULL);
+	g_object_set (G_OBJECT (iter), "forced-model", proxy, NULL);
 
 	iter2 = gda_data_model_create_iter (proxy->priv->model);
 	if (iter2) {

Modified: trunk/libgda/gda-data-select.c
==============================================================================
--- trunk/libgda/gda-data-select.c	(original)
+++ trunk/libgda/gda-data-select.c	Mon Sep  8 20:51:39 2008
@@ -227,19 +227,19 @@
 							      GDA_TYPE_SET,
 							      G_PARAM_WRITABLE | G_PARAM_READABLE | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (object_class, PROP_INS_QUERY,
-                                         g_param_spec_object ("insert_query", "INSERT query", 
+                                         g_param_spec_object ("insert-stmt", "INSERT query", 
 							      "INSERT Query to be executed to add data",
 							      GDA_TYPE_STATEMENT,
 							      G_PARAM_READABLE | G_PARAM_WRITABLE));
 
 	g_object_class_install_property (object_class, PROP_UPD_QUERY,
-                                         g_param_spec_object ("update_query", "UPDATE query", 
+                                         g_param_spec_object ("update-stmt", "UPDATE query", 
 							      "UPDATE Query to be executed to update data",
 							      GDA_TYPE_STATEMENT,
 							      G_PARAM_READABLE | G_PARAM_WRITABLE));
 
 	g_object_class_install_property (object_class, PROP_DEL_QUERY,
-                                         g_param_spec_object ("delete_query", "DELETE query", 
+                                         g_param_spec_object ("delete-stmt", "DELETE query", 
 							      "DELETE Query to be executed to remove data",
 							      GDA_TYPE_STATEMENT,
 							      G_PARAM_READABLE | G_PARAM_WRITABLE));
@@ -473,7 +473,7 @@
 			model->priv->columns = g_slist_append (model->priv->columns, 
 							       gda_column_copy (GDA_COLUMN (list->data)));
 	}
-	else 
+	else {
 		/* create columns */
 		for (i = 0; i < model->prep_stmt->ncols; i++) {
 			GdaColumn *gda_col;
@@ -482,6 +482,7 @@
 				gda_column_set_g_type (gda_col, model->prep_stmt->types [i]);
 			model->priv->columns = g_slist_append (model->priv->columns, gda_col);
 		}
+	}
 }
 
 static void
@@ -1596,12 +1597,12 @@
 
 	if (imodel->priv->usage_flags & GDA_DATA_MODEL_ACCESS_RANDOM) 
 		return (GdaDataModelIter *) g_object_new (GDA_TYPE_DATA_MODEL_ITER,
-							  "data_model", model, NULL);
+							  "data-model", model, NULL);
 	else {
 		/* Create the iter if necessary, or just return the existing iter: */
 		if (! imodel->priv->iter) {
 			imodel->priv->iter = (GdaDataModelIter *) g_object_new (GDA_TYPE_DATA_MODEL_ITER,
-										"data_model", model, NULL);
+										"data-model", model, NULL);
 			imodel->priv->iter_row = -1;
 		}
 		g_object_ref (imodel->priv->iter);
@@ -1640,8 +1641,12 @@
 	irow = GPOINTER_TO_INT (g_hash_table_lookup (imodel->priv->index, GINT_TO_POINTER (int_row + 1)));
 	if (irow > 0)
 		prow = g_array_index (imodel->priv->rows, GdaRow *, irow - 1);
-	if (!CLASS (model)->fetch_next (imodel, &prow, int_row, NULL))
-		TO_IMPLEMENT;
+	if (!CLASS (model)->fetch_next (imodel, &prow, int_row, NULL)) {
+		/* an error occurred */
+		g_object_set (G_OBJECT (iter), "current-row", target_iter_row, NULL);
+		gda_data_model_iter_invalidate_contents (iter);
+		return FALSE;
+	}
 	
 	if (prow) {
 		imodel->priv->iter_row = target_iter_row;
@@ -1688,8 +1693,12 @@
 	irow = GPOINTER_TO_INT (g_hash_table_lookup (imodel->priv->index, GINT_TO_POINTER (int_row + 1)));
 	if (irow > 0)
 		prow = g_array_index (imodel->priv->rows, GdaRow *, irow - 1);
-	if (!CLASS (model)->fetch_prev (imodel, &prow, int_row, NULL))
-		TO_IMPLEMENT;
+	if (!CLASS (model)->fetch_prev (imodel, &prow, int_row, NULL)) {
+		/* an error occurred */
+		g_object_set (G_OBJECT (iter), "current-row", target_iter_row, NULL);
+		gda_data_model_iter_invalidate_contents (iter);
+		return FALSE;
+	}
 
 	if (prow) {
 		imodel->priv->iter_row = target_iter_row;
@@ -1715,7 +1724,7 @@
 
 	int_row = external_to_internal_row (imodel, row, NULL);
 	if (imodel->priv->usage_flags & GDA_DATA_MODEL_ACCESS_RANDOM) 
-		return gda_data_model_move_iter_at_row_default (model, iter, int_row);
+		return gda_data_model_move_iter_at_row_default (model, iter, row);
 
         g_return_val_if_fail (iter, FALSE);
         g_return_val_if_fail (imodel->priv->iter == iter, FALSE);
@@ -1726,8 +1735,13 @@
 		prow = g_array_index (imodel->priv->rows, GdaRow *, irow - 1);
 
 	if (CLASS (model)->fetch_at) {
-		if (!CLASS (model)->fetch_at (imodel, &prow, int_row, NULL))
-			TO_IMPLEMENT;
+		if (!CLASS (model)->fetch_at (imodel, &prow, int_row, NULL)) {
+			/* an error occurred */
+			g_object_set (G_OBJECT (iter), "current-row", row, NULL);
+			gda_data_model_iter_invalidate_contents (iter);
+			return FALSE;
+		}
+
 		if (prow) {
 			imodel->priv->iter_row = row;
 			return update_iter (imodel, prow);
@@ -1746,6 +1760,8 @@
 		else {
 			/* implementation of fetch_at() is optional */
 			TO_IMPLEMENT; /* iter back or forward the right number of times */
+			g_object_set (G_OBJECT (iter), "current-row", row, NULL);
+			gda_data_model_iter_invalidate_contents (iter);
 			return FALSE;
 		}
 	}
@@ -1760,9 +1776,9 @@
 	gboolean update_model;
 	gboolean retval = TRUE;
 	
-	g_object_get (G_OBJECT (iter), "update_model", &update_model, NULL);
+	g_object_get (G_OBJECT (iter), "update-model", &update_model, NULL);
 	if (update_model)
-		g_object_set (G_OBJECT (iter), "update_model", FALSE, NULL);
+		g_object_set (G_OBJECT (iter), "update-model", FALSE, NULL);
 	
 	for (i = 0, plist = GDA_SET (iter)->holders; 
 	     plist;
@@ -1775,7 +1791,7 @@
 
 	g_object_set (G_OBJECT (iter), "current-row", imodel->priv->iter_row, NULL);
 	if (update_model)
-		g_object_set (G_OBJECT (iter), "update_model", update_model, NULL);
+		g_object_set (G_OBJECT (iter), "update-model", update_model, NULL);
 
 	return retval;
 }

Modified: trunk/libgda/gda-data-select.h
==============================================================================
--- trunk/libgda/gda-data-select.h	(original)
+++ trunk/libgda/gda-data-select.h	Mon Sep  8 20:51:39 2008
@@ -48,7 +48,6 @@
 	GDA_DATA_SELECT_MODIFICATION_STATEMENT_ERROR,
 	GDA_DATA_SELECT_MISSING_MODIFICATION_STATEMENT_ERROR,
 	GDA_DATA_SELECT_CONNECTION_ERROR,
-	GDA_DATA_SELECT_VALUE_ERROR,
 	GDA_DATA_SELECT_ACCESS_ERROR,
 	GDA_DATA_SELECT_SQL_ERROR,
 	GDA_DATA_SELECT_SAFETY_LOCKED_ERROR

Modified: trunk/libgda/gda-holder.c
==============================================================================
--- trunk/libgda/gda-holder.c	(original)
+++ trunk/libgda/gda-holder.c	Mon Sep  8 20:51:39 2008
@@ -183,7 +183,7 @@
 					 g_param_spec_string ("description", NULL, NULL, NULL, 
 							      (G_PARAM_READABLE | G_PARAM_WRITABLE)));
         g_object_class_install_property (object_class, PROP_GDA_TYPE,
-                                         g_param_spec_ulong ("g_type", NULL, NULL,
+                                         g_param_spec_ulong ("g-type", NULL, NULL,
 							   0, G_MAXULONG, GDA_TYPE_NULL,
 							   (G_PARAM_READABLE | 
 							    G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)));
@@ -191,22 +191,22 @@
 					 g_param_spec_string ("plugin", NULL, NULL, NULL, 
 							      (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_NOT_NULL,
-					 g_param_spec_boolean ("not_null", NULL, NULL, FALSE,
+					 g_param_spec_boolean ("not-null", NULL, NULL, FALSE,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_SIMPLE_BIND,
-					 g_param_spec_object ("simple_bind", NULL, NULL, 
+					 g_param_spec_object ("simple-bind", NULL, NULL, 
                                                                GDA_TYPE_HOLDER,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_FULL_BIND,
-					 g_param_spec_object ("full_bind", NULL, NULL, 
+					 g_param_spec_object ("full-bind", NULL, NULL, 
                                                                GDA_TYPE_HOLDER,
 							       (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 	g_object_class_install_property (object_class, PROP_SOURCE_MODEL,
-                                         g_param_spec_object ("source_model", NULL, NULL,
+                                         g_param_spec_object ("source-model", NULL, NULL,
                                                                GDA_TYPE_DATA_MODEL,
                                                                (G_PARAM_READABLE | G_PARAM_WRITABLE)));
         g_object_class_install_property (object_class, PROP_SOURCE_COLUMN,
-                                         g_param_spec_int ("source_column", NULL, NULL,
+                                         g_param_spec_int ("source-column", NULL, NULL,
 							   0, G_MAXINT, 0,
 							   (G_PARAM_READABLE | G_PARAM_WRITABLE)));
 }
@@ -251,7 +251,7 @@
 
 	g_return_val_if_fail (type != G_TYPE_INVALID, NULL);
 
-        obj = g_object_new (GDA_TYPE_HOLDER, "g_type", type, NULL);
+        obj = g_object_new (GDA_TYPE_HOLDER, "g-type", type, NULL);
 
         return (GdaHolder *) obj;
 }
@@ -274,7 +274,7 @@
 	g_return_val_if_fail (orig && GDA_IS_HOLDER (orig), NULL);
 	g_return_val_if_fail (orig->priv, NULL);
 
-	obj = g_object_new (GDA_TYPE_HOLDER, "g_type", orig->priv->g_type, NULL);
+	obj = g_object_new (GDA_TYPE_HOLDER, "g-type", orig->priv->g_type, NULL);
 	holder = GDA_HOLDER (obj);
 
 	if (orig->priv->id)
@@ -1094,7 +1094,7 @@
 	g_return_if_fail (GDA_IS_HOLDER (holder));
 	g_return_if_fail (holder->priv);
 
-	g_object_set (G_OBJECT (holder), "not_null", not_null, NULL);
+	g_object_set (G_OBJECT (holder), "not-null", not_null, NULL);
 }
 
 /**

Modified: trunk/libgda/gda-meta-store.c
==============================================================================
--- trunk/libgda/gda-meta-store.c	(original)
+++ trunk/libgda/gda-meta-store.c	Mon Sep  8 20:51:39 2008
@@ -501,7 +501,7 @@
 			if (g_value_get_string (prop->value))
 				been_specified = TRUE;
 		}
-		else if (!strcmp (g_param_spec_get_name (prop->pspec), "system_file")) {
+		else if (!strcmp (g_param_spec_get_name (prop->pspec), "system-filename")) {
 			if (g_value_get_pointer (prop->value))
 				been_specified = TRUE;
 		}

Modified: trunk/libgda/gda-row.c
==============================================================================
--- trunk/libgda/gda-row.c	(original)
+++ trunk/libgda/gda-row.c	Mon Sep  8 20:51:39 2008
@@ -73,7 +73,7 @@
         object_class->get_property = gda_row_get_property;
 
 	g_object_class_install_property (object_class, PROP_NB_VALUES,
-                                         g_param_spec_int ("nb_values", NULL, NULL,
+                                         g_param_spec_int ("nb-values", NULL, NULL,
 							   1, G_MAXINT, 1, 
 							   G_PARAM_WRITABLE));
 }
@@ -210,7 +210,7 @@
 {
         g_return_val_if_fail (count > 0, NULL);
 	
-	return (GdaRow*) g_object_new (GDA_TYPE_ROW, "nb_values", count, NULL);
+	return (GdaRow*) g_object_new (GDA_TYPE_ROW, "nb-values", count, NULL);
 }
 
 /**

Modified: trunk/libgda/gda-server-operation.c
==============================================================================
--- trunk/libgda/gda-server-operation.c	(original)
+++ trunk/libgda/gda-server-operation.c	Mon Sep  8 20:51:39 2008
@@ -169,14 +169,14 @@
 							      GDA_TYPE_CONNECTION,
 							      G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (object_class, PROP_PROV,
-					 g_param_spec_object ("provider_obj", NULL, NULL, 
+					 g_param_spec_object ("provider", NULL, NULL, 
 							      GDA_TYPE_SERVER_PROVIDER,
 							      G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (object_class, PROP_SPEC_FILE,
-					 g_param_spec_string ("spec_file", NULL, NULL, 
+					 g_param_spec_string ("spec-filename", NULL, NULL, 
 							      NULL, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (object_class, PROP_OP_TYPE,
-					 g_param_spec_int ("op_type", NULL, NULL, 
+					 g_param_spec_int ("op-type", NULL, NULL, 
 							   0, GDA_SERVER_OPERATION_LAST - 1, 
 							   0, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
 }
@@ -881,7 +881,7 @@
 			/* find data type and create GdaHolder */
 			gdatype = xmlGetProp (node, BAD_CAST "gdatype");
 			param = GDA_HOLDER (g_object_new (GDA_TYPE_HOLDER,
-							  "g_type", 
+							  "g-type", 
 							  gdatype ? gda_g_type_from_string ((gchar*) gdatype) : G_TYPE_STRING,
 							  NULL));
 			if (gdatype)
@@ -958,7 +958,7 @@
 {
 	GObject *obj;
 
-	obj = g_object_new (GDA_TYPE_SERVER_OPERATION, "op_type", op_type, "spec_file", xml_file, NULL);
+	obj = g_object_new (GDA_TYPE_SERVER_OPERATION, "op-type", op_type, "spec-filename", xml_file, NULL);
 #ifdef GDA_DEBUG_NO
 	{
 		g_print ("New GdaServerOperation:\n");

Modified: trunk/libgda/gda-set.c
==============================================================================
--- trunk/libgda/gda-set.c	(original)
+++ trunk/libgda/gda-set.c	Mon Sep  8 20:51:39 2008
@@ -353,7 +353,7 @@
 
 		id = va_arg (ap, char *);
 		type = va_arg (ap, GType);
-		holder = (GdaHolder *) g_object_new (GDA_TYPE_HOLDER, "g_type", type, "id", id, NULL);
+		holder = (GdaHolder *) g_object_new (GDA_TYPE_HOLDER, "g-type", type, "id", id, NULL);
 
 		value = gda_value_new (type);
 		if (type == G_TYPE_BOOLEAN) 
@@ -740,7 +740,7 @@
 
 			if (!holder) {
 				holder = (GdaHolder*) (g_object_new (GDA_TYPE_HOLDER,
-								     "g_type", 
+								     "g-type", 
 								     gdatype ? gda_g_type_from_string ((gchar *) gdatype) : G_TYPE_STRING,
 								     NULL));
 				holders = g_slist_append (holders, holder);

Modified: trunk/libgda/gda-set.h
==============================================================================
--- trunk/libgda/gda-set.h	(original)
+++ trunk/libgda/gda-set.h	Mon Sep  8 20:51:39 2008
@@ -39,14 +39,6 @@
 
 typedef enum
 {
-	/*GDA_SET_NO_NODE_ERROR,
-	GDA_SET_NODE_OUTDATED_ERROR,
-	GDA_SET_VALUE_PROV_OBJ_TYPE_ERROR,
-	GDA_SET_VALUE_PROV_DATA_TYPE_ERROR,
-	GDA_SET_VALUE_PROV_INVISIBLE_ERROR,
-	GDA_SET_VALUE_PROV_QUERY_TYPE_ERROR,
-	GDA_SET_DEPENDENCY_NOT_IN_SET_ERROR,
-	GDA_SET_DEPENDENCY_POSITION_ERROR,*/
 	GDA_SET_XML_SPEC_ERROR
 } GdaSetError;
 

Modified: trunk/libgda/sqlite/gda-sqlite-recordset.c
==============================================================================
--- trunk/libgda/sqlite/gda-sqlite-recordset.c	(original)
+++ trunk/libgda/sqlite/gda-sqlite-recordset.c	Mon Sep  8 20:51:39 2008
@@ -253,8 +253,9 @@
 			gda_column_set_defined_size (column, -1);
 			gda_column_set_primary_key (column, pkey);
 			gda_column_set_unique_key (column, pkey);
-			gda_column_set_allow_null (column, !notnull);
+			gda_column_set_allow_null (column, !(pkey || notnull)); /* PK fields can't be NULL */
 			gda_column_set_auto_increment (column, autoinc);
+			/*g_print (".. %d pkey=>%d autoinc=>%d notnull=>%d\n", i, pkey, autoinc, notnull);*/
 			
 			ctype = sqlite3_column_decltype (ps->sqlite_stmt, i);
 			if (ctype) {

Modified: trunk/libgda/sqlite/virtual/gda-vconnection-data-model.c
==============================================================================
--- trunk/libgda/sqlite/virtual/gda-vconnection-data-model.c	(original)
+++ trunk/libgda/sqlite/virtual/gda-vconnection-data-model.c	Mon Sep  8 20:51:39 2008
@@ -75,7 +75,7 @@
 	cnc->priv = g_new (GdaVconnectionDataModelPrivate, 1);
 	cnc->priv->table_data_list = NULL;
 
-	g_object_set (G_OBJECT (cnc), "cnc_string", "_IS_VIRTUAL=TRUE", NULL);
+	g_object_set (G_OBJECT (cnc), "cnc-string", "_IS_VIRTUAL=TRUE", NULL);
 }
 
 static void

Modified: trunk/libgda/sqlite/virtual/gda-virtual-connection.c
==============================================================================
--- trunk/libgda/sqlite/virtual/gda-virtual-connection.c	(original)
+++ trunk/libgda/sqlite/virtual/gda-virtual-connection.c	Mon Sep  8 20:51:39 2008
@@ -138,7 +138,7 @@
 	if (PROV_CLASS (virtual_provider)->create_connection) {
 		cnc = PROV_CLASS (virtual_provider)->create_connection ((GdaServerProvider*) virtual_provider);
 		if (cnc) {
-			g_object_set (G_OBJECT (cnc), "provider_obj", virtual_provider, NULL);
+			g_object_set (G_OBJECT (cnc), "provider", virtual_provider, NULL);
 			if (!gda_connection_open (cnc, error)) {
 				g_object_unref (cnc);
 				cnc = NULL;

Modified: trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c
==============================================================================
--- trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c	(original)
+++ trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c	Mon Sep  8 20:51:39 2008
@@ -245,7 +245,7 @@
 	GdaConnection *cnc;
 	g_return_val_if_fail (GDA_IS_VPROVIDER_DATA_MODEL (provider), NULL);
 
-	cnc = g_object_new (GDA_TYPE_VCONNECTION_DATA_MODEL, "provider-obj", provider, NULL);
+	cnc = g_object_new (GDA_TYPE_VCONNECTION_DATA_MODEL, "provider", provider, NULL);
 
 	return cnc;
 }
@@ -377,7 +377,7 @@
 			if (gda_data_model_get_access_flags (td->spec->data_model) & GDA_DATA_MODEL_ACCESS_RANDOM)
 				proxy = g_object_new (GDA_TYPE_DATA_PROXY, 
 						      "model", td->spec->data_model, 
-						      "sample_size", 0, NULL);
+						      "sample-size", 0, NULL);
 			else {
 				/* no random access => use a wrapper */
 				GdaDataModel *wrapper;

Modified: trunk/libgda/sqlite/virtual/gda-vprovider-hub.c
==============================================================================
--- trunk/libgda/sqlite/virtual/gda-vprovider-hub.c	(original)
+++ trunk/libgda/sqlite/virtual/gda-vprovider-hub.c	Mon Sep  8 20:51:39 2008
@@ -186,7 +186,7 @@
 	GdaConnection *cnc;
 	g_return_val_if_fail (GDA_IS_VPROVIDER_HUB (provider), NULL);
 
-	cnc = g_object_new (GDA_TYPE_VCONNECTION_HUB, "provider-obj", provider, NULL);
+	cnc = g_object_new (GDA_TYPE_VCONNECTION_HUB, "provider", provider, NULL);
 
 	return cnc;
 }

Modified: trunk/providers/postgres/gda-postgres-recordset.c
==============================================================================
--- trunk/providers/postgres/gda-postgres-recordset.c	(original)
+++ trunk/providers/postgres/gda-postgres-recordset.c	Mon Sep  8 20:51:39 2008
@@ -136,11 +136,11 @@
         object_class->set_property = gda_postgres_recordset_set_property;
         object_class->get_property = gda_postgres_recordset_get_property;
         g_object_class_install_property (object_class, PROP_CHUNCK_SIZE,
-                                         g_param_spec_int ("chunk_size", _("Number of rows fetched at a time"), NULL,
+                                         g_param_spec_int ("chunk-size", _("Number of rows fetched at a time"), NULL,
                                                            1, G_MAXINT - 1, 10,
                                                            G_PARAM_CONSTRUCT | G_PARAM_READABLE | G_PARAM_WRITABLE));
         g_object_class_install_property (object_class, PROP_CHUNCKS_READ,
-                                         g_param_spec_int ("chunks_read",
+                                         g_param_spec_int ("chunks-read",
                                                            _("Number of rows chunks read since the object creation"), NULL,
                                                            0, G_MAXINT - 1, 0,
                                                            G_PARAM_READABLE));

Modified: trunk/samples/SqlParserConsole/graph.c
==============================================================================
--- trunk/samples/SqlParserConsole/graph.c	(original)
+++ trunk/samples/SqlParserConsole/graph.c	Mon Sep  8 20:51:39 2008
@@ -337,7 +337,7 @@
 				  "descr", G_TYPE_STRING, expr->param_spec->descr,
 				  "is_param", G_TYPE_BOOLEAN, expr->param_spec->is_param,
 				  "nullok", G_TYPE_BOOLEAN, expr->param_spec->nullok,
-				  "g_type", G_TYPE_STRING, g_type_name (expr->param_spec->g_type),
+				  "g-type", G_TYPE_STRING, g_type_name (expr->param_spec->g_type),
 				  NULL);
 			link_a_node (string, part, expr->param_spec, "param_spec");
 		}

Modified: trunk/tests/data-models/check_data_proxy.c
==============================================================================
--- trunk/tests/data-models/check_data_proxy.c	(original)
+++ trunk/tests/data-models/check_data_proxy.c	Mon Sep  8 20:51:39 2008
@@ -154,7 +154,7 @@
 		return FALSE;
 	}
 
-	proxy = g_object_new (GDA_TYPE_DATA_PROXY, "model", import, "sample_size", 0, NULL);
+	proxy = g_object_new (GDA_TYPE_DATA_PROXY, "model", import, "sample-size", 0, NULL);
 	g_object_unref (import);
 	if (!proxy) {
 #ifdef CHECK_EXTRA_INFO
@@ -162,7 +162,7 @@
 #endif
 		return FALSE;
 	}
-	g_object_set (G_OBJECT (proxy), "defer_sync", FALSE, NULL);
+	g_object_set (G_OBJECT (proxy), "defer-sync", FALSE, NULL);
 	return do_test_common_read (proxy);
 }
 
@@ -197,7 +197,7 @@
 #endif
 		return FALSE;
 	}
-	g_object_set (G_OBJECT (proxy), "defer_sync", FALSE, NULL);
+	g_object_set (G_OBJECT (proxy), "defer-sync", FALSE, NULL);
 	return do_test_common_read (proxy);
 }
 
@@ -244,7 +244,7 @@
 #endif
 		return FALSE;
 	}
-	g_object_set (G_OBJECT (proxy), "defer_sync", FALSE, NULL);
+	g_object_set (G_OBJECT (proxy), "defer-sync", FALSE, NULL);
 	return do_test_common_write (proxy);
 }
 
@@ -291,9 +291,9 @@
 #endif
 		return FALSE;
 	}
-	g_object_set (G_OBJECT (proxy), "defer_sync", FALSE, NULL);
+	g_object_set (G_OBJECT (proxy), "defer-sync", FALSE, NULL);
 	gda_data_proxy_set_sample_size (GDA_DATA_PROXY (proxy), 0);
-	g_object_set (G_OBJECT (proxy), "defer_sync", defer_sync, NULL);
+	g_object_set (G_OBJECT (proxy), "defer-sync", defer_sync, NULL);
 
 	gboolean retval = FALSE;
 
@@ -389,9 +389,9 @@
 #endif
 		return FALSE;
 	}
-	g_object_set (G_OBJECT (proxy), "defer_sync", FALSE, NULL);
+	g_object_set (G_OBJECT (proxy), "defer-sync", FALSE, NULL);
 	gda_data_proxy_set_sample_size (GDA_DATA_PROXY (proxy), 0);
-	g_object_set (G_OBJECT (proxy), "defer_sync", defer_sync, 
+	g_object_set (G_OBJECT (proxy), "defer-sync", defer_sync, 
 		      "prepend-null-entry", prepend_null_row, NULL);
 
 	gboolean retval = FALSE;
@@ -543,8 +543,8 @@
 	gboolean retval = FALSE;
 
 	gda_data_proxy_set_sample_size (GDA_DATA_PROXY (proxy), 10);
-	g_object_set (G_OBJECT (proxy), "defer_sync", FALSE, NULL);
-	g_object_set (G_OBJECT (proxy), "defer_sync", defer_sync, 
+	g_object_set (G_OBJECT (proxy), "defer-sync", FALSE, NULL);
+	g_object_set (G_OBJECT (proxy), "defer-sync", defer_sync, 
 		      "prepend-null-entry", prepend_null_row, NULL);
 	g_signal_connect (G_OBJECT (proxy), "reset",
 			  G_CALLBACK (proxy_reset_cb), NULL);
@@ -665,7 +665,7 @@
 	pmodel = gda_data_proxy_get_proxied_model (GDA_DATA_PROXY (proxy));
 
 	gda_data_proxy_set_sample_size (GDA_DATA_PROXY (proxy), 10);
-	g_object_set (G_OBJECT (proxy), "defer_sync", defer_sync, 
+	g_object_set (G_OBJECT (proxy), "defer-sync", defer_sync, 
 		      "prepend-null-entry", prepend_null_row, NULL);
 
 	g_signal_connect (G_OBJECT (proxy), "reset",

Modified: trunk/tests/data-models/check_model_query.c
==============================================================================
--- trunk/tests/data-models/check_model_query.c	(original)
+++ trunk/tests/data-models/check_model_query.c	Mon Sep  8 20:51:39 2008
@@ -41,14 +41,17 @@
 				  GdaConnection *cnc, GdaStatement *stmt, GdaSet *stmt_params);
 static gint check_append_values (GdaDataModel *model, GList *set_values,
 				 GdaConnection *cnc, GdaStatement *stmt, GdaSet *stmt_params);
+static gboolean compare_data_models (GdaDataModel *model1, GdaDataModel *model2, GError **error);
 
 typedef gboolean (*TestFunc) (GdaConnection *);
 static gint test1 (GdaConnection *cnc);
 static gint test2 (GdaConnection *cnc);
+static gint test3 (GdaConnection *cnc);
 
 TestFunc tests[] = {
         test1,
-        test2
+        test2,
+	test3
 };
 
 int
@@ -291,6 +294,14 @@
 	gda_value_free (value);
 
 	/****/
+	g_value_set_string ((value = gda_value_new (G_TYPE_STRING)), "Jack");
+	if (! check_set_value_at (model, 1, 0, value, cnc, stmt, NULL)) {
+		nfailed ++;
+		goto out;
+	}
+	gda_value_free (value);
+
+	/****/
 	if (gda_data_model_set_value_at (model, 0, 0, value, &error)) {
 		nfailed++;
 #ifdef CHECK_EXTRA_INFO
@@ -314,8 +325,6 @@
 #endif
 		goto out;
 	}
-	gda_data_model_dump (model, stdout);
-	gda_data_model_dump (copy, stdout);
 	if (! gda_data_model_query_refresh (GDA_DATA_MODEL_QUERY (model), &error)) {
 		nfailed++;
 #ifdef CHECK_EXTRA_INFO
@@ -324,7 +333,14 @@
 #endif
 		goto out;
 	}
-	gda_data_model_dump (model, stdout);
+	if (! compare_data_models (model, copy, NULL)) {
+		nfailed++;
+#ifdef CHECK_EXTRA_INFO
+		g_print ("Data model differs after a refresh\n");
+#endif
+		goto out;
+	}
+	g_object_unref (copy);
 
  out:
 	g_object_unref (model);
@@ -333,7 +349,71 @@
 	return nfailed;
 }
 
+/*
+ * - Create a GdaDataModelQuery with a missing parameter
+ * - Set modification statements
+ * - Refresh data model and compare with direct SELECT.
+ * 
+ * Returns the number of failures 
+ */
+static gint
+test3 (GdaConnection *cnc)
+{
+	GError *error = NULL;
+	GdaDataModel *model;
+	GdaStatement *stmt;
+	GdaSet *params;
+	gint nfailed = 0;
 
+	/* create GdaDataModelQuery */
+	stmt = stmt_from_string ("SELECT * FROM customers WHERE id <= ##theid::gint");
+	g_assert (gda_statement_get_parameters (stmt, &params, NULL));
+	model = (GdaDataModel*) gda_data_model_query_new (cnc, stmt, params);
+	g_assert (model);
+	if (gda_data_model_get_n_rows (model) >= 0) {
+		nfailed++;
+#ifdef CHECK_EXTRA_INFO
+		g_print ("Returned n_rows should be -1\n");
+#endif
+		goto out;
+	}
+
+	gda_data_model_dump (model, stdout);
+	if (! gda_set_set_holder_value (params, &error, "theid", 9)) {
+		nfailed++;
+#ifdef CHECK_EXTRA_INFO
+		g_print ("Can't set 'theid' value: %s \n",
+			 error && error->message ? error->message : "No detail");
+#endif
+		goto out;
+	}
+	gda_data_model_dump (model, stdout);
+
+	if (! gda_set_set_holder_value (params, &error, "theid", 4)) {
+		nfailed++;
+#ifdef CHECK_EXTRA_INFO
+		g_print ("Can't set 'theid' value: %s \n",
+			 error && error->message ? error->message : "No detail");
+#endif
+		goto out;
+	}
+	gda_data_model_dump (model, stdout);
+
+	if (! gda_data_model_query_compute_modification_statements (GDA_DATA_MODEL_QUERY (model), &error)) {
+		nfailed++;
+#ifdef CHECK_EXTRA_INFO
+		g_print ("gda_data_model_query_compute_modification_statements() failed: %s\n",
+			 error && error->message ? error->message : "No detail");
+#endif
+		goto out;
+	}
+
+ out:
+	g_object_unref (model);
+	g_object_unref (stmt);
+	
+	return nfailed;
+}
 
 /*
  * Checking value function:
@@ -694,3 +774,35 @@
 
 	return TRUE;
 }
+
+static gboolean
+compare_data_models (GdaDataModel *model1, GdaDataModel *model2, GError **error)
+{
+	GdaDataComparator *cmp;
+	GError *lerror = NULL;
+	cmp = (GdaDataComparator*) gda_data_comparator_new (model1, model2);
+	if (! gda_data_comparator_compute_diff (cmp, &lerror)) {
+#ifdef CHECK_EXTRA_INFO
+		g_print ("Could not compute the data model differences: %s\n",
+			 lerror && lerror->message ? lerror->message : "No detail");
+#endif
+		goto onerror;
+	}
+	if (gda_data_comparator_get_n_diffs (cmp) != 0) {
+#ifdef CHECK_EXTRA_INFO
+		g_print ("There are some differences when comparing data models...\n");
+		g_print ("Model1 is:\n");
+		gda_data_model_dump (model1, stdout);
+		g_print ("Model2 is:\n");
+		gda_data_model_dump (model2, stdout);
+#endif
+		goto onerror;
+	}
+	g_object_unref (cmp);
+
+	return TRUE;
+
+ onerror:
+	g_propagate_error (error, lerror);
+	return FALSE;
+}

Modified: trunk/tests/gda-ddl-creator.h
==============================================================================
--- trunk/tests/gda-ddl-creator.h	(original)
+++ trunk/tests/gda-ddl-creator.h	Mon Sep  8 20:51:39 2008
@@ -45,8 +45,7 @@
 typedef enum {
 	GDA_DDL_CREATOR_SPECFILE_NOT_FOUND_ERROR,
 	GDA_DDL_CREATOR_INCORRECT_SCHEMA_ERROR,
-	GDA_DDL_CREATOR_NO_CONNECTION_ERROR,
-	GDA_DDL_CREATOR_INTERNAL_ERROR, 
+	GDA_DDL_CREATOR_NO_CONNECTION_ERROR
 } GdaDDLCreatorError;
 
 



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