tracker r1388 - in branches/indexer-split: . src/trackerd
- From: ifrade svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1388 - in branches/indexer-split: . src/trackerd
- Date: Fri, 9 May 2008 16:14:45 +0100 (BST)
Author: ifrade
Date: Fri May 9 15:14:45 2008
New Revision: 1388
URL: http://svn.gnome.org/viewvc/tracker?rev=1388&view=rev
Log:
New module tracker-db-manager to handle DB locations, and filenames
Added:
branches/indexer-split/src/trackerd/tracker-db-manager.c
branches/indexer-split/src/trackerd/tracker-db-manager.h
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/src/trackerd/Makefile.am
branches/indexer-split/src/trackerd/tracker-db-sqlite.c
branches/indexer-split/src/trackerd/tracker-db-sqlite.h
branches/indexer-split/src/trackerd/tracker-indexer.c
branches/indexer-split/src/trackerd/tracker-indexer.h
branches/indexer-split/src/trackerd/tracker-main.c
branches/indexer-split/src/trackerd/tracker-main.h
Modified: branches/indexer-split/src/trackerd/Makefile.am
==============================================================================
--- branches/indexer-split/src/trackerd/Makefile.am (original)
+++ branches/indexer-split/src/trackerd/Makefile.am Fri May 9 15:14:45 2008
@@ -47,6 +47,8 @@
tracker-parser.h \
tracker-db-sqlite.c \
tracker-db-sqlite.h \
+ tracker-db-manager.c \
+ tracker-db-manager.h \
tracker-db-email.c \
tracker-db-email.h
Added: branches/indexer-split/src/trackerd/tracker-db-manager.c
==============================================================================
--- (empty file)
+++ branches/indexer-split/src/trackerd/tracker-db-manager.c Fri May 9 15:14:45 2008
@@ -0,0 +1,258 @@
+/* Tracker - indexer and metadata database engine
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#include "tracker-db-manager.h"
+
+#define TRACKER_DB_MANAGER_COMMON_FILENAME "common.db"
+#define TRACKER_DB_MANAGER_CACHE_FILENAME "cache.db"
+#define TRACKER_DB_MANAGER_FILE_CONTENTS_FILENAME "file-contents.db"
+#define TRACKER_DB_MANAGER_FILE_META_FILENAME "file-meta.db"
+#define TRACKER_DB_MANAGER_EMAIL_CONTENTS_FILENAME "email-contents.db"
+#define TRACKER_DB_MANAGER_EMAIL_META_FILENAME "email-meta.db"
+
+#define TRACKER_DB_MANAGER_COMMON_NAME "common"
+#define TRACKER_DB_MANAGER_CACHE_NAME "cache"
+#define TRACKER_DB_MANAGER_FILE_CONTENTS_NAME NULL
+#define TRACKER_DB_MANAGER_FILE_META_NAME NULL
+#define TRACKER_DB_MANAGER_EMAIL_CONTENTS_NAME NULL
+#define TRACKER_DB_MANAGER_EMAIL_META_NAME NULL
+
+
+static gboolean initialized = FALSE;
+
+typedef enum {
+ TRACKER_DB_LOC_DATA_DIR,
+ TRACKER_DB_LOC_USER_DATA_DIR,
+ TRACKER_DB_LOC_SYS_TMP_ROOT_DIR,
+} TrackerDBLocation;
+
+typedef struct {
+ TrackerDatabase db;
+ const gchar *file;
+ TrackerDBLocation location;
+ gchar *abs_filename;
+ const gchar *name;
+ gint cache_size;
+ gint page_size;
+ gboolean add_functions;
+} TrackerDBDefinition;
+
+
+TrackerDBDefinition tracker_db_definitions [] = {
+
+ {TRACKER_DB_COMMON,
+ TRACKER_DB_MANAGER_COMMON_FILENAME,
+ TRACKER_DB_LOC_USER_DATA_DIR,
+ NULL,
+ TRACKER_DB_MANAGER_COMMON_NAME,
+ 32,
+ TRACKER_DB_PAGE_SIZE_DEFAULT,
+ FALSE},
+
+ {TRACKER_DB_CACHE,
+ TRACKER_DB_MANAGER_CACHE_FILENAME,
+ TRACKER_DB_LOC_SYS_TMP_ROOT_DIR,
+ NULL,
+ TRACKER_DB_MANAGER_CACHE_NAME,
+ 128, //In the code low memory was 32 and not 64 as it is now (128/2)
+ TRACKER_DB_PAGE_SIZE_DONT_SET,
+ FALSE},
+
+ {TRACKER_DB_FILE_META,
+ TRACKER_DB_MANAGER_FILE_META_FILENAME,
+ TRACKER_DB_LOC_DATA_DIR,
+ NULL,
+ NULL,
+ 512, // open_file_db: 512 tracker_db_connect: 32
+ TRACKER_DB_PAGE_SIZE_DEFAULT, //open_file_db: DEFAULT tracker_db_connect: DONT_SET
+ TRUE},
+
+ {TRACKER_DB_FILE_CONTENTS,
+ TRACKER_DB_MANAGER_FILE_CONTENTS_FILENAME,
+ TRACKER_DB_LOC_DATA_DIR,
+ NULL,
+ NULL,
+ 1024,
+ TRACKER_DB_PAGE_SIZE_DEFAULT,
+ FALSE},
+
+ {TRACKER_DB_EMAIL_META,
+ TRACKER_DB_MANAGER_EMAIL_META_FILENAME,
+ TRACKER_DB_LOC_DATA_DIR,
+ NULL,
+ NULL,
+ 512, // open_email_db:8 tracker_db_connect_emails: 512
+ TRACKER_DB_PAGE_SIZE_DEFAULT,
+ TRUE},
+
+ {TRACKER_DB_EMAIL_CONTENTS,
+ TRACKER_DB_MANAGER_EMAIL_CONTENTS_FILENAME,
+ TRACKER_DB_LOC_DATA_DIR,
+ NULL,
+ NULL,
+ 512,
+ TRACKER_DB_PAGE_SIZE_DEFAULT,
+ FALSE},
+};
+
+TrackerDBDefinition *tracker_dbs [TRACKER_DB_END];
+gchar *services_dir = NULL;
+gchar *sql_dir = NULL;
+
+static const gchar *
+location_to_directory (TrackerDBLocation location,
+ const gchar *data_dir,
+ const gchar *user_data_dir,
+ const gchar *sys_tmp_root_dir)
+{
+ switch (location) {
+
+ case TRACKER_DB_LOC_DATA_DIR:
+ return data_dir;
+ case TRACKER_DB_LOC_USER_DATA_DIR:
+ return user_data_dir;
+ case TRACKER_DB_LOC_SYS_TMP_ROOT_DIR:
+ return sys_tmp_root_dir;
+ default:
+ g_error ("Out of enumeration\n");
+ return NULL;
+ };
+}
+
+static void
+configure_directories ()
+{
+ services_dir = g_build_filename (SHAREDIR, "tracker", "services", NULL);
+
+ sql_dir = g_build_filename (SHAREDIR, "tracker", NULL);
+}
+
+void
+configure_database_description (const gchar *data_dir,
+ const gchar *user_data_dir,
+ const gchar *sys_tmp_root_dir)
+{
+
+ TrackerDBDefinition* db_def;
+ gint i;
+ gint dbs = sizeof (tracker_db_definitions) / sizeof (TrackerDBDefinition);
+ const gchar *dir;
+
+ for (i = 0; i < dbs; i++) {
+
+ db_def = &tracker_db_definitions [i];
+
+ /* Fill absolute path for the database */
+ dir = location_to_directory (db_def->location,
+ data_dir,
+ user_data_dir,
+ sys_tmp_root_dir);
+
+ db_def->abs_filename =
+ g_build_filename (dir, db_def->file, NULL);
+
+ tracker_dbs [db_def->db] = db_def;
+ }
+}
+
+void
+tracker_db_manager_init (const gchar *data_dir,
+ const gchar *user_data_dir,
+ const gchar *sys_tmp_root_dir)
+{
+ if (!initialized) {
+ configure_directories ();
+ configure_database_description (data_dir,
+ user_data_dir,
+ sys_tmp_root_dir);
+ initialized = TRUE;
+ }
+}
+
+
+const gchar *
+tracker_db_manager_get_file (TrackerDatabase db)
+{
+
+ return tracker_dbs[db]->abs_filename;
+}
+
+gboolean
+tracker_db_manager_file_exists (TrackerDatabase db)
+{
+ return g_file_test (tracker_dbs[db]->abs_filename, G_FILE_TEST_IS_REGULAR);
+}
+
+gchar *
+tracker_db_manager_get_service_file (const gchar *service_file)
+{
+ return g_build_filename (services_dir, service_file, NULL);
+}
+
+gchar *
+tracker_db_manager_get_sql_file (const gchar *sql_file)
+{
+ return g_build_filename (sql_dir, sql_file, NULL);
+}
+
+gint
+tracker_db_manager_get_cache_size (TrackerDatabase db)
+{
+ return tracker_dbs[db]->cache_size;
+}
+
+gint
+tracker_db_manager_get_page_size (TrackerDatabase db)
+{
+ return tracker_dbs[db]->page_size;
+}
+
+gboolean
+tracker_db_manager_get_add_functions (TrackerDatabase db)
+{
+ return tracker_dbs[db]->add_functions;
+}
+
+const gchar *
+tracker_db_manager_get_name (TrackerDatabase db)
+{
+ return tracker_dbs[db]->name;
+}
+
+void
+tracker_db_manager_term ()
+{
+ gint dbs, i;
+
+ if (!initialized) {
+ return;
+ }
+
+ initialized = FALSE;
+
+ dbs = sizeof (tracker_db_definitions) /sizeof (TrackerDBDefinition);
+
+ for (i = 0; i < dbs; i++) {
+ if (tracker_db_definitions[i].abs_filename) {
+ g_free (tracker_db_definitions[i].abs_filename);
+ }
+ }
+
+ g_free (services_dir);
+ g_free (sql_dir);
+}
Added: branches/indexer-split/src/trackerd/tracker-db-manager.h
==============================================================================
--- (empty file)
+++ branches/indexer-split/src/trackerd/tracker-db-manager.h Fri May 9 15:14:45 2008
@@ -0,0 +1,57 @@
+/* Tracker - indexer and metadata database engine
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef __TRACKER_DB_MANAGER_H__
+#define __TRACKER_DB_MANAGER_H__
+
+#include <glib.h>
+
+#define TRACKER_DB_PAGE_SIZE_DEFAULT 4096
+#define TRACKER_DB_PAGE_SIZE_DONT_SET -1
+
+G_BEGIN_DECLS
+
+typedef enum {
+ TRACKER_DB_COMMON,
+ TRACKER_DB_CACHE,
+ TRACKER_DB_FILE_META,
+ TRACKER_DB_FILE_CONTENTS,
+ TRACKER_DB_EMAIL_META,
+ TRACKER_DB_EMAIL_CONTENTS,
+ TRACKER_DB_END
+} TrackerDatabase;
+
+
+void tracker_db_manager_init (const gchar *data_dir,
+ const gchar *user_data_dir,
+ const gchar *sys_tmp_root_dir);
+
+const gchar *tracker_db_manager_get_file (TrackerDatabase db);
+gboolean tracker_db_manager_file_exists (TrackerDatabase db);
+gchar * tracker_db_manager_get_service_file (const gchar *service_file);
+gchar * tracker_db_manager_get_sql_file (const gchar *sql_file);
+gint tracker_db_manager_get_cache_size (TrackerDatabase db);
+gint tracker_db_manager_get_page_size (TrackerDatabase db);
+gboolean tracker_db_manager_get_add_functions (TrackerDatabase db);
+const gchar *tracker_db_manager_get_name (TrackerDatabase db);
+
+void tracker_db_manager_term (void);
+
+G_END_DECLS
+
+#endif /* __TRACKER_DB_MANAGER_H__ */
Modified: branches/indexer-split/src/trackerd/tracker-db-sqlite.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-sqlite.c (original)
+++ branches/indexer-split/src/trackerd/tracker-db-sqlite.c Fri May 9 15:14:45 2008
@@ -45,6 +45,7 @@
#include <libtracker-db/tracker-db-interface-sqlite.h>
#include "tracker-db-sqlite.h"
+#include "tracker-db-manager.h"
#include "tracker-indexer.h"
#include "tracker-cache.h"
#include "tracker-metadata.h"
@@ -60,9 +61,6 @@
#define MAX_COMPRESS_BUFFER 65565
#define ZLIBBUFSIZ 8192
-#define DB_PAGE_SIZE_DEFAULT 4096
-#define DB_PAGE_SIZE_DONT_SET -1
-
extern Tracker *tracker;
static GHashTable *prepared_queries;
@@ -405,7 +403,7 @@
{
char *filename, *query;
- filename = g_build_filename (SHAREDIR, "tracker", sql_file, NULL);
+ filename = tracker_db_manager_get_sql_file (sql_file);
if (!g_file_get_contents (filename, &query, NULL, NULL)) {
tracker_error ("ERROR: Tracker cannot read required file %s - Please reinstall tracker or check read permissions on the file if it exists", sql_file);
@@ -586,75 +584,20 @@
}
-/* TODO: refactor this to a better location. This is the threadpool shared by
- * all SQLite connections. I noticed that having a thread per connection is
- * not sufficient. All statements must happen sequential ... */
-
-static GThreadPool *pool = NULL;
-
-/* TODO: the rafactor to a better location should perform this at-exit. For
- * example when the desktop-session alarms that the system is shutting down,
- * and when the trackerd process is exiting.
- *
- * g_thread_pool_free (priv->pool, TRUE, TRUE);
- **/
-
-static TrackerDBInterface *
-open_db (const char *dir, const char *name, gboolean *create_table)
-{
- TrackerDBInterface *db;
- gboolean db_exists;
- char *dbname;
-
- if (!pool) {
- pool = g_thread_pool_new (tracker_db_interface_sqlite_process_query,
- NULL, 1, TRUE, NULL);
- }
-
- dbname = g_build_filename (dir, name, NULL);
- db_exists = g_file_test (dbname, G_FILE_TEST_IS_REGULAR);
-
- if (!db_exists) {
- tracker_log ("database file %s is not present - will create", dbname);
- }
-
- if (create_table) {
- *create_table = db_exists;
- }
-
- /* We pass a GThreadPool here, it should be the same pool for all opened
- * SQLite databases */
-
- db = tracker_db_interface_sqlite_new (dbname, pool);
- tracker_db_interface_set_procedure_table (db, prepared_queries);
- g_free (dbname);
-
- return db;
-
-}
-
static void
-set_default_pragmas (TrackerDBInterface *iface)
+set_params (TrackerDBInterface *iface, int cache_size, int page_size, gboolean add_functions)
{
tracker_db_exec_no_reply (iface, "PRAGMA synchronous = NORMAL;");
tracker_db_exec_no_reply (iface, "PRAGMA count_changes = 0;");
tracker_db_exec_no_reply (iface, "PRAGMA temp_store = FILE;");
tracker_db_exec_no_reply (iface, "PRAGMA encoding = \"UTF-8\"");
tracker_db_exec_no_reply (iface, "PRAGMA auto_vacuum = 0;");
-}
-
-
-static void
-set_params (TrackerDBInterface *iface, int cache_size, int page_size, gboolean add_functions)
-{
- set_default_pragmas (iface);
- if (page_size != DB_PAGE_SIZE_DONT_SET) {
+ if (page_size != TRACKER_DB_PAGE_SIZE_DONT_SET) {
tracker_db_exec_no_reply (iface, "PRAGMA page_size = %d", page_size);
}
-
if (tracker_config_get_low_memory_mode (tracker->config)) {
cache_size /= 2;
}
@@ -662,8 +605,9 @@
tracker_db_exec_no_reply (iface, "PRAGMA cache_size = %d", cache_size);
if (add_functions) {
- if (! tracker_db_interface_sqlite_set_collation_function (TRACKER_DB_INTERFACE_SQLITE (iface),
- "UTF8", utf8_collation_func)) {
+
+ if (!tracker_db_interface_sqlite_set_collation_function (TRACKER_DB_INTERFACE_SQLITE (iface),
+ "UTF8", utf8_collation_func)) {
tracker_error ("ERROR: collation sequence failed");
}
@@ -677,16 +621,54 @@
}
+/* TODO: refactor this to a better location. This is the threadpool shared by
+ * all SQLite connections. I noticed that having a thread per connection is
+ * not sufficient. All statements must happen sequential ... */
-static void
-open_common_db (DBConnection *db_con)
+static GThreadPool *pool = NULL;
+
+/* TODO: the rafactor to a better location should perform this at-exit. For
+ * example when the desktop-session alarms that the system is shutting down,
+ * and when the trackerd process is exiting.
+ *
+ * g_thread_pool_free (priv->pool, TRUE, TRUE);
+ **/
+
+/*
+ * If the file doesnt exist, creates a new file of size 0
+ */
+static TrackerDBInterface *
+open_db_interface (TrackerDatabase database)
{
- gboolean create;
+ TrackerDBInterface *iface;
+ const gchar *dbname;
- db_con->db = open_db (tracker->user_data_dir, TRACKER_INDEXER_COMMON_DB_FILENAME, &create);
+ if (!pool) {
+ pool = g_thread_pool_new (tracker_db_interface_sqlite_process_query,
+ NULL, 1, TRUE, NULL);
+ }
+
+ dbname = tracker_db_manager_get_file (database);
+
+ /* We pass a GThreadPool here, it should be the same pool for all opened
+ * SQLite databases */
+ iface = tracker_db_interface_sqlite_new (dbname, pool);
+ tracker_db_interface_set_procedure_table (iface, prepared_queries);
+
+
+ set_params (iface,
+ tracker_db_manager_get_cache_size (database),
+ tracker_db_manager_get_page_size (database),
+ tracker_db_manager_get_add_functions (database));
+ return iface;
+
+}
- set_params (db_con->db, 32, DB_PAGE_SIZE_DEFAULT, FALSE);
+static void
+open_common_db (DBConnection *db_con)
+{
+ db_con->db = open_db_interface (TRACKER_DB_COMMON);
}
@@ -709,19 +691,17 @@
}
void
-tracker_db_attach_db (DBConnection *db_con, const char *name)
+tracker_db_attach_db (DBConnection *db_con, TrackerDatabase database)
{
- gchar *path;
-
- if (strcmp (name, "common") == 0) {
- path = g_build_filename (tracker->user_data_dir, TRACKER_INDEXER_COMMON_DB_FILENAME, NULL);
- tracker_db_exec_no_reply (db_con->db, "ATTACH '%s' as %s", path, name);
- } else if (strcmp (name, "cache") == 0) {
- path = g_build_filename (tracker->sys_tmp_root_dir, TRACKER_INDEXER_CACHE_DB_FILENAME, NULL);
- tracker_db_exec_no_reply (db_con->db, "ATTACH '%s' as %s", path, name);
+ if (database != TRACKER_DB_COMMON && database != TRACKER_DB_CACHE) {
+ tracker_error ("Attaching invalid db");
+ return;
}
- g_free (path);
+ tracker_db_exec_no_reply (db_con->db,
+ "ATTACH '%s' as %s",
+ tracker_db_manager_get_file (database),
+ tracker_db_manager_get_name (database));
}
static inline void
@@ -874,29 +854,29 @@
{
DBConnection *db_con;
gboolean create_table = FALSE;
- db_con = g_new0 (DBConnection, 1);
- db_con->db = open_db (tracker->data_dir, TRACKER_INDEXER_FILE_META_DB_FILENAME, &create_table);
+ create_table = tracker_db_manager_file_exists (TRACKER_DB_FILE_META);
+ db_con = g_new0 (DBConnection, 1);
+ db_con->db = open_db_interface (TRACKER_DB_FILE_META);
db_con->data = db_con;
-
- set_params (db_con->db, 32, DB_PAGE_SIZE_DONT_SET, TRUE);
if (create_table) {
- tracker_log ("Creating file database...");
+ tracker_log ("Creating file database... %s",
+ tracker_db_manager_get_file (TRACKER_DB_FILE_META));
load_sql_file (db_con, "sqlite-service.sql");
load_sql_trigger (db_con, "sqlite-service-triggers.sql");
load_sql_file (db_con, "sqlite-metadata.sql");
- tracker_db_load_service_file (db_con, "default.metadata", FALSE);
- tracker_db_load_service_file (db_con, "file.metadata", FALSE);
- tracker_db_load_service_file (db_con, "audio.metadata", FALSE);
- tracker_db_load_service_file (db_con, "application.metadata", FALSE);
- tracker_db_load_service_file (db_con, "document.metadata", FALSE);
- tracker_db_load_service_file (db_con, "email.metadata", FALSE);
- tracker_db_load_service_file (db_con, "image.metadata", FALSE);
- tracker_db_load_service_file (db_con, "video.metadata", FALSE);
+ tracker_db_load_service_file (db_con, "default.metadata");
+ tracker_db_load_service_file (db_con, "file.metadata");
+ tracker_db_load_service_file (db_con, "audio.metadata");
+ tracker_db_load_service_file (db_con, "application.metadata");
+ tracker_db_load_service_file (db_con, "document.metadata");
+ tracker_db_load_service_file (db_con, "email.metadata");
+ tracker_db_load_service_file (db_con, "image.metadata");
+ tracker_db_load_service_file (db_con, "video.metadata");
tracker_db_exec_no_reply (db_con->db, "ANALYZE");
}
@@ -906,8 +886,8 @@
// load_sql_file (db_con, "sqlite-temp-tables.sql");
- tracker_db_attach_db (db_con, "common");
- tracker_db_attach_db (db_con, "cache");
+ tracker_db_attach_db (db_con, TRACKER_DB_COMMON);
+ tracker_db_attach_db (db_con, TRACKER_DB_CACHE);
db_con->cache = db_con;
db_con->common = db_con;
@@ -918,12 +898,7 @@
static inline void
open_file_db (DBConnection *db_con)
{
- gboolean create;
-
- db_con->db = open_db (tracker->data_dir,
- TRACKER_INDEXER_FILE_META_DB_FILENAME, &create);
-
- set_params (db_con->db, 512, DB_PAGE_SIZE_DEFAULT, TRUE);
+ db_con->db = open_db_interface (TRACKER_DB_FILE_META);
}
DBConnection *
@@ -942,12 +917,7 @@
static inline void
open_email_db (DBConnection *db_con)
{
- gboolean create;
-
- db_con->db = open_db (tracker->data_dir,
- TRACKER_INDEXER_EMAIL_META_DB_FILENAME, &create);
-
- set_params (db_con->db, 512, DB_PAGE_SIZE_DEFAULT, TRUE);
+ db_con->db = open_db_interface (TRACKER_DB_EMAIL_META);
}
DBConnection *
@@ -970,15 +940,14 @@
{
gboolean create;
- db_con->db = open_db (tracker->data_dir,
- TRACKER_INDEXER_FILE_CONTENTS_DB_FILENAME,
- &create);
+ create = tracker_db_manager_file_exists (TRACKER_DB_FILE_CONTENTS);
- set_params (db_con->db, 1024, DB_PAGE_SIZE_DEFAULT, FALSE);
+ db_con->db = open_db_interface (TRACKER_DB_FILE_CONTENTS);
if (create) {
tracker_db_exec_no_reply (db_con->db, "CREATE TABLE ServiceContents (ServiceID Int not null, MetadataID Int not null, Content Text, primary key (ServiceID, MetadataID))");
- tracker_log ("creating file content table");
+ tracker_log ("Creating db: %s",
+ tracker_db_manager_get_file (TRACKER_DB_FILE_CONTENTS));
}
tracker_db_interface_sqlite_create_function (db_con->db, "uncompress", function_uncompress, 1);
@@ -1004,15 +973,14 @@
{
gboolean create;
- db_con->db = open_db (tracker->data_dir,
- TRACKER_INDEXER_EMAIL_CONTENTS_DB_FILENAME,
- &create);
+ create = tracker_db_manager_file_exists (TRACKER_DB_EMAIL_CONTENTS);
- set_params (db_con->db, 512, DB_PAGE_SIZE_DEFAULT, FALSE);
+ db_con->db = open_db_interface (TRACKER_DB_EMAIL_CONTENTS);
if (create) {
tracker_db_exec_no_reply (db_con->db, "CREATE TABLE ServiceContents (ServiceID Int not null, MetadataID Int not null, Content Text, primary key (ServiceID, MetadataID))");
- tracker_log ("creating email content table");
+ tracker_log ("Creating db: %s",
+ tracker_db_manager_get_file (TRACKER_DB_EMAIL_CONTENTS));
}
tracker_db_interface_sqlite_create_function (db_con->db, "uncompress", function_uncompress, 1);
@@ -1099,24 +1067,23 @@
gboolean create_table;
DBConnection *db_con;
- create_table = FALSE;
+ create_table = tracker_db_manager_file_exists (TRACKER_DB_CACHE);
db_con = g_new0 (DBConnection, 1);
- db_con->db = open_db (tracker->sys_tmp_root_dir,
- TRACKER_INDEXER_CACHE_DB_FILENAME,
- &create_table);
+ db_con->db = open_db_interface (TRACKER_DB_CACHE);
/* Original cache_size:
* Normal 128 Low memory mode 32
* Using set_params...:
* Normal 128 Low memory mode 64
*/
- set_params (db_con->db, 128, DB_PAGE_SIZE_DONT_SET, FALSE);
if (create_table) {
load_sql_file (db_con, "sqlite-cache.sql");
tracker_db_exec_no_reply (db_con->db, "ANALYZE");
+ tracker_log ("Creating db: %s",
+ tracker_db_manager_get_file (TRACKER_DB_CACHE));
}
return db_con;
@@ -1129,17 +1096,17 @@
gboolean create_table;
DBConnection *db_con;
- create_table = FALSE;
+ create_table = tracker_db_manager_file_exists (TRACKER_DB_EMAIL_META);
db_con = g_new0 (DBConnection, 1);
- db_con->db = open_db (tracker->data_dir, TRACKER_INDEXER_EMAIL_META_DB_FILENAME, &create_table);
+ db_con->db = open_db_interface (TRACKER_DB_EMAIL_META);
+ //db_con->db = open_db (tracker->data_dir, TRACKER_INDEXER_EMAIL_META_DB_FILENAME, &create_table);
+ /* Old: always 8 Now: normal 8 low battery 4 */
+//set_params (db_con->db, 8, TRACKER_DB_PAGE_SIZE_DEFAULT, TRUE);
db_con->emails = db_con;
- /* Old: always 8 Now: normal 8 low battery 4 */
- set_params (db_con->db, 8, DB_PAGE_SIZE_DEFAULT, TRUE);
-
if (create_table) {
tracker_log ("Creating email database...");
load_sql_file (db_con, "sqlite-service.sql");
@@ -1149,8 +1116,8 @@
tracker_db_exec_no_reply (db_con->db, "ANALYZE");
}
- tracker_db_attach_db (db_con, "common");
- tracker_db_attach_db (db_con, "cache");
+ tracker_db_attach_db (db_con, TRACKER_DB_COMMON);
+ tracker_db_attach_db (db_con, TRACKER_DB_CACHE);
return db_con;
}
@@ -1233,26 +1200,22 @@
load_sql_file (db_con, "sqlite-metadata.sql");
load_sql_trigger (db_con, "sqlite-tracker-triggers.sql");
- tracker_db_load_service_file (db_con, "default.metadata", FALSE);
- tracker_db_load_service_file (db_con, "file.metadata", FALSE);
- tracker_db_load_service_file (db_con, "audio.metadata", FALSE);
- tracker_db_load_service_file (db_con, "application.metadata", FALSE);
- tracker_db_load_service_file (db_con, "document.metadata", FALSE);
- tracker_db_load_service_file (db_con, "email.metadata", FALSE);
- tracker_db_load_service_file (db_con, "image.metadata", FALSE);
- tracker_db_load_service_file (db_con, "video.metadata", FALSE);
+ tracker_db_load_service_file (db_con, "default.metadata");
+ tracker_db_load_service_file (db_con, "file.metadata");
+ tracker_db_load_service_file (db_con, "audio.metadata");
+ tracker_db_load_service_file (db_con, "application.metadata");
+ tracker_db_load_service_file (db_con, "document.metadata");
+ tracker_db_load_service_file (db_con, "email.metadata");
+ tracker_db_load_service_file (db_con, "image.metadata");
+ tracker_db_load_service_file (db_con, "video.metadata");
- tracker_db_load_service_file (db_con, "default.service", FALSE);
+ tracker_db_load_service_file (db_con, "default.service");
tracker_db_exec_no_reply (db_con->db, "ANALYZE");
tracker_db_close (db_con);
g_free (db_con);
-
-
-
-
}
static gboolean
@@ -1275,16 +1238,16 @@
gboolean
tracker_db_needs_setup ()
{
- return (!file_exists (tracker->data_dir, TRACKER_INDEXER_FILE_META_DB_FILENAME)
+ return (!tracker_db_manager_file_exists (TRACKER_DB_FILE_META)
|| !file_exists (tracker->data_dir, TRACKER_INDEXER_FILE_INDEX_DB_FILENAME)
- || !file_exists (tracker->data_dir, TRACKER_INDEXER_FILE_CONTENTS_DB_FILENAME));
+ || !tracker_db_manager_file_exists (TRACKER_DB_FILE_CONTENTS));
}
gboolean
tracker_db_needs_data ()
{
- return !file_exists (tracker->user_data_dir, TRACKER_INDEXER_COMMON_DB_FILENAME);
+ return !tracker_db_manager_file_exists (TRACKER_DB_COMMON);
}
gint
@@ -4633,7 +4596,7 @@
gboolean
-tracker_db_load_service_file (DBConnection *db_con, const char *filename, gboolean full_path)
+tracker_db_load_service_file (DBConnection *db_con, const char *filename)
{
GKeyFile *key_file = NULL;
const char * const *locale_array;
@@ -4643,12 +4606,7 @@
char *DataTypeArray[11] = {"Keyword", "Indexable", "CLOB", "String", "Integer", "Double", "DateTime", "BLOB", "Struct", "Link", NULL};
- if (!full_path) {
- service_file = g_build_filename (tracker->services_dir, filename, NULL);
- } else {
- service_file = g_strdup (filename);
- }
-
+ service_file = tracker_db_manager_get_service_file (filename);
locale_array = g_get_language_names ();
Modified: branches/indexer-split/src/trackerd/tracker-db-sqlite.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db-sqlite.h (original)
+++ branches/indexer-split/src/trackerd/tracker-db-sqlite.h Fri May 9 15:14:45 2008
@@ -318,8 +318,7 @@
gboolean embedded_only);
gboolean tracker_db_has_display_metadata (FieldDef *def);
gboolean tracker_db_load_service_file (DBConnection *db_con,
- const gchar *filename,
- gboolean full_path);
+ const gchar *filename);
gchar * tracker_db_get_field_name (const gchar *service,
const gchar *meta_name);
gint tracker_metadata_is_key (const gchar *service,
Modified: branches/indexer-split/src/trackerd/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-indexer.c (original)
+++ branches/indexer-split/src/trackerd/tracker-indexer.c Fri May 9 15:14:45 2008
@@ -63,6 +63,7 @@
#include "tracker-query-tree.h"
#include "tracker-service-manager.h"
#include "tracker-status.h"
+#include "tracker-db-manager.h"
extern Tracker *tracker;
@@ -1387,8 +1388,9 @@
gboolean
tracker_indexer_are_databases_too_big (void)
{
- gchar *filename;
- gboolean too_big;
+ gchar *filename;
+ const gchar *filename_const;
+ gboolean too_big;
filename = g_build_filename (tracker->data_dir, TRACKER_INDEXER_FILE_INDEX_DB_FILENAME, NULL);
too_big = tracker_file_get_size (filename) > MAX_INDEX_FILE_SIZE;
@@ -1408,18 +1410,16 @@
return TRUE;
}
- filename = g_build_filename (tracker->data_dir, TRACKER_INDEXER_FILE_META_DB_FILENAME, NULL);
- too_big = tracker_file_get_size (filename) > MAX_INDEX_FILE_SIZE;
- g_free (filename);
+ filename_const = tracker_db_manager_get_file (TRACKER_DB_FILE_META);
+ too_big = tracker_file_get_size (filename_const) > MAX_INDEX_FILE_SIZE;
if (too_big) {
tracker_error ("File metadata database is too big, discontinuing indexing");
return TRUE;
}
- filename = g_build_filename (tracker->data_dir, TRACKER_INDEXER_EMAIL_META_DB_FILENAME, NULL);
- too_big = tracker_file_get_size (filename) > MAX_INDEX_FILE_SIZE;
- g_free (filename);
+ filename_const = tracker_db_manager_get_file (TRACKER_DB_EMAIL_META);
+ too_big = tracker_file_get_size (filename_const) > MAX_INDEX_FILE_SIZE;
if (too_big) {
tracker_error ("Email metadata database is too big, discontinuing indexing");
Modified: branches/indexer-split/src/trackerd/tracker-indexer.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-indexer.h (original)
+++ branches/indexer-split/src/trackerd/tracker-indexer.h Fri May 9 15:14:45 2008
@@ -27,15 +27,9 @@
#include <libtracker-db/tracker-db-interface.h>
-#define TRACKER_INDEXER_COMMON_DB_FILENAME "common.db"
-#define TRACKER_INDEXER_CACHE_DB_FILENAME "cache.db"
-#define TRACKER_INDEXER_FILE_UPDATE_INDEX_DB_FILENAME "file-update-index.db"
-#define TRACKER_INDEXER_FILE_CONTENTS_DB_FILENAME "file-contents.db"
#define TRACKER_INDEXER_FILE_INDEX_DB_FILENAME "file-index.db"
-#define TRACKER_INDEXER_FILE_META_DB_FILENAME "file-meta.db"
-#define TRACKER_INDEXER_EMAIL_CONTENTS_DB_FILENAME "email-contents.db"
#define TRACKER_INDEXER_EMAIL_INDEX_DB_FILENAME "email-index.db"
-#define TRACKER_INDEXER_EMAIL_META_DB_FILENAME "email-meta.db"
+#define TRACKER_INDEXER_FILE_UPDATE_INDEX_DB_FILENAME "file-update-index.db"
G_BEGIN_DECLS
Modified: branches/indexer-split/src/trackerd/tracker-main.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-main.c (original)
+++ branches/indexer-split/src/trackerd/tracker-main.c Fri May 9 15:14:45 2008
@@ -55,6 +55,7 @@
#include "tracker-service-manager.h"
#include "tracker-status.h"
#include "tracker-xesam.h"
+#include "tracker-db-manager.h"
#ifdef OS_WIN32
#include <windows.h>
@@ -544,8 +545,6 @@
tracker->index_number_min_length = 6;
- tracker->services_dir = g_build_filename (SHAREDIR, "tracker", "services", NULL);
-
tracker->folders_count = 0;
tracker->folders_processed = 0;
tracker->mbox_count = 0;
@@ -869,6 +868,11 @@
tracker_nfs_lock_init (tracker->root_dir,
tracker_config_get_nfs_locking (tracker->config));
+ /* Prepare db information */
+ tracker_db_manager_init (tracker->data_dir,
+ tracker->user_data_dir,
+ tracker->sys_tmp_root_dir);
+
/* Set up xesam */
tracker_xesam_init ();
@@ -1039,6 +1043,8 @@
g_object_unref (tracker->config);
}
+ tracker_db_manager_term ();
+
tracker_nfs_lock_term ();
tracker_log_term ();
Modified: branches/indexer-split/src/trackerd/tracker-main.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-main.h (original)
+++ branches/indexer-split/src/trackerd/tracker-main.h Fri May 9 15:14:45 2008
@@ -74,7 +74,6 @@
gchar *user_data_dir;
gchar *sys_tmp_root_dir;
gchar *email_attachements_dir;
- gchar *services_dir;
gchar *xesam_dir;
gchar *log_filename;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]