Patch #33290

Stop DB access when IssueQuery class is defined

Added by Kevin Fischer 3 months ago. Updated 3 months ago.

Status:NewStart date:
Priority:NormalDue date:
Assignee:-% Done:


Target version:-


During plugin development I found out that the definition of the Query class accesses the database just by being defined.

The reason for this is the `groupable` method in the `TimestampQueryColumn` class which tries to access the current user.

This method is called during the constructor (which is called in the query column definitions in the class body of IssueQuery)

Why is this a problem?

In case your database is not yet created and/or migrated, any source code which just references the IssueQuery class will raise an exception since it cannot find the database/table.

And in general I think it's not good to access the database just by defining a class.


I attached a patch which also acts as a code cleanup/refactoring. It moves the group by statement into its own method. Before the boolean property `groupable` was just redefined to contain the group by statement as well, which was confusing in the first place in my opinion.

I ran all tests locally and they passed.

0001-stop-db-access-on-class-definition.patch Magnifier (1.65 KB) Kevin Fischer, 2020-04-15 10:44

Related issues

Related to Redmine - Feature #2679: Ticket grouping Closed 2009-02-05
Related to Redmine - Feature #13803: Implement grouping issues by date (start, due, creation, ... Closed


#1 Updated by Go MAEDA 3 months ago

#2 Updated by Kevin Fischer 3 months ago

This only happens from Redmine 4.1 by the way.

The commit bringing the change was r17724

#3 Updated by Alexander Meindl 3 months ago

I can confirm this problem with Redmine 4.1. It is very difficult to test plugins with the bug.

#4 Updated by Go MAEDA 3 months ago

  • Related to Feature #13803: Implement grouping issues by date (start, due, creation, update, closing dates) added

Also available in: Atom PDF