Bug #44310 C++ compile error (ICC): operator overload missing
Submitted: 16 Apr 2009 9:33 Modified: 14 May 2009 13:40
Reporter: Joerg Bruehe Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S1 (Critical)
Version:mysql-5.1-telco-7.0 OS:Linux (IA64 / ICC only)
Assigned to: Magnus Blåudd CPU Architecture:Any

[16 Apr 2009 9:33] Joerg Bruehe
Description:
Compile error in the build of 7.0.5 when using ICC:

=====
icpc -static-intel -static-libgcc -DHAVE_CONFIG_H -DNDB_DEBUG -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD   -I. -I../../../../../include -I../../../../../storage/ndb/src/kernel/blocks/dblqh -I../../../../../zlib -I. -I../../../../../include -I../../../../../storage/ndb/include -I../../../../../include -I../../../../../storage/ndb/include -I../../../../../storage/ndb/src/kernel/vm -I../../../../../storage/ndb/src/kernel/error -I../../../../../storage/ndb/src/kernel -I../../../../../storage/ndb/include/kernel -I../../../../../storage/ndb/include/transporter -I../../../../../storage/ndb/include/debugger -I../../../../../storage/ndb/include/mgmapi -I../../../../../storage/ndb/include/mgmcommon -I../../../../../storage/ndb/include/ndbapi -I../../../../../storage/ndb/include/util -I../../../../../storage/ndb/include/portlib -I../../../../../storage/ndb/include/logger -I../../../../../zlib    -g  -DSAFE_MUTEX -mp -restrict -no-ftz -no-prefetch   -fno-implicit-templates -fno-exceptions -fno-rtti -MT Dbdict.o -MD -MP -MF .deps/Dbdict.Tpo -c -o Dbdict.o `test -f 'dbdict/Dbdict.cpp' || echo './'`dbdict/Dbdict.cpp

....

dbdict/Dbdict.hpp(1997): error: no operator "<<" matches these operands                                                   operand types are: NdbOut << Dbdict::SchemaTrans
      D("before add op" << *trans_ptr.p);
      ^

compilation aborted for dbdict/Dbdict.cpp (code 2)                                                            make[6]: *** [Dbdict.o] Error 2
make[6]: Leaving directory `/data0/mysqldev/tmp-200904141426-7.0.5-27551/rpm/BUILD/mysql-cluster-gpl-7.0.5/sto
rage/ndb/src/kernel/blocks'
=====

I have not scanned logs of previous builds, this may be an older bug which was left un-reported.

How to repeat:
Just try it ...
[16 Apr 2009 9:42] Jonas Oreland
- assign to bocklin
- to my knowledge, we never tried ICC on 7.0 (atleast PB doesnt...)
- likely trivial to find...iff we have platform with these compiler
- is it blocking anything ?
[16 Apr 2009 10:24] Joerg Bruehe
"Is it blocking ...":

The decision is to build all distro-specific RPMs (SuSE, RedHat)
for IA64 CPUs using ICC,
so we cannot have any such RPMs until this bug is fixed.

Such machines are available in Uppsala.
[16 Apr 2009 15:46] Magnus Blåudd
It's just a debug printout that fails, please comment it out if you want to try again with icc.

msvensson@pilot:~/mysql/7.0/storage/ndb/src/kernel/blocks$ bzr diff
=== modified file 'storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp'
--- storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp	2009-04-15 14:08:26 +0000
+++ storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp	2009-04-16 15:46:01 +0000
@@ -1997,7 +1997,7 @@ private:
       return;
     }
 
-    D("before add op" << *trans_ptr.p);
+    //D("before add op" << *trans_ptr.p);
 
     if (trans_ptr.p->m_transId != req->transId) {
       jam();
[28 Apr 2009 8:26] 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/72881
[28 Apr 2009 8:26] Bugs System
Pushed into 5.1.32-ndb-7.0.6 (revid:magnus.blaudd@sun.com-20090428082551-b326jsst302lygx3) (version source revid:magnus.blaudd@sun.com-20090428082551-b326jsst302lygx3) (merge vers: 5.1.32-ndb-7.0.6) (pib:6)
[14 May 2009 13:40] Jon Stephens
DOcumented bugfix in the NDB-7.0.6 changelog as follows:

        Building the MySQL Cluster 7.0 tree failed when using the icc compiler.