creat fts table
This commit is contained in:
		
							parent
							
								
									b5c60ee779
								
							
						
					
					
						commit
						542a06f08a
					
				@ -60,7 +60,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 | 
				
			|||||||
	private static DatabaseBackend instance = null;
 | 
						private static DatabaseBackend instance = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final String DATABASE_NAME = "history";
 | 
						private static final String DATABASE_NAME = "history";
 | 
				
			||||||
	private static final int DATABASE_VERSION = 40;
 | 
						private static final int DATABASE_VERSION = 41;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static String CREATE_CONTATCS_STATEMENT = "create table "
 | 
						private static String CREATE_CONTATCS_STATEMENT = "create table "
 | 
				
			||||||
			+ Contact.TABLENAME + "(" + Contact.ACCOUNT + " TEXT, "
 | 
								+ Contact.TABLENAME + "(" + Contact.ACCOUNT + " TEXT, "
 | 
				
			||||||
@ -163,6 +163,12 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 | 
				
			|||||||
	private static String CREATE_MESSAGE_TIME_INDEX = "create INDEX message_time_index ON "+Message.TABLENAME+"("+Message.TIME_SENT+")";
 | 
						private static String CREATE_MESSAGE_TIME_INDEX = "create INDEX message_time_index ON "+Message.TABLENAME+"("+Message.TIME_SENT+")";
 | 
				
			||||||
	private static String CREATE_MESSAGE_CONVERSATION_INDEX = "create INDEX message_conversation_index ON "+Message.TABLENAME+"("+Message.CONVERSATION+")";
 | 
						private static String CREATE_MESSAGE_CONVERSATION_INDEX = "create INDEX message_conversation_index ON "+Message.TABLENAME+"("+Message.CONVERSATION+")";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static String CREATE_MESSAGE_INDEX_TABLE = "CREATE VIRTUAL TABLE messages_index USING FTS4(uuid, body)";
 | 
				
			||||||
 | 
						private static String CREATE_MESSAGE_INSERT_TRIGGER = "CREATE TRIGGER after_message_insert AFTER INSERT ON "+Message.TABLENAME+ " BEGIN INSERT INTO messages_index (uuid,body) VALUES (new.uuid,new.body); END;";
 | 
				
			||||||
 | 
						private static String CREATE_MESSAGE_UPDATE_TRIGGER = "CREATE TRIGGER after_message_update UPDATE of uuid,body ON "+Message.TABLENAME+" BEGIN update messages_index set body=new.body,uuid=new.uuid WHERE uuid=old.uuid; END;";
 | 
				
			||||||
 | 
						private static String CREATE_MESSAGE_DELETE_TRIGGER = "CREATE TRIGGER after_message_delete AFTER DELETE ON "+Message.TABLENAME+ " BEGIN DELETE from messages_index where uuid=old.uuid; END;";
 | 
				
			||||||
 | 
						private static String COPY_PREEXISTING_ENTRIES = "INSERT into messages_index(uuid,body) select uuid,body FROM "+Message.TABLENAME+";";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private DatabaseBackend(Context context) {
 | 
						private DatabaseBackend(Context context) {
 | 
				
			||||||
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
 | 
							super(context, DATABASE_NAME, null, DATABASE_VERSION);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -478,6 +484,14 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 | 
				
			|||||||
		if (oldVersion < 39 && newVersion >= 39) {
 | 
							if (oldVersion < 39 && newVersion >= 39) {
 | 
				
			||||||
			db.execSQL(CREATE_RESOLVER_RESULTS_TABLE);
 | 
								db.execSQL(CREATE_RESOLVER_RESULTS_TABLE);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (oldVersion < 41 && newVersion >= 41) {
 | 
				
			||||||
 | 
								db.execSQL(CREATE_MESSAGE_INDEX_TABLE);
 | 
				
			||||||
 | 
								db.execSQL(CREATE_MESSAGE_INSERT_TRIGGER);
 | 
				
			||||||
 | 
								db.execSQL(CREATE_MESSAGE_UPDATE_TRIGGER);
 | 
				
			||||||
 | 
								db.execSQL(CREATE_MESSAGE_DELETE_TRIGGER);
 | 
				
			||||||
 | 
								db.execSQL(COPY_PREEXISTING_ENTRIES);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static ContentValues createFingerprintStatusContentValues(FingerprintStatus.Trust trust, boolean active) {
 | 
						private static ContentValues createFingerprintStatusContentValues(FingerprintStatus.Trust trust, boolean active) {
 | 
				
			||||||
@ -706,7 +720,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	public Cursor getMessageSearchCursor(String term) {
 | 
						public Cursor getMessageSearchCursor(String term) {
 | 
				
			||||||
		SQLiteDatabase db = this.getReadableDatabase();
 | 
							SQLiteDatabase db = this.getReadableDatabase();
 | 
				
			||||||
		String SQL = "SELECT "+Message.TABLENAME+".*,"+Conversation.TABLENAME+'.'+Conversation.CONTACTJID+','+Conversation.TABLENAME+'.'+Conversation.ACCOUNT+','+Conversation.TABLENAME+'.'+Conversation.MODE+" FROM "+Message.TABLENAME +" join "+Conversation.TABLENAME+" on "+Message.TABLENAME+'.'+Message.CONVERSATION+'='+Conversation.TABLENAME+'.'+Conversation.UUID+" where "+Message.ENCRYPTION+" NOT IN("+Message.ENCRYPTION_AXOLOTL_NOT_FOR_THIS_DEVICE+','+Message.ENCRYPTION_PGP+','+Message.ENCRYPTION_DECRYPTION_FAILED+") AND "+Message.BODY +" LIKE ? ORDER BY "+Message.TIME_SENT+" DESC limit "+Config.MAX_SEARCH_RESULTS;
 | 
							String SQL = "SELECT "+Message.TABLENAME+".*,"+Conversation.TABLENAME+'.'+Conversation.CONTACTJID+','+Conversation.TABLENAME+'.'+Conversation.ACCOUNT+','+Conversation.TABLENAME+'.'+Conversation.MODE+" FROM "+Message.TABLENAME +" join "+Conversation.TABLENAME+" on "+Message.TABLENAME+'.'+Message.CONVERSATION+'='+Conversation.TABLENAME+'.'+Conversation.UUID+" join messages_index ON messages_index.uuid=messages.uuid where "+Message.ENCRYPTION+" NOT IN("+Message.ENCRYPTION_AXOLOTL_NOT_FOR_THIS_DEVICE+','+Message.ENCRYPTION_PGP+','+Message.ENCRYPTION_DECRYPTION_FAILED+") AND messages_index.body MATCH ? ORDER BY "+Message.TIME_SENT+" DESC limit "+Config.MAX_SEARCH_RESULTS;
 | 
				
			||||||
		return db.rawQuery(SQL,new String[]{'%'+term+'%'});
 | 
							return db.rawQuery(SQL,new String[]{'%'+term+'%'});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user