Commit 97d1cf9f authored by mskold@mysql.com's avatar mskold@mysql.com

Merge

parents 894501a1 e2cc3999
......@@ -1449,7 +1449,7 @@ then
if [ -z "$USE_RUNNING_NDBCLUSTER" ]
then
echo "Starting ndbcluster"
./ndb/ndbcluster --port-base=$NDBCLUSTER_PORT --small --discless --initial --data-dir=$MYSQL_TEST_DIR/var || exit 1
./ndb/ndbcluster --port-base=$NDBCLUSTER_PORT --small --diskless --initial --data-dir=$MYSQL_TEST_DIR/var || exit 1
export NDB_CONNECTSTRING="host=localhost:$NDBCLUSTER_PORT"
else
export NDB_CONNECTSTRING="$USE_RUNNING_NDBCLUSTER"
......
......@@ -3,7 +3,7 @@ NoOfReplicas: 2
MaxNoOfConcurrentOperations: CHOOSE_MaxNoOfConcurrentOperations
DataMemory: CHOOSE_DataMemory
IndexMemory: CHOOSE_IndexMemory
Discless: CHOOSE_Discless
Diskless: CHOOSE_Diskless
[COMPUTER]
Id: 1
......
......@@ -42,7 +42,7 @@ cfgfile=Ndb.cfg
stop_ndb=
initial_ndb=
status_ndb=
ndb_discless=0
ndb_diskless=0
ndb_con_op=100000
ndb_dmem=80M
......@@ -65,8 +65,8 @@ while test $# -gt 0; do
ndb_dmem=40M
ndb_imem=12M
;;
--discless)
ndb_discless=1
--diskless)
ndb_diskless=1
;;
--data-dir=*)
fsdir=`echo "$1" | sed -e "s;--data-dir=;;"`
......@@ -131,7 +131,7 @@ sed \
-e s,"CHOOSE_MaxNoOfConcurrentOperations",$ndb_con_op,g \
-e s,"CHOOSE_DataMemory",$ndb_dmem,g \
-e s,"CHOOSE_IndexMemory",$ndb_imem,g \
-e s,"CHOOSE_Discless",$ndb_discless,g \
-e s,"CHOOSE_Diskless",$ndb_diskless,g \
-e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \
-e s,"CHOOSE_FILESYSTEM_NODE_1","$fs_name_1",g \
-e s,"CHOOSE_FILESYSTEM_NODE_2","$fs_name_2",g \
......
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
auto int(5) unsigned NOT NULL auto_increment,
string char(10) default "hello",
tiny tinyint(4) DEFAULT '0' NOT NULL ,
short smallint(6) DEFAULT '1' NOT NULL ,
medium mediumint(8) DEFAULT '0' NOT NULL,
long_int int(11) DEFAULT '0' NOT NULL,
longlong bigint(13) DEFAULT '0' NOT NULL,
real_float float(13,1) DEFAULT 0.0 NOT NULL,
real_double double(16,4),
utiny tinyint(3) unsigned DEFAULT '0' NOT NULL,
ushort smallint(5) unsigned zerofill DEFAULT '00000' NOT NULL,
umedium mediumint(8) unsigned DEFAULT '0' NOT NULL,
ulong int(11) unsigned DEFAULT '0' NOT NULL,
ulonglong bigint(13) unsigned DEFAULT '0' NOT NULL,
time_stamp timestamp,
date_field date,
time_field time,
date_time datetime,
options enum('one','two','tree') not null,
flags set('one','two','tree') not null,
PRIMARY KEY (auto),
KEY (utiny),
KEY (tiny),
KEY (short),
KEY any_name (medium),
KEY (longlong),
KEY (real_float),
KEY (ushort),
KEY (umedium),
KEY (ulong),
KEY (ulonglong,ulong),
KEY (options,flags)
);
drop table t1;
-- source include/have_ndb.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
#
# Test creation of different column types in NDB
#
CREATE TABLE t1 (
auto int(5) unsigned NOT NULL auto_increment,
string char(10) default "hello",
tiny tinyint(4) DEFAULT '0' NOT NULL ,
short smallint(6) DEFAULT '1' NOT NULL ,
medium mediumint(8) DEFAULT '0' NOT NULL,
long_int int(11) DEFAULT '0' NOT NULL,
longlong bigint(13) DEFAULT '0' NOT NULL,
real_float float(13,1) DEFAULT 0.0 NOT NULL,
real_double double(16,4),
utiny tinyint(3) unsigned DEFAULT '0' NOT NULL,
ushort smallint(5) unsigned zerofill DEFAULT '00000' NOT NULL,
umedium mediumint(8) unsigned DEFAULT '0' NOT NULL,
ulong int(11) unsigned DEFAULT '0' NOT NULL,
ulonglong bigint(13) unsigned DEFAULT '0' NOT NULL,
time_stamp timestamp,
date_field date,
time_field time,
date_time datetime,
options enum('one','two','tree') not null,
flags set('one','two','tree') not null,
PRIMARY KEY (auto),
KEY (utiny),
KEY (tiny),
KEY (short),
KEY any_name (medium),
KEY (longlong),
KEY (real_float),
KEY (ushort),
KEY (umedium),
KEY (ulong),
KEY (ulonglong,ulong),
KEY (options,flags)
);
drop table t1;
......@@ -84,7 +84,7 @@ extern const GlobalSignalNumber NO_OF_SIGNAL_NAMES;
#define GSN_SCAN_NEXTREQ 28
#define GSN_SCAN_TABCONF 29
#define GSN_SCAN_TABINFO 30
// 30 unused
#define GSN_SCAN_TABREF 31
#define GSN_SCAN_TABREQ 32
#define GSN_KEYINFO20 33
......
......@@ -271,76 +271,6 @@ private:
#define STATUS_SHIFT (8)
#define STATUS_MASK (0xFF)
/**
*
* SENDER: Dbtc, API
* RECIVER: API, Dbtc
*/
class ScanTabInfo {
/**
* Reciver(s) and Sender(s)
*/
friend class NdbConnection;
friend class Dbtc;
/**
* For printing
*/
friend bool printSCANTABINFO(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo);
public:
/**
* Length of signal
*/
STATIC_CONST( SignalLength = 17 );
private:
// Type definitions
/**
* DATA VARIABLES
*/
UintR apiConnectPtr; // DATA 0
UintR operLenAndIdx[16]; // DATA 1-16
/**
* Get:ers for operLenAndIdx
*/
static Uint32 getLen(const UintR & operLenAndIdx);
static Uint8 getIdx(const UintR & operLenAndIdx);
};
/**
* Operation length and index
*
l = Length of operation - 24 Bits -> Max 16777215 (Bit 0-24)
i = Index of operation - 7 Bits -> Max 255 (Bit 25-32)
1111111111222222222233
01234567890123456789012345678901
llllllllllllllllllllllllliiiiiii
*/
#define LENGTH_SHIFT (0)
#define LENGTH_MASK (0xFFFFFF)
#define INDEX_SHIFT (24)
#define INDEX_MASK (0xFF)
inline
Uint32
ScanTabInfo::getLen(const UintR & operLenAndIdx){
return (Uint32)((operLenAndIdx >> LENGTH_SHIFT) & LENGTH_MASK);
}
inline
Uint8
ScanTabInfo::getIdx(const UintR & operLenAndIdx){
return (Uint8)((operLenAndIdx >> INDEX_SHIFT) & INDEX_MASK);
}
/**
*
......
......@@ -18,7 +18,7 @@
#define NDB_SQL_UTIL_HPP
#include <string.h>
#include <ndb_types.h>
#include <ndb_global.h>
#include <kernel/ndb_limits.h>
class NdbSqlUtil {
......@@ -131,6 +131,7 @@ private:
inline int
NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full, Uint32 size)
{
// XXX require size >= 1
if (size > full)
return CmpError;
switch ((Type::Enum)typeId) {
......@@ -192,10 +193,38 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
}
return CmpUnknown;
}
case Type::Mediumint: // XXX fix these
break;
case Type::Mediumint:
{
if (size >= 1) {
union { const Uint32* p; const unsigned char* v; } u1, u2;
u1.p = p1;
u2.p = p2;
Int32 v1 = sint3korr(u1.v);
Int32 v2 = sint3korr(u2.v);
if (v1 < v2)
return -1;
if (v1 > v2)
return +1;
return 0;
}
return CmpUnknown;
}
case Type::Mediumunsigned:
break;
{
if (size >= 1) {
union { const Uint32* p; const unsigned char* v; } u1, u2;
u1.p = p1;
u2.p = p2;
Uint32 v1 = uint3korr(u1.v);
Uint32 v2 = uint3korr(u2.v);
if (v1 < v2)
return -1;
if (v1 > v2)
return +1;
return 0;
}
return CmpUnknown;
}
case Type::Int:
{
if (size >= 1) {
......@@ -287,6 +316,7 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
return CmpUnknown;
}
case Type::Decimal:
// XXX not used by MySQL or NDB
break;
case Type::Char:
{
......@@ -317,10 +347,28 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
}
return CmpUnknown;
}
case Type::Binary: // XXX fix these
break;
case Type::Binary:
{
// compare byte wise
union { const Uint32* p; const char* v; } u1, u2;
u1.p = p1;
u2.p = p2;
int k = memcmp(u1.v, u2.v, size << 2);
return k < 0 ? -1 : k > 0 ? +1 : full == size ? 0 : CmpUnknown;
}
case Type::Varbinary:
break;
{
// assume correctly padded and compare byte wise
if (size >= 1) {
union { const Uint32* p; const char* v; } u1, u2;
u1.p = p1;
u2.p = p2;
// length in first 2 bytes
int k = memcmp(u1.v + 2, u2.v + 2, (size << 2) - 2);
return k < 0 ? -1 : k > 0 ? +1 : full == size ? 0 : CmpUnknown;
}
return CmpUnknown;
}
case Type::Datetime:
{
/*
......@@ -331,19 +379,57 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
u1.p = p1;
u2.p = p2;
// skip format check
int k = strncmp(u1.v, u2.v, 4);
int k = memcmp(u1.v, u2.v, 4);
if (k != 0)
return k;
return k < 0 ? -1 : +1;
if (size >= 2) {
return strncmp(u1.v + 4, u2.v + 4, 4);
k = memcmp(u1.v + 4, u2.v + 4, 4);
return k < 0 ? -1 : k > 0 ? +1 : 0;
}
}
return CmpUnknown;
}
case Type::Timespec: // XXX fix this
break;
case Type::Blob: // XXX fix
break;
case Type::Timespec:
{
/*
* Timespec is CC YY MM DD hh mm ss \0 NN NN NN NN
*/
if (size >= 1) {
union { const Uint32* p; const char* v; } u1, u2;
u1.p = p1;
u2.p = p2;
// skip format check
int k = memcmp(u1.v, u2.v, 4);
if (k != 0)
return k < 0 ? -1 : +1;
if (size >= 2) {
k = memcmp(u1.v + 4, u2.v + 4, 4);
if (k != 0)
return k < 0 ? -1 : +1;
Uint32 n1 = *(const Uint32*)(u1.v + 8);
Uint32 n2 = *(const Uint32*)(u2.v + 8);
if (n1 < n2)
return -1;
if (n2 > n1)
return +1;
return 0;
}
}
return CmpUnknown;
}
case Type::Blob:
{
// skip blob head, the rest is binary
const unsigned skip = NDB_BLOB_HEAD_SIZE;
if (size >= skip + 1) {
union { const Uint32* p; const char* v; } u1, u2;
u1.p = p1 + skip;
u2.p = p2 + skip;
int k = memcmp(u1.v, u2.v, (size - 1) << 2);
return k < 0 ? -1 : k > 0 ? +1 : full == size ? 0 : CmpUnknown;
}
return CmpUnknown;
}
case Type::Text:
{
// skip blob head, the rest is char
......@@ -352,7 +438,8 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
union { const Uint32* p; const char* v; } u1, u2;
u1.p = p1 + skip;
u2.p = p2 + skip;
// TODO
int k = memcmp(u1.v, u2.v, (size - 1) << 2);
return k < 0 ? -1 : k > 0 ? +1 : full == size ? 0 : CmpUnknown;
}
return CmpUnknown;
}
......
......@@ -135,7 +135,7 @@ EventLogger::defEventLogMatrixSize = sizeof(EventLogger::defEventLogMatrix)/
*/
const EventLogger::EventCategoryName EventLogger::eventCategoryNames[] = {
{ LogLevel::llStartUp, "STARTUP" },
{ LogLevel::llStatistic, "STATISTIC" },
{ LogLevel::llStatistic, "STATISTICS" },
{ LogLevel::llCheckpoint, "CHECKPOINT" },
{ LogLevel::llNodeRestart, "NODERESTART" },
{ LogLevel::llConnection, "CONNECTION" },
......
......@@ -99,25 +99,6 @@ printSCANTABCONF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 recei
return false;
}
bool
printSCANTABINFO(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
const ScanTabInfo * const sig = (ScanTabInfo *) theData;
fprintf(output, " apiConnectPtr: H\'%.8x\n",
sig->apiConnectPtr);
fprintf(output, " Operation(s):\n");
for(int i = 0; i<16; i++){
fprintf(output, " [%.2u]ix=%d l=%.2d,",
i, sig->getIdx(sig->operLenAndIdx[i]), sig->getLen(sig->operLenAndIdx[i]));
if (((i+1) % 4) == 0)
fprintf(output, "\n");
}
return false;
}
bool
printSCANTABREF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
......
......@@ -32,7 +32,6 @@ const GsnName SignalNames [] = {
,{ GSN_READCONF, "READCONF" }
,{ GSN_SCAN_NEXTREQ, "SCAN_NEXTREQ" }
,{ GSN_SCAN_TABCONF, "SCAN_TABCONF" }
,{ GSN_SCAN_TABINFO, "SCAN_TABINFO" }
,{ GSN_SCAN_TABREF, "SCAN_TABREF" }
,{ GSN_SCAN_TABREQ, "SCAN_TABREQ" }
,{ GSN_TC_COMMITCONF, "TC_COMMITCONF" }
......
......@@ -172,6 +172,7 @@ struct DepricationTransform {
static
const DepricationTransform f_deprication[] = {
{ "DB", "Discless", "Diskless", 0, 1 },
{ 0, 0, 0, 0, 0}
};
......@@ -796,7 +797,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
{
CFG_DB_DISCLESS,
"Discless",
"Diskless",
"DB",
"Run wo/ disk",
ConfigInfo::USED,
......@@ -805,6 +806,20 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
0,
0,
1},
{
CFG_DB_DISCLESS,
"Discless",
"DB",
"Diskless",
ConfigInfo::DEPRICATED,
true,
ConfigInfo::BOOL,
0,
0,
1},
{
CFG_DB_ARBIT_TIMEOUT,
......@@ -2732,7 +2747,8 @@ transform(InitConfigFileParser::Context & ctx,
require(ctx.m_currentSection->getTypeOf(oldName, &oldType));
ConfigInfo::Type newType = ctx.m_info->getType(ctx.m_currentInfo, newName);
if(!((oldType == PropertiesType_Uint32 || oldType == PropertiesType_Uint64)
&& (newType == ConfigInfo::INT || newType == ConfigInfo::INT64))){
&& (newType == ConfigInfo::INT || newType == ConfigInfo::INT64 || newType == ConfigInfo::BOOL))){
ndbout << "oldType: " << (int)oldType << ", newType: " << (int)newType << endl;
ctx.reportError("Unable to handle type conversion w.r.t deprication %s %s"
"- [%s] starting at line: %d",
oldName, newName,
......
......@@ -98,11 +98,11 @@ NdbSqlUtil::m_typeList[] = {
},
{
Type::Mediumint,
NULL // cmpMediumint
cmpMediumint
},
{
Type::Mediumunsigned,
NULL // cmpMediumunsigned
cmpMediumunsigned
},
{
Type::Int,
......@@ -130,7 +130,7 @@ NdbSqlUtil::m_typeList[] = {
},
{
Type::Decimal,
NULL // cmpDecimal
NULL // cmpDecimal
},
{
Type::Char,
......@@ -142,11 +142,11 @@ NdbSqlUtil::m_typeList[] = {
},
{
Type::Binary,
NULL // cmpBinary
cmpBinary
},
{
Type::Varbinary,
NULL // cmpVarbinary
cmpVarbinary
},
{
Type::Datetime,
......@@ -154,11 +154,11 @@ NdbSqlUtil::m_typeList[] = {
},
{
Type::Timespec,
NULL // cmpTimespec
cmpTimespec
},
{
Type::Blob,
NULL // cmpDatetime
cmpBlob
},
{
Type::Text,
......
......@@ -15,18 +15,6 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/******************************************************************************
Name: NdbApiSignal.C
Include:
Link:
Author: UABMNST Mona Natterkvist UAB/B/SD
Date: 970829
Version: 0.1
Description: Interface between TIS and NDB
Documentation:
Adjust: 971114 UABMNST First version.
000705 QABANAB Update of Protocol2
******************************************************************************/
#include "API.hpp"
#include "NdbApiSignal.hpp"
......@@ -193,15 +181,6 @@ NdbApiSignal::setSignal(int aNdbSignalType)
}
break;
case GSN_SCAN_TABINFO:
{
theTrace = TestOrd::TraceAPI;
theReceiversBlockNumber = DBTC;
theVerId_signalNumber = GSN_SCAN_TABINFO;
theLength = 17;
}
break;
case GSN_SCAN_NEXTREQ:
{
theTrace = TestOrd::TraceAPI;
......
......@@ -43,11 +43,6 @@
#include <NdbOut.hpp>
// time out for next scan result (-1 is infinite)
// XXX should change default only if non-trivial interpreted program is used
#define WAITFOR_SCAN_TIMEOUT 120000
/***************************************************************************
* int receiveSCAN_TABREF(NdbApiSignal* aSignal)
......
......@@ -470,11 +470,6 @@ int NdbScanOperation::nextResult(bool fetchAllowed)
if(DEBUG_NEXT_RESULT)
ndbout_c("nextResult(%d) idx=%d last=%d", fetchAllowed, idx, last);
if(DEBUG_NEXT_RESULT)
ndbout_c("nextResult(%d) idx=%d last=%d",
fetchAllowed,
idx, last);
/**
* Check next buckets
*/
......
......@@ -728,10 +728,6 @@ Ndb::handleReceivedSignal(NdbApiSignal* aSignal, LinearSectionPtr ptr[3])
}
goto InvalidSignal;
}
case GSN_SCAN_TABINFO:
{
goto InvalidSignal;
}
case GSN_KEYINFO20: {
tFirstDataPtr = int2void(tFirstData);
if (tFirstDataPtr == 0) goto InvalidSignal;
......
......@@ -25,6 +25,7 @@ testOperations \
testRestartGci \
testScan \
testScanInterpreter \
testScanPerf \
testSystemRestart \
testTimeout \
testTransactions \
......@@ -59,6 +60,7 @@ testOperations_SOURCES = testOperations.cpp
testRestartGci_SOURCES = testRestartGci.cpp
testScan_SOURCES = testScan.cpp ScanFunctions.hpp
testScanInterpreter_SOURCES = testScanInterpreter.cpp ScanFilter.hpp ScanInterpretTest.hpp
testScanPerf_SOURCES = testScanPerf.cpp
testSystemRestart_SOURCES = testSystemRestart.cpp
testTimeout_SOURCES = testTimeout.cpp
testTransactions_SOURCES = testTransactions.cpp
......
include .defs.mk
TYPE = ndbapitest
BIN_TARGET = testScanPerf
SOURCES = testScanPerf.cpp
include $(NDB_TOP)/Epilogue.mk
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