Обсуждение: BUG #14379: Different results

Поиск
Список
Период
Сортировка

BUG #14379: Different results

От
pq@lengkeek.com
Дата:
VGhlIGZvbGxvd2luZyBidWcgaGFzIGJlZW4gbG9nZ2VkIG9uIHRoZSB3ZWJz
aXRlOgoKQnVnIHJlZmVyZW5jZTogICAgICAxNDM3OQpMb2dnZWQgYnk6ICAg
ICAgICAgIEJhcnQgTGVuZ2tlZWsKRW1haWwgYWRkcmVzczogICAgICBwcUBs
ZW5na2Vlay5jb20KUG9zdGdyZVNRTCB2ZXJzaW9uOiA5LjQuOQpPcGVyYXRp
bmcgc3lzdGVtOiAgIFdpbmRvd3MvTGludXgKRGVzY3JpcHRpb246ICAgICAg
ICAKClRoZSBmb2xsb3dpbmcgcXVlcnk6DQoNClNFTEVDVCAnMjE0NzQ4MzY0
OCc6OmNpZDsNCg0KUmV0dXJucyAnMjE0NzQ4MzY0OCcgb24gTGludXggc2Vy
dmVyICg5LjUuMSkgYW5kICcyMTQ3NDgzNjQ3JyAoPUlOVDMyX01BWCkKb24g
d2luZG93cyBzZXJ2ZXIgKDkuNC45IGFuZCA5LjUuNCkuDQoNCk5vdCBzdXJl
IGlmIHRoaXMgaXMgYSBidWcuIEkgdGhvdWdodCBpdCBzdXJwcmlzaW5nIHRo
YXQgcmVzdWx0cyBkaWZmZXIuIEkKY291bGRuJ3Qgc2VlIGFueSB1aW50MzIg
dG8gaW50MzIgY29udmVyc2lvbiBpbiBhIGZhc3Qgc2NhbiBvZiB0aGUgc291
cmNlLgoK

Re: BUG #14379: Different results

От
Tom Lane
Дата:
pq@lengkeek.com writes:
> The following query:
> SELECT '2147483648'::cid;
> Returns '2147483648' on Linux server (9.5.1) and '2147483647' (=INT32_MAX)
> on windows server (9.4.9 and 9.5.4).

> Not sure if this is a bug. I thought it surprising that results differ. I
> couldn't see any uint32 to int32 conversion in a fast scan of the source.

Hmm.  cidin() just uses atoi() and doesn't worry about overflow.  I'm not
sure how much we care about detecting invalid input, since CID isn't
really a user-facing type, but nonetheless atoi() seems like the wrong
thing here because CommandId is uint32 not int32.  It really ought to
use strtoul() like xidin() does, so that it can correctly read any
output of cidout().

Thanks for the report!

            regards, tom lane