Create index on the logs table on time instead of on kind.
That way we can search through all logs in constant time instead of having to perform a full table scan.
This commit is contained in:
		
							parent
							
								
									54ad65c744
								
							
						
					
					
						commit
						d00a5f737c
					
				
					 3 changed files with 25 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -79,7 +79,7 @@ def create_log_db():
 | 
			
		|||
			subject TEXT
 | 
			
		||||
		);
 | 
			
		||||
 | 
			
		||||
		CREATE INDEX idx_logs_jid_id_kind ON logs (jid_id, kind);
 | 
			
		||||
		CREATE INDEX idx_logs_jid_id_time ON logs (jid_id, time DESC);
 | 
			
		||||
 | 
			
		||||
		CREATE TABLE caps_cache (
 | 
			
		||||
			hash_method TEXT,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ docdir = '../'
 | 
			
		|||
basedir   = '../'
 | 
			
		||||
localedir = '../po'
 | 
			
		||||
 | 
			
		||||
version = '0.13.10.0-dev'
 | 
			
		||||
version = '0.13.10.1-dev'
 | 
			
		||||
 | 
			
		||||
import sys, os.path
 | 
			
		||||
for base in ('.', 'common'):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -214,6 +214,8 @@ class OptionsParser:
 | 
			
		|||
			self.update_config_to_01258()
 | 
			
		||||
		if old < [0, 13, 10, 0] and new >= [0, 13, 10, 0]:
 | 
			
		||||
			self.update_config_to_013100()
 | 
			
		||||
		if old < [0, 13, 10, 1] and new >= [0, 13, 10, 1]:
 | 
			
		||||
			self.update_config_to_013101()
 | 
			
		||||
 | 
			
		||||
		gajim.logger.init_vars()
 | 
			
		||||
		gajim.config.set('version', new_version)
 | 
			
		||||
| 
						 | 
				
			
			@ -857,4 +859,25 @@ class OptionsParser:
 | 
			
		|||
		con.close()
 | 
			
		||||
		gajim.config.set('version', '0.13.10.0')
 | 
			
		||||
 | 
			
		||||
	def update_config_to_013101(self):
 | 
			
		||||
		back = os.getcwd()
 | 
			
		||||
		os.chdir(logger.LOG_DB_FOLDER)
 | 
			
		||||
		con = sqlite.connect(logger.LOG_DB_FILE)
 | 
			
		||||
		os.chdir(back)
 | 
			
		||||
		cur = con.cursor()
 | 
			
		||||
		try:
 | 
			
		||||
			cur.executescript(
 | 
			
		||||
				'''
 | 
			
		||||
				DROP INDEX IF EXISTS idx_logs_jid_id_kind;
 | 
			
		||||
 | 
			
		||||
				CREATE INDEX IF NOT EXISTS
 | 
			
		||||
				idx_logs_jid_id_time ON logs (jid_id, time DESC);
 | 
			
		||||
				'''
 | 
			
		||||
			)
 | 
			
		||||
			con.commit()
 | 
			
		||||
		except sqlite.OperationalError:
 | 
			
		||||
			pass
 | 
			
		||||
		con.close()
 | 
			
		||||
		gajim.config.set('version', '0.13.10.1')
 | 
			
		||||
 | 
			
		||||
# vim: se ts=3:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue