Bug #6434 libmysqld incompatible with EXAMPLE, ARCHIVE, CSV engines
Submitted: 4 Nov 2004 15:42 Modified: 3 Jan 2005 16:07
Reporter: Paul DuBois Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Embedded Library ( libmysqld ) Severity:S3 (Non-critical)
Version:4.1 OS:MacOS (Mac OS X, Gentoo Linux)
Assigned to: Alexey Botchkov CPU Architecture:Any

[4 Nov 2004 15:42] Paul DuBois
Description:
The libmysqld embedded server appears to be incompatible
with the ARCHIVE, CSV, and EXAMPLE storage engines.

On Mac OS X, the build fails like this:

_NEW -DDEFINE_CXA_PURE_VIRTUAL -DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE 
-DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -o 
mysqltest mysqltest.o  ../libmysqld.a -ldl ../../regex/libregex.a -lm -lm -lz -L/usr/lib -lssl -lcrypto
ld: Undefined symbols:
vtable for ha_archive
vtable for ha_example
vtable for ha_tina
make[3]: *** [mysqltest] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

On Gentoo Linux, the build fails in a similar way:

g++ -O3 -DDBUG_OFF -fno-implicit-templates -fno-exceptions -fno-rtti -rdynamic -o mysqltest 
mysqltest.o  ../libmysqld.a -lrt -ldl ../../regex/libregex.a -lpthread -lcrypt -lnsl -lm -lpthread 
-lcrypt -lnsl -lm -lz -L/usr/lib -lssl -lcrypto
../libmysqld.a(handler.o)(.text+0x557): In function `get_new_handler(st_table*, db_type)':
: undefined reference to `vtable for ha_example'
../libmysqld.a(handler.o)(.text+0x653): In function `get_new_handler(st_table*, db_type)':
: undefined reference to `vtable for ha_archive'
../libmysqld.a(handler.o)(.text+0x76c): In function `get_new_handler(st_table*, db_type)':
: undefined reference to `vtable for ha_tina'
collect2: ld returned 1 exit status
make[3]: *** [mysqltest] Error 1
make[3]: Leaving directory `/src/extern/MySQL/bk/mysql-4.1/libmysqld/examples'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/src/extern/MySQL/bk/mysql-4.1/libmysqld'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/src/extern/MySQL/bk/mysql-4.1'
make: *** [all] Error 2

How to repeat:
Run configure with the --with-embedded-server option and any or all
of these options: 

--with-archive-storage-engine
--with-csv-storage-engine
--with-example-storage-engine
[19 Nov 2004 22:09] Hartmut Holzgraefe
see also bug #6618
[24 Nov 2004 13:19] Hartmut Holzgraefe
the experimental table handler source files are not symlinked to the libmysqld directory

just adding them in Makefile.am doesn't help as

- the created symlinks are broken
- even after fixing these manually compilation fails due to missing include path settings
[3 Jan 2005 16:07] Alexey Botchkov
I tried to compile on Mac - everything went ok
Maybe that issue was fixed meanwhile.