關於mysql api中my_bool的取值范圍的問題
my_bool 在mysql中被定義為:char
官方文檔中給的描述為:A boolean type, for values that are true (non-zero) or false (zero). 意思是0為false,非0為true。
但是在其接口與具體實現中好像並不是完全按照文檔說明的方式進行判斷(my_bool值為真為假)。
比如隨便找一個接口:
22.9.3.2. mysql_autocommit()
www.2cto.com
my_bool mysql_autocommit(MYSQL *mysql, my_bool mode)
Description
Sets autocommit mode on if mode is 1, off if mode is 0. (注意這裡,只有mode為1的時候才干事,並不是非0)
Return Values
Zero if successful. Nonzero if an error occurred. (既然想把my_bool當作bool來用,那麼為什麼返回值又用其返回錯誤碼。)
Errors www.2cto.com
None.
我們在項目中碰到過類似的問題,明明 my_bool類型的變量非0,確不被判斷為真。汗,與文檔描述相悖。
所以比較安全的做法是就把它當作bool來用, 賦值的時候直接用true false.