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:

0%

Category:-
Target version:-

Description

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.

https://github.com/redmine/redmine/blob/4.1.1/app/models/query.rb#L89-L93

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

https://github.com/redmine/redmine/blob/4.1.1/app/models/issue_query.rb#L36-L51

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.

Patch

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

History

#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