anjuta r3841 - in trunk: . plugins/symbol-db



Author: jhs
Date: Thu Apr 10 13:38:47 2008
New Revision: 3841
URL: http://svn.gnome.org/viewvc/anjuta?rev=3841&view=rev

Log:
2008-04-10  Johannes Schmid <jhs gnome org>

	* plugins/symbol-db/symbol-db-engine.c:
	* plugin.c:
	Check for ctags binary (#516123)

2008-04-09  Massimo Cora\'  <maxcvs email it>

	* plugins/symbol-db/symbol-db-engine.c
	(sdb_engine_execute_non_select_sql), (sdb_engine_get_query_by_id),
	(sdb_engine_get_query_parameters_list),
	(sdb_engine_free_cached_queries),
	(sdb_engine_get_tuple_id_by_unique_name),
	(sdb_engine_get_tuple_id_by_unique_name2),
	(sdb_engine_get_tuple_id_by_unique_name3),
	(symbol_db_engine_add_new_workspace),
	(symbol_db_engine_add_new_project), (sdb_engine_add_new_language),
	(sdb_engine_add_new_file), (sdb_engine_add_new_sym_type),
	(sdb_engine_add_new_sym_kind), (sdb_engine_add_new_sym_access),
	(sdb_engine_add_new_sym_implementation),
	(sdb_engine_add_new_heritage),
	(sdb_engine_add_new_scope_definition),
	(sdb_engine_add_new_tmp_heritage_scope),
	(sdb_engine_second_pass_update_scope_1),
	(sdb_engine_add_new_symbol), (sdb_engine_update_file),
	(on_scan_update_files_symbols_end),
	(symbol_db_engine_update_project_symbols):
	GdaSet *plist is now used globally for every prepared statement.
	It won\'t be created/unreffed at every query.

Modified:
   trunk/ChangeLog
   trunk/plugins/symbol-db/plugin.c
   trunk/plugins/symbol-db/symbol-db-engine.c

Modified: trunk/plugins/symbol-db/plugin.c
==============================================================================
--- trunk/plugins/symbol-db/plugin.c	(original)
+++ trunk/plugins/symbol-db/plugin.c	Thu Apr 10 13:38:47 2008
@@ -980,7 +980,8 @@
 		{
 			gboolean needs_sources_scan = FALSE;
 			gboolean project_exist = FALSE;
-			GHashTable* lang_hash; 
+			GHashTable* lang_hash;
+			guint id;
 				
 			lang_hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, 
 											  sources_array_free);
@@ -1040,11 +1041,12 @@
 			}
 			gtk_progress_bar_set_text (GTK_PROGRESS_BAR (sdb_plugin->progress_bar), 
 									   _("Populating symbols' db..."));
-			gtk_progress_bar_pulse (GTK_PROGRESS_BAR (sdb_plugin->progress_bar));
+			id = g_timeout_add (100, (GSourceFunc) gtk_progress_bar_pulse, sdb_plugin->progress_bar);
 			gtk_widget_show (sdb_plugin->progress_bar);
 			
 			symbol_db_view_open (SYMBOL_DB_VIEW (sdb_plugin->dbv_view_tree),
 								 sdb_plugin->sdbe_project);
+			g_source_remove (id);
 
 			/* root dir */
 			sdb_plugin->project_root_dir = root_dir;
@@ -1111,7 +1113,7 @@
 	DEBUG_PRINT ("SymbolDBPlugin: Activating SymbolDBPlugin plugin ...");
 	
 	/* Initialize gda library. */
-	gda_init ("AnjutaGda", NULL, 0, NULL);
+	gda_init (g_get_application_name(), NULL, 0, NULL);
 
 	register_stock_icons (plugin);
 
@@ -1248,6 +1250,9 @@
 									project_root_removed, NULL);
 
 	
+	/* FIXME: get path from preferences */
+	anjuta_util_prog_is_installed ("ctags", TRUE);
+	
 	return TRUE;
 }
 

Modified: trunk/plugins/symbol-db/symbol-db-engine.c
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-engine.c	(original)
+++ trunk/plugins/symbol-db/symbol-db-engine.c	Thu Apr 10 13:38:47 2008
@@ -113,6 +113,7 @@
 #include <libanjuta/interfaces/ianjuta-symbol.h>
 #include <libanjuta/anjuta-debug.h>
 #include <libanjuta/anjuta-launcher.h>
+#include <libanjuta/anjuta-utils.h>
 #include <libgda/libgda.h>
 #include <sql-parser/gda-sql-parser.h>
 #include "readtags.h"
@@ -132,7 +133,7 @@
 // FIXME: detect it by prefs
 #define CTAGS_PATH		"/usr/bin/ctags"
 
-#define THREADS_MONITOR_TIMEOUT			50
+#define THREADS_MONITOR_TIMEOUT			10
 #define THREADS_MAX_CONCURRENT			15
 #define TRIGGER_SIGNALS_DELAY			100
 #define	TRIGGER_MAX_CLOSURE_RETRIES		50
@@ -197,6 +198,7 @@
 	query_type query_id;
 	gchar *query_str;
 	GdaStatement *stmt;
+	GdaSet *plist;
 
 } query_node;
 
@@ -213,13 +215,15 @@
 	 "INSERT INTO workspace (workspace_name, analyse_time) "
 	 "VALUES (## /* name:'wsname' type:gchararray */,"
 	 "datetime ('now', 'localtime'))",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_WORKSPACE_ID_BY_UNIQUE_NAME,
 	 "SELECT workspace_id FROM workspace WHERE workspace_name = ## /* name:'wsname' "
 	 "type:gchararray */",
-	 NULL
+	 NULL,
+ 	 NULL			
 	},
 	/* -- project -- */
 	{
@@ -227,18 +231,21 @@
 	 "INSERT INTO project (project_name, wrkspace_id, analyse_time) "
 	 "VALUES (## /* name:'prjname' type:gchararray */,"
 	 "## /* name:'wsid' type:gint */, datetime ('now', 'localtime'))",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_PROJECT_ID_BY_UNIQUE_NAME,
 	 "SELECT project_id FROM project WHERE project_name = ## /* name:'prjname' "
 	 "type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_UPDATE_PROJECT_ANALYSE_TIME,
 	 "UPDATE project SET analyse_time = datetime('now', 'localtime', '+10 seconds') WHERE "
 	 "project_name = ## /* name:'prjname' type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	/* -- file -- */
@@ -248,18 +255,21 @@
 	 "## /* name:'filepath' type:gchararray */, ## /* name:'prjid' "
 	 "type:gint */, ## /* name:'langid' type:gint */, "
 	 "datetime ('now', 'localtime'))",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_FILE_ID_BY_UNIQUE_NAME,
 	 "SELECT file_id FROM file WHERE file_path = ## /* name:'filepath' "
 	 "type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_ALL_FROM_FILE_BY_PROJECT_NAME,
 	 "SELECT * FROM file WHERE prj_id = (SELECT project_id FROM project "
 	 "WHERE project_name = ## /* name:'prjname' type:gchararray */)",
+	 NULL,
 	 NULL
 	},
 	{
@@ -270,12 +280,14 @@
 		"SELECT * FROM file JOIN project on project_id = prj_id WHERE "\
 		"project.name = ## / * name:'prjname' type:gchararray * /",
 */
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_UPDATE_FILE_ANALYSE_TIME,
 	 "UPDATE file SET analyse_time = datetime('now', 'localtime') WHERE "
 	 "file_path = ## /* name:'filepath' type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	{
@@ -288,12 +300,14 @@
 	 PREP_QUERY_LANGUAGE_NEW,
 	 "INSERT INTO language (language_name) VALUES (## /* name:'langname' "
 	 "type:gchararray */)",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_LANGUAGE_ID_BY_UNIQUE_NAME,
 	 "SELECT language_id FROM language WHERE language_name = ## /* name:'langname' "
 	 "type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	/* -- sym type -- */
@@ -301,6 +315,7 @@
 	 PREP_QUERY_SYM_TYPE_NEW,
 	 "INSERT INTO sym_type (type, type_name) VALUES (## /* name:'type' "
 	 "type:gchararray */, ## /* name:'typename' type:gchararray */)",
+	 NULL,
 	 NULL
 	},
 	{
@@ -308,6 +323,7 @@
 	 "SELECT type_id FROM sym_type WHERE type = ## /* name:'type' "
 	 "type:gchararray */ AND type_name = ## /* name:'typename' "
 	 "type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	/* -- sym kind -- */
@@ -315,12 +331,14 @@
 	 PREP_QUERY_SYM_KIND_NEW,
 	 "INSERT INTO sym_kind (kind_name) VALUES(## /* name:'kindname' "
 	 "type:gchararray */)",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_SYM_KIND_BY_UNIQUE_NAME,
 	 "SELECT sym_kind_id FROM sym_kind WHERE kind_name = ## /* "
 	 "name:'kindname' type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	/* -- sym access -- */
@@ -328,12 +346,14 @@
 	 PREP_QUERY_SYM_ACCESS_NEW,
 	 "INSERT INTO sym_access (access_name) VALUES(## /* name:'accesskind' "
 	 "type:gchararray */)",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_SYM_ACCESS_BY_UNIQUE_NAME,
 	 "SELECT access_kind_id FROM sym_access WHERE access_name = ## /* "
 	 "name:'accesskind' type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	/* -- sym implementation -- */
@@ -341,12 +361,14 @@
 	 PREP_QUERY_SYM_IMPLEMENTATION_NEW,
 	 "INSERT INTO sym_implementation (implementation_name) VALUES(## /* name:'implekind' "
 	 "type:gchararray */)",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_SYM_IMPLEMENTATION_BY_UNIQUE_NAME,
 	 "SELECT sym_impl_id FROM sym_implementation WHERE kind = ## /* "
 	 "name:'implekind' type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	/* -- heritage -- */
@@ -354,6 +376,7 @@
 	 PREP_QUERY_HERITAGE_NEW,
 	 "INSERT INTO heritage (symbol_id_base, symbol_id_derived) VALUES(## /* "
 	 "name:'symbase' type:gint */, ## /* name:'symderived' type:gint */)",
+	 NULL,
 	 NULL
 	},
 	/* -- scope -- */
@@ -361,12 +384,14 @@
 	 PREP_QUERY_SCOPE_NEW,
 	 "INSERT INTO scope (scope_name, type_id) VALUES(## /* name:'scope' "
 	 "type:gchararray */, ## /* name:'typeid' type:gint */)",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_SCOPE_ID,
 	 "SELECT scope_id FROM scope WHERE scope_name = ## /* name:'scope' "
 	 "type:gchararray */ AND type_id = ## /* name:'typeid' type:gint */",
+	 NULL,
 	 NULL
 	},
 	/* -- tmp heritage -- */
@@ -380,21 +405,25 @@
 	 "type:gchararray */, ## /* name:'fenum' type:gchararray */, ## /* "
 	 "name:'funion' type:gchararray */, ## /* name:'fclass' type:gchararray "
 	 "*/, ## /* name:'fnamespace' type:gchararray */)",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_ALL_FROM_TMP_HERITAGE,
 	 "SELECT * FROM __tmp_heritage_scope",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_GET_ALL_FROM_TMP_HERITAGE_WITH_INHERITS,
 	 "SELECT * FROM __tmp_heritage_scope WHERE field_inherits != ''",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_TMP_HERITAGE_DELETE_ALL,
 	 "DELETE FROM __tmp_heritage_scope",
+	 NULL,
 	 NULL
 	},
 	/* -- symbol -- */
@@ -411,6 +440,7 @@
 	 "/* name:'kindid' type:gint */,## /* name:'accesskindid' type:gint */, "
 	 "## /* name:'implementationkindid' type:gint */, ## /* "
 	 "name:'updateflag' type:gint */)",
+	 NULL,
 	 NULL
 	},
 	{
@@ -419,6 +449,7 @@
 	 "= sym_type.type_id WHERE sym_type.type = ## /* name:'tokenname' "
 	 "type:gchararray */ AND sym_type.type_name = ## /* name:'objectname' "
 	 "type:gchararray */ LIMIT 1",
+	 NULL,
 	 NULL
 	},
 	{
@@ -426,6 +457,7 @@
 	 "SELECT symbol_id FROM symbol JOIN sym_type ON symbol.type_id = "
 	 "sym_type.type_id WHERE scope_id=0 AND sym_type.type='class' AND "
 	 "name = ## /* name:'klassname' type:gchararray */",
+	 NULL,
 	 NULL
 	},
 	{
@@ -435,12 +467,14 @@
 	 "WHERE symbol.name = /* name:'klassname' type:gchararray */ AND "
 	 "scope.scope_name = /* name:'namespacename' type:gchararray */ AND "
 	 "sym_type.type='namespace'",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_UPDATE_SYMBOL_SCOPE_ID,
 	 "UPDATE symbol SET scope_id = ## /* name:'scopeid' type:gint */ "
 	 "WHERE symbol_id = ## /* name:'symbolid' type:gint */",
+	 NULL,
 	 NULL
 	},
 	{
@@ -448,6 +482,7 @@
 	 "SELECT symbol_id FROM symbol WHERE name = ## /* name:'symname' "
 	 "type:gchararray */ AND file_defined_id =  ## /* name:'filedefid' "
 	 "type:gint */ AND type_id = ## /* name:'typeid' type:gint */",
+	 NULL,
 	 NULL
 	},
 	{
@@ -462,6 +497,7 @@
 	 "'implementationkindid' type:gint */, update_flag = ## /* name:"
 	 "'updateflag' type:gint */ WHERE symbol_id = ## /* name:'symbolid' type:"
 	 "gint */",
+	 NULL,
 	 NULL
 	},
 	{
@@ -469,6 +505,7 @@
 	 "DELETE FROM symbol WHERE file_defined_id = (SELECT file_id FROM file "
 	 "WHERE file_path = ## /* name:'filepath' type:gchararray */) "
 	 "AND update_flag = 0",
+	 NULL,
 	 NULL
 	},
 	{
@@ -476,17 +513,20 @@
 	 "UPDATE symbol SET update_flag = 0 "
 	 "WHERE file_defined_id = (SELECT file_id FROM file WHERE "
 	 "file_path = ## /* name:'filepath' type:gchararray */)",
+	 NULL,
 	 NULL
 	},
 	/* -- tmp_removed -- */
 	{
 	 PREP_QUERY_GET_REMOVED_IDS,
 	 "SELECT symbol_removed_id FROM __tmp_removed",
+	 NULL,
 	 NULL
 	},
 	{
 	 PREP_QUERY_TMP_REMOVED_DELETE_ALL,
 	 "DELETE FROM __tmp_removed",
+	 NULL,
 	 NULL
 	}	  
 };
@@ -699,9 +739,6 @@
 	
 	nrows = gda_connection_statement_execute_non_select (priv->db_connection, stmt, 
 														 NULL, NULL, NULL);
-	if (nrows == -1) 
-    	DEBUG_PRINT ("NON SELECT error: %s\n", sql);
-
 	if (remain != NULL) {
 		/* may happen for example when sql is a file-content */
 		sdb_engine_execute_non_select_sql (dbe, remain);
@@ -715,6 +752,7 @@
  * Use a proxy to return an already present or a fresh new prepared query 
  * from static 'query_list'. We should perform actions in the fastest way, because
  * these queries are time-critical.
+ * A GdaSet will also be populated once, avoiding so to create again later on.
  */
 static inline const GdaStatement *
 sdb_engine_get_query_by_id (SymbolDBEngine * dbe, query_type query_id)
@@ -732,16 +770,35 @@
 
 	if (node->stmt == NULL)
 	{
-		DEBUG_PRINT ("generating new statement.... %d", query_id);
+		DEBUG_PRINT ("generating new statement.. %d", query_id);
 		/* create a new GdaStatement */
 		node->stmt =
 			gda_sql_parser_parse_string (priv->sql_parser, node->query_str, NULL, 
 										 NULL);
+
+		if (gda_statement_get_parameters ((GdaStatement*)node->stmt, 
+										  &node->plist, NULL) == FALSE)
+		{
+			g_warning ("Error on getting parameters for %d", query_id);
+		}
 	}
 
 	return node->stmt;
 }
 
+/**
+ * Return a GdaSet of parameters calculated from the statement. It does not check
+ * if it's null. You *must* be sure to have called sdb_engine_get_query_by_id () first.
+ */
+static inline const GdaSet *
+sdb_engine_get_query_parameters_list (SymbolDBEngine *dbe, query_type query_id)
+{
+	query_node *node;
+	node = &query_list[query_id];
+	return node->plist;
+}
+
+
 /* DEPRECATED, REMOVED.
 static inline gint
 sdb_engine_get_last_insert_id (SymbolDBEngine * dbe)
@@ -776,9 +833,15 @@
 
 		if (node->stmt != NULL)
 		{
-			g_object_unref ((gpointer) node->stmt);
+			g_object_unref (node->stmt);
 			node->stmt = NULL;
 		}
+		
+		if (node->plist != NULL)
+		{
+			g_object_unref (node->plist);
+			node->plist = NULL;
+		}
 	}
 }
 
@@ -806,14 +869,14 @@
 }
 
 /**
- * @return -1 on error. Otherwise the id of tuple
+ * @return -1 on error. Otherwise the id of tuple.
  */
 static gint
 sdb_engine_get_tuple_id_by_unique_name (SymbolDBEngine * dbe, query_type qtype,
 										gchar * param_key,
 										const GValue * param_value)
 {
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GdaDataModel *data_model;
@@ -830,17 +893,12 @@
 		return -1;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{
-		g_warning ("Error on getting parameters");
-		return -1;
-	}
+	plist = sdb_engine_get_query_parameters_list (dbe, qtype);
 	
-	if ((param = gda_set_get_holder (plist, param_key)) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, param_key)) == NULL)
 	{
 		g_warning ("sdb_engine_get_tuple_id_by_unique_name: param is NULL "
 				   "from pquery!\n");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value (param, param_value);
@@ -848,14 +906,13 @@
 	/* execute the query with parametes just set */
 	data_model = gda_connection_statement_execute_select (priv->db_connection, 
 														  (GdaStatement*)stmt, 
-														  plist, NULL);
+														  (GdaSet*)plist, NULL);
 		
 	if (!GDA_IS_DATA_MODEL (data_model) ||
 		gda_data_model_get_n_rows (GDA_DATA_MODEL (data_model)) <= 0)
 	{
 		if (data_model != NULL)
 			g_object_unref (data_model);
-		g_object_unref (plist);
 		return -1;
 	}
 
@@ -864,7 +921,6 @@
 
 	table_id = g_value_get_int (num);
 	g_object_unref (data_model);
-	g_object_unref (plist);
 	return table_id;
 }
 
@@ -882,7 +938,7 @@
 										 gchar * param_key2,
 										 const GValue * value2)
 {
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GdaDataModel *data_model;
@@ -899,30 +955,24 @@
 		return -1;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{
-		g_warning ("Error on getting parameters");
-		return -1;
-	}
-
+	plist = sdb_engine_get_query_parameters_list (dbe, qtype);
+	
 	/* look for and set the first parameter */
-	if ((param = gda_set_get_holder (plist, param_key1)) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, param_key1)) == NULL)
 	{
 		g_warning ("sdb_engine_get_tuple_id_by_unique_name2: "
 				   "param is NULL from pquery! [par1: %s] [par2: %s]\n",
 				   param_key1, param_key2);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value (param, value1);
 	
 	/* ...and the second one */
-	if ((param = gda_set_get_holder (plist, param_key2)) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, param_key2)) == NULL)
 	{
 		g_warning ("sdb_engine_get_tuple_id_by_unique_name2: "
 				   "param is NULL from pquery! [par1: %s] [par2: %s]\n",
 				   param_key1, param_key2);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value (param, value2);
@@ -930,14 +980,13 @@
 	/* execute the query with parametes just set */
 	data_model = gda_connection_statement_execute_select (priv->db_connection, 
 														  (GdaStatement*)stmt, 
-														  plist, NULL);
+														  (GdaSet*)plist, NULL);
 		
 	if (!GDA_IS_DATA_MODEL (data_model) ||
 		gda_data_model_get_n_rows (GDA_DATA_MODEL (data_model)) <= 0)
 	{
 		if (data_model != NULL)
 			g_object_unref (data_model);
-		g_object_unref (plist);
 		return -1;
 	}
 
@@ -946,7 +995,6 @@
 
 	table_id = g_value_get_int (num);
 	g_object_unref (data_model);
-	g_object_unref (plist);
 	
 	return table_id;
 }
@@ -960,7 +1008,7 @@
 										 gchar * param_key3,
 										 const GValue * value3)
 {
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GdaDataModel *data_model;
@@ -977,40 +1025,33 @@
 		return -1;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{
-		g_warning ("Error on getting parameters");
-		return -1;
-	}
+	plist = sdb_engine_get_query_parameters_list (dbe, qtype);
 	
-	if ((param = gda_set_get_holder (plist, param_key1)) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, param_key1)) == NULL)
 	{
 		g_warning ("sdb_engine_get_tuple_id_by_unique_name: param is NULL "
 				   "from pquery!\n");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value (param, value1);
 	
 
 	/* ...and the second one */
-	if ((param = gda_set_get_holder (plist, param_key2)) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, param_key2)) == NULL)
 	{
 		g_warning ("sdb_engine_get_tuple_id_by_unique_name2: "
 				   "param is NULL from pquery! [par1: %s] [par2: %s]\n",
 				   param_key1, param_key2);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value (param, value2);
 
 	/* ...and the third one */
-	if ((param = gda_set_get_holder (plist, param_key3)) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, param_key3)) == NULL)
 	{
 		g_warning ("sdb_engine_get_tuple_id_by_unique_name2: "
 				   "param is NULL from pquery! [par1: %s] [par2: %s]\n",
 				   param_key1, param_key3);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value (param, value3);
@@ -1018,14 +1059,13 @@
 	/* execute the query with parametes just set */
 	data_model = gda_connection_statement_execute_select (priv->db_connection, 
 														  (GdaStatement*)stmt, 
-														  plist, NULL);
+														  (GdaSet*)plist, NULL);
 		
 	if (!GDA_IS_DATA_MODEL (data_model) ||
 		gda_data_model_get_n_rows (GDA_DATA_MODEL (data_model)) <= 0)
 	{
 		if (data_model != NULL)
 			g_object_unref (data_model);
-		g_object_unref (plist);
 		return -1;
 	}
 
@@ -1034,7 +1074,6 @@
 
 	table_id = g_value_get_int (num);
 	g_object_unref (data_model);
-	g_object_unref (plist);
 	return table_id;
 }
 
@@ -1064,9 +1103,9 @@
 	}
 	
 	if ((file_defined_id = sdb_engine_get_tuple_id_by_unique_name (dbe,
-																   PREP_QUERY_GET_FILE_ID_BY_UNIQUE_NAME,
-																   "filepath",
-																   value)) < 0)
+													PREP_QUERY_GET_FILE_ID_BY_UNIQUE_NAME,
+													"filepath",
+													value)) < 0)
 	{	
 		/* if we arrive here there should be some sync problems between the filenames
 		 * in database and the ones in the ctags files. We trust in db's ones,
@@ -1559,6 +1598,10 @@
 	if (files_list->len == 0)
 		return FALSE;
 	
+	/* Check if ctags is really installed */
+	if (!anjuta_util_prog_is_installed (CTAGS_PATH, TRUE))
+		return FALSE;
+	
 	/* start process in server mode */
 	priv = dbe->priv;
 
@@ -2184,7 +2227,7 @@
                         analyse_time DATE
                         );
 */
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	SymbolDBEnginePriv *priv;
@@ -2201,17 +2244,11 @@
 		return FALSE;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{
-		g_warning ("Error on getting parameters");
-		return FALSE;
-	}
-	
+	plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_WORKSPACE_NEW);
 
-	if ((param = gda_set_get_holder (plist, "wsname")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "wsname")) == NULL)
 	{
 		g_warning ("param is NULL from pquery!\n");
-		g_object_unref (plist);
 		return FALSE;
 	}
 	gda_holder_set_value_str (param, NULL, workspace_name);
@@ -2220,14 +2257,12 @@
 	GError *err = NULL;
 	if (gda_connection_statement_execute_non_select (priv->db_connection, 
 														  (GdaStatement*)stmt, 
-														  plist, NULL, &err) == -1)
+														  (GdaSet*)plist, NULL, &err) == -1)
 	{		
 		DEBUG_PRINT ("Error: %s", err->message);
-		g_object_unref (plist);
 		return FALSE;
 	}
 
-	g_object_unref (plist);
 	return TRUE;
 }
 
@@ -2282,7 +2317,7 @@
                       analyse_time DATE
                       );
 */
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GValue *value;
@@ -2344,25 +2379,19 @@
 		return FALSE;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{
-		g_warning ("Error on getting parameters");
-		return FALSE;
-	}
-
+	plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_PROJECT_NEW);	
+	
 	/* lookup parameters */
-	if ((param = gda_set_get_holder (plist, "prjname")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "prjname")) == NULL)
 	{
 		g_warning ("param prjname is NULL from pquery!");
-		g_object_unref (plist);
 		return FALSE;
 	}
 	gda_holder_set_value_str (param, NULL, project);
 		
-	if ((param = gda_set_get_holder (plist, "wsid")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "wsid")) == NULL)
 	{
 		g_warning ("param prjname is NULL from pquery!");
-		g_object_unref (plist);
 		return FALSE;
 	}
 	value = gda_value_new (G_TYPE_INT);
@@ -2373,16 +2402,13 @@
 	GError *err = NULL;
 	if (gda_connection_statement_execute_non_select (priv->db_connection, 
 														  (GdaStatement*)stmt, 
-														  plist, NULL, &err) == -1)
+														  (GdaSet*)plist, NULL, &err) == -1)
 	{		
 		DEBUG_PRINT ("Error: %s", err->message);
 		gda_value_free (value);
-		g_object_unref (plist);
 		return FALSE;
 	}
 	gda_value_free (value);	
-	g_object_unref (plist);
-	
 	return TRUE;
 }
 
@@ -2412,7 +2438,7 @@
 						value)) < 0)
 	{
 		/* insert a new entry on db */
-		GdaSet *plist;
+		const GdaSet *plist;
 		const GdaStatement *stmt;
 		GdaHolder *param;
 		GdaSet *last_inserted;
@@ -2424,16 +2450,11 @@
 			return FALSE;
 		}
 
-		if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-		{		
-			g_warning ("par_list is NULL!\n");
-			return FALSE;
-		}
+		plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_LANGUAGE_NEW);
 
-		if ((param = gda_set_get_holder (plist, "langname")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "langname")) == NULL)
 		{
 			g_warning ("param langname is NULL from pquery!");
-			g_object_unref (plist);
 			return FALSE;
 		}
 		gda_holder_set_value_str (param, NULL, language);
@@ -2442,7 +2463,7 @@
 		/* execute the query with parametes just set */
 		if (gda_connection_statement_execute_non_select (priv->db_connection, 
 														 (GdaStatement*)stmt, 
-														 plist, &last_inserted,
+														 (GdaSet*)plist, &last_inserted,
 														 &err) == -1)
 		{		
 			DEBUG_PRINT ("Error: %s", err->message);
@@ -2451,9 +2472,7 @@
 		else {
 			const GValue *value = gda_set_get_holder_value (last_inserted, "+0");
 			table_id = g_value_get_int (value);
-		}
-		
-		g_object_unref (plist);
+		}		
 	}
 	gda_value_free (value);	
 	
@@ -2528,7 +2547,7 @@
 								   value)) < 0)
 	{
 		/* insert a new entry on db */
-		GdaSet *plist;
+		const GdaSet *plist;
 		const GdaStatement *stmt;
 		GdaHolder *param;
 		GValue *value;
@@ -2542,27 +2561,21 @@
 			return FALSE;
 		}
 
-		if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-		{		
-			g_warning ("par_list is NULL!\n");
-			return FALSE;
-		}
+		plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_FILE_NEW);
 		
 		/* filepath parameter */
-		if ((param = gda_set_get_holder (plist, "filepath")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "filepath")) == NULL)
 		{
 			g_warning ("param langname is NULL from pquery!");
-			g_object_unref (plist);
 			return FALSE;
 		}
 		gda_holder_set_value_str (param, NULL, local_filepath + 
 								  strlen(priv->project_directory));
 
 		/* project id parameter */
-		if ((param = gda_set_get_holder (plist, "prjid")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "prjid")) == NULL)
 		{
 			g_warning ("param prjid is NULL from pquery!");
-			g_object_unref (plist);
 			return FALSE;
 		}
 		value = gda_value_new (G_TYPE_INT);
@@ -2570,10 +2583,9 @@
 		gda_holder_set_value (param, value);
 
 		/* language id parameter */
-		if ((param = gda_set_get_holder (plist, "langid")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "langid")) == NULL)
 		{
 			g_warning ("param langid is NULL from pquery!");
-			g_object_unref (plist);
 			return FALSE;
 		}
 
@@ -2586,15 +2598,12 @@
 		GError *err = NULL;
 		if (gda_connection_statement_execute_non_select (priv->db_connection, 
 														 (GdaStatement*)stmt, 
-														 plist, NULL,
+														 (GdaSet*)plist, NULL,
 														 &err) == -1)
 		{		
 			DEBUG_PRINT ("Error: %s", err->message);
-			g_object_unref (plist);
 			return FALSE;
 		}	
-		
-		g_object_unref (plist);
 	}
 	gda_value_free (value);
 	
@@ -2666,7 +2675,7 @@
 	const gchar *type;
 	const gchar *type_name;
 	gint table_id;	
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GdaSet *last_inserted;
@@ -2686,26 +2695,20 @@
 		return -1;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{		
-		g_warning ("par_list is NULL!\n");
-		return -1;
-	}
+	plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_SYM_TYPE_NEW);
 
 	/* type parameter */
-	if ((param = gda_set_get_holder (plist, "type")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "type")) == NULL)
 	{
 		g_warning ("param type is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, type);
 
 	/* type_name parameter */
-	if ((param = gda_set_get_holder (plist, "typename")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "typename")) == NULL)
 	{
 		g_warning ("param typename is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, type_name);
@@ -2713,7 +2716,7 @@
 	/* execute the query with parametes just set */
 	if (gda_connection_statement_execute_non_select (priv->db_connection, 
 													 (GdaStatement*)stmt, 
-													 plist, &last_inserted,
+													 (GdaSet*)plist, &last_inserted,
 													 NULL) == -1)
 	{
 		GValue *value1, *value2;
@@ -2734,7 +2737,6 @@
 
 		gda_value_free (value1);
 		gda_value_free (value2);
-		g_object_unref (plist);
 		return table_id;
 	}	
 	else 
@@ -2743,7 +2745,6 @@
 		table_id = g_value_get_int (value);
 	}		
 	
-	g_object_unref (plist);
 	return table_id;
 }
 
@@ -2784,7 +2785,7 @@
 										"kindname",
 										value)) < 0)
 	{
-		GdaSet *plist;
+		const GdaSet *plist;
 		const GdaStatement *stmt;
 		GdaHolder *param;
 		GdaSet *last_inserted;
@@ -2797,17 +2798,12 @@
 			return -1;
 		}
 
-		if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-		{		
-			g_warning ("par_list is NULL!\n");
-			return -1;
-		}
+		plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_SYM_KIND_NEW);
 		
 		/* kindname parameter */
-		if ((param = gda_set_get_holder (plist, "kindname")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "kindname")) == NULL)
 		{
 			g_warning ("param kindname is NULL from pquery!");
-			g_object_unref (plist);
 			return FALSE;
 		}
 		gda_holder_set_value_str (param, NULL, kind_name);
@@ -2817,7 +2813,7 @@
 		GError *err = NULL;
 		if (gda_connection_statement_execute_non_select (priv->db_connection, 
 														 (GdaStatement*)stmt, 
-														 plist, &last_inserted,
+														 (GdaSet*)plist, &last_inserted,
 														 &err) == -1)
 		{		
 			table_id = -1;		
@@ -2827,7 +2823,6 @@
 			const GValue *value = gda_set_get_holder_value (last_inserted, "+0");
 			table_id = g_value_get_int (value);
 		}
-		g_object_unref (plist);
 	}
 	gda_value_free (value);
 	
@@ -2872,7 +2867,7 @@
 									"accesskind",
 									value)) < 0)
 	{
-		GdaSet *plist;
+		const GdaSet *plist;
 		const GdaStatement *stmt;
 		GdaHolder *param;
 		GdaSet *last_inserted;
@@ -2886,17 +2881,12 @@
 			return -1;
 		}
 		
-		if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-		{		
-			g_warning ("par_list is NULL!\n");
-			return -1;
-		}
+		plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_SYM_ACCESS_NEW);
 		
 		/* accesskind parameter */
-		if ((param = gda_set_get_holder (plist, "accesskind")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "accesskind")) == NULL)
 		{			
 			g_warning ("param accesskind is NULL from pquery!");
-			g_object_unref (plist);
 			return -1;
 		}
 		gda_holder_set_value_str (param, NULL, access);
@@ -2905,7 +2895,7 @@
 		GError *err = NULL;
 		if (gda_connection_statement_execute_non_select (priv->db_connection, 
 														 (GdaStatement*)stmt, 
-														 plist, &last_inserted,
+														 (GdaSet*)plist, &last_inserted,
 														 &err) == -1)
 		{		
 			table_id = -1;		
@@ -2914,9 +2904,7 @@
 		{
 			const GValue *value = gda_set_get_holder_value (last_inserted, "+0");
 			table_id = g_value_get_int (value);
-		}
-		
-		g_object_unref (plist);
+		}		
 	}
 	gda_value_free (value);	
 	sdb_engine_insert_cache (priv->access_cache, access, table_id);
@@ -2961,7 +2949,7 @@
 							"implekind",
 							value)) < 0)
 	{
-		GdaSet *plist;
+		const GdaSet *plist;
 		const GdaStatement *stmt;
 		GdaHolder *param;
 		GdaSet *last_inserted;
@@ -2975,17 +2963,12 @@
 			return -1;
 		}
 
-		if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-		{		
-			g_warning ("par_list is NULL!\n");
-			return -1;
-		}
+		plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_SYM_IMPLEMENTATION_NEW);
 		
 		/* implekind parameter */
-		if ((param = gda_set_get_holder (plist, "implekind")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "implekind")) == NULL)
 		{			
 			g_warning ("param accesskind is NULL from pquery!");
-			g_object_unref (plist);
 			return -1;
 		}
 		gda_holder_set_value_str (param, NULL, implementation);
@@ -2994,7 +2977,7 @@
 		GError *err = NULL;
 		if (gda_connection_statement_execute_non_select (priv->db_connection, 
 														 (GdaStatement*)stmt, 
-														 plist, &last_inserted,
+														 (GdaSet*)plist, &last_inserted,
 														 &err) == -1)
 		{		
 			table_id = -1;		
@@ -3004,7 +2987,6 @@
 			const GValue *value = gda_set_get_holder_value (last_inserted, "+0");
 			table_id = g_value_get_int (value);
 		}
-		g_object_unref (plist);
 	}
 	gda_value_free (value);	
 	sdb_engine_insert_cache (priv->implementation_cache, implementation, table_id);	
@@ -3022,7 +3004,7 @@
                        PRIMARY KEY (symbol_id_base, symbol_id_derived)
                        );
 */
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GValue *value;
@@ -3040,17 +3022,12 @@
 		return;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{		
-		g_warning ("par_list is NULL!\n");
-		return;
-	}
+	plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_HERITAGE_NEW);
 		
 	/* symbase parameter */
-	if ((param = gda_set_get_holder (plist, "symbase")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "symbase")) == NULL)
 	{			
 		g_warning ("param accesskind is NULL from pquery!");
-		g_object_unref (plist);
 		return;
 	}
 	value = gda_value_new (G_TYPE_INT);
@@ -3058,10 +3035,9 @@
 	gda_holder_set_value (param, value);
 
 	/* symderived id parameter */
-	if ((param = gda_set_get_holder (plist, "symderived")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "symderived")) == NULL)
 	{
 		g_warning ("param symderived is NULL from pquery!");
-		g_object_unref (plist);
 		return;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -3072,12 +3048,11 @@
 	/* execute the query with parametes just set */
 	if (gda_connection_statement_execute_non_select (priv->db_connection, 
 													 (GdaStatement*)stmt, 
-													 plist, NULL,
+													 (GdaSet*)plist, NULL,
 													 NULL) == -1)
 	{		
 		g_warning ("Error adding heritage");
 	}	
-	g_object_unref (plist);
 }
 
 
@@ -3094,7 +3069,7 @@
 */
 	const gchar *scope;
 	gint table_id;
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GdaSet *last_inserted;
@@ -3125,26 +3100,20 @@
 		return -1;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{		
-		g_warning ("par_list is NULL!\n");
-		return -1;
-	}
+	plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_SCOPE_NEW);
 		
 	/* scope parameter */
-	if ((param = gda_set_get_holder (plist, "scope")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "scope")) == NULL)
 	{			
 		g_warning ("param scope is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, scope);
 
 	/* typeid parameter */
-	if ((param = gda_set_get_holder (plist, "typeid")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "typeid")) == NULL)
 	{
 		g_warning ("param typeid is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	value = gda_value_new (G_TYPE_INT);
@@ -3155,7 +3124,7 @@
 	/* execute the query with parameters just set */
 	if (gda_connection_statement_execute_non_select (priv->db_connection, 
 													 (GdaStatement*)stmt, 
-													 plist, &last_inserted,
+													 (GdaSet*)plist, &last_inserted,
 													 NULL) == -1)
 	{
 		GValue *value1, *value2;
@@ -3187,7 +3156,6 @@
 		table_id = g_value_get_int (value);
 	}	
 
-	g_object_unref (plist);
 	return table_id;
 }
 
@@ -3216,7 +3184,7 @@
 							field_namespace varchar(256)
 							);
 */
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GdaSet *last_inserted;
@@ -3293,17 +3261,12 @@
 		return -1;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{		
-		g_warning ("par_list is NULL!\n");
-		return -1;
-	}
+	plist = sdb_engine_get_query_parameters_list (dbe,PREP_QUERY_TMP_HERITAGE_NEW);
 		
 	/* symreferid parameter */
-	if ((param = gda_set_get_holder (plist, "symreferid")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "symreferid")) == NULL)
 	{
 		g_warning ("param symreferid is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 
@@ -3313,64 +3276,57 @@
 	gda_value_free (value);
 
 	/* finherits parameter */
-	if ((param = gda_set_get_holder (plist, "finherits")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "finherits")) == NULL)
 	{
 		g_warning ("param finherits is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, field_inherits);
 
 	/* fstruct parameter */
-	if ((param = gda_set_get_holder (plist, "fstruct")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "fstruct")) == NULL)
 	{
 		g_warning ("param fstruct is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, field_struct);
 
 	/* ftyperef parameter */
-	if ((param = gda_set_get_holder (plist, "ftyperef")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "ftyperef")) == NULL)
 	{
 		g_warning ("param ftyperef is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, field_typeref);
 
 	/* fenum parameter */
-	if ((param = gda_set_get_holder (plist, "fenum")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "fenum")) == NULL)
 	{
 		g_warning ("param fenum is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, field_enum);
 	
 	/* funion parameter */
-	if ((param = gda_set_get_holder (plist, "funion")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "funion")) == NULL)
 	{
 		g_warning ("param funion is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, field_union);
 	
 	/* fclass parameter */
-	if ((param = gda_set_get_holder (plist, "fclass")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "fclass")) == NULL)
 	{
 		g_warning ("param fclass is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, field_class);
 
 	/* fnamespace parameter */
-	if ((param = gda_set_get_holder (plist, "fnamespace")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "fnamespace")) == NULL)
 	{
 		g_warning ("param fnamespace is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, field_namespace);
@@ -3378,7 +3334,7 @@
 	/* execute the query with parametes just set */
 	if (gda_connection_statement_execute_non_select (priv->db_connection, 
 													 (GdaStatement*)stmt, 
-													 plist, &last_inserted,
+													 (GdaSet*)plist, &last_inserted,
 													 NULL) == -1)
 	{
 		table_id = -1;
@@ -3390,7 +3346,6 @@
 		table_id = g_value_get_int (value);
 	}
 	
-	g_object_unref (plist);
 	return table_id;
 }
 
@@ -3410,7 +3365,7 @@
 	gint tmp_str_splitted_length;
 	gchar *object_name = NULL;
 	gboolean free_token_name = FALSE;
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	SymbolDBEnginePriv *priv;
@@ -3495,17 +3450,12 @@
 		return -1;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{		
-		g_warning ("par_list is NULL!\n");
-		return -1;
-	}
+	plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_UPDATE_SYMBOL_SCOPE_ID);
 
 	/* scopeid parameter */
-	if ((param = gda_set_get_holder (plist, "scopeid")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "scopeid")) == NULL)
 	{
 		g_warning ("param scopeid is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 
@@ -3514,10 +3464,9 @@
 	gda_holder_set_value (param, value);
 
 	/* symbolid parameter */
-	if ((param = gda_set_get_holder (plist, "symbolid")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "symbolid")) == NULL)
 	{
 		g_warning ("param symbolid is NULL from pquery!");
-		g_object_unref (plist);
 		return -1;
 	}
 
@@ -3529,7 +3478,7 @@
 	/* execute the query with parametes just set */
 	gda_connection_statement_execute_non_select (priv->db_connection, 
 													 (GdaStatement*)stmt, 
-													 plist, NULL,
+													 (GdaSet*)plist, NULL,
 													 NULL);
 
 
@@ -3563,7 +3512,11 @@
 	for (i = 0; i < gda_data_model_get_n_rows (data); i++)
 	{
 		GValue *value;
-
+		
+		/* Avoid lookup */
+		g_mutex_unlock (dbe->priv->mutex);
+		g_mutex_lock (dbe->priv->mutex);
+		
 		if ((value =
 			 (GValue *) gda_data_model_get_value_at_col_name (data,
 															  "field_class",
@@ -3643,7 +3596,11 @@
 		gchar *item;
 		gchar **inherits_list;
 		gint j;
-
+		
+		/* Avoid lookup */
+		g_mutex_unlock (dbe->priv->mutex);
+		g_mutex_lock (dbe->priv->mutex);
+		
 		value = gda_data_model_get_value_at_col_name (data,
 													  "field_inherits", i);
 		inherits = g_value_get_string (value);
@@ -3951,7 +3908,7 @@
                      );
 */
 	SymbolDBEnginePriv *priv;
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GdaSet *last_inserted;
@@ -4067,17 +4024,12 @@
 			return -1;
 		}
 
-		if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-		{		
-			g_warning ("par_list is NULL!\n");
-			return -1;
-		}
+		plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_SYMBOL_NEW);
 		
 		/* filedefid parameter */
-		if ((param = gda_set_get_holder (plist, "filedefid")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "filedefid")) == NULL)
 		{
 			g_warning ("param filedefid is NULL from pquery!");
-			g_object_unref (plist);
 			return -1;
 		}
 		value = gda_value_new (G_TYPE_INT);
@@ -4085,21 +4037,19 @@
 		gda_holder_set_value (param, value);
 
 		/* name parameter */
-		if ((param = gda_set_get_holder (plist, "name")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "name")) == NULL)
 		{
 			g_warning ("param name is NULL from pquery!");
 			gda_value_free (value);
-			g_object_unref (plist);
 			return -1;
 		}
 		gda_holder_set_value_str (param, NULL, name);
 
 		/* typeid parameter */
-		if ((param = gda_set_get_holder (plist, "typeid")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "typeid")) == NULL)
 		{
 			g_warning ("param typeid is NULL from pquery!");
 			gda_value_free (value);
-			g_object_unref (plist);
 			return -1;			
 		}
 		gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4124,17 +4074,12 @@
 			return -1;
 		}
 
-		if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-		{
-			g_warning ("par_list is NULL!\n");
-			return -1;
-		}
-
+		plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_UPDATE_SYMBOL_ALL);
+		
 		/* symbolid parameter */
-		if ((param = gda_set_get_holder (plist, "symbolid")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "symbolid")) == NULL)
 		{
 			g_warning ("param isfilescope is NULL from pquery!");
-			g_object_unref (plist);
 			return -1;
 		}
 
@@ -4146,11 +4091,10 @@
 	/* common params */
 
 	/* fileposition parameter */
-	if ((param = gda_set_get_holder (plist, "fileposition")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "fileposition")) == NULL)
 	{
 		g_warning ("param fileposition is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4159,11 +4103,10 @@
 
 	
 	/* isfilescope parameter */
-	if ((param = gda_set_get_holder (plist, "isfilescope")) == NULL)	
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "isfilescope")) == NULL)	
 	{
 		g_warning ("param isfilescope is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4171,21 +4114,19 @@
 	gda_holder_set_value (param, value);
 
 	/* signature parameter */
-	if ((param = gda_set_get_holder (plist, "signature")) == NULL)	
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "signature")) == NULL)	
 	{
 		g_warning ("param signature is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_holder_set_value_str (param, NULL, signature);
 
 	/* scopedefinitionid parameter */
-	if ((param = gda_set_get_holder (plist, "scopedefinitionid")) == NULL)	
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "scopedefinitionid")) == NULL)	
 	{
 		g_warning ("param scopedefinitionid is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4193,11 +4134,10 @@
 	gda_holder_set_value (param, value);
 
 	/* scopeid parameter */
-	if ((param = gda_set_get_holder (plist, "scopeid")) == NULL)	
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "scopeid")) == NULL)	
 	{
 		g_warning ("param scopeid is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4205,11 +4145,10 @@
 	gda_holder_set_value (param, value);
 
 	/* kindid parameter */
-	if ((param = gda_set_get_holder (plist, "kindid")) == NULL)	
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "kindid")) == NULL)	
 	{
 		g_warning ("param kindid is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4217,11 +4156,10 @@
 	gda_holder_set_value (param, value);
 
 	/* accesskindid parameter */
-	if ((param = gda_set_get_holder (plist, "accesskindid")) == NULL)	
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "accesskindid")) == NULL)	
 	{
 		g_warning ("param accesskindid is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4229,11 +4167,10 @@
 	gda_holder_set_value (param, value);
 
 	/* implementationkindid parameter */
-	if ((param = gda_set_get_holder (plist, "implementationkindid")) == NULL)	
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "implementationkindid")) == NULL)	
 	{
 		g_warning ("param implementationkindid is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4241,11 +4178,10 @@
 	gda_holder_set_value (param, value);
 
 	/* updateflag parameter */
-	if ((param = gda_set_get_holder (plist, "updateflag")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "updateflag")) == NULL)
 	{
 		g_warning ("param updateflag is NULL from pquery!");
 		gda_value_free (value);
-		g_object_unref (plist);
 		return -1;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4257,7 +4193,7 @@
 	gint nrows;
 	nrows = gda_connection_statement_execute_non_select (priv->db_connection, 
 													 (GdaStatement*)stmt, 
-													 plist, &last_inserted,
+													 (GdaSet*)plist, &last_inserted,
 													 NULL);
 	
 	if (sym_was_updated == FALSE)
@@ -4304,8 +4240,6 @@
 	if (table_id > 0)
 		sdb_engine_add_new_tmp_heritage_scope (dbe, tag_entry, table_id);
 	
-	g_object_unref (plist);
-	
 	return table_id;
 }
 
@@ -4396,7 +4330,7 @@
 static gboolean
 sdb_engine_update_file (SymbolDBEngine * dbe, const gchar * file_on_db)
 {
-	GdaSet *plist;
+	const GdaSet *plist1, *plist2, *plist3;
 	const GdaStatement *stmt1, *stmt2, *stmt3;
 	GdaHolder *param;
 	SymbolDBEnginePriv *priv;
@@ -4421,29 +4355,21 @@
 		return FALSE;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt1, &plist, NULL) == FALSE)
-	{
-		g_warning ("par_list is NULL!\n");
-		return FALSE;
-	}
+	plist1 = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_REMOVE_NON_UPDATED_SYMBOLS);
 	
-	if ((param = gda_set_get_holder (plist, "filepath")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist1, "filepath")) == NULL)
 	{
 		g_warning ("param filepath is NULL from pquery!");
-		g_object_unref (plist);
 		return FALSE;
 	}
 	gda_holder_set_value_str (param, NULL, file_on_db);
 	
 	gda_connection_statement_execute_non_select (priv->db_connection, (GdaStatement*)stmt1, 
-														 plist, NULL, NULL);	
+														 (GdaSet*)plist1, NULL, NULL);	
 
 	/* emits removed symbols signals */
 	sdb_engine_detects_removed_ids (dbe);
 
-	/* stay ready for the next statement */
-	g_object_unref (plist);
-	
 	/* reset the update_flag to 0 */	
 	if ((stmt2 = sdb_engine_get_query_by_id (dbe, 
 									PREP_QUERY_RESET_UPDATE_FLAG_SYMBOLS)) == NULL)
@@ -4452,27 +4378,20 @@
 		return FALSE;
 	}
 	
-	if (gda_statement_get_parameters ((GdaStatement*)stmt2, &plist, NULL) == FALSE)
-	{
-		g_warning ("par_list is NULL!\n");
-		return FALSE;
-	}
+	plist2 = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_RESET_UPDATE_FLAG_SYMBOLS);
 	
-	if ((param = gda_set_get_holder (plist, "filepath")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist2, "filepath")) == NULL)
 	{
 		g_warning ("param filepath is NULL from pquery!");
-		g_object_unref (plist);
 		return FALSE;
 	}
 	gda_holder_set_value_str (param, NULL, file_on_db);
 
 	
 	gda_connection_statement_execute_non_select (priv->db_connection, (GdaStatement*)stmt2, 
-														 plist, NULL, NULL);	
+														 (GdaSet*)plist2, NULL, NULL);	
+
 
-	/* ready for the last one */
-	g_object_unref (plist);
-	
 	/* last but not least, update the file analyse_time */
 	if ((stmt3 = sdb_engine_get_query_by_id (dbe,
 											 PREP_QUERY_UPDATE_FILE_ANALYSE_TIME))
@@ -4482,25 +4401,18 @@
 		return FALSE;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt2, &plist, NULL) == FALSE)
-	{
-		g_warning ("par_list is NULL!\n");
-		return FALSE;
-	}
+	plist3 = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_UPDATE_FILE_ANALYSE_TIME);
 	
 	/* filepath parameter */
-	if ((param = gda_set_get_holder (plist, "filepath")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist3, "filepath")) == NULL)
 	{
 		g_warning ("param filepath is NULL from pquery!");
-		g_object_unref (plist);
 		return FALSE;
 	}
 	gda_holder_set_value_str (param, NULL, file_on_db);
 
 	gda_connection_statement_execute_non_select (priv->db_connection, (GdaStatement*)stmt3, 
-														 plist, NULL, NULL);
-	
-	g_object_unref (plist);
+														 (GdaSet*)plist3, NULL, NULL);	
 	return TRUE;
 }
 
@@ -4558,7 +4470,7 @@
 	 */
 	if (update_data->update_prj_analyse_time == TRUE)
 	{
-		GdaSet *plist;
+		const GdaSet *plist;
 		const GdaStatement *stmt;
 		GdaHolder *param;
 
@@ -4571,25 +4483,19 @@
 			return;
 		}
 
-		if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-		{
-			g_warning ("par_list is NULL!\n");
-			return;
-		}
-	
+		plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_UPDATE_PROJECT_ANALYSE_TIME);
+			
 		/* prjname parameter */
-		if ((param = gda_set_get_holder (plist, "prjname")) == NULL)
+		if ((param = gda_set_get_holder ((GdaSet*)plist, "prjname")) == NULL)
 		{
 			g_warning ("param prjname is NULL from pquery!");
-			g_object_unref (plist);
 			return;
 		}
 		gda_holder_set_value_str (param, NULL, update_data->project);
 	
 		gda_connection_statement_execute_non_select (priv->db_connection, 
 													 (GdaStatement*)stmt, 
-													 plist, NULL, NULL);
-		g_object_unref (plist);
+													 (GdaSet*)plist, NULL, NULL);
 	}	
 	
 	/* free the GPtrArray. */
@@ -4773,7 +4679,7 @@
 gboolean
 symbol_db_engine_update_project_symbols (SymbolDBEngine *dbe, const gchar *project)
 {
-	GdaSet *plist;
+	const GdaSet *plist;
 	const GdaStatement *stmt;
 	GdaHolder *param;
 	GValue *value;
@@ -4810,17 +4716,12 @@
 		return FALSE;
 	}
 
-	if (gda_statement_get_parameters ((GdaStatement*)stmt, &plist, NULL) == FALSE)
-	{
-		g_warning ("par_list is NULL!\n");
-		return FALSE;
-	}
+	plist = sdb_engine_get_query_parameters_list (dbe, PREP_QUERY_GET_ALL_FROM_FILE_BY_PROJECT_ID);
 
 	/* prjid parameter */
-	if ((param = gda_set_get_holder (plist, "prjid")) == NULL)
+	if ((param = gda_set_get_holder ((GdaSet*)plist, "prjid")) == NULL)
 	{
 		g_warning ("param prjid is NULL from pquery!");
-		g_object_unref (plist);
 		return FALSE;
 	}
 	gda_value_reset_with_type (value, G_TYPE_INT);
@@ -4960,7 +4861,6 @@
 	
 	if (data_model)
 		g_object_unref (data_model);
-	g_object_unref (plist);
 	
 	if (files_to_scan->len > 0)
 	{



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