Merge lp:~thekorn/zeitgeist/fix-642686-eventview-add-origin-and-uri-id into lp:zeitgeist/0.1

Proposed by Markus Korn
Status: Merged
Merged at revision: 1592
Proposed branch: lp:~thekorn/zeitgeist/fix-642686-eventview-add-origin-and-uri-id
Merge into: lp:zeitgeist/0.1
Diff against target: 66 lines (+12/-16)
2 files modified
_zeitgeist/engine/sql.py (+10/-14)
test/sql-test.py (+2/-2)
To merge this branch: bzr merge lp:~thekorn/zeitgeist/fix-642686-eventview-add-origin-and-uri-id
Reviewer Review Type Date Requested Status
Siegfried Gevatter Approve
Review via email: mp+35952@code.launchpad.net

Commit message

Added 'subj_uri_id' and 'subj_origin_id' columns to event_view (LP: #642686)

Description of the change

Added 'subj_uri_id' and 'subj_origin_id' columns to event_view (LP: #642686)

Note: We don't need to raise the version of our db scheme, as this event_view is regenerated on every startup anyway.

To post a comment you must log in.
Revision history for this message
Siegfried Gevatter (rainct) wrote :

Good work!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '_zeitgeist/engine/sql.py'
2--- _zeitgeist/engine/sql.py 2010-09-18 15:09:08 +0000
3+++ _zeitgeist/engine/sql.py 2010-09-19 10:49:40 +0000
4@@ -365,10 +365,14 @@
5 AS payload,
6 (SELECT value FROM uri WHERE uri.id=event.subj_id)
7 AS subj_uri,
8+ (SELECT id FROM uri WHERE uri.id=event.subj_id)
9+ AS subj_uri_id,
10 event.subj_interpretation,
11 event.subj_manifestation,
12 (SELECT value FROM uri WHERE uri.id=event.subj_origin)
13 AS subj_origin,
14+ (SELECT id FROM uri WHERE uri.id=event.subj_origin)
15+ AS subj_origin_id,
16 event.subj_mimetype,
17 (SELECT value FROM text WHERE text.id = event.subj_text)
18 AS subj_text,
19@@ -484,22 +488,14 @@
20
21 def add_text_condition(self, column, value, like=False, negation=False, cache=None):
22 if like:
23- # thekorn: unfortunatly the data in event_view is a bit inconsistent
24- # e.g.:
25- # subj_uri and subj_origin are presented as string-values
26- # actor and subj_mimetype are ids
27- # (LP: #580601)
28+ assert column in ("subj_uri", "subj_origin", "actor", "subj_mimetype"), \
29+ "prefix search on the %r column is not supported by zeitgeist"
30 if column in ("subj_uri", "subj_origin"):
31- value_type = "value"
32- elif column in ("actor", "subj_mimetype"):
33- value_type = "id"
34+ view_column = "%s_id" %column
35 else:
36- raise AssertionError("We don't know how to handle this type of data")
37- # thekorn: this is a first (unoptimized version)
38- # see http://www.sqlite.org/optoverview.html '4.0 The LIKE optimization'
39- # for how this will look in the future
40- sql = "%s %sIN (SELECT %s FROM %s WHERE value GLOB ?)" \
41- %(column, self.NOT if negation else "", value_type, TABLE_MAP.get(column, column))
42+ view_column = column
43+ sql = "%s %sIN (SELECT id FROM %s WHERE value GLOB ?)" \
44+ %(view_column, self.NOT if negation else "", TABLE_MAP.get(column, column))
45 value += "*"
46 else:
47 sql = "%s %s= ?" %(column, "!" if negation else "")
48
49=== modified file 'test/sql-test.py'
50--- test/sql-test.py 2010-05-15 08:45:08 +0000
51+++ test/sql-test.py 2010-09-19 10:49:40 +0000
52@@ -91,12 +91,12 @@
53 where = WhereClause(WhereClause.AND)
54 where.add_text_condition("subj_uri", "bar", like=True)
55 self.assertEquals(where.sql.replace("?", "%s") % tuple(where.arguments),
56- "(subj_uri IN (SELECT value FROM uri WHERE value GLOB bar*))")
57+ "(subj_uri_id IN (SELECT id FROM uri WHERE value GLOB bar*))")
58
59 where = WhereClause(WhereClause.AND)
60 where.add_text_condition("subj_origin", "bar", like=True)
61 self.assertEquals(where.sql.replace("?", "%s") % tuple(where.arguments),
62- "(subj_origin IN (SELECT value FROM uri WHERE value GLOB bar*))")
63+ "(subj_origin_id IN (SELECT id FROM uri WHERE value GLOB bar*))")
64
65 where = WhereClause(WhereClause.AND)
66 where.add_text_condition("actor", "bar", like=True, negation=True)

Subscribers

People subscribed via source and target branches