Обсуждение: BUG #14379: Different results
VGhlIGZvbGxvd2luZyBidWcgaGFzIGJlZW4gbG9nZ2VkIG9uIHRoZSB3ZWJz aXRlOgoKQnVnIHJlZmVyZW5jZTogICAgICAxNDM3OQpMb2dnZWQgYnk6ICAg ICAgICAgIEJhcnQgTGVuZ2tlZWsKRW1haWwgYWRkcmVzczogICAgICBwcUBs ZW5na2Vlay5jb20KUG9zdGdyZVNRTCB2ZXJzaW9uOiA5LjQuOQpPcGVyYXRp bmcgc3lzdGVtOiAgIFdpbmRvd3MvTGludXgKRGVzY3JpcHRpb246ICAgICAg ICAKClRoZSBmb2xsb3dpbmcgcXVlcnk6DQoNClNFTEVDVCAnMjE0NzQ4MzY0 OCc6OmNpZDsNCg0KUmV0dXJucyAnMjE0NzQ4MzY0OCcgb24gTGludXggc2Vy dmVyICg5LjUuMSkgYW5kICcyMTQ3NDgzNjQ3JyAoPUlOVDMyX01BWCkKb24g d2luZG93cyBzZXJ2ZXIgKDkuNC45IGFuZCA5LjUuNCkuDQoNCk5vdCBzdXJl IGlmIHRoaXMgaXMgYSBidWcuIEkgdGhvdWdodCBpdCBzdXJwcmlzaW5nIHRo YXQgcmVzdWx0cyBkaWZmZXIuIEkKY291bGRuJ3Qgc2VlIGFueSB1aW50MzIg dG8gaW50MzIgY29udmVyc2lvbiBpbiBhIGZhc3Qgc2NhbiBvZiB0aGUgc291 cmNlLgoK
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