Re: Bug report: OIDs, roles and Windows (signedness issue?) - Mailing list pgadmin-hackers

From Ian Lawrence Barwick
Subject Re: Bug report: OIDs, roles and Windows (signedness issue?)
Date
Msg-id CAB8KJ=jE6CkQou-PuvQOS6mY5h6aRhAkhwf+TQH3GD_y7xQ5Mw@mail.gmail.com
Whole thread Raw
In response to Re: Bug report: OIDs, roles and Windows (signedness issue?)  (Ian Lawrence Barwick <barwick@gmail.com>)
Responses Re: Bug report: OIDs, roles and Windows (signedness issue?)  (Ian Lawrence Barwick <barwick@gmail.com>)
List pgadmin-hackers
2013/11/22 Ian Lawrence Barwick <barwick@gmail.com>:
>
> 2013/11/22 Ashesh Vashi <ashesh.vashi@enterprisedb.com>
>>
>> On Fri, Nov 22, 2013 at 12:40 PM, Ian Lawrence Barwick <barwick@gmail.com>
>> wrote:
>>>
>>> Hi
>>>
>>> On Windows, if a user role's OID exceeds 256^4/2 - 1 (aka 2147483647),
>>> the OID is displayed as 2147483647 and additional information for that
>>> object
>>> (e.g. ACL information) is not displayed.
>>>
>>> We have verified this happens with pgAdmin3 1.16.0 on Windows 7 and
>>> 1.18.1 on Windows 2012 server. It does not happen on Linux (1.16.1),
>>> where
>>> the OID (FWIW, it's 3794942497) for the role in question displays
>>> correctly as
>>> well as the ACL information.
>>
>> Is it linux (32 bit or 64 bit)?
>
>
> Both Windows and Linux are 64 bit.
>
> BTW other objects (tables, schemas etc.) with OIDs greater than 256^4/2 - 1
> don't seem to be affected by this.

It's been a while since I've looked at the pgAdmin source, but some wild
grepping shows that in:

  pgadmin/schema/pgRole.cpp

the role OID is set with:

 role->iSetOid(roles->GetLong(wxT("oid")));

whereas almost everywhere else it's set with GetOid(), e.g.

 table->iSetOid(tables->GetOid(wxT("oid")));

which may or may not have something to do with the issue.


Regards

Ian Barwick


pgadmin-hackers by date:

Previous
From: Ian Lawrence Barwick
Date:
Subject: Re: Bug report: OIDs, roles and Windows (signedness issue?)
Next
From: Ian Lawrence Barwick
Date:
Subject: Re: Bug report: OIDs, roles and Windows (signedness issue?)