My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 1427: status query cannot be used with OR
8 people starred this issue and may be notified of changes. Back to list
Status:  Accepted
Owner:  ----


Sign in to add a comment
 
Reported by org...@gmail.com, Jun 7, 2012
status:open OR owner:user returns only status:open results, any query of the form (<query>) or status:<status> fails.

[2012-06-07 11:26:03,862] WARN  /review : Error in allQueryNext
com.google.gwtorm.server.OrmException: No ChangeDataSource: status:merged
	at com.google.gerrit.server.query.change.OrSource.read(OrSource.java:49)
	at com.google.gerrit.server.query.change.AndSource.read(AndSource.java:94)
	at com.google.gerrit.httpd.rpc.ChangeListServiceImpl.searchQuery(ChangeListServiceImpl.java:171)
	at com.google.gerrit.httpd.rpc.ChangeListServiceImpl.access$100(ChangeListServiceImpl.java:57)
	at com.google.gerrit.httpd.rpc.ChangeListServiceImpl$6.query(ChangeListServiceImpl.java:138)
	at com.google.gerrit.httpd.rpc.ChangeListServiceImpl$QueryNext.run(ChangeListServiceImpl.java:349)
	at com.google.gerrit.httpd.rpc.ChangeListServiceImpl$QueryNext.run(ChangeListServiceImpl.java:331)
	at com.google.gerrit.httpd.rpc.BaseServiceImplementation.run(BaseServiceImplementation.java:63)
	at com.google.gerrit.httpd.rpc.ChangeListServiceImpl.allQueryNext(ChangeListServiceImpl.java:134)
	at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.google.gwtjsonrpc.server.MethodHandle.invoke(MethodHandle.java:91)
	at com.google.gwtjsonrpc.server.JsonServlet.doService(JsonServlet.java:379)
	at com.google.gwtjsonrpc.server.JsonServlet.service(JsonServlet.java:265)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:76)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.gerrit.httpd.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:54)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:473)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:921)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:403)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:856)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114)
	at org.eclipse.jetty.server.Server.handle(Server.java:352)
	at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596)
	at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1069)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
	at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450)
	at java.lang.Thread.run(Unknown Source)

Jun 7, 2012
#1 org...@gmail.com
That should have been '(<query>) OR status:<status>'
Jun 7, 2012
#2 org...@gmail.com
Same for is:watched OR <something>
Jun 7, 2012
#3 sop@google.com
In the case of "status:open OR owner:user" the server needs to perform two index scans, one over status:open (which it apparently was able to do ) and another over "owner:user". There isn't really an index over just owner, status leads owner in the index if I remember correctly so the server defaults to using only the open changes for the owner... effectively rewriting the query to be "status:open OR (status:open owner:user)".

"No ChangeDataSource: status:merged"... this is the server saying it can't figure out how to traverse through the merged changes without other operators to assist it in selecting an index on the changes table.

Change search is limited to only the indexes the server knows about in the database, and some limited permutations of them where one index is used as the driver for the query, and the server filters the remainder of the results in RAM after they come back from the database. Until Gerrit moves to a full text index, what you can express in a query will be limited.
Status: Accepted
Feb 26, 2013
Project Member #4 bklarson@gmail.com
 Issue 1807  has been merged into this issue.
Aug 19, 2014
#5 pedah...@gmail.com
We are seeing this in 2.8.5. We get a server error with this query:

http://review.whamcloud.com/#/q/%28%28is:open+AND+project:fs/lustre-release%29+OR+%28is:closed+AND+project:fs/lustre-release%29%29+AND+message:%22LU-56+%22+AND+-status:abandoned,n,z

[2014-08-19 18:24:17,250] ERROR com.google.gerrit.httpd.restapi.RestApiServlet : Error in GET /changes/?q=((is:open+AND+project:fs/lustre-release)+OR+(is:closed+AND+project:fs/lustre-release))+AND+message:%22LU-56+%22+AND+-status:abandoned&n=100&O=1
com.google.gwtorm.server.OrmException: No ChangeDataSource: status:new

Sign in to add a comment

Powered by Google Project Hosting