save jid_id in unread_messages table too to increase speed (it was definitively too slow)

This commit is contained in:
Yann Leboulanger 2006-04-11 11:28:36 +00:00
parent 4b43cda815
commit 145db1a107
2 changed files with 18 additions and 11 deletions

View File

@ -43,7 +43,8 @@ def assert_unread_msgs_table_exists():
cur.executescript( cur.executescript(
''' '''
CREATE TABLE unread_messages ( CREATE TABLE unread_messages (
message_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE message_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
jid_id INTEGER
); );
''' '''
) )

View File

@ -206,12 +206,12 @@ class Logger:
except sqlite.OperationalError, e: except sqlite.OperationalError, e:
print >> sys.stderr, str(e) print >> sys.stderr, str(e)
if message_id: if message_id:
self.insert_unread_events(message_id) self.insert_unread_events(message_id, values[0])
return message_id return message_id
def insert_unread_events(self, message_id): def insert_unread_events(self, message_id, jid_id):
''' add unread message with id: message_id''' ''' add unread message with id: message_id'''
sql = 'INSERT INTO unread_messages VALUES (%d)' % message_id sql = 'INSERT INTO unread_messages VALUES (%d, %d)' % (message_id, jid_id)
self.cur.execute(sql) self.cur.execute(sql)
try: try:
self.con.commit() self.con.commit()
@ -234,14 +234,20 @@ class Logger:
return return
jid = jid.lower() jid = jid.lower()
jid_id = self.get_jid_id(jid) jid_id = self.get_jid_id(jid)
self.cur.execute(''' all_messages = []
SELECT message_id, message, time, subject FROM logs, unread_messages self.cur.execute(
WHERE jid_id = %d AND log_line_id = message_id ORDER BY time ASC 'SELECT message_id from unread_messages WHERE jid_id = %d' % jid_id)
''' % (jid_id)
)
results = self.cur.fetchall() results = self.cur.fetchall()
return results for message in results:
msg_id = message[0]
self.cur.execute('''
SELECT log_line_id, message, time, subject FROM logs
WHERE jid_id = %d AND log_line_id = %d
''' % (jid_id, msg_id)
)
results = self.cur.fetchall()
all_messages.append(results[0])
return all_messages
def write(self, kind, jid, message = None, show = None, tim = None, def write(self, kind, jid, message = None, show = None, tim = None,
subject = None): subject = None):