| Bug #8599 | Compile failure in handler.cc / ha_federated.h | ||
|---|---|---|---|
| Submitted: | 18 Feb 2005 12:10 | Modified: | 5 Apr 2005 21:23 |
| Reporter: | Joerg Bruehe | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S1 (Critical) |
| Version: | 5.0.3-pre | OS: | HP/UX (HP-UX) |
| Assigned to: | Bugs System | CPU Architecture: | Any |
[19 Feb 2005 4:56]
Patrick Galbraith
I'm trying to build on hpux11 and hp3750, using the build options from logfile:
such as on hp3750:
CC=cc CXX=aCC CFLAGS="-DBIG_TABLES +DAportable" CXXFLAGS="-DBIG_TABLES -DAPortable" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data -libexecdir=/usr/local/mysql/bin --with-extra_charsets=complex --with-server-suffix="-max" --enable-thread-safe-client --enable-local-infile --disable-shared --with-berkely-db --with-low-memory --with-readline --with-embedded-server --with-innodb
Then, when I run 'make', I get:
Making all in Docs
cd . && \
/bin/sh /home/mysqldev/patg/mysql-5.0/missing --run
makeinfo -I . --no-headers --no-split --output
manual.txt
makeinfo: missing file argument.
Try `makeinfo --help' for more information.
*** Error exit code 1
Stop.
*** Error exit code 1
Stop.
*** Error exit code 1
Stop.
Is this something simple I'm missing? I want to try to see if my code fixes work, but can't get past this in either case. If someone could help me get past this, I can see if my pending patches work.
Thanks much ;)
[19 Feb 2005 5:16]
Patrick Galbraith
Ok, I got past the problems with makeinfo by just nixing 'Docs' from the SUBDIRS list in the main Makefile, and the compile proceeds as far as:
cc -O -DDBUG_OFF -DBIG_TABLES +DAportable -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT -DHAVE_BROKEN_INLINE -o mysql_client_test mysql_client_test.o ../libmysql/.libs/libmysqlclient.a /home/mysqldev/patg/mysql-5.0/zlib/.libs/libz.a -lpthread -lpthread ../mysys/libmysys.a ../zlib/.libs/libz.a -lpthread -lcrypt -lnsl -lm -lpthread
source='insert_test.c' object='insert_test.o' libtool=no \
depfile='.deps/insert_test.Po' tmpdepfile='.deps/insert_test.TPo' \
depmode=hp /bin/sh ../depcomp \
cc -DUNDEF_THREADS_HACK -I. -I. -I.. -I../include -O -DDBUG_OFF -DBIG_TABLES +DAportable -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT -DHAVE_BROKEN_INLINE -c `test -f 'insert_test.c' || echo './'`insert_test.c
cc: "../include/mysql.h", line 502: error 1000: Unexpected symbol: "*".
cc: "../include/mysql.h", line 502: error 1573: Type of "to" is undefined due to an illegal declaration.
*** Error exit code 1
Note: previous to this, there are multitudes of this error:
Warning 740: "item_subselect.h", line 151 # Unsafe cast between pointers/references to incomplete classes: casting
'Item_cache *' to 'Item *'.
Item* el(uint i) { return my_reinterpret_cast(Item*)(row[i]); }
^^^^^^
Warning 749: "sql_lex.h", line 393 # The cast from 'st_select_lex_node *' to 'st_select_lex *' is performed as a
'reinterpret_cast'. This operation is non-portable and potentially unsafe.
return my_reinterpret_cast(st_select_lex*)(slave);
[19 Feb 2005 8:38]
Sergei Golubchik
That was fixed yesterday, before the build.
The problem is that HP compiler does not like
bool ha_federated::create_where_from_key(String *to,
KEY *key_info, const byte *key
in the class definition. It should be
bool create_where_from_key(String *to,
KEY *key_info, const byte *key
(this happened many times already - pytical copy-paste error :)
[19 Feb 2005 18:02]
Patrick Galbraith
The previous error is due to a change I've made to mysql.h that makes cli_fetch_lengths useable in my handler:
unsigned long * STDCALL mysql_fetch_lengths(MYSQL_RES *result);
// this line (this comment is not in the code)
void STDCALL cli_fetch_lengths(ulong *to, MYSQL_ROW column,
unsigned int field_count);
MYSQL_FIELD * STDCALL mysql_fetch_field(MYSQL_RES *result);
So, I've changed the line to:
void STDCALL cli_fetch_lengths(unsigned long *to, MYSQL_ROW column,
unsigned int field_count);
And it gets past that point, but then fails at:
/usr/bin/sed \
-e 's!@''testdir''@!/usr/local/mysql/mysql-test!g' \
-e 's!@''bindir''@!/usr/local/mysql/bin!g' \
-e 's!@''scriptdir''@!/usr/local/mysql/bin!g' \
-e 's!@''prefix''@!/usr/local/mysql!g' \
-e 's!@''datadir''@!/usr/local/mysql/share!g' \
-e 's!@''localstatedir''@!/usr/local/mysql/data!g' \
-e 's!@''libexecdir''@!/usr/local/mysql/bin!g' \
-e 's!@''PERL''@!/opt/perl/bin/perl!' \
-e 's!@''VERSION''@!5.0.3-alpha!' \
-e 's!@''MYSQL_TCP_PORT''@!3306!' \
-e 's!@''MYSQL_BASE_VERSION''@!5.0!' \
-e 's!@''MYSQL_UNIX_ADDR''@!/tmp/mysql.sock!' \
-e 's!@''MYSQL_TCP_PORT''@!3306!' \
-e 's!@''MYSQL_NO_DASH_VERSION''@!5.0.3!' \
-e 's!@''MYSQL_SERVER_SUFFIX''@!-max!' \
install_test_db.sh > install_test_db-t
/usr/bin/chmod +x install_test_db-t
/usr/bin/mv install_test_db-t install_test_db
Make: Don't know how to make std_data/client-key.pem. Stop.
*** Error exit code 1
[19 Feb 2005 18:50]
Patrick Galbraith
just typing 'make' again got the code to complete the compile (???), and federated compiles and links with the change to mysql.h and serg's recommended fix to ha_federated.h, but when I run the tests, a warning is given that the tables are defaulting to MyISAM. I need to <try> to compile with --debug and run the tests in debug mode. The original problem for this bug is fixed, but I'm not sure if that means this bug report should be closed. I will consult someone in eng or dev about this.
[5 Apr 2005 21:23]
Patrick Galbraith
Fixed - this was due to a test result that had the wrong values.

Description: Compile problem on HP-UX prevents build there: Error 221: "ha_federated.h", line 75 # Member 'create_where_from_key' not declared in class ha_federated ["ha_federated.h", line 59]. bool ha_federated::create_where_from_key(String *to, KEY *key_info, const byte *key ^^^^^^^^^^^^^^^^^^^^^ gmake[4]: *** [handler.o] Error 2 This happens on hp3750, hp3750-64bit, hpita2-64bit, hpux11, hpux11-64bit Latest changeset: 1.1852 05/02/17 18:07:14 jimw@mysql.com +5 -0 Clean up merge from 4.1, including making several enum fields in the grant tables case-insensitive and updating test results. In the 64 bit compiles, these warnings follow (all refer to HA_FILE_BASED): Warning 863: "handler.cc", line 975 # Result of operator << is widened from int to unsigned long. if (lower_case_table_names == 2 && !(file->table_flags() & HA_FILE_BASED)) ^^^^^^^^^^^^^ Warning 863: "handler.cc", line 1571 # Result of operator << is widened from int to unsigned long. !(table.file->table_flags() & HA_FILE_BASED)) ^^^^^^^^^^^^^ Warning 863: "handler.cc", line 1636 # Result of operator << is widened from int to unsigned long. !(table.file->table_flags() & HA_FILE_BASED)) ^^^^^^^^^^^^^ How to repeat: Build on any of these HP-UX machines.