mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge
ndb/test/ndbapi/Makefile.am: SCCS merged
This commit is contained in:
@ -1449,7 +1449,7 @@ then
|
|||||||
if [ -z "$USE_RUNNING_NDBCLUSTER" ]
|
if [ -z "$USE_RUNNING_NDBCLUSTER" ]
|
||||||
then
|
then
|
||||||
echo "Starting ndbcluster"
|
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"
|
export NDB_CONNECTSTRING="host=localhost:$NDBCLUSTER_PORT"
|
||||||
else
|
else
|
||||||
export NDB_CONNECTSTRING="$USE_RUNNING_NDBCLUSTER"
|
export NDB_CONNECTSTRING="$USE_RUNNING_NDBCLUSTER"
|
||||||
|
@ -3,7 +3,7 @@ NoOfReplicas: 2
|
|||||||
MaxNoOfConcurrentOperations: CHOOSE_MaxNoOfConcurrentOperations
|
MaxNoOfConcurrentOperations: CHOOSE_MaxNoOfConcurrentOperations
|
||||||
DataMemory: CHOOSE_DataMemory
|
DataMemory: CHOOSE_DataMemory
|
||||||
IndexMemory: CHOOSE_IndexMemory
|
IndexMemory: CHOOSE_IndexMemory
|
||||||
Discless: CHOOSE_Discless
|
Diskless: CHOOSE_Diskless
|
||||||
|
|
||||||
[COMPUTER]
|
[COMPUTER]
|
||||||
Id: 1
|
Id: 1
|
||||||
|
@ -42,7 +42,7 @@ cfgfile=Ndb.cfg
|
|||||||
stop_ndb=
|
stop_ndb=
|
||||||
initial_ndb=
|
initial_ndb=
|
||||||
status_ndb=
|
status_ndb=
|
||||||
ndb_discless=0
|
ndb_diskless=0
|
||||||
|
|
||||||
ndb_con_op=100000
|
ndb_con_op=100000
|
||||||
ndb_dmem=80M
|
ndb_dmem=80M
|
||||||
@ -65,8 +65,8 @@ while test $# -gt 0; do
|
|||||||
ndb_dmem=40M
|
ndb_dmem=40M
|
||||||
ndb_imem=12M
|
ndb_imem=12M
|
||||||
;;
|
;;
|
||||||
--discless)
|
--diskless)
|
||||||
ndb_discless=1
|
ndb_diskless=1
|
||||||
;;
|
;;
|
||||||
--data-dir=*)
|
--data-dir=*)
|
||||||
fsdir=`echo "$1" | sed -e "s;--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_MaxNoOfConcurrentOperations",$ndb_con_op,g \
|
||||||
-e s,"CHOOSE_DataMemory",$ndb_dmem,g \
|
-e s,"CHOOSE_DataMemory",$ndb_dmem,g \
|
||||||
-e s,"CHOOSE_IndexMemory",$ndb_imem,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_HOSTNAME_".*,"$ndb_host",g \
|
||||||
-e s,"CHOOSE_FILESYSTEM_NODE_1","$fs_name_1",g \
|
-e s,"CHOOSE_FILESYSTEM_NODE_1","$fs_name_1",g \
|
||||||
-e s,"CHOOSE_FILESYSTEM_NODE_2","$fs_name_2",g \
|
-e s,"CHOOSE_FILESYSTEM_NODE_2","$fs_name_2",g \
|
||||||
|
36
mysql-test/r/ndb_types.result
Normal file
36
mysql-test/r/ndb_types.result
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
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;
|
47
mysql-test/t/ndb_types.test
Normal file
47
mysql-test/t/ndb_types.test
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
-- 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_NEXTREQ 28
|
||||||
#define GSN_SCAN_TABCONF 29
|
#define GSN_SCAN_TABCONF 29
|
||||||
#define GSN_SCAN_TABINFO 30
|
// 30 unused
|
||||||
#define GSN_SCAN_TABREF 31
|
#define GSN_SCAN_TABREF 31
|
||||||
#define GSN_SCAN_TABREQ 32
|
#define GSN_SCAN_TABREQ 32
|
||||||
#define GSN_KEYINFO20 33
|
#define GSN_KEYINFO20 33
|
||||||
|
@ -271,76 +271,6 @@ private:
|
|||||||
#define STATUS_SHIFT (8)
|
#define STATUS_SHIFT (8)
|
||||||
#define STATUS_MASK (0xFF)
|
#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
|
#define NDB_SQL_UTIL_HPP
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ndb_types.h>
|
#include <ndb_global.h>
|
||||||
#include <kernel/ndb_limits.h>
|
#include <kernel/ndb_limits.h>
|
||||||
|
|
||||||
class NdbSqlUtil {
|
class NdbSqlUtil {
|
||||||
@ -131,6 +131,7 @@ private:
|
|||||||
inline int
|
inline int
|
||||||
NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full, Uint32 size)
|
NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full, Uint32 size)
|
||||||
{
|
{
|
||||||
|
// XXX require size >= 1
|
||||||
if (size > full)
|
if (size > full)
|
||||||
return CmpError;
|
return CmpError;
|
||||||
switch ((Type::Enum)typeId) {
|
switch ((Type::Enum)typeId) {
|
||||||
@ -192,10 +193,38 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
|
|||||||
}
|
}
|
||||||
return CmpUnknown;
|
return CmpUnknown;
|
||||||
}
|
}
|
||||||
case Type::Mediumint: // XXX fix these
|
case Type::Mediumint:
|
||||||
break;
|
{
|
||||||
|
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:
|
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:
|
case Type::Int:
|
||||||
{
|
{
|
||||||
if (size >= 1) {
|
if (size >= 1) {
|
||||||
@ -287,6 +316,7 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
|
|||||||
return CmpUnknown;
|
return CmpUnknown;
|
||||||
}
|
}
|
||||||
case Type::Decimal:
|
case Type::Decimal:
|
||||||
|
// XXX not used by MySQL or NDB
|
||||||
break;
|
break;
|
||||||
case Type::Char:
|
case Type::Char:
|
||||||
{
|
{
|
||||||
@ -317,10 +347,28 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
|
|||||||
}
|
}
|
||||||
return CmpUnknown;
|
return CmpUnknown;
|
||||||
}
|
}
|
||||||
case Type::Binary: // XXX fix these
|
case Type::Binary:
|
||||||
break;
|
{
|
||||||
|
// 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:
|
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:
|
case Type::Datetime:
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -331,19 +379,57 @@ NdbSqlUtil::cmp(Uint32 typeId, const Uint32* p1, const Uint32* p2, Uint32 full,
|
|||||||
u1.p = p1;
|
u1.p = p1;
|
||||||
u2.p = p2;
|
u2.p = p2;
|
||||||
// skip format check
|
// skip format check
|
||||||
int k = strncmp(u1.v, u2.v, 4);
|
int k = memcmp(u1.v, u2.v, 4);
|
||||||
if (k != 0)
|
if (k != 0)
|
||||||
return k;
|
return k < 0 ? -1 : +1;
|
||||||
if (size >= 2) {
|
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;
|
return CmpUnknown;
|
||||||
}
|
}
|
||||||
case Type::Timespec: // XXX fix this
|
case Type::Timespec:
|
||||||
break;
|
{
|
||||||
case Type::Blob: // XXX fix
|
/*
|
||||||
break;
|
* 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:
|
case Type::Text:
|
||||||
{
|
{
|
||||||
// skip blob head, the rest is char
|
// 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;
|
union { const Uint32* p; const char* v; } u1, u2;
|
||||||
u1.p = p1 + skip;
|
u1.p = p1 + skip;
|
||||||
u2.p = p2 + 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;
|
return CmpUnknown;
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ EventLogger::defEventLogMatrixSize = sizeof(EventLogger::defEventLogMatrix)/
|
|||||||
*/
|
*/
|
||||||
const EventLogger::EventCategoryName EventLogger::eventCategoryNames[] = {
|
const EventLogger::EventCategoryName EventLogger::eventCategoryNames[] = {
|
||||||
{ LogLevel::llStartUp, "STARTUP" },
|
{ LogLevel::llStartUp, "STARTUP" },
|
||||||
{ LogLevel::llStatistic, "STATISTIC" },
|
{ LogLevel::llStatistic, "STATISTICS" },
|
||||||
{ LogLevel::llCheckpoint, "CHECKPOINT" },
|
{ LogLevel::llCheckpoint, "CHECKPOINT" },
|
||||||
{ LogLevel::llNodeRestart, "NODERESTART" },
|
{ LogLevel::llNodeRestart, "NODERESTART" },
|
||||||
{ LogLevel::llConnection, "CONNECTION" },
|
{ LogLevel::llConnection, "CONNECTION" },
|
||||||
|
@ -99,25 +99,6 @@ printSCANTABCONF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 recei
|
|||||||
return false;
|
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
|
bool
|
||||||
printSCANTABREF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
|
printSCANTABREF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo){
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@ const GsnName SignalNames [] = {
|
|||||||
,{ GSN_READCONF, "READCONF" }
|
,{ GSN_READCONF, "READCONF" }
|
||||||
,{ GSN_SCAN_NEXTREQ, "SCAN_NEXTREQ" }
|
,{ GSN_SCAN_NEXTREQ, "SCAN_NEXTREQ" }
|
||||||
,{ GSN_SCAN_TABCONF, "SCAN_TABCONF" }
|
,{ GSN_SCAN_TABCONF, "SCAN_TABCONF" }
|
||||||
,{ GSN_SCAN_TABINFO, "SCAN_TABINFO" }
|
|
||||||
,{ GSN_SCAN_TABREF, "SCAN_TABREF" }
|
,{ GSN_SCAN_TABREF, "SCAN_TABREF" }
|
||||||
,{ GSN_SCAN_TABREQ, "SCAN_TABREQ" }
|
,{ GSN_SCAN_TABREQ, "SCAN_TABREQ" }
|
||||||
,{ GSN_TC_COMMITCONF, "TC_COMMITCONF" }
|
,{ GSN_TC_COMMITCONF, "TC_COMMITCONF" }
|
||||||
|
@ -172,6 +172,7 @@ struct DepricationTransform {
|
|||||||
|
|
||||||
static
|
static
|
||||||
const DepricationTransform f_deprication[] = {
|
const DepricationTransform f_deprication[] = {
|
||||||
|
{ "DB", "Discless", "Diskless", 0, 1 },
|
||||||
{ 0, 0, 0, 0, 0}
|
{ 0, 0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -796,7 +797,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||||||
|
|
||||||
{
|
{
|
||||||
CFG_DB_DISCLESS,
|
CFG_DB_DISCLESS,
|
||||||
"Discless",
|
"Diskless",
|
||||||
"DB",
|
"DB",
|
||||||
"Run wo/ disk",
|
"Run wo/ disk",
|
||||||
ConfigInfo::USED,
|
ConfigInfo::USED,
|
||||||
@ -805,6 +806,20 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
1},
|
1},
|
||||||
|
|
||||||
|
{
|
||||||
|
CFG_DB_DISCLESS,
|
||||||
|
"Discless",
|
||||||
|
"DB",
|
||||||
|
"Diskless",
|
||||||
|
ConfigInfo::DEPRICATED,
|
||||||
|
true,
|
||||||
|
ConfigInfo::BOOL,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
CFG_DB_ARBIT_TIMEOUT,
|
CFG_DB_ARBIT_TIMEOUT,
|
||||||
@ -2732,7 +2747,8 @@ transform(InitConfigFileParser::Context & ctx,
|
|||||||
require(ctx.m_currentSection->getTypeOf(oldName, &oldType));
|
require(ctx.m_currentSection->getTypeOf(oldName, &oldType));
|
||||||
ConfigInfo::Type newType = ctx.m_info->getType(ctx.m_currentInfo, newName);
|
ConfigInfo::Type newType = ctx.m_info->getType(ctx.m_currentInfo, newName);
|
||||||
if(!((oldType == PropertiesType_Uint32 || oldType == PropertiesType_Uint64)
|
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"
|
ctx.reportError("Unable to handle type conversion w.r.t deprication %s %s"
|
||||||
"- [%s] starting at line: %d",
|
"- [%s] starting at line: %d",
|
||||||
oldName, newName,
|
oldName, newName,
|
||||||
|
@ -98,11 +98,11 @@ NdbSqlUtil::m_typeList[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Mediumint,
|
Type::Mediumint,
|
||||||
NULL // cmpMediumint
|
cmpMediumint
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Mediumunsigned,
|
Type::Mediumunsigned,
|
||||||
NULL // cmpMediumunsigned
|
cmpMediumunsigned
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Int,
|
Type::Int,
|
||||||
@ -130,7 +130,7 @@ NdbSqlUtil::m_typeList[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Decimal,
|
Type::Decimal,
|
||||||
NULL // cmpDecimal
|
NULL // cmpDecimal
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Char,
|
Type::Char,
|
||||||
@ -142,11 +142,11 @@ NdbSqlUtil::m_typeList[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Binary,
|
Type::Binary,
|
||||||
NULL // cmpBinary
|
cmpBinary
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Varbinary,
|
Type::Varbinary,
|
||||||
NULL // cmpVarbinary
|
cmpVarbinary
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Datetime,
|
Type::Datetime,
|
||||||
@ -154,11 +154,11 @@ NdbSqlUtil::m_typeList[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Timespec,
|
Type::Timespec,
|
||||||
NULL // cmpTimespec
|
cmpTimespec
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Blob,
|
Type::Blob,
|
||||||
NULL // cmpDatetime
|
cmpBlob
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type::Text,
|
Type::Text,
|
||||||
|
@ -15,18 +15,6 @@
|
|||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
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 "API.hpp"
|
||||||
#include "NdbApiSignal.hpp"
|
#include "NdbApiSignal.hpp"
|
||||||
|
|
||||||
@ -193,15 +181,6 @@ NdbApiSignal::setSignal(int aNdbSignalType)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GSN_SCAN_TABINFO:
|
|
||||||
{
|
|
||||||
theTrace = TestOrd::TraceAPI;
|
|
||||||
theReceiversBlockNumber = DBTC;
|
|
||||||
theVerId_signalNumber = GSN_SCAN_TABINFO;
|
|
||||||
theLength = 17;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GSN_SCAN_NEXTREQ:
|
case GSN_SCAN_NEXTREQ:
|
||||||
{
|
{
|
||||||
theTrace = TestOrd::TraceAPI;
|
theTrace = TestOrd::TraceAPI;
|
||||||
|
@ -43,11 +43,6 @@
|
|||||||
|
|
||||||
#include <NdbOut.hpp>
|
#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)
|
* int receiveSCAN_TABREF(NdbApiSignal* aSignal)
|
||||||
|
@ -470,11 +470,6 @@ int NdbScanOperation::nextResult(bool fetchAllowed)
|
|||||||
if(DEBUG_NEXT_RESULT)
|
if(DEBUG_NEXT_RESULT)
|
||||||
ndbout_c("nextResult(%d) idx=%d last=%d", fetchAllowed, idx, last);
|
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
|
* Check next buckets
|
||||||
*/
|
*/
|
||||||
|
@ -728,10 +728,6 @@ Ndb::handleReceivedSignal(NdbApiSignal* aSignal, LinearSectionPtr ptr[3])
|
|||||||
}
|
}
|
||||||
goto InvalidSignal;
|
goto InvalidSignal;
|
||||||
}
|
}
|
||||||
case GSN_SCAN_TABINFO:
|
|
||||||
{
|
|
||||||
goto InvalidSignal;
|
|
||||||
}
|
|
||||||
case GSN_KEYINFO20: {
|
case GSN_KEYINFO20: {
|
||||||
tFirstDataPtr = int2void(tFirstData);
|
tFirstDataPtr = int2void(tFirstData);
|
||||||
if (tFirstDataPtr == 0) goto InvalidSignal;
|
if (tFirstDataPtr == 0) goto InvalidSignal;
|
||||||
|
@ -25,6 +25,7 @@ testOperations \
|
|||||||
testRestartGci \
|
testRestartGci \
|
||||||
testScan \
|
testScan \
|
||||||
testScanInterpreter \
|
testScanInterpreter \
|
||||||
|
testScanPerf \
|
||||||
testSystemRestart \
|
testSystemRestart \
|
||||||
testTimeout \
|
testTimeout \
|
||||||
testTransactions \
|
testTransactions \
|
||||||
@ -59,6 +60,7 @@ testOperations_SOURCES = testOperations.cpp
|
|||||||
testRestartGci_SOURCES = testRestartGci.cpp
|
testRestartGci_SOURCES = testRestartGci.cpp
|
||||||
testScan_SOURCES = testScan.cpp ScanFunctions.hpp
|
testScan_SOURCES = testScan.cpp ScanFunctions.hpp
|
||||||
testScanInterpreter_SOURCES = testScanInterpreter.cpp ScanFilter.hpp ScanInterpretTest.hpp
|
testScanInterpreter_SOURCES = testScanInterpreter.cpp ScanFilter.hpp ScanInterpretTest.hpp
|
||||||
|
testScanPerf_SOURCES = testScanPerf.cpp
|
||||||
testSystemRestart_SOURCES = testSystemRestart.cpp
|
testSystemRestart_SOURCES = testSystemRestart.cpp
|
||||||
testTimeout_SOURCES = testTimeout.cpp
|
testTimeout_SOURCES = testTimeout.cpp
|
||||||
testTransactions_SOURCES = testTransactions.cpp
|
testTransactions_SOURCES = testTransactions.cpp
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
include .defs.mk
|
|
||||||
|
|
||||||
TYPE = ndbapitest
|
|
||||||
|
|
||||||
BIN_TARGET = testScanPerf
|
|
||||||
|
|
||||||
SOURCES = testScanPerf.cpp
|
|
||||||
|
|
||||||
include $(NDB_TOP)/Epilogue.mk
|
|
Reference in New Issue
Block a user