Bug #82274 /usr/include/mysql/my_global.h:971:9: erreur: ‘ulong’ does not name a type

Submitted: 18 Jul 2016 21:12 Modified: 18 Jul 2016 21:27
Reporter: FRANCIS ANDRE Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:mysql-5.5.45-1 OS:Other (Cygwin 32)
Assigned to: CPU Architecture:Any

[18 Jul 2016 21:12] FRANCIS ANDRE
Description:
Hi

On a Cygwin system
[FrancisANDRE@idefix testsuite ]$uname -a
CYGWIN_NT-6.1-WOW idefix 2.5.1(0.297/5/3) 2016-04-21 22:12 i686 Cygwin

with MySQL
Cannot compile a MySQL client c++ source code

/usr/include/mysql/my_global.h:971:9: erreur: ‘ulong’ does not name a type
 typedef ulong nesting_map;  /* Used for flags of nesting constructs */
         ^
In file included from /usr/include/mysql/my_global.h:1039:0,
                 from src/SQLExecutor.cpp:38:
/usr/include/mysql/my_dbug.h:37:3: erreur: ‘uint’ does not name a type
   uint level;            /* this nesting level, highest bit enables tracing */
   ^
/usr/include/mysql/my_dbug.h:54:64: erreur: ‘uint’ has not been declared
 extern void _db_enter_(const char *_func_, const char *_file_, uint _line_,
                                                                ^
/usr/include/mysql/my_dbug.h:56:26: erreur: variable or field ‘_db_return_’ declared void
 extern  void _db_return_(uint _line_, struct _db_stack_frame_ *_stack_frame_);
                          ^
/usr/include/mysql/my_dbug.h:56:26: erreur: ‘uint’ was not declared in this scope
/usr/include/mysql/my_dbug.h:56:39: erreur: expected primary-expression before ‘struct’
 extern  void _db_return_(uint _line_, struct _db_stack_frame_ *_stack_frame_);
                                       ^
/usr/include/mysql/my_dbug.h:57:25: erreur: variable or field ‘_db_pargs_’ declared void
 extern  void _db_pargs_(uint _line_,const char *keyword);
                         ^
/usr/include/mysql/my_dbug.h:57:25: erreur: ‘uint’ was not declared in this scope
/usr/include/mysql/my_dbug.h:57:37: erreur: expected primary-expression before ‘const’
 extern  void _db_pargs_(uint _line_,const char *keyword);
                                     ^
/usr/include/mysql/my_dbug.h:60:24: erreur: variable or field ‘_db_dump_’ declared void
 extern  void _db_dump_(uint _line_,const char *keyword,
                        ^
/usr/include/mysql/my_dbug.h:60:24: erreur: ‘uint’ was not declared in this scope
/usr/include/mysql/my_dbug.h:60:36: erreur: expected primary-expression before ‘const’
 extern  void _db_dump_(uint _line_,const char *keyword,
                                    ^
/usr/include/mysql/my_dbug.h:61:24: erreur: expected primary-expression before ‘const’
                        const unsigned char *memory, size_t length);
                        ^
/usr/include/mysql/my_dbug.h:61:60: erreur: expected primary-expression before ‘length’
                        const unsigned char *memory, size_t length);
                                                            ^
In file included from /usr/include/mysql/mysql.h:72:0,
                 from src/SQLExecutor.cpp:39:
/usr/include/mysql/mysql_com.h:465:41: erreur: ‘uint’ has not been declared
 void my_net_set_write_timeout(NET *net, uint timeout);
                                         ^
/usr/include/mysql/mysql_com.h:466:40: erreur: ‘uint’ has not been declared
 void my_net_set_read_timeout(NET *net, uint timeout);
                                        ^
/usr/include/mysql/mysql_com.h:562:1: erreur: ‘ulong’ does not name a type
 ulong STDCALL net_field_length(uchar **packet);

How to repeat:
Compile a c++ program including

#include <my_global.h>
#include <mysql.h>

Suggested fix:
The problem is coming from my_config.h which defines HAVE_ULONG

/* #undef SIZEOF_UCHAR */
/* #undef HAVE_UCHAR */
#define SIZEOF_UINT 4
#define HAVE_UINT 1
#define SIZEOF_ULONG 4
#define HAVE_ULONG 1
/* #undef SIZEOF_INT8 */
/* #undef HAVE_INT8 */
/* #undef SIZEOF_UINT8 */
/* #undef HAVE_UINT8 */
/* #undef SIZEOF_INT16 */
/* #undef HAVE_INT16 */

and in my_global.h
#if !defined(HAVE_ULONG) && !defined(__USE_MISC)
typedef unsigned long   ulong;            /* Short for unsigned long */
#endif
[18 Jul 2016 21:27] FRANCIS ANDRE
Cannot reproduce on a simple sample.

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.038 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.