Modify

Opened 5 years ago

Closed 5 years ago

#6378 closed defect (duplicate)

[patch] Cannot view tickets with MasterTickets plugin installed when using postgres

Reported by: erne.castro@… Owned by: coderanger
Priority: normal Component: MasterTicketsPlugin
Severity: critical Keywords: Postgres
Cc: theyranos@… Trac Release: 0.11

Description

I get this traceback when trying to view a ticket with MasterTicket plugin installed using postgres 8.4 as db backend.

Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.11-py2.6.egg/trac/web/api.py", line 339, in send_error
    'text/html')
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.11-py2.6.egg/trac/web/chrome.py", line 699, in render_template
    stream |= self._filter_stream(req, method, filename, stream, data)
  File "build/bdist.linux-x86_64/egg/genshi/core.py", line 128, in __or__
    return Stream(_ensure(function(self)), serializer=self.serializer)
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.11-py2.6.egg/trac/web/chrome.py", line 802, in inner
    data)
  File "build/bdist.linux-x86_64/egg/ticketguidelines/web_ui.py", line 190, in filter_stream
    stream = stream | Transformer('//form[@id="propertyform"]/h3[1]').after(_get_wiki_html(self.env, data, False))
  File "build/bdist.linux-x86_64/egg/ticketguidelines/web_ui.py", line 66, in _get_wiki_html
    page = WikiPage(env, wiki_page)
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.11-py2.6.egg/trac/wiki/model.py", line 43, in __init__
    self._fetch(name, version, db)
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.11-py2.6.egg/trac/wiki/model.py", line 64, in _fetch
    (name,))
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.11-py2.6.egg/trac/db/util.py", line 50, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.11-py2.6.egg/trac/db/util.py", line 50, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
InternalError: current transaction is aborted, commands ignored until end of transaction block

I trace the error and it is a implict cast that postgres does not allow in this lines:

        cursor = db.cursor()

        cursor.execute('SELECT dest FROM mastertickets WHERE source=%s ORDER BY dest', (self.tkt.id,))
        self.blocking = set([num for num, in cursor])
        self._old_blocking = copy.copy(self.blocking)

        cursor.execute('SELECT source FROM mastertickets WHERE dest=%s ORDER BY source', (self.tkt.id,))
        self.blocked_by = set([num for num, in cursor])

I fix it with this patch:

  • mastertickets/model.py

     
    1919        db = db or self.env.get_db_cnx()
    2020        cursor = db.cursor()
    2121
    22         cursor.execute('SELECT dest FROM mastertickets WHERE source=%s ORDER BY dest', (self.tkt.id,))
     22        cursor.execute("SELECT dest FROM mastertickets WHERE source='%s' ORDER BY dest", (self.tkt.id,))
    2323        self.blocking = set([num for num, in cursor])
    2424        self._old_blocking = copy.copy(self.blocking)
    2525
    26         cursor.execute('SELECT source FROM mastertickets WHERE dest=%s ORDER BY source', (self.tkt.id,))
     26        cursor.execute("SELECT source FROM mastertickets WHERE dest='%s' ORDER BY source", (self.tkt.id,))
    2727        self.blocked_by = set([num for num, in cursor])
    2828        self._old_blocked_by = copy.copy(self.blocked_by)

Attachments (0)

Change History (3)

comment:1 Changed 5 years ago by anonymous

  • Summary changed from Cannot view tickets with MasterTickets plugin installed when using postgres to [patch] Cannot view tickets with MasterTickets plugin installed when using postgres

Here's a (potentially) better patch for this ticket, which sets the types in the database correctly in the first place when you run trac-admin . upgrade

===================================================================
--- 0.11/mastertickets/db_default.py    (revision 7381)
+++ 0.11/mastertickets/db_default.py    (working copy)
@@ -7,7 +7,7 @@
 version = 1
 tables = [
     Table('mastertickets', key=('source','dest'))[
-        Column('source'),
-        Column('dest'),
+        Column('source', type='integer'),
+        Column('dest', type='integer'),
     ],
-]
\ No newline at end of file
+]

comment:2 Changed 5 years ago by theyranos@…

  • Cc theyranos@… added; anonymous removed

comment:3 Changed 5 years ago by anonymous

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

This is a duplicate of #2658

Add Comment

Modify Ticket

Action
as closed The owner will remain coderanger.
The resolution will be deleted. Next status will be 'reopened'.
Author


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

 
Note: See TracTickets for help on using tickets.