On Thu, Sep 17, 2015 at 5:38 PM, Andres Freund <and...@anarazel.de> wrote:
> On 2015-09-17 14:35:20 +0300, Alexander Korotkov wrote: > > while exploring lwlock.c I found following macro to be strange. > > > > #define LW_SHARED_MASK ((uint32)(1 << 23)) > > > > This is macro is used to extract number of shared locks from state. > > > > ereport(LOG, > > (errhidestmt(true), > > errhidecontext(true), > > errmsg("%d: %s(%s): excl %u shared %u haswaiters %u waiters %u rOK %d", > > MyProcPid, > > where, MainLWLockNames[id], > > !!(state & LW_VAL_EXCLUSIVE), > > state & LW_SHARED_MASK, > > !!(state & LW_FLAG_HAS_WAITERS), > > pg_atomic_read_u32(&lock->nwaiters), > > !!(state & LW_FLAG_RELEASE_OK)))); > > > > > > Should it be ((uint32) ((1 << 24)-1)) instead? > > Argh, that's somewhat embarassing. You're absolutely right. Luckily it's > only used for LOCK_DEBUG, but still... > Great. BTW, are you going to commit this? ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company