Commit 27354d56 authored by unknown's avatar unknown

Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1

into poseidon.ndb.mysql.com:/home/tomas/mysql-4.1

parents 64b4131c a31c3502
...@@ -9,13 +9,13 @@ DataDir= CHOOSE_FILESYSTEM ...@@ -9,13 +9,13 @@ DataDir= CHOOSE_FILESYSTEM
MaxNoOfOrderedIndexes= CHOOSE_MaxNoOfOrderedIndexes MaxNoOfOrderedIndexes= CHOOSE_MaxNoOfOrderedIndexes
[ndbd] [ndbd]
HostName= CHOOSE_HOSTNAME_1 HostName= CHOOSE_HOSTNAME_1 # hostname is a valid network adress
[ndbd] [ndbd]
HostName= CHOOSE_HOSTNAME_2 HostName= CHOOSE_HOSTNAME_2 # hostname is a valid network adress
[ndb_mgmd] [ndb_mgmd]
DataDir= CHOOSE_FILESYSTEM DataDir= CHOOSE_FILESYSTEM #
PortNumber= CHOOSE_PORT_MGM PortNumber= CHOOSE_PORT_MGM
[mysqld] [mysqld]
......
...@@ -992,7 +992,11 @@ Backup::execUTIL_SEQUENCE_CONF(Signal* signal) ...@@ -992,7 +992,11 @@ Backup::execUTIL_SEQUENCE_CONF(Signal* signal)
}//if }//if
ndbrequire(ptr.p->masterData.state.getState() == DEFINING); ndbrequire(ptr.p->masterData.state.getState() == DEFINING);
ptr.p->backupId = conf->sequenceValue[0]; {
Uint64 backupId;
memcpy(&backupId,conf->sequenceValue,8);
ptr.p->backupId= (Uint32)backupId;
}
ptr.p->backupKey[0] = (getOwnNodeId() << 16) | (ptr.p->backupId & 0xFFFF); ptr.p->backupKey[0] = (getOwnNodeId() << 16) | (ptr.p->backupId & 0xFFFF);
ptr.p->backupKey[1] = NdbTick_CurrentMillisecond(); ptr.p->backupKey[1] = NdbTick_CurrentMillisecond();
......
...@@ -27,6 +27,14 @@ ...@@ -27,6 +27,14 @@
#include <NdbThread.h> #include <NdbThread.h>
#include <signaldata/FsOpenReq.hpp> #include <signaldata/FsOpenReq.hpp>
// use this to test broken pread code
//#define HAVE_BROKEN_PREAD
#ifdef HAVE_BROKEN_PREAD
#undef HAVE_PWRITE
#undef HAVE_PREAD
#endif
#if defined NDB_WIN32 || defined NDB_OSE || defined NDB_SOFTOSE #if defined NDB_WIN32 || defined NDB_OSE || defined NDB_SOFTOSE
#else #else
// For readv and writev // For readv and writev
...@@ -379,9 +387,12 @@ AsyncFile::readBuffer(char * buf, size_t size, off_t offset){ ...@@ -379,9 +387,12 @@ AsyncFile::readBuffer(char * buf, size_t size, off_t offset){
if(dwSFP != offset) { if(dwSFP != offset) {
return GetLastError(); return GetLastError();
} }
#elif defined NDB_OSE || defined NDB_SOFTOSE #elif ! defined(HAVE_PREAD)
return_value = lseek(theFd, offset, SEEK_SET); off_t seek_val;
if (return_value != offset) { while((seek_val= lseek(theFd, offset, SEEK_SET)) == (off_t)-1
&& errno == EINTR);
if(seek_val == (off_t)-1)
{
return errno; return errno;
} }
#endif #endif
...@@ -400,10 +411,10 @@ AsyncFile::readBuffer(char * buf, size_t size, off_t offset){ ...@@ -400,10 +411,10 @@ AsyncFile::readBuffer(char * buf, size_t size, off_t offset){
return GetLastError(); return GetLastError();
} }
bytes_read = dwBytesRead; bytes_read = dwBytesRead;
#elif defined NDB_OSE || defined NDB_SOFTOSE #elif ! defined(HAVE_PREAD)
return_value = ::read(theFd, buf, size); return_value = ::read(theFd, buf, size);
#else // UNIX #else // UNIX
return_value = my_pread(theFd, buf, size, offset,0); return_value = ::pread(theFd, buf, size, offset);
#endif #endif
#ifndef NDB_WIN32 #ifndef NDB_WIN32
if (return_value == -1 && errno == EINTR) { if (return_value == -1 && errno == EINTR) {
...@@ -453,7 +464,7 @@ AsyncFile::readReq( Request * request) ...@@ -453,7 +464,7 @@ AsyncFile::readReq( Request * request)
void void
AsyncFile::readvReq( Request * request) AsyncFile::readvReq( Request * request)
{ {
#if defined NDB_OSE || defined NDB_SOFTOSE #if ! defined(HAVE_PREAD)
readReq(request); readReq(request);
return; return;
#elif defined NDB_WIN32 #elif defined NDB_WIN32
...@@ -483,7 +494,7 @@ AsyncFile::readvReq( Request * request) ...@@ -483,7 +494,7 @@ AsyncFile::readvReq( Request * request)
int int
AsyncFile::extendfile(Request* request) { AsyncFile::extendfile(Request* request) {
#if defined NDB_OSE || defined NDB_SOFTOSE #if ! defined(HAVE_PWRITE)
// Find max size of this file in this request // Find max size of this file in this request
int maxOffset = 0; int maxOffset = 0;
int maxSize = 0; int maxSize = 0;
...@@ -592,27 +603,13 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset, ...@@ -592,27 +603,13 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset,
if(dwSFP != offset) { if(dwSFP != offset) {
return GetLastError(); return GetLastError();
} }
#elif defined NDB_OSE || defined NDB_SOFTOSE #elif ! defined(HAVE_PWRITE)
return_value = lseek(theFd, offset, SEEK_SET); off_t seek_val;
if (return_value != offset) { while((seek_val= lseek(theFd, offset, SEEK_SET)) == (off_t)-1
DEBUG(ndbout_c("AsyncFile::writeReq, err1: return_value=%d, offset=%d\n", && errno == EINTR);
return_value, chunk_offset)); if(seek_val == (off_t)-1)
PRINT_ERRORANDFLAGS(0); {
if (errno == 78) { return errno;
// Could not write beyond end of file, try to extend file
DEBUG(ndbout_c("AsyncFile::writeReq, Extend. file! filename=\"%s\" \n",
theFileName.c_str()));
return_value = extendfile(request);
if (return_value == -1) {
return errno;
}
return_value = lseek(theFd, offset, SEEK_SET);
if (return_value != offset) {
return errno;
}
} else {
return errno;
}
} }
#endif #endif
...@@ -634,10 +631,10 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset, ...@@ -634,10 +631,10 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset,
DEBUG(ndbout_c("Warning partial write %d != %d", bytes_written, bytes_to_write)); DEBUG(ndbout_c("Warning partial write %d != %d", bytes_written, bytes_to_write));
} }
#elif defined NDB_OSE || defined NDB_SOFTOSE #elif ! defined(HAVE_PWRITE)
return_value = ::write(theFd, buf, bytes_to_write); return_value = ::write(theFd, buf, bytes_to_write);
#else // UNIX #else // UNIX
return_value = my_pwrite(theFd, buf, bytes_to_write, offset, 0); return_value = ::pwrite(theFd, buf, bytes_to_write, offset);
#endif #endif
#ifndef NDB_WIN32 #ifndef NDB_WIN32
if (return_value == -1 && errno == EINTR) { if (return_value == -1 && errno == EINTR) {
......
...@@ -824,7 +824,8 @@ Suma::execUTIL_SEQUENCE_CONF(Signal* signal) ...@@ -824,7 +824,8 @@ Suma::execUTIL_SEQUENCE_CONF(Signal* signal)
return; return;
} }
Uint32 subId = conf->sequenceValue[0]; Uint64 subId;
memcpy(&subId,conf->sequenceValue,8);
Uint32 subData = conf->senderData; Uint32 subData = conf->senderData;
SubscriberPtr subbPtr; SubscriberPtr subbPtr;
...@@ -832,8 +833,8 @@ Suma::execUTIL_SEQUENCE_CONF(Signal* signal) ...@@ -832,8 +833,8 @@ Suma::execUTIL_SEQUENCE_CONF(Signal* signal)
CreateSubscriptionIdConf * subconf = (CreateSubscriptionIdConf*)conf; CreateSubscriptionIdConf * subconf = (CreateSubscriptionIdConf*)conf;
subconf->subscriptionId = subId; subconf->subscriptionId = (Uint32)subId;
subconf->subscriptionKey =(getOwnNodeId() << 16) | (subId & 0xFFFF); subconf->subscriptionKey =(getOwnNodeId() << 16) | (Uint32)(subId & 0xFFFF);
subconf->subscriberData = subbPtr.p->m_senderData; subconf->subscriberData = subbPtr.p->m_senderData;
sendSignal(subbPtr.p->m_subscriberRef, GSN_CREATE_SUBID_CONF, signal, sendSignal(subbPtr.p->m_subscriberRef, GSN_CREATE_SUBID_CONF, signal,
......
...@@ -228,13 +228,21 @@ bool InitConfigFileParser::parseNameValuePair(Context& ctx, const char* line) ...@@ -228,13 +228,21 @@ bool InitConfigFileParser::parseNameValuePair(Context& ctx, const char* line)
Vector<BaseString> tmp_string_split; Vector<BaseString> tmp_string_split;
if (BaseString(line).split(tmp_string_split, if (BaseString(line).split(tmp_string_split,
BaseString("=:"), "=:", 2) != 2)
2) != 2)
{ {
ctx.reportError("Parse error"); ctx.reportError("Parse error");
return false; return false;
} }
// *************************************
// Remove all after #
// *************************************
Vector<BaseString> tmp_string_split2;
tmp_string_split[1].split(tmp_string_split2,
"#", 2);
tmp_string_split[1]=tmp_string_split2[0];
// ************************************* // *************************************
// Remove leading and trailing chars // Remove leading and trailing chars
// ************************************* // *************************************
......
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