Modify ↓
Opened 17 years ago
Last modified 13 years ago
#4214 new defect
Downloader broken on postgres 8.3 - integer to string cast
| Reported by: | Owned by: | Petr Škoda | |
|---|---|---|---|
| Priority: | high | Component: | TracDownloaderPlugin |
| Severity: | normal | Keywords: | postgres 8.3 |
| Cc: | Trac Release: | 0.11 |
Description
The downloader seems to be broken on trac instances run w/ postgres as the backend. I have experienced the following issues:
Trac detected an internal error:
OperationalError: ERROR: operator does not exist: text = integer
LINE 1: SELECT id FROM downloader_release WHERE category=2 AND delet...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
File "/usr/lib/python2.5/site-packages/trac/web/main.py", line 423, in _dispatch_request
dispatcher.dispatch(req)
File "/usr/lib/python2.5/site-packages/trac/web/main.py", line 197, in dispatch
resp = chosen_handler.process_request(req)
File "/usr/lib/python2.5/site-packages/trac/admin/web_ui.py", line 118, in process_request
path_info)
File "build/bdist.linux-x86_64/egg/tracdownloader/admin.py", line 141, in process_admin_request
File "build/bdist.linux-x86_64/egg/tracdownloader/admin.py", line 186, in _serve_files_admin
File "build/bdist.linux-x86_64/egg/tracdownloader/model.py", line 133, in render_downloads_table
File "build/bdist.linux-x86_64/egg/tracdownloader/model.py", line 377, in get_releases
File "/usr/lib/python2.5/site-packages/trac/db/util.py", line 50, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
File "/usr/lib/python2.5/site-packages/trac/db/util.py", line 50, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
File "/usr/lib/python2.5/site-packages/pyPgSQL/PgSQL.py", line 3111, in execute
raise OperationalError, msg
The problem is that the category column in downloader_release table has an incorrect type. Maybe, it should be fixed globally and column datatype should be changed to 'integer'. The same issue occurs when accessing the downloader_file table on release column.
I am attaching a temporary fix that explicitely converts the id's used in select to strings, so that the value gets enclosed into quotes when generating the sql query. Postgres won't do any implicit casts anymore.
Thanks,
Jan
Attachments (1)
Note: See
TracTickets for help on using
tickets.



A temporary workaround for trac running on postgres 8.3. Explicit conversion of integer to string so that the value matches its column type.