libgda r3149 - in trunk: . doc/C doc/C/examples doc/C/tmpl libgda libgda/sql-parser libgda/sqlite libgda/sqlite/virtual providers/bdb providers/mysql providers/postgres providers/skel-implementation/capi providers/sybase samples/BDB samples/DDL samples/DirDataModel samples/F-Spot samples/Report samples/SimpleExample samples/SqlParserConsole samples/TableCopy samples/Virtual samples/XSLT testing tests/data-models tests/meta-store tests/parser tests/providers tests/value-holders tools



Author: vivien
Date: Wed Apr 30 20:18:52 2008
New Revision: 3149
URL: http://svn.gnome.org/viewvc/libgda?rev=3149&view=rev

Log:
2008-04-30  Vivien Malerba <malerba gnome-db org>

	* libgda/gda-util.c: also encode the '=' char in gda_rfc1738_encode()
	* providers/mysql/gda-mysql-meta.c:
	* providers/mysql/gda-mysql-recordset.c: improved MySQL provider (thanks
	to Carlos Savoretti)
	* libgda/libgda.h.in:
	* tools/gda-list-server-op.c:
	* tools/gda-list-config.c:
	* tools/gda-sql.c:
	* tests/meta-store/check_meta_store_sqlite.c:
	* tests/meta-store/check_meta_store_postgresql.c:
	* tests/meta-store/check_meta_store_mysql.c:
	* tests/meta-store/check_meta_store_memory.c:
	* tests/data-models/check_virtual.c:
	* tests/data-models/check_data_proxy.c:
	* tests/data-models/check_model_import.c:
	* tests/value-holders/check_statement.c:
	* tests/value-holders/check_set.c:
	* tests/value-holders/check_holder.c:
	* tests/parser/check_normalization.c:
	* tests/parser/check_validation.c:
	* tests/parser/check_dml_comp.c:
	* tests/parser/check_parser.c:
	* tests/providers/check_sqlite.c:
	* tests/providers/check_oracle.c:
	* tests/providers/check_odbc.c:
	* tests/providers/check_msql.c:
	* tests/providers/check_ldap.c:
	* tests/providers/check_firebird.c:
	* tests/providers/check_sybase.c:
	* tests/providers/check_bdb.c:
	* tests/providers/check_mdb.c:
	* tests/providers/check_xbase.c:
	* tests/providers/check_mysql.c:
	* tests/providers/check_postgres.c:
	* tests/providers/check_freetds.c:
	* tests/providers/check_ibmdb2.c:
	* doc/C/libgda-4.0-sections.txt:
	* doc/C/gettingstarted.xml:
	* doc/C/tmpl/libgda.sgml:
	* doc/C/examples/full_example.c:
	* providers/sybase/main.c:
	* providers/bdb/gda-bdb-test.c:
	* providers/mysql/gda-mysql-meta.c:
	* providers/mysql/gda-mysql-recordset.c:
	* testing/gda-test-blob.c:
	* libgda/sqlite/virtual/virtual-test.c:
	* libgda/gda-init.c:
	* libgda/gda-connection.c:
	* samples/SqlParserConsole/console.c:
	* samples/TableCopy/table-copy.c:
	* samples/TableCopy/table-copy-easier.c:
	* samples/DDL/ddl.c:
	* samples/SimpleExample/example.c:
	* samples/Virtual/virtual-test.c:
	* samples/BDB/access-raw.c:
	* samples/BDB/access-custom.c:
	* samples/F-Spot/repair-path.c:
	* samples/DirDataModel/find-duplicates.c:
	* samples/XSLT/transform.c:
	* samples/Report/customers-report-rml.c:
	* samples/Report/customers-report-docbook.c:
	* samples/Report/customers-report.c: changed the gda_init() signature to
	void gda_init (void), and removed the gda_main_run() and gda_main_quit()
	functions
	* libgda/gda-data-proxy.[ch]: added gda_data_proxy_set_ordering_column() to
	enable ordering by a column
	* libgda/sqlite/virtual/gda-vprovider-data-model.c: correctly name columns
	when creating the virtual table (add double quotes when necessary)
	* libgda/sqlite/virtual/gda-vconnection-data-model.c: fixed an object
	referencing bug
	* testing/gda-test-connection.c: fixed prepared statements unreferencing
	bug
	* libgda/gda-util.c:
	* libgda/gda-meta-store.c:
	* libgda/sqlite/gda-sqlite-provider.c:
	* libgda/sql-parser/gda-statement-struct-parts.h:
	* libgda/sql-parser/parser.y:
	* libgda/sql-parser/gda-statement-struct.c:
	* libgda/sql-parser/gda-statement-struct-parts.c:
	* libgda/sql-parser/parser.c:
	* libgda/gda-statement.c:
	* providers/postgres/gda-postgres-provider.c:
	* providers/postgres/parser.y:
	* providers/postgres/parser.c:
	* providers/mysql/parser.y:
	* providers/mysql/parser.c:
	* providers/skel-implementation/capi/parser.y:
	* providers/skel-implementation/capi/parser.c:
	* doc/C/xml/gda-sql-statement.xml:
	* doc/C/libgda-4.0-decl.txt:
	* doc/C/tmpl/gda-sql-statement.sgml:
	* doc/C/libgda-4.0-undocumented.txt:
	* doc/C/libgda-4.0-sections.txt:
	* doc/C/html/index.sgml:
	* doc/C/libgda-4.0-decl-list.txt: modifications for bug #527002
	* libgda/sql-parser/gda-sql-parser.c:
	* providers/postgres/gda-postgres-pstmt.c:
	* providers/postgres/gda-postgres-provider.c: fixed mem leak, bug
	#527012
	* libgda/gda-data-model-query.c: bug fixes
	* libgda/gda-set.c: correctly identify a property name


Modified:
   trunk/ChangeLog
   trunk/doc/C/examples/full_example.c
   trunk/doc/C/gettingstarted.xml
   trunk/doc/C/libgda-4.0-sections.txt
   trunk/doc/C/tmpl/gda-sql-statement.sgml
   trunk/doc/C/tmpl/libgda.sgml
   trunk/libgda/gda-connection.c
   trunk/libgda/gda-data-model-query.c
   trunk/libgda/gda-data-proxy.c
   trunk/libgda/gda-data-proxy.h
   trunk/libgda/gda-init.c
   trunk/libgda/gda-meta-store.c
   trunk/libgda/gda-set.c
   trunk/libgda/gda-statement.c
   trunk/libgda/gda-util.c
   trunk/libgda/libgda.h.in
   trunk/libgda/sql-parser/gda-sql-parser.c
   trunk/libgda/sql-parser/gda-statement-struct-parts.c
   trunk/libgda/sql-parser/gda-statement-struct-parts.h
   trunk/libgda/sql-parser/gda-statement-struct.c
   trunk/libgda/sql-parser/parser.y
   trunk/libgda/sqlite/gda-sqlite-provider.c
   trunk/libgda/sqlite/virtual/gda-vconnection-data-model.c
   trunk/libgda/sqlite/virtual/gda-vprovider-data-model.c
   trunk/libgda/sqlite/virtual/virtual-test.c
   trunk/providers/bdb/gda-bdb-test.c
   trunk/providers/mysql/gda-mysql-meta.c
   trunk/providers/mysql/gda-mysql-recordset.c
   trunk/providers/mysql/parser.y
   trunk/providers/postgres/gda-postgres-provider.c
   trunk/providers/postgres/gda-postgres-pstmt.c
   trunk/providers/postgres/parser.y
   trunk/providers/skel-implementation/capi/parser.y
   trunk/providers/sybase/main.c
   trunk/samples/BDB/access-custom.c
   trunk/samples/BDB/access-raw.c
   trunk/samples/DDL/ddl.c
   trunk/samples/DirDataModel/find-duplicates.c
   trunk/samples/F-Spot/repair-path.c
   trunk/samples/Report/customers-report-docbook.c
   trunk/samples/Report/customers-report-rml.c
   trunk/samples/Report/customers-report.c
   trunk/samples/SimpleExample/example.c
   trunk/samples/SqlParserConsole/console.c
   trunk/samples/TableCopy/table-copy-easier.c
   trunk/samples/TableCopy/table-copy.c
   trunk/samples/Virtual/virtual-test.c
   trunk/samples/XSLT/transform.c
   trunk/testing/gda-test-blob.c
   trunk/testing/gda-test-connection.c
   trunk/tests/data-models/check_data_proxy.c
   trunk/tests/data-models/check_model_import.c
   trunk/tests/data-models/check_virtual.c
   trunk/tests/meta-store/check_meta_store_memory.c
   trunk/tests/meta-store/check_meta_store_mysql.c
   trunk/tests/meta-store/check_meta_store_postgresql.c
   trunk/tests/meta-store/check_meta_store_sqlite.c
   trunk/tests/parser/check_dml_comp.c
   trunk/tests/parser/check_normalization.c
   trunk/tests/parser/check_parser.c
   trunk/tests/parser/check_validation.c
   trunk/tests/providers/check_bdb.c
   trunk/tests/providers/check_firebird.c
   trunk/tests/providers/check_freetds.c
   trunk/tests/providers/check_ibmdb2.c
   trunk/tests/providers/check_ldap.c
   trunk/tests/providers/check_mdb.c
   trunk/tests/providers/check_msql.c
   trunk/tests/providers/check_mysql.c
   trunk/tests/providers/check_odbc.c
   trunk/tests/providers/check_oracle.c
   trunk/tests/providers/check_postgres.c
   trunk/tests/providers/check_sqlite.c
   trunk/tests/providers/check_sybase.c
   trunk/tests/providers/check_xbase.c
   trunk/tests/value-holders/check_holder.c
   trunk/tests/value-holders/check_set.c
   trunk/tests/value-holders/check_statement.c
   trunk/tools/gda-list-config.c
   trunk/tools/gda-list-server-op.c
   trunk/tools/gda-sql.c

Modified: trunk/doc/C/examples/full_example.c
==============================================================================
--- trunk/doc/C/examples/full_example.c	(original)
+++ trunk/doc/C/examples/full_example.c	Wed Apr 30 20:18:52 2008
@@ -9,7 +9,7 @@
 int
 main (int argc, char *argv[])
 {
-        gda_init ("SimpleExample", "1.0", argc, argv);
+        gda_init ();
 
         GdaConnection *cnc;
 

Modified: trunk/doc/C/gettingstarted.xml
==============================================================================
--- trunk/doc/C/gettingstarted.xml	(original)
+++ trunk/doc/C/gettingstarted.xml	Wed Apr 30 20:18:52 2008
@@ -7,13 +7,10 @@
       <link linkend="gda-init">gda_init ()</link> function, for example:
     </para>
     <programlisting>
-gda_init ("TestGDA", "0.1", argc, argv);
+gda_init ();
     </programlisting>
     <para>
-      After initialising you can work as usual or make &LIBGDA; call a custom defined function
-      calling <link linkend="gda-main-run">gda_main_run()</link> (note that
-      if you use this way you will need to call <link linkend="gda-main-quit">gda_main_quit()</link> 
-      in order to finish the program).
+      After initialising you can work as usual or make &LIBGDA; 
     </para>
     <para>For example a basic program would look like:
       <programlisting>
@@ -41,7 +38,7 @@
 {
 	g_print ("STARTING\n");
 
-	gda_init ("TestGDA", "0.1", argc, argv);
+	gda_init ();
       	do_stuff();
 
 	g_print("ENDING\n");      

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	Wed Apr 30 20:18:52 2008
@@ -417,8 +417,6 @@
 <FILE>libgda</FILE>
 <TITLE>Libgda Initialization</TITLE>
 gda_init
-gda_main_run
-gda_main_quit
 <SUBSECTION Standard>
 </SECTION>
 
@@ -1239,7 +1237,7 @@
 gda_sql_function_take_args_list
 <SUBSECTION>
 GdaSqlOperation
-GdaSqlOperator
+GdaSqlOperatorType
 gda_sql_operation_new
 gda_sql_operation_free
 gda_sql_operation_copy

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	Wed Apr 30 20:18:52 2008
@@ -951,41 +951,41 @@
 @operator: type of operation
 @operands: list of #GdaSqlExpr operands
 
-<!-- ##### ENUM GdaSqlOperator ##### -->
+<!-- ##### ENUM GdaSqlOperatorType ##### -->
 <para>
 
 </para>
 
- GDA_SQL_OPERATOR_AND: 
- GDA_SQL_OPERATOR_OR: 
- GDA_SQL_OPERATOR_EQ: 
- GDA_SQL_OPERATOR_IS: 
- GDA_SQL_OPERATOR_LIKE: 
- GDA_SQL_OPERATOR_BETWEEN: 
- GDA_SQL_OPERATOR_GT: 
- GDA_SQL_OPERATOR_LT: 
- GDA_SQL_OPERATOR_GEQ: 
- GDA_SQL_OPERATOR_LEQ: 
- GDA_SQL_OPERATOR_DIFF: 
- GDA_SQL_OPERATOR_REGEXP: 
- GDA_SQL_OPERATOR_REGEXP_CI: 
- GDA_SQL_OPERATOR_NOT_REGEXP: 
- GDA_SQL_OPERATOR_NOT_REGEXP_CI: 
- GDA_SQL_OPERATOR_SIMILAR: 
- GDA_SQL_OPERATOR_ISNULL: 
- GDA_SQL_OPERATOR_ISNOTNULL: 
- GDA_SQL_OPERATOR_NOT: 
- GDA_SQL_OPERATOR_IN: 
- GDA_SQL_OPERATOR_NOTIN: 
- GDA_SQL_OPERATOR_CONCAT: 
- GDA_SQL_OPERATOR_PLUS: 
- GDA_SQL_OPERATOR_MINUS: 
- GDA_SQL_OPERATOR_STAR: 
- GDA_SQL_OPERATOR_DIV: 
- GDA_SQL_OPERATOR_REM: 
- GDA_SQL_OPERATOR_BITAND: 
- GDA_SQL_OPERATOR_BITOR: 
- GDA_SQL_OPERATOR_BITNOT: 
+ GDA_SQL_OPERATOR_TYPE_AND: 
+ GDA_SQL_OPERATOR_TYPE_OR: 
+ GDA_SQL_OPERATOR_TYPE_EQ: 
+ GDA_SQL_OPERATOR_TYPE_IS: 
+ GDA_SQL_OPERATOR_TYPE_LIKE: 
+ GDA_SQL_OPERATOR_TYPE_BETWEEN: 
+ GDA_SQL_OPERATOR_TYPE_GT: 
+ GDA_SQL_OPERATOR_TYPE_LT: 
+ GDA_SQL_OPERATOR_TYPE_GEQ: 
+ GDA_SQL_OPERATOR_TYPE_LEQ: 
+ GDA_SQL_OPERATOR_TYPE_DIFF: 
+ GDA_SQL_OPERATOR_TYPE_REGEXP: 
+ GDA_SQL_OPERATOR_TYPE_REGEXP_CI: 
+ GDA_SQL_OPERATOR_TYPE_NOT_REGEXP: 
+ GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI: 
+ GDA_SQL_OPERATOR_TYPE_SIMILAR: 
+ GDA_SQL_OPERATOR_TYPE_ISNULL: 
+ GDA_SQL_OPERATOR_TYPE_ISNOTNULL: 
+ GDA_SQL_OPERATOR_TYPE_NOT: 
+ GDA_SQL_OPERATOR_TYPE_IN: 
+ GDA_SQL_OPERATOR_TYPE_NOTIN: 
+ GDA_SQL_OPERATOR_TYPE_CONCAT: 
+ GDA_SQL_OPERATOR_TYPE_PLUS: 
+ GDA_SQL_OPERATOR_TYPE_MINUS: 
+ GDA_SQL_OPERATOR_TYPE_STAR: 
+ GDA_SQL_OPERATOR_TYPE_DIV: 
+ GDA_SQL_OPERATOR_TYPE_REM: 
+ GDA_SQL_OPERATOR_TYPE_BITAND: 
+ GDA_SQL_OPERATOR_TYPE_BITOR: 
+ GDA_SQL_OPERATOR_TYPE_BITNOT: 
 
 <!-- ##### FUNCTION gda_sql_operation_new ##### -->
 <para>

Modified: trunk/doc/C/tmpl/libgda.sgml
==============================================================================
--- trunk/doc/C/tmpl/libgda.sgml	(original)
+++ trunk/doc/C/tmpl/libgda.sgml	Wed Apr 30 20:18:52 2008
@@ -22,25 +22,5 @@
 
 </para>
 
- app_id: 
- version: 
- nargs: 
- args: 
-
-
-<!-- ##### FUNCTION gda_main_run ##### -->
-<para>
-
-</para>
-
- init_func: 
- user_data: 
-
-
-<!-- ##### FUNCTION gda_main_quit ##### -->
-<para>
-
-</para>
-
 
 

Modified: trunk/libgda/gda-connection.c
==============================================================================
--- trunk/libgda/gda-connection.c	(original)
+++ trunk/libgda/gda-connection.c	Wed Apr 30 20:18:52 2008
@@ -3456,7 +3456,7 @@
 static void
 prepared_stms_foreach_func (GdaStatement *gda_stmt, GdaStatement *prepared_stmt, GdaConnection *cnc)
 {
-	g_signal_handlers_disconnect_by_func (gda_stmt, G_CALLBACK (prepared_stms_stmt_destroyed_cb), cnc);
+	prepared_stms_stmt_destroyed_cb (gda_stmt, cnc);
 }
 
 

Modified: trunk/libgda/gda-data-model-query.c
==============================================================================
--- trunk/libgda/gda-data-model-query.c	(original)
+++ trunk/libgda/gda-data-model-query.c	Wed Apr 30 20:18:52 2008
@@ -427,6 +427,7 @@
 						     "expect some problems with the GdaDataModelQuery"));
 					model->priv->params[qindex] = NULL;
 				}
+
 				if (qindex == SEL_QUERY) {
 					/* SELECT statement */
 					if (model->priv->params[qindex])
@@ -471,8 +472,6 @@
 										gda_holder_set_default_value (holder, value);
 										gda_value_free (value);
 									}
-									g_object_set ((GObject*) holder, "id",
-										      gda_column_get_name (col), NULL);
 								}
 							}
 							else {
@@ -997,7 +996,11 @@
 	iter = (GdaDataModelIter *) g_object_new (GDA_TYPE_DATA_MODEL_ITER, 
 						  "data_model", model, NULL);
 	/* set the "__gda_entry_plugin" property for all the parameters depending on the SELECT query field */
-	TO_IMPLEMENT;
+	static gboolean warned = FALSE;
+	if (!warned) {
+		warned = TRUE;
+		TO_IMPLEMENT;
+	}
 	/*
 	if (gda_query_is_select_query (GDA_DATA_MODEL_QUERY (model)->priv->statements[SEL_QUERY])) {
 		GSList *list, *fields;
@@ -1490,7 +1493,7 @@
 		return FALSE;
 	}
 
-	for (i = SEL_QUERY; i <= DEL_QUERY; i++) {
+	for (i = SEL_QUERY + 1; i <= DEL_QUERY; i++) {
 		if (model->priv->statements[i])
 			forget_statement (model, model->priv->statements[i]);
 	}

Modified: trunk/libgda/gda-data-proxy.c
==============================================================================
--- trunk/libgda/gda-data-proxy.c	(original)
+++ trunk/libgda/gda-data-proxy.c	Wed Apr 30 20:18:52 2008
@@ -36,6 +36,8 @@
 #include "gda-enum-types.h"
 #include <virtual/libgda-virtual.h>
 #include <sql-parser/gda-sql-parser.h>
+#include <sql-parser/gda-sql-statement.h>
+#include <sql-parser/gda-statement-struct-util.h>
 
 /* 
  * Main static functions 
@@ -182,6 +184,7 @@
 
 	GdaConnection     *filter_vcnc;   /* virtual connection used for filtering */
 	gchar             *filter_expr;   /* NULL if no filter applied */
+	GdaStatement      *filter_stmt;   /* NULL if no filter applied */
 	GdaDataModel      *filtered_rows; /* NULL if no filter applied. Lists rows (by their number) which must be displayed */
 
 	GValue           **columns_attrs; /* Each GValue holds a flag of GdaValueAttribute to proxy. cols. attributes */
@@ -707,6 +710,11 @@
 		proxy->priv->filter_expr = NULL;
 	}
 
+	if (proxy->priv->filter_stmt) {
+		g_object_unref (proxy->priv->filter_stmt);
+		proxy->priv->filter_stmt = NULL;
+	}
+
 	if (proxy->priv->filtered_rows) {
 		g_object_unref (proxy->priv->filtered_rows);
 		proxy->priv->filtered_rows = NULL;
@@ -1033,7 +1041,7 @@
 proxied_model_reset_cb (GdaDataModel *model, GdaDataProxy *proxy)
 {
 	gboolean add_null_entry = proxy->priv->add_null_entry;
-	
+
 	g_object_ref (G_OBJECT (model));
 	clean_proxy (proxy);
 	gda_data_proxy_init (proxy);
@@ -2741,39 +2749,60 @@
 	return TRUE;
 }
 
-/**
- * gda_data_proxy_set_filter_expr
- * @proxy: a #GdaDataProxy object
- * @filter_expr: an SQL based expression which will filter the contents of @proxy, or %NULL to remove any previous filter
- * @error: a place to store errors, or %NULL
- *
- * Sets a filter among the rows presented by @proxy. The filter is defined by a filter expression
- * which can be any SQL valid expression using @proxy's columns. For instance if @proxy has the "id" and
- * "name" columns, then a filter can be "length(name) < 5" to filter only the rows where the length of the
- * name is strictly inferior to 5, or "id >= 1000 and id < 2000 order by name limit 50" to filter only the rows where the id
- * is between 1000 and 2000, ordered by name and limited to 50 rows.
- *
- * Note that any previous filter expression is replaced with the new @filter_expr if no error occurs
- * (if an error occurs, then any previous filter is left unchanged).
- *
- * Returns: TRUE if no error occurred
+static gboolean
+sql_where_foreach (GdaSqlAnyPart *part, GdaDataModel *model, GError **error)
+{
+	if (part->type == GDA_SQL_ANY_EXPR) {
+		GdaSqlExpr *expr = (GdaSqlExpr*) part;
+		if (expr->value && (G_VALUE_TYPE (expr->value) == G_TYPE_STRING)) {
+			const gchar *cstr = g_value_get_string (expr->value);
+			if (*cstr == '_') {
+				const gchar *ptr;
+				for (ptr = cstr+1; *ptr; ptr++)
+					if ((*ptr < '0') || (*ptr > '9'))
+						break;
+				if (!*ptr) {
+					/* column name is "_<number>", use column: <number> - 1 */
+					gint colnum;
+					colnum = atoi (cstr+1) - 1;
+					if (colnum >= 0) {
+						GdaColumn *col = gda_data_model_describe_column (model, colnum);
+						const gchar *cname = gda_column_get_name (col);
+						if (cname && *cname) {
+							if (_identifier_needs_quotes (cname))
+								g_value_take_string (expr->value, 
+										     g_strdup_printf ("\"%s\"", cname));
+							else
+								g_value_set_string (expr->value, cname);
+						}
+					}
+				}
+			}
+		}
+	}
+	return TRUE;
+}
+
+/*
+ * Applies proxy->priv->filter_stmt
  */
-gboolean
-gda_data_proxy_set_filter_expr (GdaDataProxy *proxy, const gchar *filter_expr, GError **error)
+static gboolean
+apply_filter_statement (GdaDataProxy *proxy, GError **error)
 {
 	static GdaVirtualProvider *provider = NULL;
 	GdaConnection *vcnc;
-	gchar *sql;
-	GdaStatement *stmt;
 	GdaDataModel *filtered_rows = NULL;
+	GdaStatement *stmt = NULL;
 
-	g_return_val_if_fail (GDA_IS_DATA_PROXY (proxy), FALSE);
-	g_return_val_if_fail (proxy->priv, FALSE);
+	if (proxy->priv->filter_stmt) {
+		stmt = proxy->priv->filter_stmt;
+		proxy->priv->filter_stmt = NULL;
+	}
 
 	/* ensure that there is no sync to be done */
 	ensure_chunk_sync (proxy);
 
-	if (!filter_expr)
+	if (!stmt)
 		goto clean_previous_filter;
 
 	if (!provider) 
@@ -2790,43 +2819,12 @@
 				     _("Could not create virtual connection"));
 			g_object_unref (vcnc);
 			proxy->priv->force_direct_mapping = FALSE;
-			return FALSE;
+			goto clean_previous_filter;
 		}
 
 		proxy->priv->filter_vcnc = vcnc;
 	}
 
-	/* generate SQL with a special case if expression starts with "ORDER BY" */
-	gchar *tmp;
-	const gchar *ptr;
-	gint i;
-	tmp = g_strdup (filter_expr);
-	for (i = 0, ptr = filter_expr; *ptr && (i < 7); ptr++) {
-		if ((*ptr == ' ') || (*ptr == '\t') || (*ptr == '\n')) {
-		}
-		else {
-			tmp [i] = *ptr;
-			i++;
-		}
-	}
-	if (! g_ascii_strncasecmp (tmp, "orderby", 7)) 
-		sql = g_strdup_printf ("SELECT __gda_row_nb FROM proxy %s", filter_expr);
-	else
-		sql = g_strdup_printf ("SELECT __gda_row_nb FROM proxy WHERE %s", filter_expr);
-	g_free (tmp);
-
-	stmt = gda_sql_parser_parse_string (internal_parser, sql, &ptr, NULL);
-	g_free (sql);
-	if (ptr || !stmt || (gda_statement_get_statement_type (stmt) != GDA_SQL_STATEMENT_SELECT)) {
-		/* also catches problems with multiple statements in @filter_expr, such as SQL code injection */
-		g_set_error (error, GDA_DATA_PROXY_ERROR, GDA_DATA_PROXY_FILTER_ERROR,
-			     _("Incorrect filter expression"));
-		if (stmt)
-			g_object_unref (stmt);
-		proxy->priv->force_direct_mapping = FALSE;
-		return FALSE;
-	}
-
 	/* Add the @proxy to the virtual connection.
 	 *
 	 * REM: use a GdaDataModelWrapper to force the viewing of the un-modified columns of @proxy,
@@ -2838,18 +2836,32 @@
 						   "proxy", error)) {
 		g_object_unref (wrapper);
 		proxy->priv->force_direct_mapping = FALSE;
-		return FALSE;
+		goto clean_previous_filter;
 	}
 	g_object_unref (wrapper);
 	
+	/* remork the statement for column names */
+	GdaSqlStatement *sqlst;
+	g_object_get (G_OBJECT (stmt), "structure", &sqlst, NULL);
+	g_assert (sqlst->stmt_type == GDA_SQL_STATEMENT_SELECT);
+	gda_sql_any_part_foreach (GDA_SQL_ANY_PART (sqlst->contents), (GdaSqlForeachFunc) sql_where_foreach, proxy, NULL);
+	g_object_set (G_OBJECT (stmt), "structure", sqlst, NULL);
+#ifdef GDA_DEBUG_NO
+	gchar *ser;
+	ser = gda_sql_statement_serialize (sqlst);
+	g_print ("Modified Filter: %s\n", ser);
+	g_free (ser);
+#endif
+	gda_sql_statement_free (sqlst);
+
 	/* execute statement */
 	filtered_rows = gda_connection_statement_execute_select (vcnc, stmt, NULL, NULL);
-	g_object_unref (stmt);
      	if (!filtered_rows) {
 		g_set_error (error, GDA_DATA_PROXY_ERROR, GDA_DATA_PROXY_FILTER_ERROR,
 			     _("Error in filter expression"));
 		proxy->priv->force_direct_mapping = FALSE;
-		return FALSE;
+		gda_vconnection_data_model_remove (GDA_VCONNECTION_DATA_MODEL (vcnc), "proxy", NULL);
+		goto clean_previous_filter;
 	}
 
 	/* copy filtered_rows and remove virtual table */
@@ -2861,12 +2873,12 @@
 		g_set_error (error, GDA_DATA_PROXY_ERROR, GDA_DATA_PROXY_FILTER_ERROR,
 			     _("Error in filter expression"));
 		proxy->priv->force_direct_mapping = FALSE;
-		return FALSE;
+		filtered_rows = NULL;
+		goto clean_previous_filter;
 	}
 	filtered_rows = copy;
 	proxy->priv->force_direct_mapping = FALSE;
 
-
  clean_previous_filter:
 	if (proxy->priv->filter_expr) {
 		g_free (proxy->priv->filter_expr);
@@ -2876,10 +2888,23 @@
 		g_object_unref (proxy->priv->filtered_rows);
 		proxy->priv->filtered_rows = NULL;
 	}
+#define FILTER_SELECT_WHERE "SELECT __gda_row_nb FROM proxy WHERE "
+#define FILTER_SELECT_NOWHERE "SELECT __gda_row_nb FROM proxy "
 	if (filtered_rows) {
+		gchar *sql;
+		sql = gda_statement_to_sql (stmt, NULL, NULL);
+		if (sql) {
+			if (!g_ascii_strncasecmp (sql, FILTER_SELECT_WHERE, strlen (FILTER_SELECT_WHERE))) 
+				proxy->priv->filter_expr = g_strdup (sql + strlen (FILTER_SELECT_WHERE));
+			else if (!g_ascii_strncasecmp (sql, FILTER_SELECT_NOWHERE, strlen (FILTER_SELECT_NOWHERE))) 
+				proxy->priv->filter_expr = g_strdup (sql + strlen (FILTER_SELECT_NOWHERE));
+			g_free (sql);
+		}
 		proxy->priv->filtered_rows = filtered_rows;
-		proxy->priv->filter_expr = g_strdup (filter_expr);
+		proxy->priv->filter_stmt = stmt;
 	}
+	else if (stmt)
+		g_object_unref (stmt);
 
 	g_signal_emit (G_OBJECT (proxy),
 		       gda_data_proxy_signals[FILTER_CHANGED],
@@ -2887,13 +2912,179 @@
 
 	adjust_displayed_chunk (proxy);
 
-	if (!filter_expr)
+	if (!stmt)
 		return TRUE;
 	else
 		return filtered_rows ? TRUE : FALSE;
 }
 
 /**
+ * gda_data_proxy_set_filter_expr
+ * @proxy: a #GdaDataProxy object
+ * @filter_expr: an SQL based expression which will filter the contents of @proxy, or %NULL to remove any previous filter
+ * @error: a place to store errors, or %NULL
+ *
+ * Sets a filter among the rows presented by @proxy. The filter is defined by a filter expression
+ * which can be any SQL valid expression using @proxy's columns. For instance if @proxy has the "id" and
+ * "name" columns, then a filter can be "length(name) < 5" to filter only the rows where the length of the
+ * name is strictly inferior to 5, or "id >= 1000 and id < 2000 order by name limit 50" to filter only the rows where the id
+ * is between 1000 and 2000, ordered by name and limited to 50 rows.
+ *
+ * Note about column names: real column names can be used (double quoted if necessary), but columns can also be named
+ * "_&lt;column number&gt;" with colmun numbers starting at 1.
+ *
+ * Note that any previous filter expression is replaced with the new @filter_expr if no error occurs
+ * (if an error occurs, then any previous filter is left unchanged).
+ *
+ * Returns: TRUE if no error occurred
+ */
+gboolean
+gda_data_proxy_set_filter_expr (GdaDataProxy *proxy, const gchar *filter_expr, GError **error)
+{
+	gchar *sql;
+	GdaStatement *stmt = NULL;
+
+	g_return_val_if_fail (GDA_IS_DATA_PROXY (proxy), FALSE);
+	g_return_val_if_fail (proxy->priv, FALSE);
+
+	if (!filter_expr) {
+		if (proxy->priv->filter_stmt) 
+			g_object_unref (proxy->priv->filter_stmt);
+		proxy->priv->filter_stmt = NULL;
+
+		return apply_filter_statement (proxy, error);
+	}
+
+	/* generate SQL with a special case if expression starts with "ORDER BY" */
+	gchar *tmp;
+	const gchar *ptr;
+	gint i;
+	tmp = g_strdup (filter_expr);
+	for (i = 0, ptr = filter_expr; *ptr && (i < 7); ptr++) {
+		if ((*ptr == ' ') || (*ptr == '\t') || (*ptr == '\n')) {
+		}
+		else {
+			tmp [i] = *ptr;
+			i++;
+		}
+	}
+	if (! g_ascii_strncasecmp (tmp, "orderby", 7)) 
+		sql = g_strdup_printf (FILTER_SELECT_NOWHERE "%s", filter_expr);
+	else
+		sql = g_strdup_printf (FILTER_SELECT_WHERE "%s", filter_expr);
+	g_free (tmp);
+
+	stmt = gda_sql_parser_parse_string (internal_parser, sql, &ptr, NULL);
+	g_free (sql);
+	if (ptr || !stmt || (gda_statement_get_statement_type (stmt) != GDA_SQL_STATEMENT_SELECT)) {
+		/* also catches problems with multiple statements in @filter_expr, such as SQL code injection */
+		g_set_error (error, GDA_DATA_PROXY_ERROR, GDA_DATA_PROXY_FILTER_ERROR,
+			     _("Incorrect filter expression"));
+		if (stmt)
+			g_object_unref (stmt);
+		proxy->priv->force_direct_mapping = FALSE;
+		return FALSE;
+	}
+
+	if (proxy->priv->filter_stmt) 
+		g_object_unref (proxy->priv->filter_stmt);
+	proxy->priv->filter_stmt = stmt;
+
+	return apply_filter_statement (proxy, error);
+}
+
+/**
+ * gda_data_proxy_set_ordering_column
+ * @proxy: a #GdaDataProxy object
+ * @col: the column number to order from
+ * @error: a place to store errors, or %NULL
+ *
+ * Orders by the @col column
+ *
+ * Returns: TRUE if no error occurred
+ */
+gboolean
+gda_data_proxy_set_ordering_column (GdaDataProxy *proxy, gint col, GError **error)
+{
+	gboolean retval;
+	g_return_val_if_fail (GDA_IS_DATA_PROXY (proxy), FALSE);
+	g_return_val_if_fail (proxy->priv, FALSE);
+	g_return_val_if_fail (col >= 0, FALSE);
+	g_return_val_if_fail (col < gda_data_model_get_n_columns ((GdaDataModel*) proxy), FALSE);
+
+	if (proxy->priv->filter_stmt) {
+		GdaSqlStatement *sqlst;
+		GdaSqlStatementSelect *selst;
+		gboolean replaced = FALSE;
+		const gchar *cname;
+		gchar *colname;
+
+		cname = gda_column_get_name (gda_data_model_describe_column ((GdaDataModel*) proxy, col));
+		if (cname && *cname) {
+			if (_identifier_needs_quotes (cname))
+				colname = g_strdup_printf ("\"%s\"", cname);
+			else
+				colname = g_strdup (cname);
+		}
+		else
+			colname = g_strdup_printf ("_%d", col + 1);
+
+		g_object_get (G_OBJECT (proxy->priv->filter_stmt), "structure", &sqlst, NULL);
+		g_assert (sqlst->stmt_type == GDA_SQL_STATEMENT_SELECT);
+		g_free (sqlst->sql);
+		sqlst->sql = NULL;
+		selst = (GdaSqlStatementSelect*) sqlst->contents;
+
+		/* test if we can actually toggle the sort ASC <-> DESC */
+		if (selst->order_by && !selst->order_by->next) {
+			GdaSqlSelectOrder *order_by = (GdaSqlSelectOrder*) selst->order_by->data;
+			if (order_by->expr && order_by->expr->value && 
+			    (G_VALUE_TYPE (order_by->expr->value) == G_TYPE_STRING) &&
+			    gda_identifier_equal (g_value_get_string (order_by->expr->value), colname)) {
+				order_by->asc = !order_by->asc;
+				replaced = TRUE;
+				g_free (colname);
+			}
+		}
+
+		if (!replaced) {
+			/* replace the whole ordering part */
+			if (selst->order_by) {
+				g_slist_foreach (selst->order_by, (GFunc) gda_sql_select_order_free, NULL);
+				g_slist_free (selst->order_by);
+				selst->order_by = NULL;
+			}
+			
+			GdaSqlSelectOrder *order_by;
+			GdaSqlExpr *expr;
+			order_by = gda_sql_select_order_new (GDA_SQL_ANY_PART (selst));
+			selst->order_by = g_slist_prepend (NULL, order_by);
+			expr = gda_sql_expr_new (GDA_SQL_ANY_PART (order_by));
+			order_by->expr = expr;
+			order_by->asc = TRUE;
+			expr->value = gda_value_new (G_TYPE_STRING);
+			g_value_take_string (expr->value, colname);
+		}
+
+		g_object_set (G_OBJECT (proxy->priv->filter_stmt), "structure", sqlst, NULL);
+#ifdef GDA_DEBUG_NO
+		gchar *ser;
+		ser = gda_sql_statement_serialize (sqlst);
+		g_print ("Modified Filter: %s\n", ser);
+		g_free (ser);
+#endif
+		gda_sql_statement_free (sqlst);
+		retval = apply_filter_statement (proxy, error);
+	}
+	else {
+		gchar *str;
+		str = g_strdup_printf ("ORDER BY _%d", col + 1);
+		retval = gda_data_proxy_set_filter_expr (proxy, str, error);
+	}
+	return retval;
+}
+
+/**
  * gda_data_proxy_get_filter_expr
  * @proxy: a #GdaDataProxy object
  *
@@ -3002,20 +3193,23 @@
 	/* proxied data model's values (original values), again reference columns from proxied data model */
 	for (; i < 2 * proxy->priv->model_nb_cols; i++) {
 		GdaColumn *orig;
+		const gchar *cname;
 		gchar *newname;
 
 		orig = gda_data_model_describe_column (proxy->priv->model, 
 						       i -  proxy->priv->model_nb_cols);
 		proxy->priv->columns[i] = gda_column_copy (orig);
-		newname = g_strdup_printf ("_%s", gda_column_get_name (orig));
+		cname =  gda_column_get_name (orig);
+		if (cname && *cname) 
+			newname = g_strdup_printf ("pre%s", cname);
+		else
+			newname = g_strdup_printf ("pre%d", i);
 		gda_column_set_name (proxy->priv->columns[i], newname);
 		gda_column_set_title (proxy->priv->columns[i], newname);
 		g_free (newname);
 		gda_column_set_position (proxy->priv->columns[i], i);
 	}
 }
-	
-
 
 static GdaColumn *
 gda_data_proxy_describe_column (GdaDataModel *model, gint col)

Modified: trunk/libgda/gda-data-proxy.h
==============================================================================
--- trunk/libgda/gda-data-proxy.h	(original)
+++ trunk/libgda/gda-data-proxy.h	Wed Apr 30 20:18:52 2008
@@ -108,6 +108,7 @@
 
 gboolean          gda_data_proxy_set_filter_expr          (GdaDataProxy *proxy, const gchar *filter_expr, GError **error);
 const gchar      *gda_data_proxy_get_filter_expr          (GdaDataProxy *proxy);
+gboolean          gda_data_proxy_set_ordering_column      (GdaDataProxy *proxy, gint col, GError **error);
 gint              gda_data_proxy_get_filtered_n_rows      (GdaDataProxy *proxy);
 
 G_END_DECLS

Modified: trunk/libgda/gda-init.c
==============================================================================
--- trunk/libgda/gda-init.c	(original)
+++ trunk/libgda/gda-init.c	Wed Apr 30 20:18:52 2008
@@ -25,12 +25,6 @@
 #include <libgda/binreloc/gda-binreloc.h>
 #include <sql-parser/gda-sql-parser.h>
 
-static GStaticRecMutex gda_mutex = G_STATIC_REC_MUTEX_INIT;
-#define GDA_LOCK() g_static_rec_mutex_lock(&gda_mutex)
-#define GDA_UNLOCK() g_static_rec_mutex_unlock(&gda_mutex)
-
-static GMainLoop *main_loop = NULL;
-
 /* global variables */
 xmlDtdPtr       gda_array_dtd = NULL;
 xmlDtdPtr       gda_paramlist_dtd = NULL;
@@ -39,15 +33,11 @@
 
 /**
  * gda_init
- * @app_id: name of the program.
- * @version: revision number of the program.
- * @nargs: number of arguments, usually argc from main().
- * @args: list of arguments, usually argv from main().
  * 
- * Initializes the GDA library. 
+ * Initializes the GDA library. Must be called prior to any Libgda usage.
  */
 void
-gda_init (const gchar *app_id, const gchar *version, gint nargs, gchar *args[])
+gda_init (void)
 {
 	static gboolean initialized = FALSE;
 	GType type;
@@ -74,7 +64,6 @@
 	}
 
 	g_type_init ();
-	g_set_prgname (app_id);
 
 	if (!g_module_supported ())
 		g_error (_("libgda needs GModule. Finishing..."));
@@ -163,76 +152,3 @@
 
 	initialized = TRUE;
 }
-
-typedef struct {
-	GdaInitFunc init_func;
-	gpointer user_data;
-} InitCbData;
-
-static gboolean
-idle_cb (gpointer user_data)
-{
-	InitCbData *cb_data = (InitCbData *) user_data;
-
-	g_return_val_if_fail (cb_data != NULL, FALSE);
-
-	if (cb_data->init_func)
-		cb_data->init_func (cb_data->user_data);
-
-	g_free (cb_data);
-
-	return FALSE;
-}
-
-/**
- * gda_main_run
- * @init_func: function to be called when everything has been initialized.
- * @user_data: data to be passed to the init function.
- *
- * Runs the GDA main loop, which is nothing more than the glib main
- * loop, but with internally added stuff specific for applications using
- * libgda.
- *
- * You can specify a function to be called after everything has been correctly
- * initialized (that is, for initializing your own stuff).
- */
-void
-gda_main_run (GdaInitFunc init_func, gpointer user_data)
-{
-	GDA_LOCK ();
-	if (main_loop) {
-		GDA_UNLOCK ();
-		return;
-	}
-
-	if (init_func) {
-		InitCbData *cb_data;
-
-		cb_data = g_new (InitCbData, 1);
-		cb_data->init_func = init_func;
-		cb_data->user_data = user_data;
-
-		g_idle_add ((GSourceFunc) idle_cb, cb_data);
-	}
-
-	main_loop = g_main_loop_new (g_main_context_default (), FALSE);
-	g_main_loop_run (main_loop);
-	GDA_UNLOCK ();
-}
-
-/**
- * gda_main_quit
- * 
- * Exits the main loop.
- */
-void
-gda_main_quit (void)
-{
-	GDA_LOCK ();
-	g_main_loop_quit (main_loop);
-	g_main_loop_unref (main_loop);
-
-	main_loop = NULL;
-	GDA_UNLOCK ();
-}
-

Modified: trunk/libgda/gda-meta-store.c
==============================================================================
--- trunk/libgda/gda-meta-store.c	(original)
+++ trunk/libgda/gda-meta-store.c	Wed Apr 30 20:18:52 2008
@@ -1325,7 +1325,7 @@
                                         ust->cond = expr;
                                 else {
                                         g_assert (ust->cond->cond);
-                                        if (ust->cond->cond->operator == GDA_SQL_OPERATOR_AND)
+                                        if (ust->cond->cond->operator == GDA_SQL_OPERATOR_TYPE_AND)
                                                 ust->cond->cond->operands = g_slist_append (ust->cond->cond->operands,
                                                                                             expr);
                                         else {
@@ -1340,7 +1340,7 @@
                                         dst->cond = expr;
                                 else {
                                         g_assert (dst->cond->cond);
-                                        if (dst->cond->cond->operator == GDA_SQL_OPERATOR_AND)
+                                        if (dst->cond->cond->operator == GDA_SQL_OPERATOR_TYPE_AND)
                                                 dst->cond->cond->operands = g_slist_append (dst->cond->cond->operands,
                                                                                             expr);
                                         else {
@@ -1538,7 +1538,7 @@
 	GdaSqlExpr *expr;
 	expr = gda_sql_expr_new (parent);
 	expr->cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
-	expr->cond->operator = GDA_SQL_OPERATOR_AND;
+	expr->cond->operator = GDA_SQL_OPERATOR_TYPE_AND;
 
 	expr->cond->operands = g_slist_append (NULL, current);
 	GDA_SQL_ANY_PART (current)->parent = GDA_SQL_ANY_PART (expr->cond);
@@ -1556,7 +1556,7 @@
 	retexpr = gda_sql_expr_new (parent);
 
 	op = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
-	op->operator = GDA_SQL_OPERATOR_EQ;
+	op->operator = GDA_SQL_OPERATOR_TYPE_EQ;
 	retexpr->cond = op;
 	
 	expr = gda_sql_expr_new (GDA_SQL_ANY_PART (op));

Modified: trunk/libgda/gda-set.c
==============================================================================
--- trunk/libgda/gda-set.c	(original)
+++ trunk/libgda/gda-set.c	Wed Apr 30 20:18:52 2008
@@ -898,7 +898,7 @@
 static void
 notify_holder_cb (GdaHolder *holder, GParamSpec *pspec, GdaSet *set)
 {
-	if (!strcmp (pspec->name, "entry-plugin")) {
+	if (!strcmp (pspec->name, "plugin")) {
 #ifdef GDA_DEBUG_signal
 		g_print (">> 'HOLDER_PLUGIN_CHANGED' from %s\n", __FUNCTION__);
 #endif

Modified: trunk/libgda/gda-statement.c
==============================================================================
--- trunk/libgda/gda-statement.c	(original)
+++ trunk/libgda/gda-statement.c	Wed Apr 30 20:18:52 2008
@@ -1454,86 +1454,86 @@
 
 	str = NULL;
 	switch (op->operator) {
-	case GDA_SQL_OPERATOR_EQ:
+	case GDA_SQL_OPERATOR_TYPE_EQ:
 		if (SQL_OPERAND (sql_list->next->data)->is_null) 
 			str = g_strdup_printf ("%s IS NULL", SQL_OPERAND (sql_list->data)->sql);
 		else
 			str = g_strdup_printf ("%s = %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_IS:
+	case GDA_SQL_OPERATOR_TYPE_IS:
 		str = g_strdup_printf ("%s IS %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_LIKE:
+	case GDA_SQL_OPERATOR_TYPE_LIKE:
 		str = g_strdup_printf ("%s LIKE %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_GT:
+	case GDA_SQL_OPERATOR_TYPE_GT:
 		str = g_strdup_printf ("%s > %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_LT:
+	case GDA_SQL_OPERATOR_TYPE_LT:
 		str = g_strdup_printf ("%s < %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_GEQ:
+	case GDA_SQL_OPERATOR_TYPE_GEQ:
 		str = g_strdup_printf ("%s >= %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_LEQ:
+	case GDA_SQL_OPERATOR_TYPE_LEQ:
 		str = g_strdup_printf ("%s <= %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_DIFF:
+	case GDA_SQL_OPERATOR_TYPE_DIFF:
 		str = g_strdup_printf ("%s != %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_REGEXP:
+	case GDA_SQL_OPERATOR_TYPE_REGEXP:
 		str = g_strdup_printf ("%s ~ %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_REGEXP_CI:
+	case GDA_SQL_OPERATOR_TYPE_REGEXP_CI:
 		str = g_strdup_printf ("%s ~* %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_NOT_REGEXP:
+	case GDA_SQL_OPERATOR_TYPE_NOT_REGEXP:
 		str = g_strdup_printf ("%s !~ %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_NOT_REGEXP_CI:
+	case GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI:
 		str = g_strdup_printf ("%s !~* %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_SIMILAR:
+	case GDA_SQL_OPERATOR_TYPE_SIMILAR:
 		str = g_strdup_printf ("%s SIMILAR TO %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_REM:
+	case GDA_SQL_OPERATOR_TYPE_REM:
 		str = g_strdup_printf ("%s %% %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_DIV:
+	case GDA_SQL_OPERATOR_TYPE_DIV:
 		str = g_strdup_printf ("%s / %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_BITAND:
+	case GDA_SQL_OPERATOR_TYPE_BITAND:
 		str = g_strdup_printf ("%s & %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_BITOR:
+	case GDA_SQL_OPERATOR_TYPE_BITOR:
 		str = g_strdup_printf ("%s | %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_BETWEEN:
+	case GDA_SQL_OPERATOR_TYPE_BETWEEN:
 		str = g_strdup_printf ("%s BETWEEN %s AND %s", SQL_OPERAND (sql_list->data)->sql, 
 				       SQL_OPERAND (sql_list->next->data)->sql,
 				       SQL_OPERAND (sql_list->next->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_ISNULL:
+	case GDA_SQL_OPERATOR_TYPE_ISNULL:
 		str = g_strdup_printf ("%s IS NULL", SQL_OPERAND (sql_list->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_ISNOTNULL:
+	case GDA_SQL_OPERATOR_TYPE_ISNOTNULL:
 		str = g_strdup_printf ("%s IS NOT NULL", SQL_OPERAND (sql_list->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_BITNOT:
+	case GDA_SQL_OPERATOR_TYPE_BITNOT:
 		str = g_strdup_printf ("~ %s", SQL_OPERAND (sql_list->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_NOT:
+	case GDA_SQL_OPERATOR_TYPE_NOT:
 		str = g_strdup_printf ("NOT %s", SQL_OPERAND (sql_list->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_IN:
-	case GDA_SQL_OPERATOR_NOTIN: {
+	case GDA_SQL_OPERATOR_TYPE_IN:
+	case GDA_SQL_OPERATOR_TYPE_NOTIN: {
 		gboolean add_p = TRUE;
 		if (sql_list->next && !(sql_list->next->next) &&
 		    *(SQL_OPERAND (sql_list->next->data)->sql)=='(')
 			add_p = FALSE;
 
 		string = g_string_new (SQL_OPERAND (sql_list->data)->sql);
-		if (op->operator == GDA_SQL_OPERATOR_IN)
+		if (op->operator == GDA_SQL_OPERATOR_TYPE_IN)
 			g_string_append (string, " IN ");
 		else
 			g_string_append (string, " NOT IN ");
@@ -1550,22 +1550,22 @@
 		g_string_free (string, FALSE);
 		break;
 	}
-	case GDA_SQL_OPERATOR_CONCAT:
+	case GDA_SQL_OPERATOR_TYPE_CONCAT:
 		multi_op = "||";
 		break;
-	case GDA_SQL_OPERATOR_PLUS:
+	case GDA_SQL_OPERATOR_TYPE_PLUS:
 		multi_op = "+";
 		break;
-	case GDA_SQL_OPERATOR_MINUS:
+	case GDA_SQL_OPERATOR_TYPE_MINUS:
 		multi_op = "-";
 		break;
-	case GDA_SQL_OPERATOR_STAR:
+	case GDA_SQL_OPERATOR_TYPE_STAR:
 		multi_op = "*";
 		break;
-	case GDA_SQL_OPERATOR_AND:
+	case GDA_SQL_OPERATOR_TYPE_AND:
 		multi_op = "AND";
 		break;
-	case GDA_SQL_OPERATOR_OR:
+	case GDA_SQL_OPERATOR_TYPE_OR:
 		multi_op = "OR";
 		break;
 	default:

Modified: trunk/libgda/gda-util.c
==============================================================================
--- trunk/libgda/gda-util.c	(original)
+++ trunk/libgda/gda-util.c	Wed Apr 30 20:18:52 2008
@@ -672,7 +672,7 @@
 		}
 		else if (mtable->pk_cols_nb > 1) {
 			and_cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
-			and_cond->operator = GDA_SQL_OPERATOR_AND;
+			and_cond->operator = GDA_SQL_OPERATOR_TYPE_AND;
 			expr->cond = and_cond;
 		}
 		for (i = 0; i < mtable->pk_cols_nb; i++) {
@@ -700,7 +700,7 @@
 
 				/* equal condition */
 				op = gda_sql_operation_new (GDA_SQL_ANY_PART (and_cond ? (gpointer)and_cond : (gpointer)expr));
-				op->operator = GDA_SQL_OPERATOR_EQ;
+				op->operator = GDA_SQL_OPERATOR_TYPE_EQ;
 				if (and_cond) 
 					and_cond->operands = g_slist_append (and_cond->operands, op);
 				else
@@ -844,12 +844,12 @@
 		}
 
 		/* parameter for the inserted value */
-		GdaSqlParamSpec *pspec = g_new0 (GdaSqlParamSpec, 1);
 		GdaSqlExpr *expr;
 		GdaMetaTableColumn *tcol;
 
 		tcol = selfield->validity_meta_table_column;
 		if (insert) {
+			GdaSqlParamSpec *pspec = g_new0 (GdaSqlParamSpec, 1);
 			pspec->name = g_strdup_printf ("+%d", colindex);
 			pspec->g_type = tcol->gtype != G_TYPE_INVALID ? tcol->gtype: G_TYPE_STRING;
 			pspec->type = g_strdup (gda_g_type_to_string (pspec->g_type));
@@ -859,6 +859,7 @@
 			insert_values_list = g_slist_append (insert_values_list, expr);
 		}
 		if (update) {
+			GdaSqlParamSpec *pspec = g_new0 (GdaSqlParamSpec, 1);
 			pspec->name = g_strdup_printf ("+%d", colindex);
 			pspec->g_type = tcol->gtype != G_TYPE_INVALID ? tcol->gtype: G_TYPE_STRING;
 			pspec->type = g_strdup (gda_g_type_to_string (pspec->g_type));
@@ -932,8 +933,13 @@
 	return retval;
 }
 
-/*
- * computes a hash string from @is, to be used in hash tables as a GHashFunc
+/**
+ * gda_identifier_hash
+ * @id: an identifier string
+ *
+ * computes a hash string from @id, to be used in hash tables as a #GHashFunc
+ *
+ * Returns: a new hash
  */
 guint
 gda_identifier_hash (const gchar *id)
@@ -959,9 +965,15 @@
 	return h;
 }
 
-/*
- * Does the same as strcmp(id1, id2), but handles the case where id1 and/or id2 are enclosed in double quotes,
- * can also be used in hash tables as a GEqualFunc
+/**
+ * gda_identifier_equal
+ * @id1: an identifier string
+ * @id2: an identifier string
+ *
+ * Does the same as strcmp(@id1, @id2), but handles the case where id1 and/or id2 are enclosed in double quotes.
+ * can also be used in hash tables as a #GEqualFunc.
+ *
+ * Returns: TRUE if @id1 and @id2 are equal.
  */
 gboolean
 gda_identifier_equal (const gchar *id1, const gchar *id2)
@@ -969,6 +981,11 @@
 	const gchar *ptr1, *ptr2;
 	gboolean dq1 = FALSE, dq2 = FALSE;
 
+	if ((!id1 && id2) || (id1 && !id2))
+		return FALSE;
+	if (!id1 && !id2)
+		return TRUE;
+
 	ptr1 = id1;
 	if (*ptr1 == '"') {
 		ptr1++;
@@ -1397,6 +1414,10 @@
 			else if (((unsigned char) *rptr >= (unsigned char) 0x80))
 				enc = TRUE;
 		}
+		if (!enc && (*rptr == '=')) {
+			/* also encode the '=' */
+			enc = TRUE;
+		}
 
 		if (enc) {
 			sprintf (wptr, "%%%02x", (unsigned char) *rptr);

Modified: trunk/libgda/libgda.h.in
==============================================================================
--- trunk/libgda/libgda.h.in	(original)
+++ trunk/libgda/libgda.h.in	Wed Apr 30 20:18:52 2008
@@ -73,11 +73,7 @@
 
 G_BEGIN_DECLS
 
-void     gda_init             (const gchar *app_id, const gchar *version, gint nargs, gchar *args[]);
-
-typedef  void (* GdaInitFunc) (gpointer user_data);
-void     gda_main_run         (GdaInitFunc init_func, gpointer user_data);
-void     gda_main_quit        (void);
+void gda_init (void);
 
 G_END_DECLS
 

Modified: trunk/libgda/sql-parser/gda-sql-parser.c
==============================================================================
--- trunk/libgda/sql-parser/gda-sql-parser.c	(original)
+++ trunk/libgda/sql-parser/gda-sql-parser.c	Wed Apr 30 20:18:52 2008
@@ -277,6 +277,7 @@
 		
 		klass = (GdaSqlParserClass*) G_OBJECT_GET_CLASS (parser);
 		gda_sql_parser_reset (parser);
+		g_free (parser->priv->context);
 
 		if (klass->delim_alloc) {
 			g_assert (klass->delim_free);
@@ -1402,8 +1403,7 @@
 		parser->priv->context->token_type = L_ILLEGAL;
 
 	if (!retval)
-		retval = token_as_string (parser->priv->context->next_token_start, consumed_chars)
-;
+		retval = token_as_string (parser->priv->context->next_token_start, consumed_chars);
  tok_end:
 	parser->priv->context->last_token_start = parser->priv->context->next_token_start;
 	parser->priv->context->next_token_start += consumed_chars;
@@ -1520,6 +1520,9 @@
 			v1 = v2;
 		}
 		if (ttype != exp_type) {
+			g_value_reset (v1);
+			g_free (v1);
+
 			/* not what was expected => pop all the contexts */
 			for (; npushed > nmatched ; npushed--)
 				pop_tokenizer_context (parser);

Modified: trunk/libgda/sql-parser/gda-statement-struct-parts.c
==============================================================================
--- trunk/libgda/sql-parser/gda-statement-struct-parts.c	(original)
+++ trunk/libgda/sql-parser/gda-statement-struct-parts.c	Wed Apr 30 20:18:52 2008
@@ -688,68 +688,68 @@
  * Returns: a string with the operator's name or NULL in case @op is invalid.
  */
 const gchar *
-gda_sql_operation_operator_to_string (GdaSqlOperator op)
+gda_sql_operation_operator_to_string (GdaSqlOperatorType op)
 {
 	switch (op) {
-	case GDA_SQL_OPERATOR_AND:
+	case GDA_SQL_OPERATOR_TYPE_AND:
 		return "AND";
-	case GDA_SQL_OPERATOR_OR:
+	case GDA_SQL_OPERATOR_TYPE_OR:
 		return "OR";
-	case GDA_SQL_OPERATOR_NOT:
+	case GDA_SQL_OPERATOR_TYPE_NOT:
 		return "NOT";
-	case GDA_SQL_OPERATOR_EQ:
+	case GDA_SQL_OPERATOR_TYPE_EQ:
 		return "=";
-	case GDA_SQL_OPERATOR_IS:
+	case GDA_SQL_OPERATOR_TYPE_IS:
 		return "IS";
-	case GDA_SQL_OPERATOR_ISNULL:
+	case GDA_SQL_OPERATOR_TYPE_ISNULL:
 		return "IS NULL";
-	case GDA_SQL_OPERATOR_ISNOTNULL:
+	case GDA_SQL_OPERATOR_TYPE_ISNOTNULL:
 		return "IS NOT NULL";
-	case GDA_SQL_OPERATOR_IN:
+	case GDA_SQL_OPERATOR_TYPE_IN:
 		return "IN";
-	case GDA_SQL_OPERATOR_NOTIN:
+	case GDA_SQL_OPERATOR_TYPE_NOTIN:
 		return "NOT IN";
-	case GDA_SQL_OPERATOR_LIKE:
+	case GDA_SQL_OPERATOR_TYPE_LIKE:
 		return "LIKE";
-	case GDA_SQL_OPERATOR_BETWEEN:
+	case GDA_SQL_OPERATOR_TYPE_BETWEEN:
 		return "BETWEEN";
-	case GDA_SQL_OPERATOR_GT:
+	case GDA_SQL_OPERATOR_TYPE_GT:
 		return ">";
-	case GDA_SQL_OPERATOR_LT:
+	case GDA_SQL_OPERATOR_TYPE_LT:
 		return "<";
-	case GDA_SQL_OPERATOR_GEQ:
+	case GDA_SQL_OPERATOR_TYPE_GEQ:
 		return ">=";
-	case GDA_SQL_OPERATOR_LEQ:
+	case GDA_SQL_OPERATOR_TYPE_LEQ:
 		return "<=";
-	case GDA_SQL_OPERATOR_DIFF:
+	case GDA_SQL_OPERATOR_TYPE_DIFF:
 		return "!=";
-	case GDA_SQL_OPERATOR_REGEXP:
+	case GDA_SQL_OPERATOR_TYPE_REGEXP:
 		return "RE";
-	case GDA_SQL_OPERATOR_REGEXP_CI:
+	case GDA_SQL_OPERATOR_TYPE_REGEXP_CI:
 		return "CI_RE";
-	case GDA_SQL_OPERATOR_NOT_REGEXP:
+	case GDA_SQL_OPERATOR_TYPE_NOT_REGEXP:
 		return "!RE";
-	case GDA_SQL_OPERATOR_NOT_REGEXP_CI:
+	case GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI:
 		return "!CI_RE";
-	case GDA_SQL_OPERATOR_SIMILAR:
+	case GDA_SQL_OPERATOR_TYPE_SIMILAR:
 		return "SIMILAR TO";
-	case GDA_SQL_OPERATOR_CONCAT:
+	case GDA_SQL_OPERATOR_TYPE_CONCAT:
 		return "||";
-	case GDA_SQL_OPERATOR_PLUS:
+	case GDA_SQL_OPERATOR_TYPE_PLUS:
 		return "+";
-	case GDA_SQL_OPERATOR_MINUS:
+	case GDA_SQL_OPERATOR_TYPE_MINUS:
 		return "-";
-	case GDA_SQL_OPERATOR_STAR:
+	case GDA_SQL_OPERATOR_TYPE_STAR:
 		return "*";
-	case GDA_SQL_OPERATOR_DIV:
+	case GDA_SQL_OPERATOR_TYPE_DIV:
 		return "/";
-	case GDA_SQL_OPERATOR_REM:
+	case GDA_SQL_OPERATOR_TYPE_REM:
 		return "%";
-	case GDA_SQL_OPERATOR_BITAND:
+	case GDA_SQL_OPERATOR_TYPE_BITAND:
 		return "&";
-	case GDA_SQL_OPERATOR_BITOR:
+	case GDA_SQL_OPERATOR_TYPE_BITOR:
 		return "|";
-	case GDA_SQL_OPERATOR_BITNOT:
+	case GDA_SQL_OPERATOR_TYPE_BITNOT:
 		return "~";
 	default:
 		g_error ("Unhandled operator constant %d\n", op);
@@ -761,74 +761,74 @@
  * gda_sql_operator_from_string
  * @op: a #GdaSqlOperation structure
  * 
- * Returns #GdaSqlOperator that correspond with the string @op.
+ * Returns #GdaSqlOperatorType that correspond with the string @op.
  *
- * Returns: #GdaSqlOperator
+ * Returns: #GdaSqlOperatorType
  */
-GdaSqlOperator 
+GdaSqlOperatorType 
 gda_sql_operation_operator_from_string (const gchar *op)
 {
 	switch (g_ascii_toupper (*op)) {
 	case 'A':
-		return GDA_SQL_OPERATOR_AND;
+		return GDA_SQL_OPERATOR_TYPE_AND;
 	case 'O':
-		return GDA_SQL_OPERATOR_OR;
+		return GDA_SQL_OPERATOR_TYPE_OR;
 	case 'N':
-		return GDA_SQL_OPERATOR_NOT;
+		return GDA_SQL_OPERATOR_TYPE_NOT;
 	case '=':
-		return GDA_SQL_OPERATOR_EQ;
+		return GDA_SQL_OPERATOR_TYPE_EQ;
 	case 'I':
 		if (op[1] == 'S')
-			return GDA_SQL_OPERATOR_IS;
+			return GDA_SQL_OPERATOR_TYPE_IS;
 		else if (op[1] == 'N')
-			return GDA_SQL_OPERATOR_IN;
+			return GDA_SQL_OPERATOR_TYPE_IN;
 		break;
 	case 'L':
-		return GDA_SQL_OPERATOR_LIKE;
+		return GDA_SQL_OPERATOR_TYPE_LIKE;
 	case 'B':
-		return GDA_SQL_OPERATOR_BETWEEN;
+		return GDA_SQL_OPERATOR_TYPE_BETWEEN;
 	case '>':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_GEQ;
+			return GDA_SQL_OPERATOR_TYPE_GEQ;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_GT;
+			return GDA_SQL_OPERATOR_TYPE_GT;
 		break;
 	case '<':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_LEQ;
+			return GDA_SQL_OPERATOR_TYPE_LEQ;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_LT;
+			return GDA_SQL_OPERATOR_TYPE_LT;
 		break;
 	case '!':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_DIFF;
+			return GDA_SQL_OPERATOR_TYPE_DIFF;
 		else if (op[1] == 'R') 
-			return GDA_SQL_OPERATOR_NOT_REGEXP;
+			return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP;
 		else
-			return GDA_SQL_OPERATOR_NOT_REGEXP_CI;
+			return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI;
 	case 'R':
-		return GDA_SQL_OPERATOR_REGEXP;
+		return GDA_SQL_OPERATOR_TYPE_REGEXP;
 	case 'C':
-		return GDA_SQL_OPERATOR_REGEXP_CI;
+		return GDA_SQL_OPERATOR_TYPE_REGEXP_CI;
 	case 'S':
-		return GDA_SQL_OPERATOR_SIMILAR;
+		return GDA_SQL_OPERATOR_TYPE_SIMILAR;
 	case '|':
 		if (op[1] == '|')
-			return GDA_SQL_OPERATOR_CONCAT;
+			return GDA_SQL_OPERATOR_TYPE_CONCAT;
 		else
-			return GDA_SQL_OPERATOR_BITOR;
+			return GDA_SQL_OPERATOR_TYPE_BITOR;
 	case '+':
-		return GDA_SQL_OPERATOR_PLUS;
+		return GDA_SQL_OPERATOR_TYPE_PLUS;
 	case '-':
-		return GDA_SQL_OPERATOR_MINUS;
+		return GDA_SQL_OPERATOR_TYPE_MINUS;
 	case '*':
-		return GDA_SQL_OPERATOR_STAR;
+		return GDA_SQL_OPERATOR_TYPE_STAR;
 	case '/':
-		return GDA_SQL_OPERATOR_DIV;
+		return GDA_SQL_OPERATOR_TYPE_DIV;
 	case '%':
-		return GDA_SQL_OPERATOR_REM;
+		return GDA_SQL_OPERATOR_TYPE_REM;
 	case '&':
-		return GDA_SQL_OPERATOR_BITAND;
+		return GDA_SQL_OPERATOR_TYPE_BITAND;
 	}
 	g_error ("Unhandled operator named '%s'\n", op);
 	return 0;

Modified: trunk/libgda/sql-parser/gda-statement-struct-parts.h
==============================================================================
--- trunk/libgda/sql-parser/gda-statement-struct-parts.h	(original)
+++ trunk/libgda/sql-parser/gda-statement-struct-parts.h	Wed Apr 30 20:18:52 2008
@@ -124,52 +124,52 @@
  * An operation on one or more expressions
  */
 typedef enum {
-	GDA_SQL_OPERATOR_AND,
-	GDA_SQL_OPERATOR_OR,
+	GDA_SQL_OPERATOR_TYPE_AND,
+	GDA_SQL_OPERATOR_TYPE_OR,
 
-	GDA_SQL_OPERATOR_EQ, 
-	GDA_SQL_OPERATOR_IS, 
-	GDA_SQL_OPERATOR_LIKE,
-	GDA_SQL_OPERATOR_BETWEEN,
-	GDA_SQL_OPERATOR_GT,
-	GDA_SQL_OPERATOR_LT,
-	GDA_SQL_OPERATOR_GEQ,
-	GDA_SQL_OPERATOR_LEQ,
-	GDA_SQL_OPERATOR_DIFF,
-	GDA_SQL_OPERATOR_REGEXP,
-	GDA_SQL_OPERATOR_REGEXP_CI,
-	GDA_SQL_OPERATOR_NOT_REGEXP,
-	GDA_SQL_OPERATOR_NOT_REGEXP_CI,
-	GDA_SQL_OPERATOR_SIMILAR,
-	GDA_SQL_OPERATOR_ISNULL,
-	GDA_SQL_OPERATOR_ISNOTNULL,
-	GDA_SQL_OPERATOR_NOT,
-	GDA_SQL_OPERATOR_IN,
-	GDA_SQL_OPERATOR_NOTIN,
-
-	GDA_SQL_OPERATOR_CONCAT,
-	GDA_SQL_OPERATOR_PLUS,
-	GDA_SQL_OPERATOR_MINUS,
-	GDA_SQL_OPERATOR_STAR,
-	GDA_SQL_OPERATOR_DIV,
-	GDA_SQL_OPERATOR_REM,
-	GDA_SQL_OPERATOR_BITAND,
-	GDA_SQL_OPERATOR_BITOR,
-	GDA_SQL_OPERATOR_BITNOT
-} GdaSqlOperator;
+	GDA_SQL_OPERATOR_TYPE_EQ, 
+	GDA_SQL_OPERATOR_TYPE_IS, 
+	GDA_SQL_OPERATOR_TYPE_LIKE,
+	GDA_SQL_OPERATOR_TYPE_BETWEEN,
+	GDA_SQL_OPERATOR_TYPE_GT,
+	GDA_SQL_OPERATOR_TYPE_LT,
+	GDA_SQL_OPERATOR_TYPE_GEQ,
+	GDA_SQL_OPERATOR_TYPE_LEQ,
+	GDA_SQL_OPERATOR_TYPE_DIFF,
+	GDA_SQL_OPERATOR_TYPE_REGEXP,
+	GDA_SQL_OPERATOR_TYPE_REGEXP_CI,
+	GDA_SQL_OPERATOR_TYPE_NOT_REGEXP,
+	GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI,
+	GDA_SQL_OPERATOR_TYPE_SIMILAR,
+	GDA_SQL_OPERATOR_TYPE_ISNULL,
+	GDA_SQL_OPERATOR_TYPE_ISNOTNULL,
+	GDA_SQL_OPERATOR_TYPE_NOT,
+	GDA_SQL_OPERATOR_TYPE_IN,
+	GDA_SQL_OPERATOR_TYPE_NOTIN,
+
+	GDA_SQL_OPERATOR_TYPE_CONCAT,
+	GDA_SQL_OPERATOR_TYPE_PLUS,
+	GDA_SQL_OPERATOR_TYPE_MINUS,
+	GDA_SQL_OPERATOR_TYPE_STAR,
+	GDA_SQL_OPERATOR_TYPE_DIV,
+	GDA_SQL_OPERATOR_TYPE_REM,
+	GDA_SQL_OPERATOR_TYPE_BITAND,
+	GDA_SQL_OPERATOR_TYPE_BITOR,
+	GDA_SQL_OPERATOR_TYPE_BITNOT
+} GdaSqlOperatorType;
 
 struct _GdaSqlOperation {
-	GdaSqlAnyPart    any;
-	GdaSqlOperator   operator;
-	GSList          *operands;
+	GdaSqlAnyPart       any;
+	GdaSqlOperatorType  operator;
+	GSList             *operands;
 };
 
 GdaSqlOperation  *gda_sql_operation_new            (GdaSqlAnyPart *parent);
 void              gda_sql_operation_free           (GdaSqlOperation *operation);
 GdaSqlOperation  *gda_sql_operation_copy           (GdaSqlOperation *operation);
 gchar            *gda_sql_operation_serialize      (GdaSqlOperation *operation);
-const gchar      *gda_sql_operation_operator_to_string (GdaSqlOperator op);
-GdaSqlOperator    gda_sql_operation_operator_from_string (const gchar *op);
+const gchar      *gda_sql_operation_operator_to_string (GdaSqlOperatorType op);
+GdaSqlOperatorType    gda_sql_operation_operator_from_string (const gchar *op);
 
 /*
  * A CASE expression

Modified: trunk/libgda/sql-parser/gda-statement-struct.c
==============================================================================
--- trunk/libgda/sql-parser/gda-statement-struct.c	(original)
+++ trunk/libgda/sql-parser/gda-statement-struct.c	Wed Apr 30 20:18:52 2008
@@ -921,60 +921,60 @@
 			return FALSE;
 		}
 		switch (operation->operator) {
-		case GDA_SQL_OPERATOR_EQ:
-		case GDA_SQL_OPERATOR_IS:
-		case GDA_SQL_OPERATOR_LIKE:
-		case GDA_SQL_OPERATOR_GT:
-		case GDA_SQL_OPERATOR_LT:
-		case GDA_SQL_OPERATOR_GEQ:
-		case GDA_SQL_OPERATOR_LEQ:
-		case GDA_SQL_OPERATOR_DIFF:
-		case GDA_SQL_OPERATOR_REGEXP:
-		case GDA_SQL_OPERATOR_REGEXP_CI:
-		case GDA_SQL_OPERATOR_NOT_REGEXP:
-		case GDA_SQL_OPERATOR_NOT_REGEXP_CI:
-		case GDA_SQL_OPERATOR_SIMILAR:
-		case GDA_SQL_OPERATOR_REM:
-		case GDA_SQL_OPERATOR_DIV:
-		case GDA_SQL_OPERATOR_BITAND:
-		case GDA_SQL_OPERATOR_BITOR:
+		case GDA_SQL_OPERATOR_TYPE_EQ:
+		case GDA_SQL_OPERATOR_TYPE_IS:
+		case GDA_SQL_OPERATOR_TYPE_LIKE:
+		case GDA_SQL_OPERATOR_TYPE_GT:
+		case GDA_SQL_OPERATOR_TYPE_LT:
+		case GDA_SQL_OPERATOR_TYPE_GEQ:
+		case GDA_SQL_OPERATOR_TYPE_LEQ:
+		case GDA_SQL_OPERATOR_TYPE_DIFF:
+		case GDA_SQL_OPERATOR_TYPE_REGEXP:
+		case GDA_SQL_OPERATOR_TYPE_REGEXP_CI:
+		case GDA_SQL_OPERATOR_TYPE_NOT_REGEXP:
+		case GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI:
+		case GDA_SQL_OPERATOR_TYPE_SIMILAR:
+		case GDA_SQL_OPERATOR_TYPE_REM:
+		case GDA_SQL_OPERATOR_TYPE_DIV:
+		case GDA_SQL_OPERATOR_TYPE_BITAND:
+		case GDA_SQL_OPERATOR_TYPE_BITOR:
 			if (g_slist_length (operation->operands) != 2) {
 				g_set_error (error, GDA_SQL_ERROR, GDA_SQL_STRUCTURE_CONTENTS_ERROR,
 					     _("Wrong number of operands"));
 				return FALSE;
 			}
 			break;
-		case GDA_SQL_OPERATOR_BETWEEN:
+		case GDA_SQL_OPERATOR_TYPE_BETWEEN:
 			if (g_slist_length (operation->operands) != 3) {
 				g_set_error (error, GDA_SQL_ERROR, GDA_SQL_STRUCTURE_CONTENTS_ERROR,
 					     _("Wrong number of operands"));
 				return FALSE;
 			}
 			break;
-		case GDA_SQL_OPERATOR_BITNOT:
-		case GDA_SQL_OPERATOR_ISNULL:
-		case GDA_SQL_OPERATOR_ISNOTNULL:
-		case GDA_SQL_OPERATOR_NOT:
+		case GDA_SQL_OPERATOR_TYPE_BITNOT:
+		case GDA_SQL_OPERATOR_TYPE_ISNULL:
+		case GDA_SQL_OPERATOR_TYPE_ISNOTNULL:
+		case GDA_SQL_OPERATOR_TYPE_NOT:
 			if (g_slist_length (operation->operands) != 1) {
 				g_set_error (error, GDA_SQL_ERROR, GDA_SQL_STRUCTURE_CONTENTS_ERROR,
 					     _("Wrong number of operands"));
 				return FALSE;
 			}
 			break;
-		case GDA_SQL_OPERATOR_AND:
-		case GDA_SQL_OPERATOR_OR:
-		case GDA_SQL_OPERATOR_IN:
-		case GDA_SQL_OPERATOR_NOTIN:
-		case GDA_SQL_OPERATOR_CONCAT:
-		case GDA_SQL_OPERATOR_STAR:
+		case GDA_SQL_OPERATOR_TYPE_AND:
+		case GDA_SQL_OPERATOR_TYPE_OR:
+		case GDA_SQL_OPERATOR_TYPE_IN:
+		case GDA_SQL_OPERATOR_TYPE_NOTIN:
+		case GDA_SQL_OPERATOR_TYPE_CONCAT:
+		case GDA_SQL_OPERATOR_TYPE_STAR:
 			if (g_slist_length (operation->operands) < 2) {
 				g_set_error (error, GDA_SQL_ERROR, GDA_SQL_STRUCTURE_CONTENTS_ERROR,
 					     _("Wrong number of operands"));
 				return FALSE;
 			}
 			break;
-		case GDA_SQL_OPERATOR_MINUS:
-		case GDA_SQL_OPERATOR_PLUS:
+		case GDA_SQL_OPERATOR_TYPE_MINUS:
+		case GDA_SQL_OPERATOR_TYPE_PLUS:
 			if (g_slist_length (operation->operands) == 0) {
 				g_set_error (error, GDA_SQL_ERROR, GDA_SQL_STRUCTURE_CONTENTS_ERROR,
 					     _("Wrong number of operands"));

Modified: trunk/libgda/sql-parser/parser.y
==============================================================================
--- trunk/libgda/sql-parser/parser.y	(original)
+++ trunk/libgda/sql-parser/parser.y	Wed Apr 30 20:18:52 2008
@@ -73,86 +73,86 @@
 	GSList *then_list;
 } CaseBody;
 
-static GdaSqlOperator
+static GdaSqlOperatorType
 sql_operation_string_to_operator (const gchar *op)
 {
 	switch (g_ascii_toupper (*op)) {
 	case 'A':
-		return GDA_SQL_OPERATOR_AND;
+		return GDA_SQL_OPERATOR_TYPE_AND;
 	case 'O':
-		return GDA_SQL_OPERATOR_OR;
+		return GDA_SQL_OPERATOR_TYPE_OR;
 	case 'N':
-		return GDA_SQL_OPERATOR_NOT;
+		return GDA_SQL_OPERATOR_TYPE_NOT;
 	case '=':
-		return GDA_SQL_OPERATOR_EQ;
+		return GDA_SQL_OPERATOR_TYPE_EQ;
 	case 'I':
 		if (op[1] == 'S')
-			return GDA_SQL_OPERATOR_IS;
+			return GDA_SQL_OPERATOR_TYPE_IS;
 		else if (op[1] == 'N')
-			return GDA_SQL_OPERATOR_IN;
+			return GDA_SQL_OPERATOR_TYPE_IN;
 		break;
 	case 'L':
-		return GDA_SQL_OPERATOR_LIKE;
+		return GDA_SQL_OPERATOR_TYPE_LIKE;
 	case 'B':
-		return GDA_SQL_OPERATOR_BETWEEN;
+		return GDA_SQL_OPERATOR_TYPE_BETWEEN;
 	case '>':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_GEQ;
+			return GDA_SQL_OPERATOR_TYPE_GEQ;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_GT;
+			return GDA_SQL_OPERATOR_TYPE_GT;
 		break;
 	case '<':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_LEQ;
+			return GDA_SQL_OPERATOR_TYPE_LEQ;
 		else if (op[1] == '>')
-			return GDA_SQL_OPERATOR_DIFF;
+			return GDA_SQL_OPERATOR_TYPE_DIFF;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_LT;
+			return GDA_SQL_OPERATOR_TYPE_LT;
 		break;
 	case '!':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_DIFF;
+			return GDA_SQL_OPERATOR_TYPE_DIFF;
 		else if (op[1] == '~') {
 			if (op[2] == 0)
-				return GDA_SQL_OPERATOR_NOT_REGEXP;
+				return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP;
 			else if (op[2] == '*')
-				return GDA_SQL_OPERATOR_NOT_REGEXP_CI;
+				return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI;
 		}
 		break;
 	case '~':
 		if (op[1] == '*')
-			return GDA_SQL_OPERATOR_REGEXP_CI;
+			return GDA_SQL_OPERATOR_TYPE_REGEXP_CI;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_REGEXP;
+			return GDA_SQL_OPERATOR_TYPE_REGEXP;
 		break;
 	case 'S':
-		return GDA_SQL_OPERATOR_SIMILAR;
+		return GDA_SQL_OPERATOR_TYPE_SIMILAR;
 	case '|':
 		if (op[1] == '|')
-			return GDA_SQL_OPERATOR_CONCAT;
+			return GDA_SQL_OPERATOR_TYPE_CONCAT;
 		else
-			return GDA_SQL_OPERATOR_BITOR;
+			return GDA_SQL_OPERATOR_TYPE_BITOR;
 	case '+':
-		return GDA_SQL_OPERATOR_PLUS;
+		return GDA_SQL_OPERATOR_TYPE_PLUS;
 	case '-':
-		return GDA_SQL_OPERATOR_MINUS;
+		return GDA_SQL_OPERATOR_TYPE_MINUS;
 	case '*':
-		return GDA_SQL_OPERATOR_STAR;
+		return GDA_SQL_OPERATOR_TYPE_STAR;
 	case '/':
-		return GDA_SQL_OPERATOR_DIV;
+		return GDA_SQL_OPERATOR_TYPE_DIV;
 	case '%':
-		return GDA_SQL_OPERATOR_REM;
+		return GDA_SQL_OPERATOR_TYPE_REM;
 	case '&':
-		return GDA_SQL_OPERATOR_BITAND;
+		return GDA_SQL_OPERATOR_TYPE_BITAND;
 	}
 	g_error ("Unhandled operator named '%s'\n", op);
 	return 0;
 }
 
-static GdaSqlOperator
+static GdaSqlOperatorType
 string_to_op_type (GValue *value)
 {
-	GdaSqlOperator op;
+	GdaSqlOperatorType op;
 	op = sql_operation_string_to_operator (g_value_get_string (value));
 	g_value_reset (value);
 	g_free (value);
@@ -160,7 +160,7 @@
 }
 
 static GdaSqlExpr *
-compose_multiple_expr (GdaSqlOperator op, GdaSqlExpr *left, GdaSqlExpr *right) {
+compose_multiple_expr (GdaSqlOperatorType op, GdaSqlExpr *left, GdaSqlExpr *right) {
 	GdaSqlExpr *ret;
 	if (left->cond && (left->cond->operator == op)) {
 		ret = left;
@@ -181,7 +181,7 @@
 }
 
 static GdaSqlExpr *
-create_two_expr (GdaSqlOperator op, GdaSqlExpr *left, GdaSqlExpr *right) {
+create_two_expr (GdaSqlOperatorType op, GdaSqlExpr *left, GdaSqlExpr *right) {
 	GdaSqlExpr *ret;
 	GdaSqlOperation *cond;
 	ret = gda_sql_expr_new (NULL);
@@ -196,7 +196,7 @@
 }
 
 static GdaSqlExpr *
-create_uni_expr (GdaSqlOperator op, GdaSqlExpr *expr) {
+create_uni_expr (GdaSqlOperatorType op, GdaSqlExpr *expr) {
 	GdaSqlExpr *ret;
 	GdaSqlOperation *cond;
 	ret = gda_sql_expr_new (NULL);
@@ -810,26 +810,26 @@
 					 g_free (T);}
 
 expr(C) ::= expr(L) PLUS|MINUS(O) expr(R). {C = compose_multiple_expr (string_to_op_type (O), L, R);}
-expr(C) ::= expr(L) STAR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_STAR, L, R);}
+expr(C) ::= expr(L) STAR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_STAR, L, R);}
 expr(C) ::= expr(L) SLASH|REM(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) BITAND|BITOR(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 
-expr(C) ::= MINUS expr(X). [UMINUS] {C = create_uni_expr (GDA_SQL_OPERATOR_MINUS, X);}
-expr(C) ::= PLUS expr(X). [UPLUS] {C = create_uni_expr (GDA_SQL_OPERATOR_PLUS, X);}
+expr(C) ::= MINUS expr(X). [UMINUS] {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_MINUS, X);}
+expr(C) ::= PLUS expr(X). [UPLUS] {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_PLUS, X);}
 
-expr(C) ::= expr(L) AND expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_AND, L, R);}
-expr(C) ::= expr(L) OR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_OR, L, R);}
-expr(C) ::= expr(L) CONCAT expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_CONCAT, L, R);}
+expr(C) ::= expr(L) AND expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_AND, L, R);}
+expr(C) ::= expr(L) OR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_OR, L, R);}
+expr(C) ::= expr(L) CONCAT expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_CONCAT, L, R);}
 
 expr(C) ::= expr(L) GT|LEQ|GEQ|LT(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) DIFF|EQ(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
-expr(C) ::= expr(L) LIKE expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_LIKE, L, R);}
+expr(C) ::= expr(L) LIKE expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_TYPE_LIKE, L, R);}
 expr(C) ::= expr(L) REGEXP|REGEXP_CI|NOT_REGEXP|NOT_REGEXP_CI|SIMILAR(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) BETWEEN expr(R) AND expr(E). {GdaSqlOperation *cond;
 						  C = gda_sql_expr_new (NULL);
 						  cond = gda_sql_operation_new (GDA_SQL_ANY_PART (C));
 						  C->cond = cond;
-						  cond->operator = GDA_SQL_OPERATOR_BETWEEN;
+						  cond->operator = GDA_SQL_OPERATOR_TYPE_BETWEEN;
 						  cond->operands = g_slist_append (NULL, L);
 						  GDA_SQL_ANY_PART (L)->parent = GDA_SQL_ANY_PART (cond);
 						  cond->operands = g_slist_append (cond->operands, R);
@@ -843,7 +843,7 @@
 						      expr = gda_sql_expr_new (NULL);
 						      cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
 						      expr->cond = cond;
-						      cond->operator = GDA_SQL_OPERATOR_BETWEEN;
+						      cond->operator = GDA_SQL_OPERATOR_TYPE_BETWEEN;
 						      cond->operands = g_slist_append (NULL, L);
 						      GDA_SQL_ANY_PART (L)->parent = GDA_SQL_ANY_PART (cond);
 						      cond->operands = g_slist_append (cond->operands, R);
@@ -854,23 +854,23 @@
 						      C = gda_sql_expr_new (NULL);
 						      cond = gda_sql_operation_new (GDA_SQL_ANY_PART (C));
 						      C->cond = cond;
-						      cond->operator = GDA_SQL_OPERATOR_NOT;
+						      cond->operator = GDA_SQL_OPERATOR_TYPE_NOT;
 						      cond->operands = g_slist_prepend (NULL, expr);
 						      GDA_SQL_ANY_PART (expr)->parent = GDA_SQL_ANY_PART (cond);
 }
 
-expr(C) ::= NOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_NOT, R);}
-expr(C) ::= BITNOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_BITNOT, R);}
+expr(C) ::= NOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_NOT, R);}
+expr(C) ::= BITNOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_BITNOT, R);}
 expr(C) ::= expr(R) uni_op(O) . {C = create_uni_expr (O, R);}
 
-expr(C) ::= expr(L) IS expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_IS, L, R);}
+expr(C) ::= expr(L) IS expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_TYPE_IS, L, R);}
 expr(E) ::= LP compound(S) RP. {E = gda_sql_expr_new (NULL); gda_sql_expr_take_select (E, S);}
 expr(E) ::= expr(R) IN LP exprlist(L) RP. {GdaSqlOperation *cond;
 					   GSList *list;
 					   E = gda_sql_expr_new (NULL);
 					   cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					   E->cond = cond;
-					   cond->operator = GDA_SQL_OPERATOR_IN;
+					   cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					   cond->operands = g_slist_prepend (L, R);
 					   for (list = cond->operands; list; list = list->next)
 						   GDA_SQL_ANY_PART (list->data)->parent = GDA_SQL_ANY_PART (cond);
@@ -880,7 +880,7 @@
 					    E = gda_sql_expr_new (NULL);
 					    cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					    E->cond = cond;
-					    cond->operator = GDA_SQL_OPERATOR_IN;
+					    cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					    
 					    expr = gda_sql_expr_new (GDA_SQL_ANY_PART (cond));
 					    gda_sql_expr_take_select (expr, S);
@@ -893,7 +893,7 @@
 					       E = gda_sql_expr_new (NULL);
 					       cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					       E->cond = cond;
-					       cond->operator = GDA_SQL_OPERATOR_NOTIN;
+					       cond->operator = GDA_SQL_OPERATOR_TYPE_NOTIN;
 					       cond->operands = g_slist_prepend (L, R);
 					       for (list = cond->operands; list; list = list->next)
 						       GDA_SQL_ANY_PART (list->data)->parent = GDA_SQL_ANY_PART (cond);
@@ -903,7 +903,7 @@
 					       E = gda_sql_expr_new (NULL);
 					       cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					       E->cond = cond;
-					       cond->operator = GDA_SQL_OPERATOR_NOTIN;
+					       cond->operator = GDA_SQL_OPERATOR_TYPE_NOTIN;
 					       
 					       expr = gda_sql_expr_new (GDA_SQL_ANY_PART (cond));
 					       gda_sql_expr_take_select (expr, S);
@@ -950,9 +950,9 @@
 case_else(A) ::= ELSE expr(X).       {A = X;}
 case_else(A) ::= .                   {A = NULL;}
 
-%type uni_op {GdaSqlOperator}
-uni_op(O) ::= ISNULL. {O = GDA_SQL_OPERATOR_ISNULL;}
-uni_op(O) ::= IS NOTNULL. {O = GDA_SQL_OPERATOR_ISNOTNULL;}
+%type uni_op {GdaSqlOperatorType}
+uni_op(O) ::= ISNULL. {O = GDA_SQL_OPERATOR_TYPE_ISNULL;}
+uni_op(O) ::= IS NOTNULL. {O = GDA_SQL_OPERATOR_TYPE_ISNOTNULL;}
 
 
 // Values: for all constants (G_TYPE_STRING GValue)

Modified: trunk/libgda/sqlite/gda-sqlite-provider.c
==============================================================================
--- trunk/libgda/sqlite/gda-sqlite-provider.c	(original)
+++ trunk/libgda/sqlite/gda-sqlite-provider.c	Wed Apr 30 20:18:52 2008
@@ -1286,82 +1286,82 @@
 
 	str = NULL;
 	switch (op->operator) {
-	case GDA_SQL_OPERATOR_EQ:
+	case GDA_SQL_OPERATOR_TYPE_EQ:
 		if (SQL_OPERAND (sql_list->next->data)->is_null) 
 			str = g_strdup_printf ("%s IS NULL", SQL_OPERAND (sql_list->data)->sql);
 		else
 			str = g_strdup_printf ("%s = %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_IS:
+	case GDA_SQL_OPERATOR_TYPE_IS:
 		str = g_strdup_printf ("%s IS %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_LIKE:
+	case GDA_SQL_OPERATOR_TYPE_LIKE:
 		str = g_strdup_printf ("%s LIKE %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_GT:
+	case GDA_SQL_OPERATOR_TYPE_GT:
 		str = g_strdup_printf ("%s > %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_LT:
+	case GDA_SQL_OPERATOR_TYPE_LT:
 		str = g_strdup_printf ("%s < %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_GEQ:
+	case GDA_SQL_OPERATOR_TYPE_GEQ:
 		str = g_strdup_printf ("%s >= %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_LEQ:
+	case GDA_SQL_OPERATOR_TYPE_LEQ:
 		str = g_strdup_printf ("%s <= %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_DIFF:
+	case GDA_SQL_OPERATOR_TYPE_DIFF:
 		str = g_strdup_printf ("%s != %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_REGEXP:
+	case GDA_SQL_OPERATOR_TYPE_REGEXP:
 		str = g_strdup_printf ("%s REGEXP %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_REGEXP_CI:
-	case GDA_SQL_OPERATOR_NOT_REGEXP_CI:
-	case GDA_SQL_OPERATOR_SIMILAR:
+	case GDA_SQL_OPERATOR_TYPE_REGEXP_CI:
+	case GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI:
+	case GDA_SQL_OPERATOR_TYPE_SIMILAR:
 		/* does not exist in SQLite => error */
 		break;
-	case GDA_SQL_OPERATOR_NOT_REGEXP:
+	case GDA_SQL_OPERATOR_TYPE_NOT_REGEXP:
 		str = g_strdup_printf ("NOT %s REGEXP %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_REM:
+	case GDA_SQL_OPERATOR_TYPE_REM:
 		str = g_strdup_printf ("%s %% %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_DIV:
+	case GDA_SQL_OPERATOR_TYPE_DIV:
 		str = g_strdup_printf ("%s / %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_BITAND:
+	case GDA_SQL_OPERATOR_TYPE_BITAND:
 		str = g_strdup_printf ("%s & %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_BITOR:
+	case GDA_SQL_OPERATOR_TYPE_BITOR:
 		str = g_strdup_printf ("%s | %s", SQL_OPERAND (sql_list->data)->sql, SQL_OPERAND (sql_list->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_BETWEEN:
+	case GDA_SQL_OPERATOR_TYPE_BETWEEN:
 		str = g_strdup_printf ("%s BETWEEN %s AND %s", SQL_OPERAND (sql_list->data)->sql, 
 				       SQL_OPERAND (sql_list->next->data)->sql,
 				       SQL_OPERAND (sql_list->next->next->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_ISNULL:
+	case GDA_SQL_OPERATOR_TYPE_ISNULL:
 		str = g_strdup_printf ("%s IS NULL", SQL_OPERAND (sql_list->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_ISNOTNULL:
+	case GDA_SQL_OPERATOR_TYPE_ISNOTNULL:
 		str = g_strdup_printf ("%s IS NOT NULL", SQL_OPERAND (sql_list->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_BITNOT:
+	case GDA_SQL_OPERATOR_TYPE_BITNOT:
 		str = g_strdup_printf ("~ %s", SQL_OPERAND (sql_list->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_NOT:
+	case GDA_SQL_OPERATOR_TYPE_NOT:
 		str = g_strdup_printf ("NOT %s", SQL_OPERAND (sql_list->data)->sql);
 		break;
-	case GDA_SQL_OPERATOR_IN:
-	case GDA_SQL_OPERATOR_NOTIN: {
+	case GDA_SQL_OPERATOR_TYPE_IN:
+	case GDA_SQL_OPERATOR_TYPE_NOTIN: {
 		gboolean add_p = TRUE;
 		if (sql_list->next && !(sql_list->next->next) &&
 		    *(SQL_OPERAND (sql_list->next->data)->sql)=='(')
 			add_p = FALSE;
 
 		string = g_string_new (SQL_OPERAND (sql_list->data)->sql);
-		if (op->operator == GDA_SQL_OPERATOR_IN)
+		if (op->operator == GDA_SQL_OPERATOR_TYPE_IN)
 			g_string_append (string, " IN ");
 		else
 			g_string_append (string, " NOT IN ");
@@ -1378,22 +1378,22 @@
 		g_string_free (string, FALSE);
 		break;
 	}
-	case GDA_SQL_OPERATOR_CONCAT:
+	case GDA_SQL_OPERATOR_TYPE_CONCAT:
 		multi_op = "||";
 		break;
-	case GDA_SQL_OPERATOR_PLUS:
+	case GDA_SQL_OPERATOR_TYPE_PLUS:
 		multi_op = "+";
 		break;
-	case GDA_SQL_OPERATOR_MINUS:
+	case GDA_SQL_OPERATOR_TYPE_MINUS:
 		multi_op = "-";
 		break;
-	case GDA_SQL_OPERATOR_STAR:
+	case GDA_SQL_OPERATOR_TYPE_STAR:
 		multi_op = "*";
 		break;
-	case GDA_SQL_OPERATOR_AND:
+	case GDA_SQL_OPERATOR_TYPE_AND:
 		multi_op = "AND";
 		break;
-	case GDA_SQL_OPERATOR_OR:
+	case GDA_SQL_OPERATOR_TYPE_OR:
 		multi_op = "OR";
 		break;
 	default:
@@ -1683,7 +1683,7 @@
 	where = gda_sql_expr_new (GDA_SQL_ANY_PART (select));
 	cond = gda_sql_operation_new (GDA_SQL_ANY_PART (where));
 	where->cond = cond;
-	cond->operator = GDA_SQL_OPERATOR_EQ;
+	cond->operator = GDA_SQL_OPERATOR_TYPE_EQ;
 	expr = gda_sql_expr_new (GDA_SQL_ANY_PART (cond));
 	g_value_set_string ((value = gda_value_new (G_TYPE_STRING)), "_rowid_");
 	expr->value = value;

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	Wed Apr 30 20:18:52 2008
@@ -157,6 +157,13 @@
         }
 }
 
+static void
+spec_destroy_func (GdaVconnectionDataModelSpec *spec)
+{
+	g_object_unref (spec->data_model);
+	g_free (spec);
+}
+
 /**
  * gda_vconnection_data_model_add_model
  * @cnc: a #GdaVconnectionDataModel connection
@@ -181,7 +188,8 @@
 
 	spec = g_new0 (GdaVconnectionDataModelSpec, 1);
 	spec->data_model = model;
-	retval = gda_vconnection_data_model_add (cnc, spec, g_free, table_name, error);
+	g_object_ref (model);
+	retval = gda_vconnection_data_model_add (cnc, spec, (GDestroyNotify) spec_destroy_func, table_name, error);
 
 	return retval;
 }

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	Wed Apr 30 20:18:52 2008
@@ -33,7 +33,7 @@
 #include <libgda/gda-data-access-wrapper.h>
 #include <libgda/gda-blob-op.h>
 #include "../gda-sqlite.h"
-
+#include <sql-parser/gda-statement-struct-util.h>
 
 struct _GdaVproviderDataModelPrivate {
 	
@@ -408,6 +408,7 @@
 	for (i = 0; i < ncols; i++) {
 		GdaColumn *column;
 		const gchar *name, *type;
+		gchar *newcolname;
 
 		if (i != 0)
 			g_string_append (sql, ", ");
@@ -420,15 +421,16 @@
 			g_string_free (sql, TRUE);
 			return SQLITE_ERROR;
 		}
+
 		name = gda_column_get_name (column);
-		type = gda_column_get_dbms_type (column);
-		if (!type) 
-			type = g_type_name (gda_column_get_g_type (column));
-		if (!name) {
-			*pzErr = sqlite3_mprintf (_("Can't get data model's column name for column %d"), i);
-			g_string_free (sql, TRUE);
-			return SQLITE_ERROR;
-		}
+		if (!name || !(*name))
+			newcolname = g_strdup_printf ("_%d", i + 1);
+		else if (_identifier_needs_quotes (name))
+			newcolname = g_strdup_printf ("\"%s\"", name);
+		else
+			newcolname = g_strdup (name);
+
+		type = g_type_name (gda_column_get_g_type (column));
 		if (!type) {
 			*pzErr = sqlite3_mprintf (_("Can't get data model's column type or type for column %d"), i);
 			g_string_free (sql, TRUE);
@@ -461,7 +463,8 @@
 				type = "text";
 		}
 
-		g_string_append (sql, name);
+		g_string_append (sql, newcolname);
+		g_free (newcolname);
 		g_string_append_c (sql, ' ');
 		g_string_append (sql, type);
 		if (! gda_column_get_allow_null (column)) 

Modified: trunk/libgda/sqlite/virtual/virtual-test.c
==============================================================================
--- trunk/libgda/sqlite/virtual/virtual-test.c	(original)
+++ trunk/libgda/sqlite/virtual/virtual-test.c	Wed Apr 30 20:18:52 2008
@@ -17,7 +17,7 @@
 	GdaDataModel *xml_model, *csv_model, *rw_model;
 	GdaDataModel *proxy = NULL;
 	
-	gda_init ("SQlite virtual providers test", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	parser = gda_sql_parser_new ();
 

Modified: trunk/providers/bdb/gda-bdb-test.c
==============================================================================
--- trunk/providers/bdb/gda-bdb-test.c	(original)
+++ trunk/providers/bdb/gda-bdb-test.c	Wed Apr 30 20:18:52 2008
@@ -128,7 +128,7 @@
 
 int main (int argc, char **argv)
 {
-	gda_init ("gda_bdb_test", "0.0.0", argc, argv);
+	gda_init ();
 	create_db (DB_FILE);
 	gda_stuff (DB_FILE);
 	g_print ("OK\n");

Modified: trunk/providers/mysql/gda-mysql-meta.c
==============================================================================
--- trunk/providers/mysql/gda-mysql-meta.c	(original)
+++ trunk/providers/mysql/gda-mysql-meta.c	Wed Apr 30 20:18:52 2008
@@ -33,7 +33,10 @@
 #include <libgda/gda-set.h>
 #include <libgda/gda-holder.h>
 
-static gboolean append_a_row (GdaDataModel *to_model, GError **error, gint nb, ...);
+static gboolean append_a_row (GdaDataModel  *to_model,
+			      GError       **error,
+			      gint           nb,
+			                     ...);
 
 /*
  * predefined statements' IDs
@@ -49,10 +52,79 @@
  */
 static gchar *internal_sql[] = {
 	/* I_STMT_CATALOG */
-        "SELECT database()",
+        "SELECT DATABASE()",
 
         /* I_STMT_BTYPES */
-        "SELECT DISTINCT data_type, CONCAT(table_schema, '.', data_type),  CASE data_type WHEN 'bigint' THEN 'gint' WHEN 'blob' THEN 'GdaBinary' WHEN 'date' THEN 'GDate' WHEN 'time' THEN 'GdaTime' WHEN 'double' THEN 'gdouble' WHEN 'timestamp' THEN 'GdaTimestamp' ELSE 'string' END  ,    CONCAT('Desc:', data_type), NULL, 0   FROM information_schema.columns WHERE table_schema = SCHEMA() ORDER BY 1"
+        "SELECT DISTINCT data_type, CONCAT(table_schema, '.', data_type),  CASE data_type WHEN 'int' THEN 'gint' WHEN 'bigint' THEN 'gint64' WHEN 'blob' THEN 'GdaBinary' WHEN 'date' THEN 'GDate' WHEN 'time' THEN 'GdaTime' WHEN 'double' THEN 'gdouble' WHEN 'timestamp' THEN 'GdaTimestamp' ELSE 'string' END  ,    CONCAT('Desc:', data_type), NULL, 0   FROM information_schema.columns WHERE table_schema = SCHEMA() ORDER BY 1",
+
+        /* I_STMT_SCHEMAS */
+
+        /* I_STMT_SCHEMAS_ALL */
+
+        /* I_STMT_SCHEMA_NAMED */
+
+        /* I_STMT_TABLES */
+
+        /* I_STMT_TABLES_ALL */
+
+        /* I_STMT_TABLE_NAMED */
+
+        /* I_STMT_VIEWS */
+
+        /* I_STMT_VIEWS_ALL */
+
+        /* I_STMT_VIEW_NAMED */
+
+        /* I_STMT_COLUMNS_OF_TABLE */
+
+        /* I_STMT_COLUMNS_ALL */
+
+        /* I_STMT_TABLES_CONSTRAINTS */
+
+        /* I_STMT_TABLES_CONSTRAINTS_ALL */
+
+        /* I_STMT_TABLES_CONSTRAINTS_NAMED */
+
+        /* I_STMT_REF_CONSTRAINTS */
+
+        /* I_STMT_REF_CONSTRAINTS_ALL */
+
+        /* I_STMT_KEY_COLUMN_USAGE */
+
+        /* I_STMT_KEY_COLUMN_USAGE_ALL */
+
+        /* I_STMT_UDT */
+
+        /* I_STMT_UDT_ALL */
+
+        /* I_STMT_UDT_COLUMNS */
+
+        /* I_STMT_UDT_COLUMNS_ALL */
+
+        /* I_STMT_DOMAINS */
+
+        /* I_STMT_DOMAINS_ALL */
+
+        /* I_STMT_DOMAINS_CONSTRAINTS */
+
+        /* I_STMT_DOMAINS_CONSTRAINTS_ALL */
+
+        /* I_STMT_VIEWS_COLUMNS */
+
+        /* I_STMT_VIEWS_COLUMNS_ALL */
+
+        /* I_STMT_TRIGGERS */
+
+        /* I_STMT_TRIGGERS_ALL */
+
+        /* I_STMT_EL_TYPES_COL */
+
+        /* I_STMT_EL_TYPES_DOM */
+
+        /* I_STMT_EL_TYPES_UDT */
+
+        /* I_STMT_EL_TYPES_ALL */
+
 };
 
 /*
@@ -72,7 +144,7 @@
  * Meta initialization
  */
 void
-_gda_mysql_provider_meta_init (GdaServerProvider *provider)
+_gda_mysql_provider_meta_init (GdaServerProvider  *provider)
 {
 	InternalStatementItem i;
 
@@ -92,8 +164,11 @@
 }
 
 gboolean
-_gda_mysql_meta__info (GdaServerProvider *prov, GdaConnection *cnc, 
-		      GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__info (GdaServerProvider  *prov,
+		       GdaConnection      *cnc, 
+		       GdaMetaStore       *store,
+		       GdaMetaContext     *context,
+		       GError            **error)
 {
 	GdaDataModel *model;
         gboolean retval;
@@ -109,8 +184,11 @@
 }
 
 gboolean
-_gda_mysql_meta__btypes (GdaServerProvider *prov, GdaConnection *cnc, 
-			GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__btypes (GdaServerProvider  *prov,
+			 GdaConnection      *cnc, 
+			 GdaMetaStore       *store,
+			 GdaMetaContext     *context,
+			 GError            **error)
 {
 	g_print ("*** %s\n", __func__);
         GdaDataModel *model;
@@ -132,17 +210,24 @@
 }
 
 gboolean
-_gda_mysql_meta__udt (GdaServerProvider *prov, GdaConnection *cnc, 
-		     GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__udt (GdaServerProvider  *prov,
+		      GdaConnection      *cnc, 
+		      GdaMetaStore       *store,
+		      GdaMetaContext     *context,
+		      GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_udt (GdaServerProvider *prov, GdaConnection *cnc, 
-		    GdaMetaStore *store, GdaMetaContext *context, GError **error,
-		    const GValue *udt_catalog, const GValue *udt_schema)
+_gda_mysql_meta_udt (GdaServerProvider  *prov,
+		     GdaConnection      *cnc, 
+		     GdaMetaStore       *store,
+		     GdaMetaContext     *context,
+		     GError            **error,
+		     const GValue       *udt_catalog,
+		     const GValue       *udt_schema)
 {
 	GdaDataModel *model;
 	gboolean retval = TRUE;
@@ -165,34 +250,50 @@
 
 
 gboolean
-_gda_mysql_meta__udt_cols (GdaServerProvider *prov, GdaConnection *cnc, 
-			  GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__udt_cols (GdaServerProvider  *prov,
+			   GdaConnection      *cnc, 
+			   GdaMetaStore       *store,
+			   GdaMetaContext     *context,
+			   GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;	
 }
 
 gboolean
-_gda_mysql_meta_udt_cols (GdaServerProvider *prov, GdaConnection *cnc, 
-			 GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			 const GValue *udt_catalog, const GValue *udt_schema, const GValue *udt_name)
+_gda_mysql_meta_udt_cols (GdaServerProvider  *prov,
+			  GdaConnection      *cnc, 
+			  GdaMetaStore       *store,
+			  GdaMetaContext     *context,
+			  GError            **error,
+			  const GValue       *udt_catalog,
+			  const GValue       *udt_schema,
+			  const GValue       *udt_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;	
 }
 
 gboolean
-_gda_mysql_meta__enums (GdaServerProvider *prov, GdaConnection *cnc, 
-		       GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__enums (GdaServerProvider  *prov,
+			GdaConnection      *cnc, 
+			GdaMetaStore       *store,
+			GdaMetaContext     *context,
+			GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;	
 }
 
 gboolean
-_gda_mysql_meta_enums (GdaServerProvider *prov, GdaConnection *cnc, 
-		      GdaMetaStore *store, GdaMetaContext *context, GError **error,
-		      const GValue *udt_catalog, const GValue *udt_schema, const GValue *udt_name)
+_gda_mysql_meta_enums (GdaServerProvider  *prov,
+		       GdaConnection      *cnc, 
+		       GdaMetaStore       *store,
+		       GdaMetaContext     *context,
+		       GError            **error,
+		       const GValue       *udt_catalog,
+		       const GValue       *udt_schema,
+		       const GValue       *udt_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
@@ -200,43 +301,60 @@
 
 
 gboolean
-_gda_mysql_meta__domains (GdaServerProvider *prov, GdaConnection *cnc, 
-			 GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__domains (GdaServerProvider  *prov,
+			  GdaConnection      *cnc, 
+			  GdaMetaStore       *store,
+			  GdaMetaContext     *context,
+			  GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_domains (GdaServerProvider *prov, GdaConnection *cnc, 
-			GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			const GValue *domain_catalog, const GValue *domain_schema)
+_gda_mysql_meta_domains (GdaServerProvider  *prov,
+			 GdaConnection      *cnc, 
+			 GdaMetaStore       *store,
+			 GdaMetaContext     *context,
+			 GError            **error,
+			 const GValue       *domain_catalog,
+			 const GValue       *domain_schema)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__constraints_dom (GdaServerProvider *prov, GdaConnection *cnc, 
-				 GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__constraints_dom (GdaServerProvider  *prov,
+				  GdaConnection      *cnc, 
+				  GdaMetaStore       *store,
+				  GdaMetaContext     *context,
+				  GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_constraints_dom (GdaServerProvider *prov, GdaConnection *cnc, 
-				GdaMetaStore *store, GdaMetaContext *context, GError **error,
-				const GValue *domain_catalog, const GValue *domain_schema, 
-				const GValue *domain_name)
+_gda_mysql_meta_constraints_dom (GdaServerProvider  *prov,
+				 GdaConnection      *cnc, 
+				 GdaMetaStore       *store,
+				 GdaMetaContext     *context,
+				 GError            **error,
+				 const GValue       *domain_catalog,
+				 const GValue       *domain_schema, 
+				 const GValue       *domain_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__el_types (GdaServerProvider *prov, GdaConnection *cnc, 
-			  GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__el_types (GdaServerProvider  *prov,
+			   GdaConnection      *cnc, 
+			   GdaMetaStore       *store,
+			   GdaMetaContext     *context,
+			   GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
@@ -251,252 +369,355 @@
 	return TRUE;
 }
 
+
 gboolean
-_gda_mysql_meta__collations (GdaServerProvider *prov, GdaConnection *cnc, 
-			    GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__collations (GdaServerProvider  *prov,
+			     GdaConnection      *cnc, 
+			     GdaMetaStore       *store,
+			     GdaMetaContext     *context,
+			     GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_collations (GdaServerProvider *prov, GdaConnection *cnc, 
-			   GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			   const GValue *collation_catalog, const GValue *collation_schema, 
-			   const GValue *collation_name_n)
+_gda_mysql_meta_collations (GdaServerProvider  *prov,
+			    GdaConnection      *cnc, 
+			    GdaMetaStore       *store,
+			    GdaMetaContext     *context,
+			    GError            **error,
+			    const GValue       *collation_catalog,
+			    const GValue       *collation_schema, 
+			    const GValue       *collation_name_n)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__character_sets (GdaServerProvider *prov, GdaConnection *cnc, 
-				GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__character_sets (GdaServerProvider  *prov,
+				 GdaConnection      *cnc, 
+				 GdaMetaStore       *store,
+				 GdaMetaContext     *context,
+				 GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_character_sets (GdaServerProvider *prov, GdaConnection *cnc, 
-			       GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			       const GValue *chset_catalog, const GValue *chset_schema, 
-			       const GValue *chset_name_n)
+_gda_mysql_meta_character_sets (GdaServerProvider  *prov,
+				GdaConnection      *cnc, 
+				GdaMetaStore       *store,
+				GdaMetaContext     *context,
+				GError            **error,
+				const GValue       *chset_catalog,
+				const GValue       *chset_schema, 
+				const GValue       *chset_name_n)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__schemata (GdaServerProvider *prov, GdaConnection *cnc, 
-			  GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__schemata (GdaServerProvider  *prov,
+			   GdaConnection      *cnc, 
+			   GdaMetaStore       *store,
+			   GdaMetaContext     *context,
+			   GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_schemata (GdaServerProvider *prov, GdaConnection *cnc, 
-			 GdaMetaStore *store, GdaMetaContext *context, GError **error, 
-			 const GValue *catalog_name, const GValue *schema_name_n)
+_gda_mysql_meta_schemata (GdaServerProvider  *prov,
+			  GdaConnection      *cnc, 
+			  GdaMetaStore       *store,
+			  GdaMetaContext     *context,
+			  GError            **error, 
+			  const GValue       *catalog_name,
+			  const GValue       *schema_name_n)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__tables_views (GdaServerProvider *prov, GdaConnection *cnc, 
-			      GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__tables_views (GdaServerProvider  *prov,
+			       GdaConnection      *cnc, 
+			       GdaMetaStore       *store,
+			       GdaMetaContext     *context,
+			       GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_tables_views (GdaServerProvider *prov, GdaConnection *cnc, 
-			     GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			     const GValue *table_catalog, const GValue *table_schema, 
-			     const GValue *table_name_n)
+_gda_mysql_meta_tables_views (GdaServerProvider  *prov,
+			      GdaConnection      *cnc, 
+			      GdaMetaStore       *store,
+			      GdaMetaContext     *context,
+			      GError            **error,
+			      const GValue       *table_catalog,
+			      const GValue       *table_schema, 
+			      const GValue       *table_name_n)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__columns (GdaServerProvider *prov, GdaConnection *cnc, 
-			 GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__columns (GdaServerProvider  *prov,
+			  GdaConnection      *cnc, 
+			  GdaMetaStore       *store,
+			  GdaMetaContext     *context,
+			  GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_columns (GdaServerProvider *prov, GdaConnection *cnc, 
-			GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			const GValue *table_catalog, const GValue *table_schema, 
-			const GValue *table_name)
+_gda_mysql_meta_columns (GdaServerProvider  *prov,
+			 GdaConnection      *cnc, 
+			 GdaMetaStore       *store,
+			 GdaMetaContext     *context,
+			 GError            **error,
+			 const GValue       *table_catalog,
+			 const GValue       *table_schema, 
+			 const GValue       *table_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__view_cols (GdaServerProvider *prov, GdaConnection *cnc, 
-			   GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__view_cols (GdaServerProvider  *prov,
+			    GdaConnection      *cnc, 
+			    GdaMetaStore       *store,
+			    GdaMetaContext     *context,
+			    GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_view_cols (GdaServerProvider *prov, GdaConnection *cnc, 
-			  GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			  const GValue *view_catalog, const GValue *view_schema, 
-			  const GValue *view_name)
+_gda_mysql_meta_view_cols (GdaServerProvider  *prov,
+			   GdaConnection      *cnc, 
+			   GdaMetaStore       *store,
+			   GdaMetaContext     *context,
+			   GError            **error,
+			   const GValue       *view_catalog,
+			   const GValue       *view_schema, 
+			   const GValue       *view_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__constraints_tab (GdaServerProvider *prov, GdaConnection *cnc, 
-				 GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__constraints_tab (GdaServerProvider  *prov,
+				  GdaConnection      *cnc, 
+				  GdaMetaStore       *store,
+				  GdaMetaContext     *context,
+				  GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_constraints_tab (GdaServerProvider *prov, GdaConnection *cnc, 
-				GdaMetaStore *store, GdaMetaContext *context, GError **error, 
-				const GValue *table_catalog, const GValue *table_schema, 
-				const GValue *table_name, const GValue *constraint_name_n)
+_gda_mysql_meta_constraints_tab (GdaServerProvider  *prov,
+				 GdaConnection      *cnc, 
+				 GdaMetaStore       *store,
+				 GdaMetaContext     *context,
+				 GError            **error, 
+				 const GValue       *table_catalog,
+				 const GValue       *table_schema, 
+				 const GValue       *table_name,
+				 const GValue       *constraint_name_n)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__constraints_ref (GdaServerProvider *prov, GdaConnection *cnc, 
-				 GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__constraints_ref (GdaServerProvider  *prov,
+				  GdaConnection      *cnc, 
+				  GdaMetaStore       *store,
+				  GdaMetaContext     *context,
+				  GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_constraints_ref (GdaServerProvider *prov, GdaConnection *cnc, 
-				GdaMetaStore *store, GdaMetaContext *context, GError **error,
-				const GValue *table_catalog, const GValue *table_schema, const GValue *table_name, 
-				const GValue *constraint_name)
+_gda_mysql_meta_constraints_ref (GdaServerProvider  *prov,
+				 GdaConnection      *cnc, 
+				 GdaMetaStore       *store,
+				 GdaMetaContext     *context,
+				 GError            **error,
+				 const GValue       *table_catalog,
+				 const GValue       *table_schema,
+				 const GValue       *table_name, 
+				 const GValue       *constraint_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__key_columns (GdaServerProvider *prov, GdaConnection *cnc, 
-			     GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__key_columns (GdaServerProvider  *prov,
+			      GdaConnection      *cnc, 
+			      GdaMetaStore       *store,
+			      GdaMetaContext     *context,
+			      GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_key_columns (GdaServerProvider *prov, GdaConnection *cnc, 
-			    GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			    const GValue *table_catalog, const GValue *table_schema, 
-			    const GValue *table_name, const GValue *constraint_name)
+_gda_mysql_meta_key_columns (GdaServerProvider  *prov,
+			     GdaConnection      *cnc, 
+			     GdaMetaStore       *store,
+			     GdaMetaContext     *context,
+			     GError            **error,
+			     const GValue       *table_catalog,
+			     const GValue       *table_schema, 
+			     const GValue       *table_name,
+			     const GValue       *constraint_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__check_columns (GdaServerProvider *prov, GdaConnection *cnc, 
-			       GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__check_columns (GdaServerProvider  *prov,
+				GdaConnection      *cnc, 
+				GdaMetaStore       *store,
+				GdaMetaContext     *context,
+				GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_check_columns (GdaServerProvider *prov, GdaConnection *cnc, 
-			      GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			      const GValue *table_catalog, const GValue *table_schema, 
-			      const GValue *table_name, const GValue *constraint_name)
+_gda_mysql_meta_check_columns (GdaServerProvider  *prov,
+			       GdaConnection      *cnc, 
+			       GdaMetaStore       *store,
+			       GdaMetaContext     *context,
+			       GError            **error,
+			       const GValue       *table_catalog,
+			       const GValue       *table_schema, 
+			       const GValue       *table_name,
+			       const GValue       *constraint_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__triggers (GdaServerProvider *prov, GdaConnection *cnc, 
-			  GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__triggers (GdaServerProvider  *prov,
+			   GdaConnection      *cnc, 
+			   GdaMetaStore       *store,
+			   GdaMetaContext     *context,
+			   GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_triggers (GdaServerProvider *prov, GdaConnection *cnc, 
-			 GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			 const GValue *table_catalog, const GValue *table_schema, 
-			 const GValue *table_name)
+_gda_mysql_meta_triggers (GdaServerProvider  *prov,
+			  GdaConnection      *cnc, 
+			  GdaMetaStore       *store,
+			  GdaMetaContext     *context,
+			  GError            **error,
+			  const GValue       *table_catalog,
+			  const GValue       *table_schema, 
+			  const GValue       *table_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__routines (GdaServerProvider *prov, GdaConnection *cnc, 
-			  GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__routines (GdaServerProvider  *prov,
+			   GdaConnection      *cnc, 
+			   GdaMetaStore       *store,
+			   GdaMetaContext     *context,
+			   GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_routines (GdaServerProvider *prov, GdaConnection *cnc, 
-			 GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			 const GValue *routine_catalog, const GValue *routine_schema, 
-			 const GValue *routine_name_n)
+_gda_mysql_meta_routines (GdaServerProvider  *prov,
+			  GdaConnection      *cnc, 
+			  GdaMetaStore       *store,
+			  GdaMetaContext     *context,
+			  GError            **error,
+			  const GValue       *routine_catalog,
+			  const GValue       *routine_schema, 
+			  const GValue       *routine_name_n)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__routine_col (GdaServerProvider *prov, GdaConnection *cnc, 
-			     GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__routine_col (GdaServerProvider  *prov,
+			      GdaConnection      *cnc, 
+			      GdaMetaStore       *store,
+			      GdaMetaContext     *context,
+			      GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_routine_col (GdaServerProvider *prov, GdaConnection *cnc, 
-			    GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			    const GValue *rout_catalog, const GValue *rout_schema, 
-			    const GValue *rout_name)
+_gda_mysql_meta_routine_col (GdaServerProvider  *prov,
+			     GdaConnection      *cnc, 
+			     GdaMetaStore       *store,
+			     GdaMetaContext     *context,
+			     GError            **error,
+			     const GValue       *rout_catalog,
+			     const GValue       *rout_schema, 
+			     const GValue       *rout_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta__routine_par (GdaServerProvider *prov, GdaConnection *cnc, 
-			     GdaMetaStore *store, GdaMetaContext *context, GError **error)
+_gda_mysql_meta__routine_par (GdaServerProvider  *prov,
+			      GdaConnection      *cnc, 
+			      GdaMetaStore       *store,
+			      GdaMetaContext     *context,
+			      GError            **error)
 {
 	TO_IMPLEMENT;
 	return TRUE;
 }
 
 gboolean
-_gda_mysql_meta_routine_par (GdaServerProvider *prov, GdaConnection *cnc, 
-			    GdaMetaStore *store, GdaMetaContext *context, GError **error,
-			    const GValue *rout_catalog, const GValue *rout_schema, 
-			    const GValue *rout_name)
+_gda_mysql_meta_routine_par (GdaServerProvider  *prov,
+			     GdaConnection      *cnc, 
+			     GdaMetaStore       *store,
+			     GdaMetaContext     *context,
+			     GError            **error,
+			     const GValue       *rout_catalog,
+			     const GValue       *rout_schema, 
+			     const GValue       *rout_name)
 {
 	TO_IMPLEMENT;
 	return TRUE;

Modified: trunk/providers/mysql/gda-mysql-recordset.c
==============================================================================
--- trunk/providers/mysql/gda-mysql-recordset.c	(original)
+++ trunk/providers/mysql/gda-mysql-recordset.c	Wed Apr 30 20:18:52 2008
@@ -340,8 +340,8 @@
 			// TO_IMPLEMENT;
 			
 			MYSQL_FIELD *field = &mysql_fields[i];
-			g_print ("*** %s , %d\n",
-				 field->name, field->type);
+			/* g_print ("*** %s , %d\n", */
+			/* 	 field->name, field->type); */
 			GType gtype = _GDA_PSTMT(ps)->types[i];
 			if (gtype == 0) {
 				gtype = _gda_mysql_type_to_gda (cdata, field->type);
@@ -371,10 +371,14 @@
 			case MYSQL_TYPE_SHORT:
 			case MYSQL_TYPE_INT24:
 			case MYSQL_TYPE_LONG:
-			case MYSQL_TYPE_LONGLONG:
+			case MYSQL_TYPE_YEAR:
 				mysql_bind[i].buffer = g_malloc0 (sizeof(int));
 				mysql_bind[i].is_null = g_malloc0 (sizeof(my_bool));
 				break;
+			case MYSQL_TYPE_LONGLONG:
+				mysql_bind[i].buffer = g_malloc0 (sizeof(long long));
+				mysql_bind[i].is_null = g_malloc0 (sizeof(my_bool));
+				break;
 			case MYSQL_TYPE_NULL:
 				break;
 			case MYSQL_TYPE_TIME:
@@ -382,17 +386,21 @@
 			case MYSQL_TYPE_DATETIME:
 			case MYSQL_TYPE_TIMESTAMP:
 				mysql_bind[i].buffer = g_malloc0 (sizeof(MYSQL_TIME));
+				mysql_bind[i].is_null = g_malloc0 (sizeof(my_bool));
 				break;
 			case MYSQL_TYPE_FLOAT:
 			case MYSQL_TYPE_DOUBLE:
 				mysql_bind[i].buffer = g_malloc0 (sizeof(double));
 				mysql_bind[i].is_null = g_malloc0 (sizeof(my_bool));
 				break;
+			case MYSQL_TYPE_STRING:
 			case MYSQL_TYPE_VAR_STRING:
 			case MYSQL_TYPE_BLOB:
 			case MYSQL_TYPE_TINY_BLOB:
 			case MYSQL_TYPE_MEDIUM_BLOB:
 			case MYSQL_TYPE_LONG_BLOB:
+			case MYSQL_TYPE_NEWDECIMAL:
+			case MYSQL_TYPE_BIT:
 				mysql_bind[i].buffer = g_malloc0 (field->max_length + 1);
 				mysql_bind[i].buffer_length = field->max_length + 1;
 				mysql_bind[i].length = g_malloc0 (sizeof(unsigned long));
@@ -485,6 +493,7 @@
 		gint i = col;
 		
 		int intvalue = 0;
+		long long longlongvalue = 0;
 		double doublevalue = 0.0;
 		MYSQL_TIME timevalue = { 0 };
 		char *strvalue = NULL;
@@ -496,7 +505,7 @@
 		case MYSQL_TYPE_SHORT:
 		case MYSQL_TYPE_INT24:
 		case MYSQL_TYPE_LONG:
-		case MYSQL_TYPE_LONGLONG:
+		case MYSQL_TYPE_YEAR:
 			g_memmove (&intvalue, mysql_bind[i].buffer, sizeof(int));
 			g_memmove (&is_null, mysql_bind[i].is_null, sizeof(my_bool));
 			
@@ -504,19 +513,56 @@
 				g_value_set_int (value, intvalue);
 			else if (type == G_TYPE_LONG)
 				g_value_set_long (value, (long) intvalue);
+			else if (type == G_TYPE_BOOLEAN)
+				g_value_set_boolean (value, (gboolean) intvalue ? TRUE : FALSE);
 			else {
 				g_warning (_("Type %s not mapped for value %d"),
 					   g_type_name (type), intvalue);
 			}
-			
+			break;
+		case MYSQL_TYPE_LONGLONG:
+			g_memmove (&longlongvalue, mysql_bind[i].buffer, sizeof(long long));
+			g_memmove (&is_null, mysql_bind[i].is_null, sizeof(my_bool));
 			break;
 		case MYSQL_TYPE_NULL:
+			g_value_unset (value);
 			break;
 		case MYSQL_TYPE_TIME:
 		case MYSQL_TYPE_DATE:
 		case MYSQL_TYPE_DATETIME:
 		case MYSQL_TYPE_TIMESTAMP:
 			g_memmove (&timevalue, mysql_bind[i].buffer, sizeof(MYSQL_TIME));
+			g_memmove (&is_null, mysql_bind[i].is_null, sizeof(my_bool));
+
+			if (type == GDA_TYPE_TIME) {
+				GdaTime time = {
+					.hour = timevalue.hour,
+					.minute = timevalue.minute,
+					.second = timevalue.second,
+					.fraction = timevalue.second_part,
+				};
+				gda_value_set_time (value, &time);
+			} else if (type == G_TYPE_DATE) {
+				GDate *date = g_date_new_dmy
+					(timevalue.day, timevalue.month, timevalue.year);
+				g_value_take_boxed (value, date);
+				g_date_free (date);
+			} else if (type == GDA_TYPE_TIMESTAMP) {
+				GdaTimestamp timestamp = {
+					.year = timevalue.year,
+					.month = timevalue.month,
+					.day = timevalue.day,
+					.hour = timevalue.hour,
+					.minute = timevalue.minute,
+					.second = timevalue.second,
+					.fraction = timevalue.second_part,
+				};
+				gda_value_set_timestamp (value, &timestamp);
+			} else {
+				g_warning (_("Type %s not mapped for value %p"),
+					   g_type_name (type), timevalue);
+			}
+
 			break;
 		case MYSQL_TYPE_FLOAT:
 		case MYSQL_TYPE_DOUBLE:
@@ -527,7 +573,7 @@
 			if (type == G_TYPE_FLOAT)
 				g_value_set_float (value, (float) doublevalue);
 			else if (type == G_TYPE_DOUBLE)
-				g_value_set_long (value, doublevalue);
+				g_value_set_double (value, doublevalue);
 			else {
 				g_warning (_("Type %s not mapped for value %f"),
 					   g_type_name (type), intvalue);
@@ -535,24 +581,42 @@
 			setlocale (LC_NUMERIC, "");
 			
 			break;
+		case MYSQL_TYPE_STRING:
 		case MYSQL_TYPE_VAR_STRING:
 		case MYSQL_TYPE_BLOB:
 		case MYSQL_TYPE_TINY_BLOB:
 		case MYSQL_TYPE_MEDIUM_BLOB:
 		case MYSQL_TYPE_LONG_BLOB:
+		case MYSQL_TYPE_NEWDECIMAL:
+		case MYSQL_TYPE_BIT:
 			g_memmove (&length, mysql_bind[i].length, sizeof(unsigned long));
 			strvalue = g_memdup (mysql_bind[i].buffer, length + 1);
 			
 			if (type == G_TYPE_STRING)
 				g_value_set_string (value, strvalue);
-			else {
+			else if (type == GDA_TYPE_BINARY) {
+				GdaBinary binary = {
+					.data = strvalue,
+					.binary_length = length
+				};
+				gda_value_set_binary (value, &binary);
+			} else if (type == GDA_TYPE_BLOB) {
+				GdaBlob *blob = (GdaBlob *) gda_value_new_blob
+					((const guchar *) strvalue, (gulong) length);
+				gda_value_take_blob (value, blob);
+				gda_value_free (blob);
+			} else if (type == G_TYPE_DOUBLE) {
+				setlocale (LC_NUMERIC, "C");
+				g_value_set_double (value, atof (strvalue));
+				setlocale (LC_NUMERIC, "");
+			} else {
 				g_warning (_("Type %s not mapped for value %p"),
 					   g_type_name (type), strvalue);
 			}
 			
 			break;
 		default:
-			g_warning (_("Invalid column bind data type.\n"),
+			g_warning (_("Invalid column bind data type. %d\n"),
 				   mysql_bind[i].buffer_type);
 		}
 		
@@ -605,9 +669,9 @@
 	*prow = new_row_from_mysql_stmt (imodel, rownum);
 	gda_pmodel_take_row (model, *prow, rownum);
 	
-	if (model->nb_stored_rows == model->advertized_nrows) {
-		g_print ("*** All the row have been converted...");
-	}
+	/* if (model->nb_stored_rows == model->advertized_nrows) { */
+	/* 	g_print ("*** All the row have been converted..."); */
+	/* } */
 	
 
 	return TRUE;

Modified: trunk/providers/mysql/parser.y
==============================================================================
--- trunk/providers/mysql/parser.y	(original)
+++ trunk/providers/mysql/parser.y	Wed Apr 30 20:18:52 2008
@@ -73,84 +73,84 @@
 	GSList *then_list;
 } CaseBody;
 
-static GdaSqlOperator
+static GdaSqlOperatorType
 sql_operation_string_to_operator (const gchar *op)
 {
 	switch (g_ascii_toupper (*op)) {
 	case 'A':
-		return GDA_SQL_OPERATOR_AND;
+		return GDA_SQL_OPERATOR_TYPE_AND;
 	case 'O':
-		return GDA_SQL_OPERATOR_OR;
+		return GDA_SQL_OPERATOR_TYPE_OR;
 	case 'N':
-		return GDA_SQL_OPERATOR_NOT;
+		return GDA_SQL_OPERATOR_TYPE_NOT;
 	case '=':
-		return GDA_SQL_OPERATOR_EQ;
+		return GDA_SQL_OPERATOR_TYPE_EQ;
 	case 'I':
 		if (op[1] == 'S')
-			return GDA_SQL_OPERATOR_IS;
+			return GDA_SQL_OPERATOR_TYPE_IS;
 		else if (op[1] == 'N')
-			return GDA_SQL_OPERATOR_IN;
+			return GDA_SQL_OPERATOR_TYPE_IN;
 		break;
 	case 'L':
-		return GDA_SQL_OPERATOR_LIKE;
+		return GDA_SQL_OPERATOR_TYPE_LIKE;
 	case 'B':
-		return GDA_SQL_OPERATOR_BETWEEN;
+		return GDA_SQL_OPERATOR_TYPE_BETWEEN;
 	case '>':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_GEQ;
+			return GDA_SQL_OPERATOR_TYPE_GEQ;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_GT;
+			return GDA_SQL_OPERATOR_TYPE_GT;
 		break;
 	case '<':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_LEQ;
+			return GDA_SQL_OPERATOR_TYPE_LEQ;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_LT;
+			return GDA_SQL_OPERATOR_TYPE_LT;
 		break;
 	case '!':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_DIFF;
+			return GDA_SQL_OPERATOR_TYPE_DIFF;
 		else if (op[1] == '~') {
 			if (op[2] == 0)
-				return GDA_SQL_OPERATOR_NOT_REGEXP;
+				return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP;
 			else if (op[2] == '*')
-				return GDA_SQL_OPERATOR_NOT_REGEXP_CI;
+				return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI;
 		}
 		break;
 	case '~':
 		if (op[1] == '*')
-			return GDA_SQL_OPERATOR_REGEXP_CI;
+			return GDA_SQL_OPERATOR_TYPE_REGEXP_CI;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_REGEXP;
+			return GDA_SQL_OPERATOR_TYPE_REGEXP;
 		break;
 	case 'S':
-		return GDA_SQL_OPERATOR_SIMILAR;
+		return GDA_SQL_OPERATOR_TYPE_SIMILAR;
 	case '|':
 		if (op[1] == '|')
-			return GDA_SQL_OPERATOR_CONCAT;
+			return GDA_SQL_OPERATOR_TYPE_CONCAT;
 		else
-			return GDA_SQL_OPERATOR_BITOR;
+			return GDA_SQL_OPERATOR_TYPE_BITOR;
 	case '+':
-		return GDA_SQL_OPERATOR_PLUS;
+		return GDA_SQL_OPERATOR_TYPE_PLUS;
 	case '-':
-		return GDA_SQL_OPERATOR_MINUS;
+		return GDA_SQL_OPERATOR_TYPE_MINUS;
 	case '*':
-		return GDA_SQL_OPERATOR_STAR;
+		return GDA_SQL_OPERATOR_TYPE_STAR;
 	case '/':
-		return GDA_SQL_OPERATOR_DIV;
+		return GDA_SQL_OPERATOR_TYPE_DIV;
 	case '%':
-		return GDA_SQL_OPERATOR_REM;
+		return GDA_SQL_OPERATOR_TYPE_REM;
 	case '&':
-		return GDA_SQL_OPERATOR_BITAND;
+		return GDA_SQL_OPERATOR_TYPE_BITAND;
 	}
 	g_error ("Unhandled operator named '%s'\n", op);
 	return 0;
 }
 
-static GdaSqlOperator
+static GdaSqlOperatorType
 string_to_op_type (GValue *value)
 {
-	GdaSqlOperator op;
+	GdaSqlOperatorType op;
 	op = sql_operation_string_to_operator (g_value_get_string (value));
 	g_value_reset (value);
 	g_free (value);
@@ -158,7 +158,7 @@
 }
 
 static GdaSqlExpr *
-compose_multiple_expr (GdaSqlOperator op, GdaSqlExpr *left, GdaSqlExpr *right) {
+compose_multiple_expr (GdaSqlOperatorType op, GdaSqlExpr *left, GdaSqlExpr *right) {
 	GdaSqlExpr *ret;
 	if (left->cond && (left->cond->operator == op)) {
 		ret = left;
@@ -179,7 +179,7 @@
 }
 
 static GdaSqlExpr *
-create_two_expr (GdaSqlOperator op, GdaSqlExpr *left, GdaSqlExpr *right) {
+create_two_expr (GdaSqlOperatorType op, GdaSqlExpr *left, GdaSqlExpr *right) {
 	GdaSqlExpr *ret;
 	GdaSqlOperation *cond;
 	ret = gda_sql_expr_new (NULL);
@@ -194,7 +194,7 @@
 }
 
 static GdaSqlExpr *
-create_uni_expr (GdaSqlOperator op, GdaSqlExpr *expr) {
+create_uni_expr (GdaSqlOperatorType op, GdaSqlExpr *expr) {
 	GdaSqlExpr *ret;
 	GdaSqlOperation *cond;
 	ret = gda_sql_expr_new (NULL);
@@ -809,26 +809,26 @@
 					 g_free (T);}
 
 expr(C) ::= expr(L) PLUS|MINUS(O) expr(R). {C = compose_multiple_expr (string_to_op_type (O), L, R);}
-expr(C) ::= expr(L) STAR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_STAR, L, R);}
+expr(C) ::= expr(L) STAR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_STAR, L, R);}
 expr(C) ::= expr(L) SLASH|REM(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) BITAND|BITOR(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 
-expr(C) ::= MINUS expr(X). [UMINUS] {C = create_uni_expr (GDA_SQL_OPERATOR_MINUS, X);}
-expr(C) ::= PLUS expr(X). [UPLUS] {C = create_uni_expr (GDA_SQL_OPERATOR_PLUS, X);}
+expr(C) ::= MINUS expr(X). [UMINUS] {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_MINUS, X);}
+expr(C) ::= PLUS expr(X). [UPLUS] {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_PLUS, X);}
 
-expr(C) ::= expr(L) AND expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_AND, L, R);}
-expr(C) ::= expr(L) OR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_OR, L, R);}
-expr(C) ::= expr(L) CONCAT expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_CONCAT, L, R);}
+expr(C) ::= expr(L) AND expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_AND, L, R);}
+expr(C) ::= expr(L) OR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_OR, L, R);}
+expr(C) ::= expr(L) CONCAT expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_CONCAT, L, R);}
 
 expr(C) ::= expr(L) GT|LEQ|GEQ|LT(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) DIFF|EQ(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
-expr(C) ::= expr(L) LIKE expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_LIKE, L, R);}
+expr(C) ::= expr(L) LIKE expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_TYPE_LIKE, L, R);}
 expr(C) ::= expr(L) REGEXP|REGEXP_CI|NOT_REGEXP|NOT_REGEXP_CI|SIMILAR(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) BETWEEN expr(R) AND expr(E). {GdaSqlOperation *cond;
 						  C = gda_sql_expr_new (NULL);
 						  cond = gda_sql_operation_new (GDA_SQL_ANY_PART (C));
 						  C->cond = cond;
-						  cond->operator = GDA_SQL_OPERATOR_BETWEEN;
+						  cond->operator = GDA_SQL_OPERATOR_TYPE_BETWEEN;
 						  cond->operands = g_slist_append (NULL, L);
 						  GDA_SQL_ANY_PART (L)->parent = GDA_SQL_ANY_PART (cond);
 						  cond->operands = g_slist_append (cond->operands, R);
@@ -842,7 +842,7 @@
 						      expr = gda_sql_expr_new (NULL);
 						      cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
 						      expr->cond = cond;
-						      cond->operator = GDA_SQL_OPERATOR_BETWEEN;
+						      cond->operator = GDA_SQL_OPERATOR_TYPE_BETWEEN;
 						      cond->operands = g_slist_append (NULL, L);
 						      GDA_SQL_ANY_PART (L)->parent = GDA_SQL_ANY_PART (cond);
 						      cond->operands = g_slist_append (cond->operands, R);
@@ -853,23 +853,23 @@
 						      C = gda_sql_expr_new (NULL);
 						      cond = gda_sql_operation_new (GDA_SQL_ANY_PART (C));
 						      C->cond = cond;
-						      cond->operator = GDA_SQL_OPERATOR_NOT;
+						      cond->operator = GDA_SQL_OPERATOR_TYPE_NOT;
 						      cond->operands = g_slist_prepend (NULL, expr);
 						      GDA_SQL_ANY_PART (expr)->parent = GDA_SQL_ANY_PART (cond);
 }
 
-expr(C) ::= NOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_NOT, R);}
-expr(C) ::= BITNOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_BITNOT, R);}
+expr(C) ::= NOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_NOT, R);}
+expr(C) ::= BITNOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_BITNOT, R);}
 expr(C) ::= expr(R) uni_op(O) . {C = create_uni_expr (O, R);}
 
-expr(C) ::= expr(L) IS expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_IS, L, R);}
+expr(C) ::= expr(L) IS expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_TYPE_IS, L, R);}
 expr(E) ::= LP compound(S) RP. {E = gda_sql_expr_new (NULL); gda_sql_expr_take_select (E, S);}
 expr(E) ::= expr(R) IN LP exprlist(L) RP. {GdaSqlOperation *cond;
 					   GSList *list;
 					   E = gda_sql_expr_new (NULL);
 					   cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					   E->cond = cond;
-					   cond->operator = GDA_SQL_OPERATOR_IN;
+					   cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					   cond->operands = g_slist_prepend (L, R);
 					   for (list = cond->operands; list; list = list->next)
 						   GDA_SQL_ANY_PART (list->data)->parent = GDA_SQL_ANY_PART (cond);
@@ -879,7 +879,7 @@
 					    E = gda_sql_expr_new (NULL);
 					    cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					    E->cond = cond;
-					    cond->operator = GDA_SQL_OPERATOR_IN;
+					    cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					    
 					    expr = gda_sql_expr_new (GDA_SQL_ANY_PART (cond));
 					    gda_sql_expr_take_select (expr, S);
@@ -893,7 +893,7 @@
 					       expr = gda_sql_expr_new (NULL);
 					       cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
 					       expr->cond = cond;
-					       cond->operator = GDA_SQL_OPERATOR_IN;
+					       cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					       cond->operands = g_slist_prepend (L, R);
 					       for (list = cond->operands; list; list = list->next)
 						       GDA_SQL_ANY_PART (list->data)->parent = GDA_SQL_ANY_PART (cond);
@@ -901,7 +901,7 @@
 					       E = gda_sql_expr_new (NULL);
 					       cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					       E->cond = cond;
-					       cond->operator = GDA_SQL_OPERATOR_NOT;
+					       cond->operator = GDA_SQL_OPERATOR_TYPE_NOT;
 					       cond->operands = g_slist_prepend (NULL, expr);
 					       GDA_SQL_ANY_PART (expr)->parent = GDA_SQL_ANY_PART (cond);
 }
@@ -910,7 +910,7 @@
 						expr1 = gda_sql_expr_new (NULL);
 						cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr1));
 						expr1->cond = cond;
-						cond->operator = GDA_SQL_OPERATOR_IN;
+						cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 						
 						expr2 = gda_sql_expr_new (NULL);
 						gda_sql_expr_take_select (expr2, S);
@@ -922,7 +922,7 @@
 						E = gda_sql_expr_new (NULL);
 						cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 						E->cond = cond;
-						cond->operator = GDA_SQL_OPERATOR_NOT;
+						cond->operator = GDA_SQL_OPERATOR_TYPE_NOT;
 						cond->operands = g_slist_prepend (NULL, expr1);
 						GDA_SQL_ANY_PART (expr1)->parent = GDA_SQL_ANY_PART (cond);
 }
@@ -965,9 +965,9 @@
 case_else(A) ::= ELSE expr(X).       {A = X;}
 case_else(A) ::= .                   {A = NULL;}
 
-%type uni_op {GdaSqlOperator}
-uni_op(O) ::= ISNULL. {O = GDA_SQL_OPERATOR_ISNULL;}
-uni_op(O) ::= IS NOTNULL. {O = GDA_SQL_OPERATOR_ISNOTNULL;}
+%type uni_op {GdaSqlOperatorType}
+uni_op(O) ::= ISNULL. {O = GDA_SQL_OPERATOR_TYPE_ISNULL;}
+uni_op(O) ::= IS NOTNULL. {O = GDA_SQL_OPERATOR_TYPE_ISNOTNULL;}
 
 
 // Values: for all constants (G_TYPE_STRING GValue)

Modified: trunk/providers/postgres/gda-postgres-provider.c
==============================================================================
--- trunk/providers/postgres/gda-postgres-provider.c	(original)
+++ trunk/providers/postgres/gda-postgres-provider.c	Wed Apr 30 20:18:52 2008
@@ -1634,6 +1634,7 @@
                                              _("Unnammed parameter is not allowed in prepared statements"));
                                 g_slist_foreach (param_ids, (GFunc) g_free, NULL);
                                 g_slist_free (param_ids);
+				g_free (prep_stm_name);
                                 goto out_err;
                         }
                 }
@@ -1641,6 +1642,7 @@
 
         /* create a prepared statement */
         ps = gda_postgres_pstmt_new (cnc, cdata->pconn, prep_stm_name);
+	g_free (prep_stm_name);
 	gda_pstmt_set_gda_statement (_GDA_PSTMT (ps), stmt);
         _GDA_PSTMT (ps)->param_ids = param_ids;
         _GDA_PSTMT (ps)->sql = sql;
@@ -1752,7 +1754,7 @@
 	where = gda_sql_expr_new (GDA_SQL_ANY_PART (select));
 	cond = gda_sql_operation_new (GDA_SQL_ANY_PART (where));
 	where->cond = cond;
-	cond->operator = GDA_SQL_OPERATOR_EQ;
+	cond->operator = GDA_SQL_OPERATOR_TYPE_EQ;
 	expr = gda_sql_expr_new (GDA_SQL_ANY_PART (cond));
 	g_value_set_string ((value = gda_value_new (G_TYPE_STRING)), "oid");
 	expr->value = value;
@@ -2064,6 +2066,11 @@
 	GObject *retval = NULL;
 	pg_res = PQexecPrepared (cdata->pconn, ps->prep_name, nb_params, (const char * const *) param_values,
 				 param_lengths, param_formats, 0);
+
+	g_strfreev (param_values);
+	g_free (param_lengths);
+	g_free (param_formats);
+
 	if (!pg_res) 
 		event = _gda_postgres_make_error (cnc, cdata->pconn, NULL, error);
 	else {

Modified: trunk/providers/postgres/gda-postgres-pstmt.c
==============================================================================
--- trunk/providers/postgres/gda-postgres-pstmt.c	(original)
+++ trunk/providers/postgres/gda-postgres-pstmt.c	Wed Apr 30 20:18:52 2008
@@ -86,9 +86,13 @@
 
 	/* deallocate statement */
 	gchar *sql;
+	PGresult *pg_res;
+
 	sql = g_strdup_printf ("DEALLOCATE %s", pstmt->prep_name);
-	_gda_postgres_PQexec_wrap (pstmt->cnc, pstmt->pconn, sql);
+	pg_res = _gda_postgres_PQexec_wrap (pstmt->cnc, pstmt->pconn, sql);
 	g_free (sql);
+	if (pg_res) 
+		PQclear (pg_res);
 	
 	/* free memory */
 	g_free (pstmt->prep_name);

Modified: trunk/providers/postgres/parser.y
==============================================================================
--- trunk/providers/postgres/parser.y	(original)
+++ trunk/providers/postgres/parser.y	Wed Apr 30 20:18:52 2008
@@ -73,86 +73,86 @@
 	GSList *then_list;
 } CaseBody;
 
-static GdaSqlOperator
+static GdaSqlOperatorType
 sql_operation_string_to_operator (const gchar *op)
 {
 	switch (g_ascii_toupper (*op)) {
 	case 'A':
-		return GDA_SQL_OPERATOR_AND;
+		return GDA_SQL_OPERATOR_TYPE_AND;
 	case 'O':
-		return GDA_SQL_OPERATOR_OR;
+		return GDA_SQL_OPERATOR_TYPE_OR;
 	case 'N':
-		return GDA_SQL_OPERATOR_NOT;
+		return GDA_SQL_OPERATOR_TYPE_NOT;
 	case '=':
-		return GDA_SQL_OPERATOR_EQ;
+		return GDA_SQL_OPERATOR_TYPE_EQ;
 	case 'I':
 		if (op[1] == 'S')
-			return GDA_SQL_OPERATOR_IS;
+			return GDA_SQL_OPERATOR_TYPE_IS;
 		else if (op[1] == 'N')
-			return GDA_SQL_OPERATOR_IN;
+			return GDA_SQL_OPERATOR_TYPE_IN;
 		break;
 	case 'L':
-		return GDA_SQL_OPERATOR_LIKE;
+		return GDA_SQL_OPERATOR_TYPE_LIKE;
 	case 'B':
-		return GDA_SQL_OPERATOR_BETWEEN;
+		return GDA_SQL_OPERATOR_TYPE_BETWEEN;
 	case '>':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_GEQ;
+			return GDA_SQL_OPERATOR_TYPE_GEQ;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_GT;
+			return GDA_SQL_OPERATOR_TYPE_GT;
 		break;
 	case '<':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_LEQ;
+			return GDA_SQL_OPERATOR_TYPE_LEQ;
 		else if (op[1] == '>')
-			return GDA_SQL_OPERATOR_DIFF;
+			return GDA_SQL_OPERATOR_TYPE_DIFF;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_LT;
+			return GDA_SQL_OPERATOR_TYPE_LT;
 		break;
 	case '!':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_DIFF;
+			return GDA_SQL_OPERATOR_TYPE_DIFF;
 		else if (op[1] == '~') {
 			if (op[2] == 0)
-				return GDA_SQL_OPERATOR_NOT_REGEXP;
+				return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP;
 			else if (op[2] == '*')
-				return GDA_SQL_OPERATOR_NOT_REGEXP_CI;
+				return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI;
 		}
 		break;
 	case '~':
 		if (op[1] == '*')
-			return GDA_SQL_OPERATOR_REGEXP_CI;
+			return GDA_SQL_OPERATOR_TYPE_REGEXP_CI;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_REGEXP;
+			return GDA_SQL_OPERATOR_TYPE_REGEXP;
 		break;
 	case 'S':
-		return GDA_SQL_OPERATOR_SIMILAR;
+		return GDA_SQL_OPERATOR_TYPE_SIMILAR;
 	case '|':
 		if (op[1] == '|')
-			return GDA_SQL_OPERATOR_CONCAT;
+			return GDA_SQL_OPERATOR_TYPE_CONCAT;
 		else
-			return GDA_SQL_OPERATOR_BITOR;
+			return GDA_SQL_OPERATOR_TYPE_BITOR;
 	case '+':
-		return GDA_SQL_OPERATOR_PLUS;
+		return GDA_SQL_OPERATOR_TYPE_PLUS;
 	case '-':
-		return GDA_SQL_OPERATOR_MINUS;
+		return GDA_SQL_OPERATOR_TYPE_MINUS;
 	case '*':
-		return GDA_SQL_OPERATOR_STAR;
+		return GDA_SQL_OPERATOR_TYPE_STAR;
 	case '/':
-		return GDA_SQL_OPERATOR_DIV;
+		return GDA_SQL_OPERATOR_TYPE_DIV;
 	case '%':
-		return GDA_SQL_OPERATOR_REM;
+		return GDA_SQL_OPERATOR_TYPE_REM;
 	case '&':
-		return GDA_SQL_OPERATOR_BITAND;
+		return GDA_SQL_OPERATOR_TYPE_BITAND;
 	}
 	g_error ("Unhandled operator named '%s'\n", op);
 	return 0;
 }
 
-static GdaSqlOperator
+static GdaSqlOperatorType
 string_to_op_type (GValue *value)
 {
-	GdaSqlOperator op;
+	GdaSqlOperatorType op;
 	op = sql_operation_string_to_operator (g_value_get_string (value));
 	g_value_reset (value);
 	g_free (value);
@@ -160,7 +160,7 @@
 }
 
 static GdaSqlExpr *
-compose_multiple_expr (GdaSqlOperator op, GdaSqlExpr *left, GdaSqlExpr *right) {
+compose_multiple_expr (GdaSqlOperatorType op, GdaSqlExpr *left, GdaSqlExpr *right) {
 	GdaSqlExpr *ret;
 	if (left->cond && (left->cond->operator == op)) {
 		ret = left;
@@ -181,7 +181,7 @@
 }
 
 static GdaSqlExpr *
-create_two_expr (GdaSqlOperator op, GdaSqlExpr *left, GdaSqlExpr *right) {
+create_two_expr (GdaSqlOperatorType op, GdaSqlExpr *left, GdaSqlExpr *right) {
 	GdaSqlExpr *ret;
 	GdaSqlOperation *cond;
 	ret = gda_sql_expr_new (NULL);
@@ -196,7 +196,7 @@
 }
 
 static GdaSqlExpr *
-create_uni_expr (GdaSqlOperator op, GdaSqlExpr *expr) {
+create_uni_expr (GdaSqlOperatorType op, GdaSqlExpr *expr) {
 	GdaSqlExpr *ret;
 	GdaSqlOperation *cond;
 	ret = gda_sql_expr_new (NULL);
@@ -811,26 +811,26 @@
 					 g_free (T);}
 
 expr(C) ::= expr(L) PLUS|MINUS(O) expr(R). {C = compose_multiple_expr (string_to_op_type (O), L, R);}
-expr(C) ::= expr(L) STAR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_STAR, L, R);}
+expr(C) ::= expr(L) STAR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_STAR, L, R);}
 expr(C) ::= expr(L) SLASH|REM(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) BITAND|BITOR(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 
-expr(C) ::= MINUS expr(X). [UMINUS] {C = create_uni_expr (GDA_SQL_OPERATOR_MINUS, X);}
-expr(C) ::= PLUS expr(X). [UPLUS] {C = create_uni_expr (GDA_SQL_OPERATOR_PLUS, X);}
+expr(C) ::= MINUS expr(X). [UMINUS] {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_MINUS, X);}
+expr(C) ::= PLUS expr(X). [UPLUS] {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_PLUS, X);}
 
-expr(C) ::= expr(L) AND expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_AND, L, R);}
-expr(C) ::= expr(L) OR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_OR, L, R);}
-expr(C) ::= expr(L) CONCAT expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_CONCAT, L, R);}
+expr(C) ::= expr(L) AND expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_AND, L, R);}
+expr(C) ::= expr(L) OR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_OR, L, R);}
+expr(C) ::= expr(L) CONCAT expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_CONCAT, L, R);}
 
 expr(C) ::= expr(L) GT|LEQ|GEQ|LT(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) DIFF|EQ(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
-expr(C) ::= expr(L) LIKE expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_LIKE, L, R);}
+expr(C) ::= expr(L) LIKE expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_TYPE_LIKE, L, R);}
 expr(C) ::= expr(L) REGEXP|REGEXP_CI|NOT_REGEXP|NOT_REGEXP_CI|SIMILAR(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) BETWEEN expr(R) AND expr(E). {GdaSqlOperation *cond;
 						  C = gda_sql_expr_new (NULL);
 						  cond = gda_sql_operation_new (GDA_SQL_ANY_PART (C));
 						  C->cond = cond;
-						  cond->operator = GDA_SQL_OPERATOR_BETWEEN;
+						  cond->operator = GDA_SQL_OPERATOR_TYPE_BETWEEN;
 						  cond->operands = g_slist_append (NULL, L);
 						  GDA_SQL_ANY_PART (L)->parent = GDA_SQL_ANY_PART (cond);
 						  cond->operands = g_slist_append (cond->operands, R);
@@ -844,7 +844,7 @@
 						      expr = gda_sql_expr_new (NULL);
 						      cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
 						      expr->cond = cond;
-						      cond->operator = GDA_SQL_OPERATOR_BETWEEN;
+						      cond->operator = GDA_SQL_OPERATOR_TYPE_BETWEEN;
 						      cond->operands = g_slist_append (NULL, L);
 						      GDA_SQL_ANY_PART (L)->parent = GDA_SQL_ANY_PART (cond);
 						      cond->operands = g_slist_append (cond->operands, R);
@@ -855,23 +855,23 @@
 						      C = gda_sql_expr_new (NULL);
 						      cond = gda_sql_operation_new (GDA_SQL_ANY_PART (C));
 						      C->cond = cond;
-						      cond->operator = GDA_SQL_OPERATOR_NOT;
+						      cond->operator = GDA_SQL_OPERATOR_TYPE_NOT;
 						      cond->operands = g_slist_prepend (NULL, expr);
 						      GDA_SQL_ANY_PART (expr)->parent = GDA_SQL_ANY_PART (cond);
 }
 
-expr(C) ::= NOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_NOT, R);}
-expr(C) ::= BITNOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_BITNOT, R);}
+expr(C) ::= NOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_NOT, R);}
+expr(C) ::= BITNOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_BITNOT, R);}
 expr(C) ::= expr(R) uni_op(O) . {C = create_uni_expr (O, R);}
 
-expr(C) ::= expr(L) IS expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_IS, L, R);}
+expr(C) ::= expr(L) IS expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_TYPE_IS, L, R);}
 expr(E) ::= LP compound(S) RP. {E = gda_sql_expr_new (NULL); gda_sql_expr_take_select (E, S);}
 expr(E) ::= expr(R) IN LP exprlist(L) RP. {GdaSqlOperation *cond;
 					   GSList *list;
 					   E = gda_sql_expr_new (NULL);
 					   cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					   E->cond = cond;
-					   cond->operator = GDA_SQL_OPERATOR_IN;
+					   cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					   cond->operands = g_slist_prepend (L, R);
 					   for (list = cond->operands; list; list = list->next)
 						   GDA_SQL_ANY_PART (list->data)->parent = GDA_SQL_ANY_PART (cond);
@@ -881,7 +881,7 @@
 					    E = gda_sql_expr_new (NULL);
 					    cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					    E->cond = cond;
-					    cond->operator = GDA_SQL_OPERATOR_IN;
+					    cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					    
 					    expr = gda_sql_expr_new (GDA_SQL_ANY_PART (cond));
 					    gda_sql_expr_take_select (expr, S);
@@ -894,7 +894,7 @@
 					       E = gda_sql_expr_new (NULL);
 					       cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					       E->cond = cond;
-					       cond->operator = GDA_SQL_OPERATOR_NOTIN;
+					       cond->operator = GDA_SQL_OPERATOR_TYPE_NOTIN;
 					       cond->operands = g_slist_prepend (L, R);
 					       for (list = cond->operands; list; list = list->next)
 						       GDA_SQL_ANY_PART (list->data)->parent = GDA_SQL_ANY_PART (cond);
@@ -904,7 +904,7 @@
 					       E = gda_sql_expr_new (NULL);
 					       cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					       E->cond = cond;
-					       cond->operator = GDA_SQL_OPERATOR_NOTIN;
+					       cond->operator = GDA_SQL_OPERATOR_TYPE_NOTIN;
 					       
 					       expr = gda_sql_expr_new (GDA_SQL_ANY_PART (cond));
 					       gda_sql_expr_take_select (expr, S);
@@ -951,9 +951,9 @@
 case_else(A) ::= ELSE expr(X).       {A = X;}
 case_else(A) ::= .                   {A = NULL;}
 
-%type uni_op {GdaSqlOperator}
-uni_op(O) ::= ISNULL. {O = GDA_SQL_OPERATOR_ISNULL;}
-uni_op(O) ::= IS NOTNULL. {O = GDA_SQL_OPERATOR_ISNOTNULL;}
+%type uni_op {GdaSqlOperatorType}
+uni_op(O) ::= ISNULL. {O = GDA_SQL_OPERATOR_TYPE_ISNULL;}
+uni_op(O) ::= IS NOTNULL. {O = GDA_SQL_OPERATOR_TYPE_ISNOTNULL;}
 
 
 // Values: for all constants (G_TYPE_STRING GValue)

Modified: trunk/providers/skel-implementation/capi/parser.y
==============================================================================
--- trunk/providers/skel-implementation/capi/parser.y	(original)
+++ trunk/providers/skel-implementation/capi/parser.y	Wed Apr 30 20:18:52 2008
@@ -73,84 +73,84 @@
 	GSList *then_list;
 } CaseBody;
 
-static GdaSqlOperator
+static GdaSqlOperatorType
 sql_operation_string_to_operator (const gchar *op)
 {
 	switch (g_ascii_toupper (*op)) {
 	case 'A':
-		return GDA_SQL_OPERATOR_AND;
+		return GDA_SQL_OPERATOR_TYPE_AND;
 	case 'O':
-		return GDA_SQL_OPERATOR_OR;
+		return GDA_SQL_OPERATOR_TYPE_OR;
 	case 'N':
-		return GDA_SQL_OPERATOR_NOT;
+		return GDA_SQL_OPERATOR_TYPE_NOT;
 	case '=':
-		return GDA_SQL_OPERATOR_EQ;
+		return GDA_SQL_OPERATOR_TYPE_EQ;
 	case 'I':
 		if (op[1] == 'S')
-			return GDA_SQL_OPERATOR_IS;
+			return GDA_SQL_OPERATOR_TYPE_IS;
 		else if (op[1] == 'N')
-			return GDA_SQL_OPERATOR_IN;
+			return GDA_SQL_OPERATOR_TYPE_IN;
 		break;
 	case 'L':
-		return GDA_SQL_OPERATOR_LIKE;
+		return GDA_SQL_OPERATOR_TYPE_LIKE;
 	case 'B':
-		return GDA_SQL_OPERATOR_BETWEEN;
+		return GDA_SQL_OPERATOR_TYPE_BETWEEN;
 	case '>':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_GEQ;
+			return GDA_SQL_OPERATOR_TYPE_GEQ;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_GT;
+			return GDA_SQL_OPERATOR_TYPE_GT;
 		break;
 	case '<':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_LEQ;
+			return GDA_SQL_OPERATOR_TYPE_LEQ;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_LT;
+			return GDA_SQL_OPERATOR_TYPE_LT;
 		break;
 	case '!':
 		if (op[1] == '=')
-			return GDA_SQL_OPERATOR_DIFF;
+			return GDA_SQL_OPERATOR_TYPE_DIFF;
 		else if (op[1] == '~') {
 			if (op[2] == 0)
-				return GDA_SQL_OPERATOR_NOT_REGEXP;
+				return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP;
 			else if (op[2] == '*')
-				return GDA_SQL_OPERATOR_NOT_REGEXP_CI;
+				return GDA_SQL_OPERATOR_TYPE_NOT_REGEXP_CI;
 		}
 		break;
 	case '~':
 		if (op[1] == '*')
-			return GDA_SQL_OPERATOR_REGEXP_CI;
+			return GDA_SQL_OPERATOR_TYPE_REGEXP_CI;
 		else if (op[1] == 0)
-			return GDA_SQL_OPERATOR_REGEXP;
+			return GDA_SQL_OPERATOR_TYPE_REGEXP;
 		break;
 	case 'S':
-		return GDA_SQL_OPERATOR_SIMILAR;
+		return GDA_SQL_OPERATOR_TYPE_SIMILAR;
 	case '|':
 		if (op[1] == '|')
-			return GDA_SQL_OPERATOR_CONCAT;
+			return GDA_SQL_OPERATOR_TYPE_CONCAT;
 		else
-			return GDA_SQL_OPERATOR_BITOR;
+			return GDA_SQL_OPERATOR_TYPE_BITOR;
 	case '+':
-		return GDA_SQL_OPERATOR_PLUS;
+		return GDA_SQL_OPERATOR_TYPE_PLUS;
 	case '-':
-		return GDA_SQL_OPERATOR_MINUS;
+		return GDA_SQL_OPERATOR_TYPE_MINUS;
 	case '*':
-		return GDA_SQL_OPERATOR_STAR;
+		return GDA_SQL_OPERATOR_TYPE_STAR;
 	case '/':
-		return GDA_SQL_OPERATOR_DIV;
+		return GDA_SQL_OPERATOR_TYPE_DIV;
 	case '%':
-		return GDA_SQL_OPERATOR_REM;
+		return GDA_SQL_OPERATOR_TYPE_REM;
 	case '&':
-		return GDA_SQL_OPERATOR_BITAND;
+		return GDA_SQL_OPERATOR_TYPE_BITAND;
 	}
 	g_error ("Unhandled operator named '%s'\n", op);
 	return 0;
 }
 
-static GdaSqlOperator
+static GdaSqlOperatorType
 string_to_op_type (GValue *value)
 {
-	GdaSqlOperator op;
+	GdaSqlOperatorType op;
 	op = sql_operation_string_to_operator (g_value_get_string (value));
 	g_value_reset (value);
 	g_free (value);
@@ -158,7 +158,7 @@
 }
 
 static GdaSqlExpr *
-compose_multiple_expr (GdaSqlOperator op, GdaSqlExpr *left, GdaSqlExpr *right) {
+compose_multiple_expr (GdaSqlOperatorType op, GdaSqlExpr *left, GdaSqlExpr *right) {
 	GdaSqlExpr *ret;
 	if (left->cond && (left->cond->operator == op)) {
 		ret = left;
@@ -179,7 +179,7 @@
 }
 
 static GdaSqlExpr *
-create_two_expr (GdaSqlOperator op, GdaSqlExpr *left, GdaSqlExpr *right) {
+create_two_expr (GdaSqlOperatorType op, GdaSqlExpr *left, GdaSqlExpr *right) {
 	GdaSqlExpr *ret;
 	GdaSqlOperation *cond;
 	ret = gda_sql_expr_new (NULL);
@@ -194,7 +194,7 @@
 }
 
 static GdaSqlExpr *
-create_uni_expr (GdaSqlOperator op, GdaSqlExpr *expr) {
+create_uni_expr (GdaSqlOperatorType op, GdaSqlExpr *expr) {
 	GdaSqlExpr *ret;
 	GdaSqlOperation *cond;
 	ret = gda_sql_expr_new (NULL);
@@ -809,26 +809,26 @@
 					 g_free (T);}
 
 expr(C) ::= expr(L) PLUS|MINUS(O) expr(R). {C = compose_multiple_expr (string_to_op_type (O), L, R);}
-expr(C) ::= expr(L) STAR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_STAR, L, R);}
+expr(C) ::= expr(L) STAR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_STAR, L, R);}
 expr(C) ::= expr(L) SLASH|REM(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) BITAND|BITOR(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 
-expr(C) ::= MINUS expr(X). [UMINUS] {C = create_uni_expr (GDA_SQL_OPERATOR_MINUS, X);}
-expr(C) ::= PLUS expr(X). [UPLUS] {C = create_uni_expr (GDA_SQL_OPERATOR_PLUS, X);}
+expr(C) ::= MINUS expr(X). [UMINUS] {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_MINUS, X);}
+expr(C) ::= PLUS expr(X). [UPLUS] {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_PLUS, X);}
 
-expr(C) ::= expr(L) AND expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_AND, L, R);}
-expr(C) ::= expr(L) OR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_OR, L, R);}
-expr(C) ::= expr(L) CONCAT expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_CONCAT, L, R);}
+expr(C) ::= expr(L) AND expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_AND, L, R);}
+expr(C) ::= expr(L) OR expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_OR, L, R);}
+expr(C) ::= expr(L) CONCAT expr(R). {C = compose_multiple_expr (GDA_SQL_OPERATOR_TYPE_CONCAT, L, R);}
 
 expr(C) ::= expr(L) GT|LEQ|GEQ|LT(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) DIFF|EQ(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
-expr(C) ::= expr(L) LIKE expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_LIKE, L, R);}
+expr(C) ::= expr(L) LIKE expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_TYPE_LIKE, L, R);}
 expr(C) ::= expr(L) REGEXP|REGEXP_CI|NOT_REGEXP|NOT_REGEXP_CI|SIMILAR(O) expr(R). {C = create_two_expr (string_to_op_type (O), L, R);}
 expr(C) ::= expr(L) BETWEEN expr(R) AND expr(E). {GdaSqlOperation *cond;
 						  C = gda_sql_expr_new (NULL);
 						  cond = gda_sql_operation_new (GDA_SQL_ANY_PART (C));
 						  C->cond = cond;
-						  cond->operator = GDA_SQL_OPERATOR_BETWEEN;
+						  cond->operator = GDA_SQL_OPERATOR_TYPE_BETWEEN;
 						  cond->operands = g_slist_append (NULL, L);
 						  GDA_SQL_ANY_PART (L)->parent = GDA_SQL_ANY_PART (cond);
 						  cond->operands = g_slist_append (cond->operands, R);
@@ -842,7 +842,7 @@
 						      expr = gda_sql_expr_new (NULL);
 						      cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
 						      expr->cond = cond;
-						      cond->operator = GDA_SQL_OPERATOR_BETWEEN;
+						      cond->operator = GDA_SQL_OPERATOR_TYPE_BETWEEN;
 						      cond->operands = g_slist_append (NULL, L);
 						      GDA_SQL_ANY_PART (L)->parent = GDA_SQL_ANY_PART (cond);
 						      cond->operands = g_slist_append (cond->operands, R);
@@ -853,23 +853,23 @@
 						      C = gda_sql_expr_new (NULL);
 						      cond = gda_sql_operation_new (GDA_SQL_ANY_PART (C));
 						      C->cond = cond;
-						      cond->operator = GDA_SQL_OPERATOR_NOT;
+						      cond->operator = GDA_SQL_OPERATOR_TYPE_NOT;
 						      cond->operands = g_slist_prepend (NULL, expr);
 						      GDA_SQL_ANY_PART (expr)->parent = GDA_SQL_ANY_PART (cond);
 }
 
-expr(C) ::= NOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_NOT, R);}
-expr(C) ::= BITNOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_BITNOT, R);}
+expr(C) ::= NOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_NOT, R);}
+expr(C) ::= BITNOT expr(R). {C = create_uni_expr (GDA_SQL_OPERATOR_TYPE_BITNOT, R);}
 expr(C) ::= expr(R) uni_op(O) . {C = create_uni_expr (O, R);}
 
-expr(C) ::= expr(L) IS expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_IS, L, R);}
+expr(C) ::= expr(L) IS expr(R). {C = create_two_expr (GDA_SQL_OPERATOR_TYPE_IS, L, R);}
 expr(E) ::= LP compound(S) RP. {E = gda_sql_expr_new (NULL); gda_sql_expr_take_select (E, S);}
 expr(E) ::= expr(R) IN LP exprlist(L) RP. {GdaSqlOperation *cond;
 					   GSList *list;
 					   E = gda_sql_expr_new (NULL);
 					   cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					   E->cond = cond;
-					   cond->operator = GDA_SQL_OPERATOR_IN;
+					   cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					   cond->operands = g_slist_prepend (L, R);
 					   for (list = cond->operands; list; list = list->next)
 						   GDA_SQL_ANY_PART (list->data)->parent = GDA_SQL_ANY_PART (cond);
@@ -879,7 +879,7 @@
 					    E = gda_sql_expr_new (NULL);
 					    cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					    E->cond = cond;
-					    cond->operator = GDA_SQL_OPERATOR_IN;
+					    cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					    
 					    expr = gda_sql_expr_new (GDA_SQL_ANY_PART (cond));
 					    gda_sql_expr_take_select (expr, S);
@@ -893,7 +893,7 @@
 					       expr = gda_sql_expr_new (NULL);
 					       cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr));
 					       expr->cond = cond;
-					       cond->operator = GDA_SQL_OPERATOR_IN;
+					       cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 					       cond->operands = g_slist_prepend (L, R);
 					       for (list = cond->operands; list; list = list->next)
 						       GDA_SQL_ANY_PART (list->data)->parent = GDA_SQL_ANY_PART (cond);
@@ -901,7 +901,7 @@
 					       E = gda_sql_expr_new (NULL);
 					       cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 					       E->cond = cond;
-					       cond->operator = GDA_SQL_OPERATOR_NOT;
+					       cond->operator = GDA_SQL_OPERATOR_TYPE_NOT;
 					       cond->operands = g_slist_prepend (NULL, expr);
 					       GDA_SQL_ANY_PART (expr)->parent = GDA_SQL_ANY_PART (cond);
 }
@@ -910,7 +910,7 @@
 						expr1 = gda_sql_expr_new (NULL);
 						cond = gda_sql_operation_new (GDA_SQL_ANY_PART (expr1));
 						expr1->cond = cond;
-						cond->operator = GDA_SQL_OPERATOR_IN;
+						cond->operator = GDA_SQL_OPERATOR_TYPE_IN;
 						
 						expr2 = gda_sql_expr_new (NULL);
 						gda_sql_expr_take_select (expr2, S);
@@ -922,7 +922,7 @@
 						E = gda_sql_expr_new (NULL);
 						cond = gda_sql_operation_new (GDA_SQL_ANY_PART (E));
 						E->cond = cond;
-						cond->operator = GDA_SQL_OPERATOR_NOT;
+						cond->operator = GDA_SQL_OPERATOR_TYPE_NOT;
 						cond->operands = g_slist_prepend (NULL, expr1);
 						GDA_SQL_ANY_PART (expr1)->parent = GDA_SQL_ANY_PART (cond);
 }
@@ -965,9 +965,9 @@
 case_else(A) ::= ELSE expr(X).       {A = X;}
 case_else(A) ::= .                   {A = NULL;}
 
-%type uni_op {GdaSqlOperator}
-uni_op(O) ::= ISNULL. {O = GDA_SQL_OPERATOR_ISNULL;}
-uni_op(O) ::= IS NOTNULL. {O = GDA_SQL_OPERATOR_ISNOTNULL;}
+%type uni_op {GdaSqlOperatorType}
+uni_op(O) ::= ISNULL. {O = GDA_SQL_OPERATOR_TYPE_ISNULL;}
+uni_op(O) ::= IS NOTNULL. {O = GDA_SQL_OPERATOR_TYPE_ISNOTNULL;}
 
 
 // Values: for all constants (G_TYPE_STRING GValue)

Modified: trunk/providers/sybase/main.c
==============================================================================
--- trunk/providers/sybase/main.c	(original)
+++ trunk/providers/sybase/main.c	Wed Apr 30 20:18:52 2008
@@ -67,7 +67,7 @@
 	setlocale (LC_ALL, "");
 
 	/* initialize application */
-	gda_init ("gda-sybase-srv", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	setup_factory ();
 

Modified: trunk/samples/BDB/access-custom.c
==============================================================================
--- trunk/samples/BDB/access-custom.c	(original)
+++ trunk/samples/BDB/access-custom.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 	gint i, nrows;
 	GError *error = NULL;
 
-	gda_init ("bdb test", "3.1.1", argc, argv);
+	gda_init ();
 	model = g_object_new (TYPE_CUSTOM_DATA_MODEL, "filename", DATABASE, NULL);
 	gda_data_model_dump (model, stdout);
 

Modified: trunk/samples/BDB/access-raw.c
==============================================================================
--- trunk/samples/BDB/access-raw.c	(original)
+++ trunk/samples/BDB/access-raw.c	Wed Apr 30 20:18:52 2008
@@ -14,7 +14,7 @@
 	gint i, nrows;
 	GError *error = NULL;
 
-	gda_init ("bdb test", "3.1.1", argc, argv);
+	gda_init ();
 	if (! g_file_test (DATABASE, G_FILE_TEST_EXISTS)) {
 		g_print ("File '%s' does not exist\n", DATABASE);
 		exit (1);

Modified: trunk/samples/DDL/ddl.c
==============================================================================
--- trunk/samples/DDL/ddl.c	(original)
+++ trunk/samples/DDL/ddl.c	Wed Apr 30 20:18:52 2008
@@ -8,7 +8,7 @@
 int
 main (int argc, char *argv[])
 {
-        gda_init ("SimpleExample", "1.0", argc, argv);
+        gda_init ();
 
         GdaConnection *cnc;
 

Modified: trunk/samples/DirDataModel/find-duplicates.c
==============================================================================
--- trunk/samples/DirDataModel/find-duplicates.c	(original)
+++ trunk/samples/DirDataModel/find-duplicates.c	Wed Apr 30 20:18:52 2008
@@ -62,7 +62,7 @@
         }
         g_option_context_free (context);
 
-	gda_init ("find_duplicates", "3.1.1", argc, argv);
+	gda_init ();
 
 	if (argc == 2)
 		dirname = argv [1];

Modified: trunk/samples/F-Spot/repair-path.c
==============================================================================
--- trunk/samples/F-Spot/repair-path.c	(original)
+++ trunk/samples/F-Spot/repair-path.c	Wed Apr 30 20:18:52 2008
@@ -46,7 +46,7 @@
         }
         g_option_context_free (context);
 
-	gda_init ("repair_path", "3.1.1", argc, argv);
+	gda_init ();
 
 	if (argc == 2)
 		base_dir = argv [1];

Modified: trunk/samples/Report/customers-report-docbook.c
==============================================================================
--- trunk/samples/Report/customers-report-docbook.c	(original)
+++ trunk/samples/Report/customers-report-docbook.c	Wed Apr 30 20:18:52 2008
@@ -13,7 +13,7 @@
 	GdaHolder *param;
 	GdaReportDocument *doc;
 
-	gda_init ("Customers report example (DocBook)", "3.1.1", argc, argv);
+	gda_init ();
 
 	/* Doc object */
 	doc = gda_report_docbook_document_new (NULL);

Modified: trunk/samples/Report/customers-report-rml.c
==============================================================================
--- trunk/samples/Report/customers-report-rml.c	(original)
+++ trunk/samples/Report/customers-report-rml.c	Wed Apr 30 20:18:52 2008
@@ -13,7 +13,7 @@
 	GdaHolder *param;
 	GdaReportDocument *doc;
 
-	gda_init ("Customers report example (RML)", "3.1.1", argc, argv);
+	gda_init ();
 
 	/* Doc object */
 	doc = gda_report_rml_document_new (NULL);

Modified: trunk/samples/Report/customers-report.c
==============================================================================
--- trunk/samples/Report/customers-report.c	(original)
+++ trunk/samples/Report/customers-report.c	Wed Apr 30 20:18:52 2008
@@ -13,7 +13,7 @@
 	GdaConnection *cnc;
 	GdaHolder *param;
 
-	gda_init ("Customers report example", "3.1.1", argc, argv);
+	gda_init ();
 
 	/* Engine object */
 	g_assert (g_file_get_contents ("customers-report-spec.xml", &spec, NULL, NULL));

Modified: trunk/samples/SimpleExample/example.c
==============================================================================
--- trunk/samples/SimpleExample/example.c	(original)
+++ trunk/samples/SimpleExample/example.c	Wed Apr 30 20:18:52 2008
@@ -9,7 +9,7 @@
 int
 main (int argc, char *argv[])
 {
-        gda_init ("SimpleExample", "1.0", argc, argv);
+        gda_init ();
 
         GdaConnection *cnc;
 

Modified: trunk/samples/SqlParserConsole/console.c
==============================================================================
--- trunk/samples/SqlParserConsole/console.c	(original)
+++ trunk/samples/SqlParserConsole/console.c	Wed Apr 30 20:18:52 2008
@@ -39,7 +39,7 @@
 		exit (1);
         }
 
-	gda_init ("SqlParserConsole", ".1", argc, argv);
+	gda_init ();
 
 	/* create a parser */
 	parser = create_parser_for_provider (prov_name);

Modified: trunk/samples/TableCopy/table-copy-easier.c
==============================================================================
--- trunk/samples/TableCopy/table-copy-easier.c	(original)
+++ trunk/samples/TableCopy/table-copy-easier.c	Wed Apr 30 20:18:52 2008
@@ -10,7 +10,7 @@
 {
         GdaConnection *s_cnc, *d_cnc, *virtual;
 
-        gda_init ("LibgdaCopyTableEasier", "1.0", argc, argv);
+        gda_init ();
 
 	/* open "real" connections */
 	s_cnc = open_source_connection ();

Modified: trunk/samples/TableCopy/table-copy.c
==============================================================================
--- trunk/samples/TableCopy/table-copy.c	(original)
+++ trunk/samples/TableCopy/table-copy.c	Wed Apr 30 20:18:52 2008
@@ -9,7 +9,7 @@
 int
 main (int argc, char *argv[])
 {
-        gda_init ("LibgdaCopyTable", "1.0", argc, argv);
+        gda_init ();
 
         GdaConnection *s_cnc, *d_cnc;
 

Modified: trunk/samples/Virtual/virtual-test.c
==============================================================================
--- trunk/samples/Virtual/virtual-test.c	(original)
+++ trunk/samples/Virtual/virtual-test.c	Wed Apr 30 20:18:52 2008
@@ -14,7 +14,7 @@
 	GdaVirtualProvider *provider;
 	GdaDataModel *rw_model;
 	
-	gda_init ("SQlite virtual test", "1.0", argc, argv);
+	gda_init ();
 
 	provider = gda_vprovider_data_model_new ();
 	cnc = gda_virtual_connection_open (provider, NULL);

Modified: trunk/samples/XSLT/transform.c
==============================================================================
--- trunk/samples/XSLT/transform.c	(original)
+++ trunk/samples/XSLT/transform.c	Wed Apr 30 20:18:52 2008
@@ -53,7 +53,7 @@
 		dsn = "SalesTest";
 	}
 
-        gda_init ("LibgdaXsltProc", "1.0", argc, argv);
+        gda_init ();
 
 	/* open connection */
 	cnc = gda_connection_open_from_dsn (dsn, NULL, GDA_CONNECTION_OPTIONS_NONE, &error);

Modified: trunk/testing/gda-test-blob.c
==============================================================================
--- trunk/testing/gda-test-blob.c	(original)
+++ trunk/testing/gda-test-blob.c	Wed Apr 30 20:18:52 2008
@@ -62,7 +62,7 @@
 		exit (1);
 	}
 
-	gda_init ("Gda connection tester", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	/* open connection */
 	if (user) {

Modified: trunk/testing/gda-test-connection.c
==============================================================================
--- trunk/testing/gda-test-connection.c	(original)
+++ trunk/testing/gda-test-connection.c	Wed Apr 30 20:18:52 2008
@@ -51,7 +51,7 @@
 		exit (1);
 	}
 
-	gda_init ("Gda connection tester", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	/* open connection */
 	if (user) {

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	Wed Apr 30 20:18:52 2008
@@ -52,7 +52,7 @@
 {
 	int number_failed = 0;
 
-	gda_init ("check-data-proxy", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	prepend_null_row = FALSE;
 	defer_sync  = FALSE;

Modified: trunk/tests/data-models/check_model_import.c
==============================================================================
--- trunk/tests/data-models/check_model_import.c	(original)
+++ trunk/tests/data-models/check_model_import.c	Wed Apr 30 20:18:52 2008
@@ -19,7 +19,7 @@
 	GError *err = NULL;
 	const gchar *name;
 
-	gda_init ("check-model-import", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	dirname = g_build_filename (CHECK_FILES, "tests", "providers", NULL);
 	if (!(dir = g_dir_open (dirname, 0, &err))) {

Modified: trunk/tests/data-models/check_virtual.c
==============================================================================
--- trunk/tests/data-models/check_virtual.c	(original)
+++ trunk/tests/data-models/check_virtual.c	Wed Apr 30 20:18:52 2008
@@ -16,7 +16,7 @@
 	GdaDataModel *rw_model;
 	gchar *file;
 	
-	gda_init ("SQlite virtual test", "1.0", argc, argv);
+	gda_init ();
 
 	provider = gda_vprovider_data_model_new ();
 	cnc = gda_virtual_connection_open (provider, NULL);

Modified: trunk/tests/meta-store/check_meta_store_memory.c
==============================================================================
--- trunk/tests/meta-store/check_meta_store_memory.c	(original)
+++ trunk/tests/meta-store/check_meta_store_memory.c	Wed Apr 30 20:18:52 2008
@@ -11,7 +11,7 @@
 	/* set up test environment */
 	g_setenv ("GDA_TOP_SRC_DIR", TOP_SRC_DIR, TRUE);
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, TRUE);
-	gda_init ("GdaMetaStore", "0.1", argc, argv);
+	gda_init ();
 
 	/* Clean eveything which might exist in the store */
 	store = gda_meta_store_new (NULL);

Modified: trunk/tests/meta-store/check_meta_store_mysql.c
==============================================================================
--- trunk/tests/meta-store/check_meta_store_mysql.c	(original)
+++ trunk/tests/meta-store/check_meta_store_mysql.c	Wed Apr 30 20:18:52 2008
@@ -12,7 +12,7 @@
 	/* set up test environment */
 	g_setenv ("GDA_TOP_SRC_DIR", TOP_SRC_DIR, TRUE);
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, TRUE);
-	gda_init ("GdaMetaStore", "0.1", argc, argv);
+	gda_init ();
 
 	/* connection parameters */
 	cnc_string = getenv ("MYSQL_META_CNC");

Modified: trunk/tests/meta-store/check_meta_store_postgresql.c
==============================================================================
--- trunk/tests/meta-store/check_meta_store_postgresql.c	(original)
+++ trunk/tests/meta-store/check_meta_store_postgresql.c	Wed Apr 30 20:18:52 2008
@@ -12,7 +12,7 @@
 	/* set up test environment */
 	g_setenv ("GDA_TOP_SRC_DIR", TOP_SRC_DIR, TRUE);
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, TRUE);
-	gda_init ("GdaMetaStore", "0.1", argc, argv);
+	gda_init ();
 
 	/* connection parameters */
 	cnc_string = getenv ("POSTGRESQL_META_CNC");

Modified: trunk/tests/meta-store/check_meta_store_sqlite.c
==============================================================================
--- trunk/tests/meta-store/check_meta_store_sqlite.c	(original)
+++ trunk/tests/meta-store/check_meta_store_sqlite.c	Wed Apr 30 20:18:52 2008
@@ -11,7 +11,7 @@
 	/* set up test environment */
 	g_setenv ("GDA_TOP_SRC_DIR", TOP_SRC_DIR, TRUE);
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, TRUE);
-	gda_init ("GdaMetaStore", "0.1", argc, argv);
+	gda_init ();
 
 	/* Clean eveything which might exist in the store */
 	store = gda_meta_store_new_with_file ("test.db");

Modified: trunk/tests/parser/check_dml_comp.c
==============================================================================
--- trunk/tests/parser/check_dml_comp.c	(original)
+++ trunk/tests/parser/check_dml_comp.c	Wed Apr 30 20:18:52 2008
@@ -25,7 +25,7 @@
 	gint ntests = 0;
 	gchar *fname;
 
-	gda_init ("Parser validation", ".1", argc, argv);
+	gda_init ();
 
 	/* open connection */
 	gchar *cnc_string;

Modified: trunk/tests/parser/check_normalization.c
==============================================================================
--- trunk/tests/parser/check_normalization.c	(original)
+++ trunk/tests/parser/check_normalization.c	Wed Apr 30 20:18:52 2008
@@ -24,7 +24,7 @@
 	gint ntests = 0;
 	gchar *fname;
 
-	gda_init ("Parser validation", ".1", argc, argv);
+	gda_init ();
 
 	/* open connection */
 	gchar *cnc_string;

Modified: trunk/tests/parser/check_parser.c
==============================================================================
--- trunk/tests/parser/check_parser.c	(original)
+++ trunk/tests/parser/check_parser.c	Wed Apr 30 20:18:52 2008
@@ -28,7 +28,7 @@
 	GdaDataModel *providers_model;
 	gint i;
 
-	gda_init ("Parser check", ".1", argc, argv);
+	gda_init ();
 
 	/* load file */
 	fname = g_build_filename (ROOT_DIR, "tests", "parser", "testdata.xml", NULL);

Modified: trunk/tests/parser/check_validation.c
==============================================================================
--- trunk/tests/parser/check_validation.c	(original)
+++ trunk/tests/parser/check_validation.c	Wed Apr 30 20:18:52 2008
@@ -24,7 +24,7 @@
 	gint ntests = 0;
 	gchar *fname;
 
-	gda_init ("Parser validation", ".1", argc, argv);
+	gda_init ();
 
 	/* open connection */
 	gchar *cnc_string;

Modified: trunk/tests/providers/check_bdb.c
==============================================================================
--- trunk/tests/providers/check_bdb.c	(original)
+++ trunk/tests/providers/check_bdb.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_firebird.c
==============================================================================
--- trunk/tests/providers/check_firebird.c	(original)
+++ trunk/tests/providers/check_firebird.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_freetds.c
==============================================================================
--- trunk/tests/providers/check_freetds.c	(original)
+++ trunk/tests/providers/check_freetds.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_ibmdb2.c
==============================================================================
--- trunk/tests/providers/check_ibmdb2.c	(original)
+++ trunk/tests/providers/check_ibmdb2.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_ldap.c
==============================================================================
--- trunk/tests/providers/check_ldap.c	(original)
+++ trunk/tests/providers/check_ldap.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_mdb.c
==============================================================================
--- trunk/tests/providers/check_mdb.c	(original)
+++ trunk/tests/providers/check_mdb.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_msql.c
==============================================================================
--- trunk/tests/providers/check_msql.c	(original)
+++ trunk/tests/providers/check_msql.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_mysql.c
==============================================================================
--- trunk/tests/providers/check_mysql.c	(original)
+++ trunk/tests/providers/check_mysql.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_odbc.c
==============================================================================
--- trunk/tests/providers/check_odbc.c	(original)
+++ trunk/tests/providers/check_odbc.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_oracle.c
==============================================================================
--- trunk/tests/providers/check_oracle.c	(original)
+++ trunk/tests/providers/check_oracle.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_postgres.c
==============================================================================
--- trunk/tests/providers/check_postgres.c	(original)
+++ trunk/tests/providers/check_postgres.c	Wed Apr 30 20:18:52 2008
@@ -17,7 +17,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_sqlite.c
==============================================================================
--- trunk/tests/providers/check_sqlite.c	(original)
+++ trunk/tests/providers/check_sqlite.c	Wed Apr 30 20:18:52 2008
@@ -17,7 +17,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_sybase.c
==============================================================================
--- trunk/tests/providers/check_sybase.c	(original)
+++ trunk/tests/providers/check_sybase.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/providers/check_xbase.c
==============================================================================
--- trunk/tests/providers/check_xbase.c	(original)
+++ trunk/tests/providers/check_xbase.c	Wed Apr 30 20:18:52 2008
@@ -15,7 +15,7 @@
 
 	/* set up test environment */
 	g_setenv ("GDA_TOP_BUILD_DIR", TOP_BUILD_DIR, 0);
-	gda_init ("check-providers", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 
 	pinfo = gda_config_get_provider_info (PROVIDER);
 	if (!pinfo) {

Modified: trunk/tests/value-holders/check_holder.c
==============================================================================
--- trunk/tests/value-holders/check_holder.c	(original)
+++ trunk/tests/value-holders/check_holder.c	Wed Apr 30 20:18:52 2008
@@ -47,7 +47,7 @@
 main (int argc, char** argv)
 {
 	g_type_init ();
-	gda_init ("Test", "version", argc, argv);
+	gda_init ();
 
 	gint failures = 0;
 	gint i, ntests = 0;

Modified: trunk/tests/value-holders/check_set.c
==============================================================================
--- trunk/tests/value-holders/check_set.c	(original)
+++ trunk/tests/value-holders/check_set.c	Wed Apr 30 20:18:52 2008
@@ -35,7 +35,7 @@
 main (int argc, char** argv)
 {
 	g_type_init ();
-	gda_init ("Test", "version", argc, argv);
+	gda_init ();
 
 	gint failures = 0;
 	gint i, ntests = 0;

Modified: trunk/tests/value-holders/check_statement.c
==============================================================================
--- trunk/tests/value-holders/check_statement.c	(original)
+++ trunk/tests/value-holders/check_statement.c	Wed Apr 30 20:18:52 2008
@@ -23,7 +23,7 @@
 main (int argc, char** argv)
 {
 	g_type_init ();
-	gda_init ("Test", "version", argc, argv);
+	gda_init ();
 
 	gint failures = 0;
 	gint i, ntests = 0;

Modified: trunk/tools/gda-list-config.c
==============================================================================
--- trunk/tools/gda-list-config.c	(original)
+++ trunk/tools/gda-list-config.c	Wed Apr 30 20:18:52 2008
@@ -7,7 +7,7 @@
 main (int argc, char **argv) {
 	GdaDataModel *model;
 
-	gda_init ("list-sources", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 	setenv ("GDA_DATA_MODEL_DUMP_TITLE", "TRUE", TRUE);
 
 	model = gda_config_list_providers ();

Modified: trunk/tools/gda-list-server-op.c
==============================================================================
--- trunk/tools/gda-list-server-op.c	(original)
+++ trunk/tools/gda-list-server-op.c	Wed Apr 30 20:18:52 2008
@@ -34,7 +34,7 @@
         }
         g_option_context_free (context);
 
-	gda_init ("list-server-op", PACKAGE_VERSION, argc, argv);
+	gda_init ();
 	xml_dir = gda_gbr_get_file_path (GDA_DATA_DIR, "libgda-4.0", NULL);
 	g_print (_("Using XML descriptions in %s\n"), xml_dir);
 	if (prov)

Modified: trunk/tools/gda-sql.c
==============================================================================
--- trunk/tools/gda-sql.c	(original)
+++ trunk/tools/gda-sql.c	Wed Apr 30 20:18:52 2008
@@ -150,7 +150,7 @@
 		goto cleanup;
         }
         g_option_context_free (context);
-        gda_init ("Gda SQL console", PACKAGE_VERSION, argc, argv);
+        gda_init ();
 	data = g_new0 (MainData, 1);
 	data->parameters = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
 	main_data = data;



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