Opened 7 years ago

Last modified 6 years ago

#8952 new defect

Plugin not working due to table schema constraints

Reported by: mrctrevisan Owned by: yosiyuki
Priority: normal Component: BookmarkPlugin
Severity: major Keywords:
Cc: Ryan J Ollos Trac Release: 0.12


Hi all,

I downloaded, created the egg file and uploaded it to my Trac 0.12 instance (using postgresql 8.3, python 2.5 on linux debian lenny).

I then run "trac-admin trac-env-path update" as suggested by the plugin's post install message and added to my trac user the bookmark related privileges.

When I tried to add a bookmark, the "*" link was apparently inactive (when pressed it did nothing), so I wasn't able to add a bookmark.

After some investigation (i.e. open the "*" link target into a new page and see Postgresql complaining about the "name" column being not null but a null value is supplied) I finally found out that the table "bookmarks" has a pk made of 3 columns:

trac=# \d bookmarks
  Table "public.bookmarks"
  Column  | Type | Modifiers 
 resource | text | not null
 name     | text | not null
 username | text | not null
    "bookmarks_pk" PRIMARY KEY, btree (resource, name, username)

but the plugin's code on insert is as follows:

    def set_bookmark(self, req, resource):
        """Bookmark a resource."""
#        resource = self.normalise_resource(resource)
        if self.get_bookmark(req, resource):

        db = self.env.get_db_cnx()
        cursor = db.cursor()
        cursor.execute('INSERT INTO bookmarks (resource, username) '
                       'VALUES (%s, %s)',
                       (resource, get_reporter_id(req)))

If I run the following SQL script, the plugin starts working as expected:

alter TABLE bookmarks drop constraint bookmarks_pk;
alter TABLE bookmarks add primary key (resource,username);
alter table bookmarks ALTER name DROP not null;

The plugin code doesn't seem to be up to date with the table design, or the table design seems too strongly constrained.



Attachments (0)

Change History (2)

comment:1 Changed 6 years ago by Ryan J Ollos

Cc: Ryan J Ollos added; anonymous removed

comment:2 Changed 6 years ago by Jun Omae

(In [11901]) bookmarkplugin: refs #8952, workaround, uses empty string instead of NULL for name column when inserting bookmarks record

Modify Ticket

Change Properties
Set your email in Preferences
as new The owner will remain yosiyuki.

Add Comment

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

Note: See TracTickets for help on using tickets.