Re: [Tracker] [Evolution-hackers] [Evolution] Beagle and Tracker, letting Evolution feed those beasts RDF triples instead

2008-12-12 Thread Mikkel Kamstrup Erlandsen
2008/12/10 Michael Meeks 

> Hi Philip,
>
> On Tue, 2008-12-09 at 19:59 +0100, Philip Van Hoof wrote:
> > > http://live.gnome.org/Evolution/Metadata
> >
> > For early visitors of that page, refresh because I have added/changed
> > quite a lot of it already.
>
> Looks really good.
>

But I have some comments to attach and some bike sheds to paint :-) Comments
on the proposal below.


>The only thing that I don't quite understand (the perennial problem
> with asynchronous interfaces), is the memory issue: it seems we need to
> store all Unset information on deleted mails somewhere [ unless you are
> a womble like me that keeps ~all mail forever ;-].
>

Is it that big a problem? I mean if you store 100,000 uris of avg. length 50
chars you will have a file about 5mb... One needs only keep an absolute
minimum amount of metadata around.

That aside here are my comments:

 * I had personally expected something more like a harvesting API, but what
you present is more like a metadata writing API. Much like the set of
writing methods in http://xesam.org/main/XesamMetadataAPI. This may just be
a matter of taste though.

 * If we are talking a "harvesting" metaphor (which we may not be) then it
seems wrong to imply in the methods that Evo is writing the data and not
just sending it

 * I thought Tracker needed a service type to select the right table. Of
course we know we are dealing with emails here, but the API fails to
generalize.

 * Timestamps are not mandatory in the protocol. The receiver will have to
parse the payload to extract a timestamp (which is not guaranteed to be
there in the first place). Without a timestamp a payload is meaningless

 * Is there any form of sorting mandated by the SetMany method? Fx sorting
subjects by mtime?

 * About the Set method. What happens to predicates set on the subject that
are not in the 'predicates' arg? Are they kept or deleted? Or to rephrase
the question do you overwrite the entire set of metadata for the subject?

I have cooked together something that should work as a generic harvesting
API here: http://xesam.org/main/Drafts/XesamPMH. It should address all of
the points I raise here too.

-- 
Cheers,
Mikkel
___
tracker-list mailing list
tracker-list@gnome.org
http://mail.gnome.org/mailman/listinfo/tracker-list


Re: [Tracker] Support in Tracker for ultra-new Evolution installs that use SQLite for the summary format

2008-12-12 Thread Philip Van Hoof

I just posted a new version of the patch which now opens the DB in
read-only mode.

Thanks for the suggestion

On Fri, 2008-12-12 at 15:12 +0800, Jerry Tan wrote:
> Hi, philip
> 
> How about to open folders.db in readonly mode?
> 
> I just check sqlite's API. 
> sqlite3_open_v2 support a para with  readonly flag
> 
> 
> 
> On 2008ǯ12·î12Æü 00:34, Philip Van Hoof wrote: 
> > This patch makes ultra-new Evolution installs work again with Tracker.
> > 
> > There's one problem and that is that the query will only find E-mails in
> > the INBOX folder. You can easily find the Query and figure out what the
> > problem is:
> > 
> > The design that Carlos made assumes that for each folder there's a
> > "summary" file. In the new Evolution cache format there's just one
> > "folders.db" for each account.
> > 
> > I could do a generated UNION select after first doing "select * from
> > folders" on folders.db and then generating a query that includes all
> > folders. I just have not done this for now and instead I'm just using
> > INBOX and I'm neglecting the other folders.
> > 
> > This is NOT the same as the proposal that I am doing at (a). This is
> > instead a ad-hoc solution for the new situation (Evolution using SQLite
> > for the summaries). I find this solution rather nasty, to be honest.
> > 
> > (a) http://live.gnome.org/Evolution/Metadata
> > 
> > For Carlos: I have also fixed a serious problem in evolution-pop.c,
> > which is by the way unaffected by Evolution's changes (and works, if you
> > just apply the patch that I included in this larger patch). The POP
> > support's get_message_metadata was not returning metadata. 
> > 
> > This was crashing my tracker-indexer (as seemingly my compiler was
> > putting "return 0x2" where the return was omitted, and the memory I have
> > at 0x2 didn't dereference TrackerModuleMetadata's members very well).
> > 
> > Please review and/or rework the patch.
> > 
> >   
> > 
> > 
> > 
> > 
> > ___
> > tracker-list mailing list
> > tracker-list@gnome.org
> > http://mail.gnome.org/mailman/listinfo/tracker-list
> 
-- 
Philip Van Hoof, freelance software developer
home: me at pvanhoof dot be 
gnome: pvanhoof at gnome dot org 
http://pvanhoof.be/blog
http://codeminded.be

___
tracker-list mailing list
tracker-list@gnome.org
http://mail.gnome.org/mailman/listinfo/tracker-list


Re: [Tracker] Support in Tracker for ultra-new Evolution installs that use SQLite for the summary format

2008-12-12 Thread Philip Van Hoof
On Fri, 2008-12-12 at 01:59 +0100, Philip Van Hoof wrote:
> On Thu, 2008-12-11 at 23:58 +0200, Ivan Frade wrote:
> > hi philip,
> > 
> >  short comment (the tablet is not the best device to review patches):
> > can we call this module "evolution224" and keep also the old module?
> > we could choose between one or other with a flag in compilation time
> > (the distributions will choose the correct for them)
> 
> With this patch the code will detect the format and automatically choose
> the right way to parse both.
> 

This version of the patch adds support for IMAP subfolders and fixes the
fact that in the last patch the "email://" URI was generated wrong (it
still contained the "folders.db" string-piece).


> >  regards,
> > 
> > Ivan
> > 
> > On 12/11/08, Philip Van Hoof  wrote:
> > > This patch makes ultra-new Evolution installs work again with Tracker.
> > >
> > > There's one problem and that is that the query will only find E-mails in
> > > the INBOX folder. You can easily find the Query and figure out what the
> > > problem is:
> > >
> > > The design that Carlos made assumes that for each folder there's a
> > > "summary" file. In the new Evolution cache format there's just one
> > > "folders.db" for each account.
> > >
> > > I could do a generated UNION select after first doing "select * from
> > > folders" on folders.db and then generating a query that includes all
> > > folders. I just have not done this for now and instead I'm just using
> > > INBOX and I'm neglecting the other folders.
> > >
> > > This is NOT the same as the proposal that I am doing at (a). This is
> > > instead a ad-hoc solution for the new situation (Evolution using SQLite
> > > for the summaries). I find this solution rather nasty, to be honest.
> > >
> > > (a) http://live.gnome.org/Evolution/Metadata
> > >
> > > For Carlos: I have also fixed a serious problem in evolution-pop.c,
> > > which is by the way unaffected by Evolution's changes (and works, if you
> > > just apply the patch that I included in this larger patch). The POP
> > > support's get_message_metadata was not returning metadata.
> > >
> > > This was crashing my tracker-indexer (as seemingly my compiler was
> > > putting "return 0x2" where the return was omitted, and the memory I have
> > > at 0x2 didn't dereference TrackerModuleMetadata's members very well).
> > >
> > > Please review and/or rework the patch.
> > >
> > > --
> > > Philip Van Hoof, freelance software developer
> > > home: me at pvanhoof dot be
> > > gnome: pvanhoof at gnome dot org
> > > http://pvanhoof.be/blog
> > > http://codeminded.be
> > >
> > 
-- 
Philip Van Hoof, freelance software developer
home: me at pvanhoof dot be 
gnome: pvanhoof at gnome dot org 
http://pvanhoof.be/blog
http://codeminded.be
Index: src/tracker-indexer/modules/evolution-pop.c
===
--- src/tracker-indexer/modules/evolution-pop.c	(revision 2701)
+++ src/tracker-indexer/modules/evolution-pop.c	(working copy)
@@ -360,6 +360,8 @@
 	}
 
 	g_list_free (list);
+
+	return metadata;
 }
 
 static TrackerModuleMetadata *
Index: src/tracker-indexer/modules/evolution.c
===
--- src/tracker-indexer/modules/evolution.c	(revision 2701)
+++ src/tracker-indexer/modules/evolution.c	(working copy)
@@ -70,7 +70,9 @@
 	strchr (basename, '.') == NULL) {
 		type = MAIL_STORAGE_LOCAL;
 	} else if (g_str_has_prefix (path, imap_dir) &&
-		   strcmp (basename, "summary") == 0) {
+		   (strcmp (basename, "summary") == 0 ||
+		strcmp (basename, "folders.db") == 0) ||
+		strcmp (basename, "cmeta") == 0) {
 		type = MAIL_STORAGE_IMAP;
 	}
 
Index: src/tracker-indexer/modules/Makefile.am
===
--- src/tracker-indexer/modules/Makefile.am	(revision 2701)
+++ src/tracker-indexer/modules/Makefile.am	(working copy)
@@ -16,7 +16,8 @@
 	$(GIO_CFLAGS)			\
 	$(GLIB2_CFLAGS)			\
 	$(GCONF_CFLAGS)			\
-	$(GMIME_CFLAGS)
+	$(GMIME_CFLAGS)			\
+	$(SQLITE3_CFLAGS)
 
 indexer_modules_LTLIBRARIES = 		\
 	libtracker-module-applications.la\
@@ -67,6 +68,7 @@
 	$(GMODULE_LIBS)			\
 	$(GLIB2_LIBS)			\
 	$(GCONF_LIBS)			\
-	$(GMIME_LIBS)
+	$(GMIME_LIBS)			\
+	$(SQLITE3_LIBS)
 
 endif
Index: src/tracker-indexer/modules/evolution-imap.c
===
--- src/tracker-indexer/modules/evolution-imap.c	(revision 2701)
+++ src/tracker-indexer/modules/evolution-imap.c	(working copy)
@@ -128,7 +128,18 @@
 g_free (file->imap_dir);
 g_free (file->cur_message_uid);
 
-fclose (file->summary);
+	if (file->db) {
+		sqlite3_close (file->db);
+	}
+
+	if (file->stmt) {
+		sqlite3_finalize (file->stmt);
+	}
+
+	if (file->summary) {
+		fclose (file->summary);
+	}
+
 	close (file->fd);
 
 G_OBJECT_CLASS (tracker_evolution_imap_file_parent_class)->finalize (object);
@@ -482,10 +