self ordering list

From: "Bryan Wilkerson" <bryan(at)liquidplanner(dot)com>
To: <pgsql-general(at)postgresql(dot)org>
Subject: self ordering list
Date: 2007-12-21 20:19:51
Message-ID: 7A1142AE1A26C045BD65DAFF79163FC3445401@MAIL093.mail.lan
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


Hello to all. I'm new to the list and have only been engineering on postgresql for about a year. I have solved some neat problems in that time and will gladly give back to the community. I'll try to contribute as much as startup time permits.

My first question concerns self ordering lists. Basically, a numeric column that automatically maintains an order but allows arbitrary reordering by the user. For example, a media playlist or the priority of workitems within a parent container ;) This seems like a common pattern.

priority | workitem
---------+-----------
1 | task 1
2 | task 2
3 | task 3
4 | task 4
5 | task 5

Insert a new task with priority==2 and...

update tablename set priority=priority+1 where priority >= 2

delete task with priority==2 and...

update tablename set priority=priority-1 where priority > 2

reorder task with priority==2, set its priority=4

update tablename set priority=priority+1 where priority >= 4
update tablename set priority=priority-1 where priority > 2 and priority < 4

etc....

I've implemented in my model code but it has some deadlock issues and I really strongly have believed all along that this belongs in the db anyway. Implementing the above with triggers is a tricky problem because the trigger would key off the priority change and the successive updates would recusively trigger.

Instead of trying to update all the rows affected you could instead just update the successive row and let a trigger chain reaction take care of updating all the rows. I've implemented this it also has issues that I'm not sure are entirely mine.

I'll break out and upload a sample case of the issues but before I do can any point me to any publication on implementing this basic pattern with postgres and plpgsql.

Thanks,

-bryan

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Alvaro Herrera 2007-12-21 20:33:22 Re: FK creation -- "ON DELETE NO ACTION" seems to be a no-op
Previous Message Webb Sprague 2007-12-21 19:22:09 FK creation -- "ON DELETE NO ACTION" seems to be a no-op