Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#1540 closed defect (fixed)

topic and message Trac links fail on postgresql

Reported by: kevinthomas Owned by: Blackhex
Priority: high Component: DiscussionPlugin
Severity: critical Keywords:
Cc: Trac Release: 0.10

Description (last modified by athomas)

The topic and message Trac links don't work on an installation of Trac using Postgresql. Any page that contains these links generates the following error:

Traceback (most recent call last):
  File "C:\Python24\lib\site-packages\trac\web\", line 387, in dispatch_request
  File "C:\Python24\lib\site-packages\trac\web\", line 237, in dispatch
    resp = chosen_handler.process_request(req)
  File "C:\Python24\lib\site-packages\trac\ticket\", line 302, in process_request
    get_reporter_id(req, 'author'))
  File "C:\Python24\lib\site-packages\trac\ticket\", line 625, in _insert_ticket_data
    change['comment'] = wiki_to_html(comment, self.env, req, db)
  File "C:\Python24\lib\site-packages\trac\wiki\", line 999, in wiki_to_html
    Formatter(env, req, absurls, db).format(wikitext, out, escape_newlines)
  File "C:\Python24\lib\site-packages\trac\wiki\", line 822, in format
    result = re.sub(, self.replace, line)
  File "C:\Python24\Lib\", line 142, in sub
    return _compile(pattern, 0).sub(repl, string, count)
  File "C:\Python24\lib\site-packages\trac\wiki\", line 768, in replace
    replacement = self.handle_match(fullmatch)
  File "C:\Python24\lib\site-packages\trac\wiki\", line 764, in handle_match
    return internal_handler(match, fullmatch)
  File "C:\Python24\lib\site-packages\trac\wiki\", line 342, in _shref_formatter
    return self._make_link(ns, target, match, match)
  File "C:\Python24\lib\site-packages\trac\wiki\", line 369, in _make_link
    escape(label, False))
  File "build\bdist.win32\egg\tracdiscussion\", line 111, in _discussion_link
  File "C:\Python24\lib\site-packages\trac\db\", line 50, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
  File "C:\Python24\lib\site-packages\trac\db\", line 50, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
ProgrammingError: column "forum.subject" must appear in the GROUP BY clause or be used in an aggregate function

I've given this a high priority and severity because this bug causes all pages containing these links to crash, and if these Trac links are used in a ticket comment, then there is no way to view that ticket again.

Attachments (0)

Change History (4)

comment:1 Changed 10 years ago by kevinthomas

The problem appears to be in the following SQL for generating the topic link in source:discussionplugin/0.10/tracdiscussion/

SELECT, f.subject, t.subject FROM topic t
LEFT JOIN (SELECT subject, id FROM forum GROUP BY id) f
ON = WHERE = %s

Postgresql doesn't like the GROUP BY clause unless there is a composite function on all other fields in the SELECT clause.

Is there a good reason as to why this couldn't be simplified to:

SELECT, f.subject, t.subject FROM topic t
LEFT JOIN forum f
ON = WHERE = %s


This would work across all database back ends.

There is a similar problem in the SQL for generating the message link.

comment:2 Changed 10 years ago by Blackhex

  • Resolution set to fixed
  • Status changed from new to closed

Please check if 2236 works on your PostreSQL installation, it does on mine.

comment:3 Changed 10 years ago by kevinthomas

Yes, the latest download works fine.

Thanks very much for fixing this so quickly- that was an impressive response time!:-)

comment:4 Changed 10 years ago by athomas

  • Description modified (diff)

Add Comment

Modify Ticket

as closed The owner will remain Blackhex.
The resolution will be deleted. Next status will be 'reopened'.

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.