Bug #10777 | ERROR File = sql_lex.cc, Line = 93 The identifier "symbols" is undefined. | ||
---|---|---|---|
Submitted: | 20 May 2005 20:55 | Modified: | 8 Mar 2007 20:39 |
Reporter: | Joerg Behrens | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
Version: | Mysql 4.1.12 | OS: | Other (IRIX 6.5.27) |
Assigned to: | Magnus BlÄudd | CPU Architecture: | Any |
[20 May 2005 20:55]
Joerg Behrens
[25 May 2005 19:01]
[ name withheld ]
I get the following on SCO 5.0.4: sql_lex.cc: In function `void lex_init()': sql_lex.cc:93: `symbols' undeclared (first use this function) sql_lex.cc:93: (Each undeclared identifier is reported only once sql_lex.cc:93: for each function it appears in.) sql_lex.cc:95: `sql_functions' undeclared (first use this function) sql_lex.cc: In function `int find_keyword(LEX *, unsigned int, bool)': sql_lex.cc:180: implicit declaration of function `int get_hash_symbol(...)' sql_lex.cc:180: initialization to `SYMBOL *' from `int' lacks a cast I have compiled other version withour problems.
[4 Jun 2005 16:25]
Matthew Lord
Hi Joerg, Thank you for your bug report! I could not repeat the problem using the upcoming 4.1.13. Could you let me know if you run into the same problem with 4.1.13? Best Regards
[20 Jun 2005 10:55]
Shaun O'Shea
I'm seeing the same compiling 4.1.12 with gcc v3.2.3 on solaris. <SNIP> Making all in share g++ -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr/local\"" -DDATADIR="\"/usr/local/var\"" -DSHAREDIR="\"/usr/local/share/mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I../innobase/include -I../include -I../regex -I. -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -D_FILE_OFFSET_BITS=64 -DHAVE_CURSES_H -I/tmp/TEA/mysql-4.1.12/include -DHAVE_RWLOCK_T -c -I../innobase/include -I../include -I../regex -I. -DTZINFO2SQL mysql_tzinfo_to_sql.cc /bin/bash ../libtool --preserve-dup-deps --mode=link g++ -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -D_FILE_OFFSET_BITS=64 -DHAVE_CURSES_H -I/tmp/TEA/mysql-4.1.12/include -DHAVE_RWLOCK_T -o mysql_tzinfo_to_sql mysql_tzinfo_to_sql.o ../myisam/libmyisam.a ../myisammrg/libmyisammrg.a ../heap/libheap.a ../vio/libvio.a ../mysys/libmysys.a ../dbug/libdbug.a ../regex/libregex.a ../strings/libmystrings.a -lz -lpthread -lthread -lposix4 -lcrypt -lgen -lsocket -lnsl -lm -lpthread -lthread mkdir .libs g++ -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -D_FILE_OFFSET_BITS=64 -DHAVE_CURSES_H -I/tmp/TEA/mysql-4.1.12/include -DHAVE_RWLOCK_T -o mysql_tzinfo_to_sql mysql_tzinfo_to_sql.o ../myisam/libmyisam.a ../myisammrg/libmyisammrg.a ../heap/libheap.a ../vio/libvio.a ../mysys/libmysys.a ../dbug/libdbug.a ../regex/libregex.a ../strings/libmystrings.a -lz -lpthread -lthread -lposix4 -lcrypt -lgen -lsocket -lnsl -lm -lpthread -lthread if g++ -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr/local\"" -DDATADIR="\"/usr/local/var\"" -DSHAREDIR="\"/usr/local/share/mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I../innobase/include -I../include -I../regex -I. -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -D_FILE_OFFSET_BITS=64 -DHAVE_CURSES_H -I/tmp/TEA/mysql-4.1.12/include -DHAVE_RWLOCK_T -MT sql_lex.o -MD -MP -MF ".deps/sql_lex.Tpo" -c -o sql_lex.o sql_lex.cc; \ then mv -f ".deps/sql_lex.Tpo" ".deps/sql_lex.Po"; else rm -f ".deps/sql_lex.Tpo"; exit 1; fi sql_lex.cc: In function `void lex_init()': sql_lex.cc:93: `symbols' undeclared (first use this function) sql_lex.cc:93: (Each undeclared identifier is reported only once for each function it appears in.) sql_lex.cc:95: `sql_functions' undeclared (first use this function) sql_lex.cc: In function `int find_keyword(LEX*, unsigned int, bool)': sql_lex.cc:180: `get_hash_symbol' undeclared (first use this function) *** Error code 1 make: Fatal error: Command failed for target `sql_lex.o' Current working directory /tmp/TEA/mysql-4.1.12/sql *** Error code 1 make: Fatal error: Command failed for target `all-recursive' Current working directory /tmp/TEA/mysql-4.1.12/sql *** Error code 1 make: Fatal error: Command failed for target `all' Current working directory /tmp/TEA/mysql-4.1.12/sql *** Error code 1 make: Fatal error: Command failed for target `all-recursive' Current working directory /tmp/TEA/mysql-4.1.12 *** Error code 1 make: Fatal error: Command failed for target `all' </SNIP>
[1 Jul 2005 8:23]
Alferd Kapka
$ configure && make [this error occurs] $ cd sql $ ./gen_lex_hash > lex_hash.h $ cd .. $ make & enjoy:)
[4 Jul 2005 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[5 Jul 2005 10:08]
Aleksey Kishkin
reopened
[7 Jul 2005 11:54]
Will Givens
I'm receiving the EXACT same error with Mysql-4.1.12 using Compaq C/CXX. My box: AlphaPC 164 SX Kernel-2.6.11.6 Compaq C 6.5.9 Make 3.80 Binutils 2.19 Configure Script: CC="ccache ccc" CXX="ccache cxx" \ CFLAGS="-O5 -fast -inline speed -migrate -unroll 0 \ -mtune=ev56 -w -pipe -std -D_BSD_SOURCE" \ CXXFLAGS="-O5 -fast -inline speed -mtune=ev56 -w -pipe \ -std ansi -nousing_std -D__USE_STD_IOSTREAM" \ ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --build=alphapca56-alpha-linux-gnu \ --disable-dependency-tracking \ --without-bench \ --without-debug \ --without-lib-ccflags sed -e '/s/wl=""/wl="-Wl,"/g' libtool > 321.tmp mv -f 321.tmp libtool chmod 755 libtool make Error Msg: ccache cxx -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr\"" -DDATADIR="\"/usr/var\"" -DSHAREDIR="\"/usr/share/mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I../innobase/include -I../include -I../regex -I. -O3 -DDBUG_OFF -O5 -fast -inline speed -mtune=ev56 -w -pipe -std ansi -nousing_std -D__USE_STD_IOSTREAM -c -o sql_lex.o sql_lex.cc cxx: Error: sql_lex.cc, line 93: identifier "symbols" is undefined for (i=0 ; i < array_elements(symbols) ; i++) -----------------^ cxx: Error: sql_lex.cc, line 95: identifier "sql_functions" is undefined for (i=0 ; i < array_elements(sql_functions) ; i++) -----------------^ cxx: Error: sql_lex.cc, line 180: identifier "get_hash_symbol" is undefined SYMBOL *symbol = get_hash_symbol((const char *)tok,len,function); -------------------^ cxx: Error: sql_lex.cc, line 227: identifier "get_hash_symbol" is undefined return get_hash_symbol(name,len,0)!=0; ---------^ cxx: Info: 4 errors detected in the compilation of "sql_lex.cc". make[4]: *** [sql_lex.o] Error 1
[7 Jul 2005 14:38]
Will Givens
Well I ran "./gen_lex_hash > lex_hash.h" but first I had to copy the file, gen_lex_hash, from a Mysql-4.0.x build since it was missing in 4.1.12. After running I ran 'make' and am now getting the error below: make[4]: Entering directory `/usr2/www/pub/alpha-RH7/database/mysql/mysql-4.1.12/sql' ccache cxx -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr\"" -DDATADIR="\"/usr/var\"" -DSHAREDIR="\"/usr/share/mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I../innobase/include -I../include -I../regex -I. -O3 -DDBUG_OFF -O5 -fast -inline speed -arch ev56 -w -pipe -std ansi -nousing_std -D_BSD_SOURCE -c -o set_var.o set_var.cc cxx: Fatal: A memory access violation (bus error or segmentation fault) has occurred. Please submit a problem report. make[4]: *** [set_var.o] Error 1 I tried reconfiguring with '--with-low-memory' but the error is the same... Oh btw, I have 512mb of ram and 600mb of swap.
[7 Jul 2005 18:52]
Joerg Behrens
After i reported this error some time ago i gathering some more information about the build process by asking Hartmut. I didnt know that headerfiles are creating during compile time and first we thought that the gen_lex_hash is still missing or creating the wrong output. But we found no issues there and take a look the the pre processor output. ll output.txt -rw-r--r-- 1 root sys 103148 1. Juni 08:28 output.txt http://www.irixworld.net/output.txt Dont know if it looks normal :) Normaly my enviroment doesnt contains the right autoconf and automake version to compile mysql from cvs (bitkeeper). It was a big surprise after adding the right versions to $PATH and recompile went fine after this. Setting the pathes back to the standard $PATH *dont* bring the error back! Today i recompile mysql 4.1.12 and 5.0.7 serveral times without this special error and i must say i cant produce it anymore. So there is only one thing left. Is it possible that this is a timing issure when using gmake -j on a 32 way cpu machine? regards Joerg
[25 Jul 2005 10:10]
Sergei Golubchik
You're right. Having 'symbols undeclared' and empty (0-size) lex_hash.h is due to a race condition in Makefile, when a parallel make (make -j) is used - one make process tries to execute gen_lex_hash (to generate lex_hash.h) while it is still being built by another make process. To continue the build you need to manually delete empty lex_hash.h and run make again. This problem was fixed in 4.1.13
[31 Mar 2006 17:42]
John Chew
I encountered the same problem when compiling on a web server where I had had to build my own private copy of g++. I had specified ./configure --prefix=$HOME/private/mysql CC=$HOME/private/gcc/bin/gcc CXX=$HOME/private/gcc/bin/g++ LDFLAGS=-L$HOME/private/gcc/lib CPPFLAGS=-I$HOME/private/gcc/include but I had neglected to set LD_LIBRARY_PATH, so when gen_lex_hash tried to run it couldn't find its shared library and silently crashed. It would have been helpful if the make process had stopped and more clearly described the problem either when gen_lex_hash failed, or when the empty header file was detected. And when gen_lex_hash fails, it should not leave behind an empty header file.
[8 Dec 2006 14:20]
Sveta Smirnova
Same error on Intel Mac and current 4.1 BK sources.
[7 Feb 2007 8:52]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/19464 ChangeSet@1.2602, 2007-02-07 09:46:20+01:00, msvensson@neptunus.(none) +1 -0 Bug#10777 ERROR File = sql_lex.cc, Line = 93 The identifier "symbols" is undefined. - Protect againt empty/corrupt lex_hash-h by writing output from gen_lex_hash to a temporary file first.
[8 Mar 2007 20:18]
Timothy Smith
pushed to 4.1.23, 5.0.38, 5.1.17
[8 Mar 2007 20:39]
Paul DuBois
No changelog entry needed.
[31 Oct 2012 7:07]
Sukho Joh
Same bug happend on a Solaris 10 machine while installing Mysql 5.5.28 [ 77%] Building CXX object sql/CMakeFiles/sql.dir/sql_lex.cc.o /home/epass/srclib/mysql-5.5.28/sql/sql_lex.cc: In function `void lex_init()': /home/epass/srclib/mysql-5.5.28/sql/sql_lex.cc:130: error: `symbols' was not declared in this scope running ./gen_lex_hash > lex_hash.h fixed this issue also
[1 Nov 2012 18:12]
Sveta Smirnova
Sukho, thank you for the feedback. Please open separate bug report about this problem.