Opened 17 years ago
Closed 12 years ago
#3677 closed defect (fixed)
Database operations fail with PostgreSQL 8.3
| Reported by: | Owned by: | Steffen Hoffmann | |
|---|---|---|---|
| Priority: | normal | Component: | TagsPlugin |
| Severity: | normal | Keywords: | postgresql text cast |
| Cc: | Ryan J Ollos, Michael Renzmann | Trac Release: | 0.11 |
Description
As of PostgreSQL, many automatic casts to text were removed. See the release notes. A symptom is the following error I received:
ProgrammingError: operator does not exist: text = integer
LINE 1: DELETE FROM tags WHERE tagspace=E'screenshots' AND name=3
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Traceback:
Most recent call last:
* File "/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/web/main.py", line 423, in _dispatch_request
Code fragment:
418. try:
419. if not env and env_error:
420. raise HTTPInternalError(env_error)
421. try:
422. dispatcher = RequestDispatcher(env)
423. dispatcher.dispatch(req)
424. except RequestDone:
425. pass
426. resp = req._response or []
427.
428. except HTTPException, e:
Local variables:
Name Value
after [u' except RequestDone:', u' pass', u' resp = ...
before [u' try:', u' if not env and env_error:', u' raise ...
dispatcher <trac.web.main.RequestDispatcher object at 0x8058f7c90>
e ProgrammingError("operator does not exist: text = integer\nLINE 1: DELETE ...
env <trac.env.Environment object at 0x803d0e310>
env_error None
exc_info (<class 'psycopg2.ProgrammingError'>, ProgrammingError("operator does not ...
filename '/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/web/main.p ...
frames [{'function': '_dispatch_request', 'lines_before': [u' try:', u' ...
has_admin True
line u' dispatcher.dispatch(req)'
lineno 422
message u"ProgrammingError: operator does not exist: text = integer\nLINE 1: ...
req <Request "POST u'/screenshots'">
resp []
tb <traceback object at 0x809623cb0>
tb_hide None
traceback 'Traceback (most recent call last):\n File ...
* File "/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/web/main.py", line 197, in dispatch
Code fragment:
192. req.args.get('__FORM_TOKEN') != req.form_token:
193. raise HTTPBadRequest('Missing or invalid form token. '
194. 'Do you have cookies enabled?')
195.
196. # Process the request and render the template
197. resp = chosen_handler.process_request(req)
198. if resp:
199. if len(resp) == 2: # Clearsilver
200. chrome.populate_hdf(req)
201. template, content_type = \
202. self._post_process_request(req, *resp)
Local variables:
Name Value
chosen_handler <tracscreenshots.core.ScreenshotsCore object at 0x805d46410>
chrome <trac.web.chrome.Chrome object at 0x8058e6c10>
ctype 'multipart/form-data'
err (<class 'psycopg2.ProgrammingError'>, ProgrammingError("operator does not ...
handler <tracscreenshots.core.ScreenshotsCore object at 0x805d46410>
options {'boundary': '---------------------------1687091515871393671656955613'}
req <Request "POST u'/screenshots'">
self <trac.web.main.RequestDispatcher object at 0x8058f7c90>
* File "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tracscreenshots/core.py", line 127, in process_request
Local variables:
Name Value
actions ['post-add', 'view']
context <Context <Resource 'screenshots-core'>>
db <trac.db.pool.PooledConnection object at 0x8096123f8>
req <Request "POST u'/screenshots'">
self <tracscreenshots.core.ScreenshotsCore object at 0x805d46410>
* File "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tracscreenshots/core.py", line 338, in _do_actions
Local variables:
Name Value
action 'post-add'
actions ['post-add', 'view']
api <tracscreenshots.api.ScreenshotsApi object at 0x808d1bbd0>
components []
context <Context <Resource 'screenshots-core'>>
ext u'.jpg'
file <open file '<fdopen>', mode 'w+b' at 0x809429d50>
filename u'signet.jpg'
filepath u'/usr/local/svn/trac/screenshots/3/signet-1024x721.jpg'
image <JpegImagePlugin.JpegImageFile instance at 0x80914bd40>
listener <tracscreenshots.tags.ScreenshotsTags object at 0x809655650>
name u'signet'
out_file <closed file u'/usr/local/svn/trac/screenshots/3/signet-1024x721.jpg', ...
path u'/usr/local/svn/trac/screenshots/3'
reg <_sre.SRE_Pattern object at 0x809452108>
result <_sre.SRE_Match object at 0x80951c8b0>
screenshot {'description': u'', 'author': u'davidb', 'components': [], 'tags': u'', ...
self <tracscreenshots.core.ScreenshotsCore object at 0x805d46410>
versions []
* File "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tracscreenshots/tags.py", line 42, in screenshot_created
Local variables:
Name Value
req <Request "POST u'/screenshots'">
resource <Resource u'screenshots:3'>
screenshot {'description': u'', 'author': u'davidb', 'components': [], 'tags': u'', ...
self <tracscreenshots.tags.ScreenshotsTags object at 0x809655650>
tag_system <tractags.api.TagSystem object at 0x808d1bdd0>
* File "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tractags/api.py", line 226, in delete_tags
Local variables:
Name Value
provider <tracscreenshots.tags.ScreenshotsTagProvider object at 0x809001f90>
req <Request "POST u'/screenshots'">
resource <Resource u'screenshots:3'>
self <tractags.api.TagSystem object at 0x808d1bdd0>
tags None
* File "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tractags/api.py", line 150, in remove_resource_tags
Local variables:
Name Value
cursor <trac.db.util.IterableCursor object at 0x80964ebe8>
db <trac.db.pool.PooledConnection object at 0x80918a830>
req <Request "POST u'/screenshots'">
resource <Resource u'screenshots:3'>
self <tracscreenshots.tags.ScreenshotsTagProvider object at 0x809001f90>
* File "/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/db/util.py", line 50, in execute
Code fragment:
45. def execute(self, sql, args=None):
46. # -- In case of SQL errors, uncomment the following 'print' statements
47. # print 'execute', repr(sql)
48. if args:
49. # print repr(args)
50. return self.cursor.execute(sql_escape_percent(sql), args)
51. return self.cursor.execute(sql)
52.
53. def executemany(self, sql, args=None):
54. # print 'executemany', repr(sql)
55. if args:
Local variables:
Name Value
args ('screenshots', 3)
self <trac.db.util.IterableCursor object at 0x80964ebe8>
sql 'DELETE FROM tags WHERE tagspace=%s AND name=%s'
* File "/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/db/util.py", line 50, in execute
Code fragment:
45. def execute(self, sql, args=None):
46. # -- In case of SQL errors, uncomment the following 'print' statements
47. # print 'execute', repr(sql)
48. if args:
49. # print repr(args)
50. return self.cursor.execute(sql_escape_percent(sql), args)
51. return self.cursor.execute(sql)
52.
53. def executemany(self, sql, args=None):
54. # print 'executemany', repr(sql)
55. if args:
Local variables:
Name Value
args ('screenshots', 3)
self <trac.db.util.IterableCursor object at 0x809449328>
sql 'DELETE FROM tags WHERE tagspace=%s AND name=%s'
File "/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/web/main.py", line 423, in _dispatch_request
dispatcher.dispatch(req)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/web/main.py", line 197, in dispatch
resp = chosen_handler.process_request(req)
File "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tracscreenshots/core.py", line 127, in process_requestFile "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tracscreenshots/core.py", line 338, in _do_actionsFile "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tracscreenshots/tags.py", line 42, in screenshot_createdFile "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tractags/api.py", line 226, in delete_tagsFile "build/bdist.freebsd-7.0-RELEASE-amd64/egg/tractags/api.py", line 150, in remove_resource_tagsFile "/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/db/util.py", line 50, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/trac/db/util.py", line 50, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
System Information:
User Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 Trac: 0.11 Python: 2.5.2 (r252:60911, Jun 11 2008, 10:11:18) [GCC 4.2.1 20070719 [FreeBSD]] setuptools: 0.6c8 psycopg2: 2.0.7 Genshi: 0.5.1 Pygments: 0.11.1 Subversion: 1.5.1 (r32289) SilverCity: 0.9.7 jQuery: 1.2.3
Attachments (1)
Change History (7)
comment:1 Changed 17 years ago by
Changed 17 years ago by
| Attachment: | tractags-postgresql83.patch added |
|---|
Patch to use to_unicode for any instance of the tag "name" attribute.
comment:2 Changed 16 years ago by
| Owner: | changed from Alec Thomas to Michael Renzmann |
|---|
Hmm, has this problem been fixed meanwhile? I'm runnung v0.6 of the plugin along with Trac 0.11.6 and PostgreSQL 8.3.9 on Debian Lenny, and I didn't spot any issues related to the tags plugin.
Can you please confirm that it still exists?
comment:3 Changed 15 years ago by
I am also using TagsPlugin with 0.12-stable and PostgreSQL 8.4 and do not have any issues. Closing as I believe this is fixed in the trunk branch of tags. I think this issue can be closed.
comment:4 Changed 14 years ago by
| Cc: | Ryan J Ollos Michael Renzmann added; anonymous removed |
|---|---|
| Owner: | changed from Michael Renzmann to Steffen Hoffmann |
I'll do some further checking, but converting to unicode object on first read of tag name would be better than multiple times further down in the process as suggested here.
comment:5 Changed 12 years ago by
As I see now, this ticket's proposed changes have been applied together with other API changes in [13429].



The first sentence should read:
"As of PostgreSQL 8.3, many automatic casts to text were removed."