Skip site navigation (1) Skip section navigation (2)

Re: trivial refactoring of WaitOnLock

From: Russell Smith <mr-russ(at)pws(dot)com(dot)au>
To: "Qingqing Zhou" <zhouqq(at)cs(dot)toronto(dot)edu>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: trivial refactoring of WaitOnLock
Date: 2005-03-09 09:08:08
Message-ID: 200503092008.09109.mr-russ@pws.com.au (view raw or flat)
Thread:
Lists: 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(at)samurai(dot)com> ???? news:422E3EAC(dot)9000403(at)samurai(dot)com(dot)(dot)(dot)
> > 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(at)postgresql(dot)org)
> >
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
>                http://archives.postgresql.org
> 
> 

In response to

Responses

pgsql-patches by date

Next:From: Qingqing ZhouDate: 2005-03-09 09:53:41
Subject: Re: trivial refactoring of WaitOnLock
Previous:From: Qingqing ZhouDate: 2005-03-09 07:42:55
Subject: Re: trivial refactoring of WaitOnLock

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group