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

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 .
as The resolution will be set. Next status will be 'closed'.
to The owner will be changed from coderanger. Next status will be 'closed'.
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.