← Back to team overview

launchpad-dev team mailing list archive

Re: Displaying work items in the correct order

 

On Fri, Feb 17, 2012 at 2:56 AM, Guilherme Salgado
<guilherme.salgado@xxxxxxxxxx> wrote:
> On 16/02/12 00:12, Robert Collins wrote:
>> You could use a list (e.g. rather than sequence, have a next pointer
>> pointing at the id of the next WI; you'd only need to update 2 rows to
>> do an in-middle insert.
>
> Oh, of course, maybe I'd have thought of that if I hadn't constrained
> myself to the existing DB schema.
>
>>
>> OTOH updating a dozen is one sql statement (done carefully) and will be fast.
>>
>
> Is there a way to update values in multiple rows without using a fixed
> function applied on the existing value of all rows? (e.g. we might need
> to add 1 to the sequence of one row and 2 to the sequence of another)?
> I guess I could do something like "i+1 if i<5; i+2 if i>=5" but that
> doesn't sound nice as we'd have to figure out the equation on every update.
>
> There's also the chance that the user updated the
> status/assignee/milestone of one of those rows, which would make the
> code even more complicated if we wanted to batch it as well (can we even
> do it?), so it's starting to feel like the best alternative is to
> actually keep the code simple and let it issue as many updates as
> necessary, which won't be that many even when all rows are changed.

Do any object updates you have, excluding new rows; store.flush().
Issue an update with (IIRC) using to select the field value - and you
can just supply a lookup map with a little shoving, or yes, a
formula). [look at the multi-table support for UPDATE].

-Rob


References