Fix searching for message

The message search currently looks for an exact match, which is
pretty much never what anyone would want to do, and moreover,
does not match the gerrit documentation.  It should actually
perform a substring match, so switch to using "like %<message>%".

Change-Id: I281d59887de247eb3f3fd508635efa44714fa054
This commit is contained in:
James E. Blair 2015-04-11 14:36:51 -04:00
parent a5eb452f2b
commit b89ae385b7
2 changed files with 2 additions and 2 deletions

@ -62,7 +62,7 @@ class SearchCompiler(object):
if __name__ == '__main__': if __name__ == '__main__':
class Dummy(object): class Dummy(object):
pass pass
query = 'ref:^refs/heads/foo.*' query = 'message:"Blueprint"'
lexer = tokenizer.SearchTokenizer() lexer = tokenizer.SearchTokenizer()
lexer.input(query) lexer.input(query)
while True: while True:

@ -224,7 +224,7 @@ def SearchParser():
'''message_term : OP_MESSAGE string''' '''message_term : OP_MESSAGE string'''
filters = [] filters = []
filters.append(gertty.db.revision_table.c.change_key == gertty.db.change_table.c.key) filters.append(gertty.db.revision_table.c.change_key == gertty.db.change_table.c.key)
filters.append(gertty.db.revision_table.c.message == p[2]) filters.append(gertty.db.revision_table.c.message.like('%%%s%%' % p[2]))
s = select([gertty.db.change_table.c.key], correlate=False).where(and_(*filters)) s = select([gertty.db.change_table.c.key], correlate=False).where(and_(*filters))
p[0] = gertty.db.change_table.c.key.in_(s) p[0] = gertty.db.change_table.c.key.in_(s)