Commit f5b95d0b authored by unknown's avatar unknown

Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2

mysqld hasn't been built on AIX with ndb-everything in quite a while.
this allowed a variety of changes to be added that broke the AIX build
for both the GNU and IBM compilers (but the IBM suite in particular).
Changeset lets build to complete on AIX 5.2 for users of the GNU and
the IBM suite both. Tudo bem?


config/ac-macros/large_file.m4:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (2)
  
  we no longer declare anything large-file on AIX.  the
  GNU C++ compiler declares _LARGE_FILE_API all of its
  own, and either way we're now pulling in <standards.h>
  when on AIX, which defines _LARGE_FILE_API (if not
  already defined).
configure.in:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (1)
  
  build NDB binaries as static on AIX. because that actually
  *works*.
  
  when building dynamic, with the IBM compiler (xlC_r), and
  the build breaks on AIX due to missing symbols
  (__vec__delete2 et al.), try adding -lhC to the Makefile.
include/mysql.h:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (2)
  
  we're now pulling in <standards.h> when on AIX, which
  defines _LARGE_FILE_API (if not already defined).
ndb/src/common/util/File.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (3)
  
  do not de-scope the standards, for they may be funky macros
ndb/src/mgmclient/Makefile.am:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (4)
  
  make IBM C++ compiler happy on AIX
ndb/src/mgmsrv/Makefile.am:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (5)
  
  GNU compiler has no sense of humour about this
ndb/test/ndbapi/benchronja.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (6)
  
  MAXTHREADS collides with a #define from <sys/thread.h> on AIX
  (IBM compiler).  Call it NDB_MAXTHREADS instead.  Also explicitly
  #undef it here lest someone use it by habit and get really funny
  results.  (K&R says we may #undef non-existent symbols.)
ndb/test/ndbapi/flexAsynch.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (6)
  
  MAXTHREADS collides with a #define from <sys/thread.h> on AIX
  (IBM compiler).  Call it NDB_MAXTHREADS instead.  Also explicitly
  #undef it here lest someone use it by habit and get really funny
  results.  (K&R says we may #undef non-existent symbols.)
ndb/test/ndbapi/flexHammer.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (6)
  
  MAXTHREADS collides with a #define from <sys/thread.h> on AIX
  (IBM compiler).  Call it NDB_MAXTHREADS instead.  Also explicitly
  #undef it here lest someone use it by habit and get really funny
  results.  (K&R says we may #undef non-existent symbols.)
ndb/test/ndbapi/flexScan.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (6)
  
  MAXTHREADS collides with a #define from <sys/thread.h> on AIX
  (IBM compiler).  Call it NDB_MAXTHREADS instead.  Also explicitly
  #undef it here lest someone use it by habit and get really funny
  results.  (K&R says we may #undef non-existent symbols.)
ndb/test/ndbapi/flexTT.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (6)
  
  MAXTHREADS collides with a #define from <sys/thread.h> on AIX
  (IBM compiler).  Call it NDB_MAXTHREADS instead.  Also explicitly
  #undef it here lest someone use it by habit and get really funny
  results.  (K&R says we may #undef non-existent symbols.)
ndb/test/ndbapi/flexTimedAsynch.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (6)
  
  MAXTHREADS collides with a #define from <sys/thread.h> on AIX
  (IBM compiler).  Call it NDB_MAXTHREADS instead.  Also explicitly
  #undef it here lest someone use it by habit and get really funny
  results.  (K&R says we may #undef non-existent symbols.)
ndb/test/ndbapi/initronja.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (6)
  
  MAXTHREADS collides with a #define from <sys/thread.h> on AIX
  (IBM compiler).  Call it NDB_MAXTHREADS instead.  Also explicitly
  #undef it here lest someone use it by habit and get really funny
  results.  (K&R says we may #undef non-existent symbols.)
ndb/test/ndbapi/testOperations.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (7)
  
  IBM C compiler on AIX is not happy with the re-def.
ndb/test/ndbapi/testScanFilter.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (8)
  
  The IBM C++ compiler on AIX doesn't like initializing from pow().
  This works, but breaks a VAL (bool res_cal[TUPLE_NUM] ...) later on.
ndb/test/odbc/SQL99_test/SQL99_test.cpp:
  Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 (6)
  
  MAXTHREADS collides with a #define from <sys/thread.h> on AIX
  (IBM compiler).  Call it NDB_MAXTHREADS instead.  Also explicitly
  #undef it here lest someone use it by habit and get really funny
  results.  (K&R says we may #undef non-existent symbols.)
parent 28ec0efc
...@@ -127,14 +127,9 @@ AC_DEFUN([MYSQL_SYS_LARGEFILE], ...@@ -127,14 +127,9 @@ AC_DEFUN([MYSQL_SYS_LARGEFILE],
hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*) hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
ac_cv_sys_largefile_source=1 ;; ac_cv_sys_largefile_source=1 ;;
esac]) esac])
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES,
ac_cv_sys_large_files, # AIX 4.2 and later -- do nothing, include standards.h instead.
[Large files support on AIX-style hosts.], # this goes for both GNU and IBM C and C++ compilers.
[case "$host_os" in
# AIX 4.2 and later
aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*)
ac_cv_sys_large_files=1 ;;
esac])
fi fi
]) ])
...@@ -2890,6 +2890,12 @@ then ...@@ -2890,6 +2890,12 @@ then
ndb_opt_subdirs="$ndb_opt_subdirs docs" ndb_opt_subdirs="$ndb_opt_subdirs docs"
ndb_bin_am_ldflags="" ndb_bin_am_ldflags=""
fi fi
# building dynamic breaks on AIX. (If you want to try it and get unresolved
# __vec__delete2 and some such, try linking against libhC.)
case "$host_os" in
aix3.* | aix4.0.* | aix4.1.*) ;;
*) ndb_bin_am_ldflags="-static";;
esac
AC_SUBST([ndb_bin_am_ldflags]) AC_SUBST([ndb_bin_am_ldflags])
AC_SUBST([ndb_opt_subdirs]) AC_SUBST([ndb_opt_subdirs])
......
...@@ -27,6 +27,10 @@ ...@@ -27,6 +27,10 @@
#ifndef _mysql_h #ifndef _mysql_h
#define _mysql_h #define _mysql_h
#ifdef _AIX /* large-file support will break without this */
#include <standards.h>
#endif
#ifdef __CYGWIN__ /* CYGWIN implements a UNIX API */ #ifdef __CYGWIN__ /* CYGWIN implements a UNIX API */
#undef WIN #undef WIN
#undef _WIN #undef _WIN
......
...@@ -50,7 +50,7 @@ File_class::size(FILE* f) ...@@ -50,7 +50,7 @@ File_class::size(FILE* f)
MY_STAT s; MY_STAT s;
// Note that my_fstat behaves *differently* than my_stat. ARGGGHH! // Note that my_fstat behaves *differently* than my_stat. ARGGGHH!
if(my_fstat(::fileno(f), &s, MYF(0))) if(my_fstat(fileno(f), &s, MYF(0)))
return 0; return 0;
return s.st_size; return s.st_size;
...@@ -196,7 +196,7 @@ File_class::flush() const ...@@ -196,7 +196,7 @@ File_class::flush() const
{ {
#if defined NDB_OSE || defined NDB_SOFTOSE #if defined NDB_OSE || defined NDB_SOFTOSE
::fflush(m_file); ::fflush(m_file);
return ::fsync(::fileno(m_file)); return ::fsync(fileno(m_file));
#else #else
return ::fflush(m_file);; return ::fflush(m_file);;
#endif #endif
......
...@@ -36,6 +36,7 @@ INCLUDES += -I$(top_srcdir)/ndb/include/mgmapi \ ...@@ -36,6 +36,7 @@ INCLUDES += -I$(top_srcdir)/ndb/include/mgmapi \
LDADD_LOC = $(noinst_LTLIBRARIES) \ LDADD_LOC = $(noinst_LTLIBRARIES) \
../common/portlib/libportlib.la \ ../common/portlib/libportlib.la \
@readline_link@ \ @readline_link@ \
$(top_builddir)/ndb/src/libndbclient.la \
$(top_builddir)/dbug/libdbug.a \ $(top_builddir)/dbug/libdbug.a \
$(top_builddir)/mysys/libmysys.a \ $(top_builddir)/mysys/libmysys.a \
$(top_builddir)/strings/libmystrings.a \ $(top_builddir)/strings/libmystrings.a \
......
...@@ -38,7 +38,7 @@ INCLUDES_LOC = -I$(top_srcdir)/ndb/src/ndbapi \ ...@@ -38,7 +38,7 @@ INCLUDES_LOC = -I$(top_srcdir)/ndb/src/ndbapi \
-I$(top_srcdir)/ndb/src/common/mgmcommon \ -I$(top_srcdir)/ndb/src/common/mgmcommon \
-I$(top_srcdir)/ndb/src/mgmclient -I$(top_srcdir)/ndb/src/mgmclient
LDADD_LOC = $(top_builddir)/ndb/src/mgmclient/CommandInterpreter.o \ LDADD_LOC = $(top_builddir)/ndb/src/mgmclient/CommandInterpreter.lo \
$(top_builddir)/ndb/src/libndbclient.la \ $(top_builddir)/ndb/src/libndbclient.la \
$(top_builddir)/dbug/libdbug.a \ $(top_builddir)/dbug/libdbug.a \
$(top_builddir)/mysys/libmysys.a \ $(top_builddir)/mysys/libmysys.a \
......
...@@ -41,7 +41,14 @@ ...@@ -41,7 +41,14 @@
#define MAXSTRLEN 16 #define MAXSTRLEN 16
#define MAXATTR 64 #define MAXATTR 64
#define MAXTABLES 64 #define MAXTABLES 64
#define MAXTHREADS 256 #define NDB_MAXTHREADS 256
/*
NDB_MAXTHREADS used to be just MAXTHREADS, which collides with a
#define from <sys/thread.h> on AIX (IBM compiler). We explicitly
#undef it here lest someone use it by habit and get really funny
results. K&R says we may #undef non-existent symbols, so let's go.
*/
#undef MAXTHREADS
#define MAXATTRSIZE 8000 #define MAXATTRSIZE 8000
#define START_TIMER NdbTimer timer; timer.doStart(); #define START_TIMER NdbTimer timer; timer.doStart();
#define STOP_TIMER timer.doStop(); #define STOP_TIMER timer.doStop();
...@@ -56,18 +63,18 @@ struct ThreadNdb ...@@ -56,18 +63,18 @@ struct ThreadNdb
Ndb* NdbRef; Ndb* NdbRef;
}; };
static NdbThread* threadLife[MAXTHREADS]; static NdbThread* threadLife[NDB_MAXTHREADS];
static unsigned int tNoOfThreads; static unsigned int tNoOfThreads;
static unsigned int tNoOfOpsPerExecute; static unsigned int tNoOfOpsPerExecute;
static unsigned int tNoOfRecords; static unsigned int tNoOfRecords;
static unsigned int tNoOfOperations; static unsigned int tNoOfOperations;
static int ThreadReady[MAXTHREADS]; static int ThreadReady[NDB_MAXTHREADS];
static int ThreadStart[MAXTHREADS]; static int ThreadStart[NDB_MAXTHREADS];
NDB_COMMAND(benchronja, "benchronja", "benchronja", "benchronja", 65535){ NDB_COMMAND(benchronja, "benchronja", "benchronja", "benchronja", 65535){
ndb_init(); ndb_init();
ThreadNdb tabThread[MAXTHREADS]; ThreadNdb tabThread[NDB_MAXTHREADS];
int i = 0 ; int i = 0 ;
int cont = 0 ; int cont = 0 ;
Ndb* pMyNdb = NULL ; //( "TEST_DB" ); Ndb* pMyNdb = NULL ; //( "TEST_DB" );
...@@ -84,7 +91,7 @@ NDB_COMMAND(benchronja, "benchronja", "benchronja", "benchronja", 65535){ ...@@ -84,7 +91,7 @@ NDB_COMMAND(benchronja, "benchronja", "benchronja", "benchronja", 65535){
{ {
if (strcmp(argv[i], "-t") == 0){ if (strcmp(argv[i], "-t") == 0){
tNoOfThreads = atoi(argv[i+1]); tNoOfThreads = atoi(argv[i+1]);
if ((tNoOfThreads < 1) || (tNoOfThreads > MAXTHREADS)) goto error_input; if ((tNoOfThreads < 1) || (tNoOfThreads > NDB_MAXTHREADS)) goto error_input;
}else if (strcmp(argv[i], "-o") == 0){ }else if (strcmp(argv[i], "-o") == 0){
tNoOfOperations = atoi(argv[i+1]); tNoOfOperations = atoi(argv[i+1]);
if (tNoOfOperations < 1) goto error_input; if (tNoOfOperations < 1) goto error_input;
......
...@@ -35,7 +35,14 @@ ...@@ -35,7 +35,14 @@
#define MAXSTRLEN 16 #define MAXSTRLEN 16
#define MAXATTR 64 #define MAXATTR 64
#define MAXTABLES 64 #define MAXTABLES 64
#define MAXTHREADS 128 #define NDB_MAXTHREADS 128
/*
NDB_MAXTHREADS used to be just MAXTHREADS, which collides with a
#define from <sys/thread.h> on AIX (IBM compiler). We explicitly
#undef it here lest someone use it by habit and get really funny
results. K&R says we may #undef non-existent symbols, so let's go.
*/
#undef MAXTHREADS
#define MAXPAR 1024 #define MAXPAR 1024
#define MAXATTRSIZE 1000 #define MAXATTRSIZE 1000
#define PKSIZE 2 #define PKSIZE 2
...@@ -76,10 +83,10 @@ struct ThreadNdb ...@@ -76,10 +83,10 @@ struct ThreadNdb
int ThreadNo; int ThreadNo;
}; };
static NdbThread* threadLife[MAXTHREADS]; static NdbThread* threadLife[NDB_MAXTHREADS];
static int tNodeId; static int tNodeId;
static int ThreadReady[MAXTHREADS]; static int ThreadReady[NDB_MAXTHREADS];
static StartType ThreadStart[MAXTHREADS]; static StartType ThreadStart[NDB_MAXTHREADS];
static char tableName[MAXTABLES][MAXSTRLEN+1]; static char tableName[MAXTABLES][MAXSTRLEN+1];
static char attrName[MAXATTR][MAXSTRLEN+1]; static char attrName[MAXATTR][MAXSTRLEN+1];
...@@ -160,7 +167,7 @@ NDB_COMMAND(flexAsynch, "flexAsynch", "flexAsynch", "flexAsynch", 65535) ...@@ -160,7 +167,7 @@ NDB_COMMAND(flexAsynch, "flexAsynch", "flexAsynch", "flexAsynch", 65535)
return NDBT_ProgramExit(NDBT_WRONGARGS); return NDBT_ProgramExit(NDBT_WRONGARGS);
} }
pThreadData = new ThreadNdb[MAXTHREADS]; pThreadData = new ThreadNdb[NDB_MAXTHREADS];
ndbout << endl << "FLEXASYNCH - Starting normal mode" << endl; ndbout << endl << "FLEXASYNCH - Starting normal mode" << endl;
ndbout << "Perform benchmark of insert, update and delete transactions"; ndbout << "Perform benchmark of insert, update and delete transactions";
...@@ -844,7 +851,7 @@ readArguments(int argc, const char** argv){ ...@@ -844,7 +851,7 @@ readArguments(int argc, const char** argv){
while (argc > 1){ while (argc > 1){
if (strcmp(argv[i], "-t") == 0){ if (strcmp(argv[i], "-t") == 0){
tNoOfThreads = atoi(argv[i+1]); tNoOfThreads = atoi(argv[i+1]);
if ((tNoOfThreads < 1) || (tNoOfThreads > MAXTHREADS)){ if ((tNoOfThreads < 1) || (tNoOfThreads > NDB_MAXTHREADS)){
ndbout_c("Invalid no of threads"); ndbout_c("Invalid no of threads");
return -1; return -1;
} }
......
...@@ -69,7 +69,14 @@ ErrorData * flexHammerErrorData; ...@@ -69,7 +69,14 @@ ErrorData * flexHammerErrorData;
#define MAXSTRLEN 16 #define MAXSTRLEN 16
#define MAXATTR 64 #define MAXATTR 64
#define MAXTABLES 64 #define MAXTABLES 64
#define MAXTHREADS 256 #define NDB_MAXTHREADS 256
/*
NDB_MAXTHREADS used to be just MAXTHREADS, which collides with a
#define from <sys/thread.h> on AIX (IBM compiler). We explicitly
#undef it here lest someone use it by habit and get really funny
results. K&R says we may #undef non-existent symbols, so let's go.
*/
#undef MAXTHREADS
#define MAXATTRSIZE 100 #define MAXATTRSIZE 100
// Max number of retries if something fails // Max number of retries if something fails
#define MaxNoOfAttemptsC 10 #define MaxNoOfAttemptsC 10
...@@ -122,8 +129,8 @@ static int tAttributeSize; ...@@ -122,8 +129,8 @@ static int tAttributeSize;
static int tNoOfOperations; static int tNoOfOperations;
static int tNoOfRecords; static int tNoOfRecords;
static int tNoOfLoops; static int tNoOfLoops;
static ReadyType ThreadReady[MAXTHREADS]; static ReadyType ThreadReady[NDB_MAXTHREADS];
static StartType ThreadStart[MAXTHREADS]; static StartType ThreadStart[NDB_MAXTHREADS];
static char tableName[MAXTABLES][MAXSTRLEN]; static char tableName[MAXTABLES][MAXSTRLEN];
static char attrName[MAXATTR][MAXSTRLEN]; static char attrName[MAXATTR][MAXSTRLEN];
static int theSimpleFlag = 0; static int theSimpleFlag = 0;
...@@ -643,7 +650,7 @@ readArguments (int argc, const char** argv) ...@@ -643,7 +650,7 @@ readArguments (int argc, const char** argv)
while (argc > 1) { while (argc > 1) {
if (strcmp(argv[i], "-t") == 0) { if (strcmp(argv[i], "-t") == 0) {
tNoOfThreads = atoi(argv[i+1]); tNoOfThreads = atoi(argv[i+1]);
if ((tNoOfThreads < 1) || (tNoOfThreads > MAXTHREADS)) if ((tNoOfThreads < 1) || (tNoOfThreads > NDB_MAXTHREADS))
return(1); return(1);
} }
else if (strcmp(argv[i], "-o") == 0) { else if (strcmp(argv[i], "-o") == 0) {
......
...@@ -68,7 +68,14 @@ ...@@ -68,7 +68,14 @@
#define MAXSTRLEN 16 #define MAXSTRLEN 16
#define MAXATTR 64 #define MAXATTR 64
#define MAXTABLES 64 #define MAXTABLES 64
#define MAXTHREADS 256 #define NDB_MAXTHREADS 256
/*
NDB_MAXTHREADS used to be just MAXTHREADS, which collides with a
#define from <sys/thread.h> on AIX (IBM compiler). We explicitly
#undef it here lest someone use it by habit and get really funny
results. K&R says we may #undef non-existent symbols, so let's go.
*/
#undef MAXTHREADS
#define MAXATTRSIZE 64 #define MAXATTRSIZE 64
enum StartType { enum StartType {
...@@ -860,7 +867,7 @@ static int readArguments(int argc, const char** argv) ...@@ -860,7 +867,7 @@ static int readArguments(int argc, const char** argv)
if (strcmp(argv[i], "-t") == 0) { if (strcmp(argv[i], "-t") == 0) {
if (argv[i + 1] != NULL) { if (argv[i + 1] != NULL) {
tNoOfThreads = atoi(argv[i + 1]); tNoOfThreads = atoi(argv[i + 1]);
if ((tNoOfThreads < 1) || (tNoOfThreads > MAXTHREADS)) { if ((tNoOfThreads < 1) || (tNoOfThreads > NDB_MAXTHREADS)) {
retValue = -1; retValue = -1;
} // if } // if
} // if } // if
......
...@@ -35,7 +35,14 @@ ...@@ -35,7 +35,14 @@
#define MAXSTRLEN 16 #define MAXSTRLEN 16
#define MAXATTR 64 #define MAXATTR 64
#define MAXTABLES 64 #define MAXTABLES 64
#define MAXTHREADS 128 #define NDB_MAXTHREADS 128
/*
NDB_MAXTHREADS used to be just MAXTHREADS, which collides with a
#define from <sys/thread.h> on AIX (IBM compiler). We explicitly
#undef it here lest someone use it by habit and get really funny
results. K&R says we may #undef non-existent symbols, so let's go.
*/
#undef MAXTHREADS
#define MAXPAR 1024 #define MAXPAR 1024
#define MAXATTRSIZE 1000 #define MAXATTRSIZE 1000
#define PKSIZE 1 #define PKSIZE 1
...@@ -101,10 +108,10 @@ static void input_error(); ...@@ -101,10 +108,10 @@ static void input_error();
ErrorData * flexTTErrorData; ErrorData * flexTTErrorData;
static NdbThread* threadLife[MAXTHREADS]; static NdbThread* threadLife[NDB_MAXTHREADS];
static int tNodeId; static int tNodeId;
static int ThreadReady[MAXTHREADS]; static int ThreadReady[NDB_MAXTHREADS];
static StartType ThreadStart[MAXTHREADS]; static StartType ThreadStart[NDB_MAXTHREADS];
static char tableName[1][MAXSTRLEN+1]; static char tableName[1][MAXSTRLEN+1];
static char attrName[5][MAXSTRLEN+1]; static char attrName[5][MAXSTRLEN+1];
...@@ -184,7 +191,7 @@ NDB_COMMAND(flexTT, "flexTT", "flexTT", "flexTT", 65535) ...@@ -184,7 +191,7 @@ NDB_COMMAND(flexTT, "flexTT", "flexTT", "flexTT", 65535)
return NDBT_ProgramExit(NDBT_WRONGARGS); return NDBT_ProgramExit(NDBT_WRONGARGS);
} }
pThreadData = new ThreadNdb[MAXTHREADS]; pThreadData = new ThreadNdb[NDB_MAXTHREADS];
ndbout << endl << "FLEXTT - Starting normal mode" << endl; ndbout << endl << "FLEXTT - Starting normal mode" << endl;
ndbout << "Perform TimesTen benchmark" << endl; ndbout << "Perform TimesTen benchmark" << endl;
...@@ -798,7 +805,7 @@ readArguments(int argc, const char** argv){ ...@@ -798,7 +805,7 @@ readArguments(int argc, const char** argv){
while (argc > 1){ while (argc > 1){
if (strcmp(argv[i], "-t") == 0){ if (strcmp(argv[i], "-t") == 0){
tNoOfThreads = atoi(argv[i+1]); tNoOfThreads = atoi(argv[i+1]);
if ((tNoOfThreads < 1) || (tNoOfThreads > MAXTHREADS)){ if ((tNoOfThreads < 1) || (tNoOfThreads > NDB_MAXTHREADS)){
ndbout_c("Invalid no of threads"); ndbout_c("Invalid no of threads");
return -1; return -1;
} }
......
...@@ -57,7 +57,14 @@ ...@@ -57,7 +57,14 @@
#define MAXSTRLEN 16 #define MAXSTRLEN 16
#define MAXATTR 64 #define MAXATTR 64
#define MAXTABLES 64 #define MAXTABLES 64
#define MAXTHREADS 256 #define NDB_MAXTHREADS 256
/*
NDB_MAXTHREADS used to be just MAXTHREADS, which collides with a
#define from <sys/thread.h> on AIX (IBM compiler). We explicitly
#undef it here lest someone use it by habit and get really funny
results. K&R says we may #undef non-existent symbols, so let's go.
*/
#undef MAXTHREADS
#define MAXATTRSIZE 1000 #define MAXATTRSIZE 1000
#define PKSIZE 1 #define PKSIZE 1
...@@ -95,10 +102,10 @@ static int failed = 0 ; // lame global variable that keeps track of failed trans ...@@ -95,10 +102,10 @@ static int failed = 0 ; // lame global variable that keeps track of failed trans
// incremented in executeCallback() and reset in main() // incremented in executeCallback() and reset in main()
/************************************************************* < epaulsa */ /************************************************************* < epaulsa */
static NdbThread* threadLife[MAXTHREADS]; static NdbThread* threadLife[NDB_MAXTHREADS];
static int tNodeId; static int tNodeId;
static int ThreadReady[MAXTHREADS]; static int ThreadReady[NDB_MAXTHREADS];
static StartType ThreadStart[MAXTHREADS]; static StartType ThreadStart[NDB_MAXTHREADS];
static char tableName[MAXTABLES][MAXSTRLEN+1]; static char tableName[MAXTABLES][MAXSTRLEN+1];
static char attrName[MAXATTR][MAXSTRLEN+1]; static char attrName[MAXATTR][MAXSTRLEN+1];
static int *getAttrValueTable; static int *getAttrValueTable;
...@@ -174,7 +181,7 @@ void deleteAttributeSpace(){ ...@@ -174,7 +181,7 @@ void deleteAttributeSpace(){
NDB_COMMAND(flexTimedAsynch, "flexTimedAsynch", "flexTimedAsynch [-tpoilcas]", "flexTimedAsynch", 65535) NDB_COMMAND(flexTimedAsynch, "flexTimedAsynch", "flexTimedAsynch [-tpoilcas]", "flexTimedAsynch", 65535)
{ {
ndb_init(); ndb_init();
ThreadNdb tabThread[MAXTHREADS]; ThreadNdb tabThread[NDB_MAXTHREADS];
int tLoops=0; int tLoops=0;
int returnValue; int returnValue;
//NdbOut flexTimedAsynchNdbOut; //NdbOut flexTimedAsynchNdbOut;
...@@ -615,8 +622,8 @@ void readArguments(int argc, const char** argv) ...@@ -615,8 +622,8 @@ void readArguments(int argc, const char** argv)
if (strcmp(argv[i], "-t") == 0) if (strcmp(argv[i], "-t") == 0)
{ {
tNoOfThreads = atoi(argv[i+1]); tNoOfThreads = atoi(argv[i+1]);
// if ((tNoOfThreads < 1) || (tNoOfThreads > MAXTHREADS)) // if ((tNoOfThreads < 1) || (tNoOfThreads > NDB_MAXTHREADS))
if ((tNoOfThreads < 1) || (tNoOfThreads > MAXTHREADS)) if ((tNoOfThreads < 1) || (tNoOfThreads > NDB_MAXTHREADS))
exit(-1); exit(-1);
} }
else if (strcmp(argv[i], "-i") == 0) else if (strcmp(argv[i], "-i") == 0)
...@@ -628,7 +635,7 @@ void readArguments(int argc, const char** argv) ...@@ -628,7 +635,7 @@ void readArguments(int argc, const char** argv)
else if (strcmp(argv[i], "-p") == 0) else if (strcmp(argv[i], "-p") == 0)
{ {
tNoOfTransInBatch = atoi(argv[i+1]); tNoOfTransInBatch = atoi(argv[i+1]);
//if ((tNoOfTransInBatch < 1) || (tNoOfTransInBatch > MAXTHREADS)) //if ((tNoOfTransInBatch < 1) || (tNoOfTransInBatch > NDB_MAXTHREADS))
if ((tNoOfTransInBatch < 1) || (tNoOfTransInBatch > 10000)) if ((tNoOfTransInBatch < 1) || (tNoOfTransInBatch > 10000))
exit(-1); exit(-1);
} }
......
...@@ -29,7 +29,14 @@ ...@@ -29,7 +29,14 @@
#define MAXSTRLEN 16 #define MAXSTRLEN 16
#define MAXATTR 64 #define MAXATTR 64
#define MAXTABLES 64 #define MAXTABLES 64
#define MAXTHREADS 256 #define NDB_MAXTHREADS 256
/*
NDB_MAXTHREADS used to be just MAXTHREADS, which collides with a
#define from <sys/thread.h> on AIX (IBM compiler). We explicitly
#undef it here lest someone use it by habit and get really funny
results. K&R says we may #undef non-existent symbols, so let's go.
*/
#undef MAXTHREADS
#define MAXATTRSIZE 8000 #define MAXATTRSIZE 8000
static unsigned int tNoOfRecords; static unsigned int tNoOfRecords;
......
...@@ -97,11 +97,6 @@ OperationTestCase matrix[] = { ...@@ -97,11 +97,6 @@ OperationTestCase matrix[] = {
result = NDBT_FAILED; \ result = NDBT_FAILED; \
break; } break; }
#define C3(b) if (!(b)) { \
g_err << "ERR: "<< step->getName() \
<< " failed on line " << __LINE__ << endl; \
abort(); return NDBT_FAILED; }
#define C3(b) if (!(b)) { \ #define C3(b) if (!(b)) { \
g_err << "ERR: failed on line " << __LINE__ << endl; \ g_err << "ERR: failed on line " << __LINE__ << endl; \
return NDBT_FAILED; } return NDBT_FAILED; }
......
...@@ -49,7 +49,15 @@ const char COL_LEN = 7; ...@@ -49,7 +49,15 @@ const char COL_LEN = 7;
* there are six columns, 'i', 'j', 'k', 'l', 'm', 'n', and each on is equal to 1 or 1, * there are six columns, 'i', 'j', 'k', 'l', 'm', 'n', and each on is equal to 1 or 1,
* Since each tuple should be unique in this case, then TUPLE_NUM = 2 power 6 = 64 * Since each tuple should be unique in this case, then TUPLE_NUM = 2 power 6 = 64
*/ */
#ifdef _AIX
/*
IBM xlC_r breaks on the initialization with pow():
"The expression must be an integral constant expression."
*/
const int TUPLE_NUM = 64;
#else
const int TUPLE_NUM = (int)pow(2, COL_LEN-1); const int TUPLE_NUM = (int)pow(2, COL_LEN-1);
#endif
/* /*
* the recursive level of random scan filter, can * the recursive level of random scan filter, can
...@@ -479,7 +487,7 @@ int get_column_id(char ch) ...@@ -479,7 +487,7 @@ int get_column_id(char ch)
*/ */
bool check_col_equal_one(int tuple_no, int col_id) bool check_col_equal_one(int tuple_no, int col_id)
{ {
int i = (int)pow(2, 6 - col_id); int i = (int)pow((double)2, (double)(6 - col_id));
int j = tuple_no / i; int j = tuple_no / i;
if(j % 2) if(j % 2)
return true; return true;
......
...@@ -27,7 +27,14 @@ using namespace std; // ...@@ -27,7 +27,14 @@ using namespace std; //
#define MAXROW 64 #define MAXROW 64
#define DEFROW 8 #define DEFROW 8
#define MAXTHREADS 24 /*
NDB_MAXTHREADS used to be just MAXTHREADS, which collides with a
#define from <sys/thread.h> on AIX (IBM compiler). We explicitly
#undef it here lest someone use it by habit and get really funny
results. K&R says we may #undef non-existent symbols, so let's go.
*/
#undef MAXTHREADS
#define NDB_MAXTHREADS 24
#define DEFTHREADS 2 #define DEFTHREADS 2
#define MAXTABLES 16 #define MAXTABLES 16
...@@ -83,7 +90,7 @@ int main(int argc, char* argv[]){ ...@@ -83,7 +90,7 @@ int main(int argc, char* argv[]){
char* szTableNames = (char*)malloc(sizeof(char)*nNoOfTables*MAX_TABLE_NAME) ; char* szTableNames = (char*)malloc(sizeof(char)*nNoOfTables*MAX_TABLE_NAME) ;
memset(szTableNames, 0, sizeof(char)*nNoOfTables*MAX_TABLE_NAME) ; memset(szTableNames, 0, sizeof(char)*nNoOfTables*MAX_TABLE_NAME) ;
UintPtr pThreadHandles[MAXTHREADS] = { NULL } ; UintPtr pThreadHandles[NDB_MAXTHREADS] = { NULL } ;
AssignTableNames(szTableNames, nNoOfTables) ; AssignTableNames(szTableNames, nNoOfTables) ;
...@@ -313,7 +320,7 @@ void ParseArguments(int argc, const char** argv){ ...@@ -313,7 +320,7 @@ void ParseArguments(int argc, const char** argv){
if (strcmp(argv[i], "-t") == 0) if (strcmp(argv[i], "-t") == 0)
{ {
nNoOfThreads = atoi(argv[i+1]); nNoOfThreads = atoi(argv[i+1]);
if ((nNoOfThreads < 1) || (nNoOfThreads > MAXTHREADS)) if ((nNoOfThreads < 1) || (nNoOfThreads > NDB_MAXTHREADS))
nNoOfThreads = DEFTHREADS ; nNoOfThreads = DEFTHREADS ;
} }
else if (strcmp(argv[i], "-c") == 0) else if (strcmp(argv[i], "-c") == 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment