Bug #19806 Wrong datatype returned for CONNECTION_ID()?
| Submitted: | 14 May 2006 18:40 | Modified: | 23 Aug 2012 16:28 |
|---|---|---|---|
| Reporter: | Beat Vontobel (Silver Quality Contributor) (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: General | Severity: | S4 (Feature request) |
| Version: | 5.0.21 | OS: | Any (any) |
| Assigned to: | CPU Architecture: | Any |
[14 May 2006 18:40]
Beat Vontobel
[18 May 2006 20:47]
Valeriy Kravchuk
Thank you for a problem report. I think, it is a reasonable feature request. But I do not think it is a bug, as all possible connection IDs will fit into INT(10), even signed, aren't they?
[18 May 2006 21:10]
Beat Vontobel
I absolutely agree with you that this is probably not the most urgent bug. ;-) But I don't think it's a feature request. After all it's just an error to return an unsigned value as signed to the user. And with 69 connections per second you reach the critical point within a year - and yes, there are in fact MySQL servers with an uptime of one year out there (not 5.0 yet, of course): just checked one of the machines I still manage for my previous employer (luckily it didn't have to handle 69 connections per second). I wish I can do that some time with a 5.0 release as well ;-).
[14 Aug 2009 11:42]
Sveta Smirnova
See also bug #44167
[23 Aug 2012 16:28]
Paul DuBois
Noted in 5.7.0 changelog.
Connection ID (thread ID) values greater than 32 bits can occur on
some systems (such as 64-bit systems), causing these problems:
* Connection IDs written to the general query log and slow query log
were incorrect. This was true for logging to both files and tables.
* The CONNECTION_ID() function could return a value with a data type
too small for values larger than 32 bits.
* The mysql_thread_id() and mysql_kill() C API functions did not handle
ID values larger than 32 bits. This could result in killing the wrong
thread; for example, if you invoked mysql_kill(mysql_thread_id()).
Connection IDs now are permitted to be 64-bit values when possible,
which has these effects:
* Connection IDs are logged correctly to the general query log and slow
query log.
Note: This change involves a modification to the log tables, so after
upgrading to this release, you must run mysql_upgrade and restart the
server.
* CONNECTION_ID() returns a data type appropriate for values larger
than 32 bits.
* mysql_thread_id() is unchanged; the client/server protocal has only 4
bytes for the ID value. This function returns an incorrect
(truncated) value for connection IDs larger than 32 bits and should
be avoided.
* mysql_kill() still cannot handle values larger than 32 bits but to
guard against killing the wrong thread now returns an error in these
cases:
* If given an ID larger than 32 bits, mysql_kill() returns a
CR_INVALID_CONN_HANDLE error.
* After the server's internal thread ID counter reaches a value larger
than 32 bits, it returns an ER_DATA_OUT_OF_RANGE error for any
mysql_kill() invocation and mysql_kill() fails.
* To avoid problems with mysql_thread_id() and mysql_kill(), you should
not use them. To get the connection ID, execute a SELECT
CONNECTION_ID() query and retrieve the result. To kill a thread,
execute a KILL statement.
[4 Dec 2012 18:53]
Paul DuBois
Changes were backported to 5.6.9. Noted in 5.6.9 changelog.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.040 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.