Re: trivial refactoring of WaitOnLock - Mailing list pgsql-patches

From Russell Smith
Subject Re: trivial refactoring of WaitOnLock
Date
Msg-id 200503092008.09109.mr-russ@pws.com.au
Whole thread Raw
In response to Re: trivial refactoring of WaitOnLock  ("Qingqing Zhou" <zhouqq@cs.toronto.edu>)
Responses Re: trivial refactoring of WaitOnLock  (Neil Conway <neilc@samurai.com>)
List pgsql-patches
If the problem is speed, then this may be faster.


Index: src/backend/storage/lmgr/lock.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v
retrieving revision 1.147
diff -c -r1.147 lock.c
*** src/backend/storage/lmgr/lock.c     1 Mar 2005 21:14:59 -0000       1.147
--- src/backend/storage/lmgr/lock.c     9 Mar 2005 08:17:33 -0000
***************
*** 1074,1079 ****
--- 1074,1080 ----
                   ResourceOwner owner)
  {
        LockMethod      lockMethodTable = LockMethods[lockmethodid];
+       int                len;
        char       *new_status,
                           *old_status;

***************
*** 1083,1091 ****
                           locallock->lock, locallock->tag.mode);

        old_status = pstrdup(get_ps_display());
!       new_status = (char *) palloc(strlen(old_status) + 10);
        strcpy(new_status, old_status);
!       strcat(new_status, " waiting");
        set_ps_display(new_status);

        awaitedLock = locallock;
--- 1084,1093 ----
                           locallock->lock, locallock->tag.mode);

        old_status = pstrdup(get_ps_display());
!       len = strlen(old_status);
!       new_status = (char *) palloc(len + 9);
        strcpy(new_status, old_status);
!       strcpy(&new_status[len], " waiting");
        set_ps_display(new_status);

        awaitedLock = locallock;









On Wed, 9 Mar 2005 06:42 pm, Qingqing Zhou wrote:
> off-by-one is true, but I am not sure if the revised code is faster.
> sprintf() need the extra job to parse the format. In win32, I am sure it is
> much slower.
>
> "Neil Conway" <neilc@samurai.com> ???? news:422E3EAC.9000403@samurai.com...
> > This patch refactors some code in WaitOnLock slightly. The old code was
> > slow, and I believe it was off-by-one (it allocates one byte of memory
> > more than needed).
> >
> > Barring any objections I'll apply this to HEAD later today.
> >
> > -Neil
> >
>
>
> ----------------------------------------------------------------------------
> ----
>
>
> > Index: src/backend/storage/lmgr/lock.c
> > ===================================================================
> > RCS file: /var/lib/cvs/pgsql/src/backend/storage/lmgr/lock.c,v
> > retrieving revision 1.147
> > diff -c -r1.147 lock.c
> > *** src/backend/storage/lmgr/lock.c 1 Mar 2005 21:14:59 -0000 1.147
> > --- src/backend/storage/lmgr/lock.c 8 Mar 2005 05:42:06 -0000
> > ***************
> > *** 1076,1081 ****
> > --- 1076,1082 ----
> >   LockMethod lockMethodTable = LockMethods[lockmethodid];
> >   char    *new_status,
> >      *old_status;
> > + size_t len;
> >
> >   Assert(lockmethodid < NumLockMethods);
> >
> > ***************
> > *** 1083,1091 ****
> >      locallock->lock, locallock->tag.mode);
> >
> >   old_status = pstrdup(get_ps_display());
> > ! new_status = (char *) palloc(strlen(old_status) + 10);
> > ! strcpy(new_status, old_status);
> > ! strcat(new_status, " waiting");
> >   set_ps_display(new_status);
> >
> >   awaitedLock = locallock;
> > --- 1084,1092 ----
> >      locallock->lock, locallock->tag.mode);
> >
> >   old_status = pstrdup(get_ps_display());
> > ! len = strlen(old_status);
> > ! new_status = (char *) palloc(len + 8 + 1);
> > ! sprintf(new_status, "%s waiting", old_status);
> >   set_ps_display(new_status);
> >
> >   awaitedLock = locallock;
> >
>
>
> ----------------------------------------------------------------------------
> ----
>
>
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> >     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
> >
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org
>
>

pgsql-patches by date:

Previous
From: "Qingqing Zhou"
Date:
Subject: Re: trivial refactoring of WaitOnLock
Next
From: "Qingqing Zhou"
Date:
Subject: Re: trivial refactoring of WaitOnLock