mariadb/ndb/test/ndbapi/celloDb.cpp
unknown 47c877bdf8 ndb_init() to all ndb programs
ndb/examples/ndbapi_async_example/ndbapi_async.cpp:
  ndb_init()
ndb/examples/ndbapi_example1/ndbapi_example1.cpp:
  ndb_init()
ndb/examples/ndbapi_example2/ndbapi_example2.cpp:
  ndb_init()
ndb/examples/ndbapi_example3/ndbapi_example3.cpp:
  ndb_init()
ndb/examples/ndbapi_example4/ndbapi_example4.cpp:
  ndb_init()
ndb/examples/ndbapi_example5/ndbapi_example5.cpp:
  ndb_init()
ndb/examples/ndbapi_scan_example/ndbapi_scan.cpp:
  ndb_init()
ndb/examples/select_all/select_all.cpp:
  ndb_init()
ndb/include/ndb_global.h:
  ndb_init()
ndb/src/common/util/Makefile.am:
  ndb_init()
ndb/src/kernel/blocks/backup/read.cpp:
  ndb_init()
ndb/src/kernel/blocks/backup/restore/main.cpp:
  ndb_init()
ndb/src/kernel/main.cpp:
  ndb_init()
ndb/src/kernel/vm/Configuration.cpp:
  ndb_init()
ndb/src/mgmclient/main.cpp:
  ndb_init()
ndb/src/mgmsrv/main.cpp:
  ndb_init()
ndb/src/mgmsrv/mkconfig/mkconfig.cpp:
  ndb_init()
ndb/src/ndbapi/Ndbinit.cpp:
  ndb_init()
ndb/test/ndbapi/acid.cpp:
  ndb_init()
ndb/test/ndbapi/acid2.cpp:
  ndb_init()
ndb/test/ndbapi/benchronja.cpp:
  ndb_init()
ndb/test/ndbapi/bulk_copy.cpp:
  ndb_init()
ndb/test/ndbapi/cdrserver.cpp:
  ndb_init()
ndb/test/ndbapi/celloDb.cpp:
  ndb_init()
ndb/test/ndbapi/create_all_tabs.cpp:
  ndb_init()
ndb/test/ndbapi/create_tab.cpp:
  ndb_init()
ndb/test/ndbapi/drop_all_tabs.cpp:
  ndb_init()
ndb/test/ndbapi/flexAsynch.cpp:
  ndb_init()
ndb/test/ndbapi/flexBench.cpp:
  ndb_init()
ndb/test/ndbapi/flexHammer.cpp:
  ndb_init()
ndb/test/ndbapi/flexScan.cpp:
  ndb_init()
ndb/test/ndbapi/flexTT.cpp:
  ndb_init()
ndb/test/ndbapi/flexTimedAsynch.cpp:
  ndb_init()
ndb/test/ndbapi/flex_bench_mysql.cpp:
  ndb_init()
ndb/test/ndbapi/index.cpp:
  ndb_init()
ndb/test/ndbapi/index2.cpp:
  ndb_init()
ndb/test/ndbapi/initronja.cpp:
  ndb_init()
ndb/test/ndbapi/interpreterInTup.cpp:
  ndb_init()
ndb/test/ndbapi/mainAsyncGenerator.cpp:
  ndb_init()
ndb/test/ndbapi/msa.cpp:
  ndb_init()
ndb/test/ndbapi/restarter.cpp:
  ndb_init()
ndb/test/ndbapi/restarter2.cpp:
  ndb_init()
ndb/test/ndbapi/restarts.cpp:
  ndb_init()
ndb/test/ndbapi/size.cpp:
  ndb_init()
ndb/test/ndbapi/slow_select.cpp:
  ndb_init()
ndb/test/ndbapi/testBackup.cpp:
  ndb_init()
ndb/test/ndbapi/testBasic.cpp:
  ndb_init()
ndb/test/ndbapi/testBasicAsynch.cpp:
  ndb_init()
ndb/test/ndbapi/testBlobs.cpp:
  ndb_init()
ndb/test/ndbapi/testDataBuffers.cpp:
  ndb_init()
ndb/test/ndbapi/testDeadlock.cpp:
  ndb_init()
ndb/test/ndbapi/testDict.cpp:
  ndb_init()
ndb/test/ndbapi/testGrep.cpp:
  ndb_init()
ndb/test/ndbapi/testGrepVerify.cpp:
  ndb_init()
ndb/test/ndbapi/testIndex.cpp:
  ndb_init()
ndb/test/ndbapi/testInterpreter.cpp:
  ndb_init()
ndb/test/ndbapi/testMgm.cpp:
  ndb_init()
ndb/test/ndbapi/bank/bankCreator.cpp:
  ndb_init()
ndb/test/ndbapi/bank/bankMakeGL.cpp:
  ndb_init()
ndb/test/ndbapi/bank/bankSumAccounts.cpp:
  ndb_init()
ndb/test/ndbapi/bank/bankTimer.cpp:
  ndb_init()
ndb/test/ndbapi/bank/bankTransactionMaker.cpp:
  ndb_init()
ndb/test/ndbapi/bank/bankValidateAllGLs.cpp:
  ndb_init()
ndb/test/ndbapi/bank/testBank.cpp:
  ndb_init()
ndb/test/ndbapi/testNdbApi.cpp:
  ndb_init()
ndb/test/ndbapi/testNodeRestart.cpp:
  ndb_init()
ndb/test/ndbapi/testOIBasic.cpp:
  ndb_init()
ndb/test/ndbapi/testOperations.cpp:
  ndb_init()
ndb/test/ndbapi/testOrderedIndex.cpp:
  ndb_init()
ndb/test/ndbapi/testReadPerf.cpp:
  ndb_init()
ndb/test/ndbapi/testRestartGci.cpp:
  ndb_init()
ndb/test/ndbapi/testScan.cpp:
  ndb_init()
ndb/test/ndbapi/testScanInterpreter.cpp:
  ndb_init()
ndb/test/ndbapi/testScanPerf.cpp:
  ndb_init()
ndb/test/ndbapi/testSystemRestart.cpp:
  ndb_init()
ndb/test/ndbapi/testTimeout.cpp:
  ndb_init()
ndb/test/ndbapi/testTransactions.cpp:
  ndb_init()
ndb/test/ndbapi/test_event.cpp:
  ndb_init()
ndb/test/run-test/main.cpp:
  ndb_init()
ndb/test/src/NDBT_Test.cpp:
  ndb_init()
ndb/test/tools/copy_tab.cpp:
  ndb_init()
ndb/test/tools/cpcc.cpp:
  ndb_init()
ndb/test/tools/create_index.cpp:
  ndb_init()
ndb/test/tools/hugoCalculator.cpp:
  ndb_init()
ndb/test/tools/hugoFill.cpp:
  ndb_init()
ndb/test/tools/hugoLoad.cpp:
  ndb_init()
ndb/test/tools/hugoLockRecords.cpp:
  ndb_init()
ndb/test/tools/hugoPkDelete.cpp:
  ndb_init()
ndb/test/tools/hugoPkRead.cpp:
  ndb_init()
ndb/test/tools/hugoPkReadRecord.cpp:
  ndb_init()
ndb/test/tools/hugoPkUpdate.cpp:
  ndb_init()
ndb/test/tools/hugoScanRead.cpp:
  ndb_init()
ndb/test/tools/hugoScanUpdate.cpp:
  ndb_init()
ndb/test/tools/restart.cpp:
  ndb_init()
ndb/test/tools/transproxy.cpp:
  ndb_init()
ndb/test/tools/verify_index.cpp:
  ndb_init()
ndb/tools/delete_all.cpp:
  ndb_init()
ndb/tools/desc.cpp:
  ndb_init()
ndb/tools/drop_index.cpp:
  ndb_init()
ndb/tools/drop_tab.cpp:
  ndb_init()
ndb/tools/listTables.cpp:
  ndb_init()
ndb/tools/ndbsql.cpp:
  ndb_init()
ndb/tools/select_all.cpp:
  ndb_init()
ndb/tools/select_count.cpp:
  ndb_init()
ndb/tools/waiter.cpp:
  ndb_init()
2004-09-15 11:49:18 +02:00

1504 lines
39 KiB
C++

/* Copyright (C) 2003 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* ***************************************************
BASIC TEST 1
Test basic functions and status of NDB
Arguments:
none
Returns:
0 - Test passed
-1 - Test failed
1 - Invalid arguments
flexBench
* *************************************************** */
#include <NdbApi.hpp>
#include <NdbMain.h>
#define MAXATTR 4
#define MAXTABLES 4
#define PAGESIZE 8192
#define OVERHEAD 0.02
#define NUMBEROFRECORDS 10
#define PKSIZE 1
#define ATTRNAMELEN 16
static void createTable_IPACCT(Ndb*);
static void createTable_RPACCT(Ndb*);
static void createTable_SBMCALL(Ndb*);
static void createTable_TODACCT(Ndb*);
static void error_handler(const char*);
static bool error_handler2(const char*, int) ;
static void setAttrNames(void);
static void setTableNames(void);
static void create_table(Ndb*);
static void insert_rows(Ndb*);
static void update_rows(Ndb*);
static void delete_rows(Ndb*);
static void verify_deleted(Ndb*);
static void read_and_verify_rows(Ndb*);
static void insert_IPACCT(Ndb*, Uint32, Uint32, Uint32, Uint32, Uint32); //3 for Pk, and two data. just to test;
static void read_IPACCT(Ndb* , Uint32 , Uint32 , Uint32 );
static int tAttributeSize;
static int bTestPassed;
static char tableName[MAXTABLES][ATTRNAMELEN];static char attrName[MAXATTR][ATTRNAMELEN];
static int attrValue[NUMBEROFRECORDS];
static int pkValue[NUMBEROFRECORDS];
static int failed = 0 ;
#include <NdbOut.hpp>
NDB_COMMAND(celloDb, "celloDb", "celloDb", "celloDb", 65535)
{
ndb_init();
int tTableId;
int i;
Ndb MyNdb( "CELLO-SESSION-DB" );
MyNdb.init();
// Assume test passed
bTestPassed = 0;
/*
// Initialize global variables
for (i = 0; i < NUMBEROFRECORDS; i ++)
pkValue[i] = i;
for (i = 0; i < NUMBEROFRECORDS; i ++)
attrValue[i] = i;
*/
tAttributeSize = 1;
// Wait for Ndb to become ready
if (MyNdb.waitUntilReady() == 0) {
ndbout << endl << "Cello session db - Starting " << endl;
ndbout << "Test basic functions and status of NDB" << endl;
createTable_SBMCALL (&MyNdb );
createTable_RPACCT (&MyNdb );
createTable_TODACCT (&MyNdb );
createTable_IPACCT (&MyNdb );
insert_IPACCT(&MyNdb, 1,2,1,2,2);
read_IPACCT(&MyNdb, 1, 2 , 1);
/*
insert_rows(&MyNdb);
read_and_verify_rows(&MyNdb);
// Create some new values to use for update
for (i = 0; i < NUMBEROFRECORDS; i++)
attrValue[i] = NUMBEROFRECORDS-i;
update_rows(&MyNdb);
read_and_verify_rows(&MyNdb);
delete_rows(&MyNdb);
verify_deleted(&MyNdb);
*/
}
else {
bTestPassed = -1;
}
if (bTestPassed == 0)
{
// Test passed
ndbout << "OK - Test passed" << endl;
}
else
{
// Test failed
ndbout << "FAIL - Test failed" << endl;
exit(-1);
}
return NULL;
}
static void
error_handler(const char* errorText)
{
// Test failed
ndbout << endl << "ErrorMessage: " << errorText << endl;
bTestPassed = -1;
}
static void
createTable_SBMCALL ( Ndb* pMyNdb )
{
/****************************************************************
* Create table and attributes.
*
* create table SBMCALL(
* for attribs, see the REQ SPEC for cello session DB
* )
*
***************************************************************/
const char* tname = "SBMCALL";
Uint32 recordsize = 244; //including 12 byte overhead
Uint32 pksize = 8; //size of total prim. key. in bytes. sum of entire composite PK.
Uint32 tTableId = pMyNdb->getTable()->openTable(tname);
if (tTableId == -1) {
Uint32 check;
Uint32 i;
NdbSchemaCon *MySchemaTransaction;
NdbSchemaOp *MySchemaOp;
ndbout << "Creating " << tname << "..." << endl;
MySchemaTransaction = pMyNdb->startSchemaTransaction();
if( ( MySchemaTransaction == NULL ) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
MySchemaOp = MySchemaTransaction->getNdbSchemaOp();
if( ( MySchemaOp == NULL ) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Createtable
Uint32 tablesize=(recordsize*NUMBEROFRECORDS + OVERHEAD * NUMBEROFRECORDS)/1024;
Uint32 noPages=(pksize*NUMBEROFRECORDS)/PAGESIZE;
ndbout << "table size " << tablesize << "for table name " << tname << endl;
check = MySchemaOp->createTable( tname,
tablesize, // Table Size
TupleKey, // Key Type
noPages, // Nr of Pages
All,
6,
78,
80,
1,
true
);
if( check == -1 ) {
error_handler(MySchemaTransaction->getNdbErrorString());
exit(-1);
}
// Create first column, primary key
check = MySchemaOp->createAttribute( "SPBBOARDID",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create second column, primary key
check = MySchemaOp->createAttribute( "CALLID",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Creat thrid column, RP Session info, byte[16] represented as (String, 16)
check = MySchemaOp->createAttribute( "RPSESS",
NoKey,
32,
16,
String,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Creat fourth column, GRE Tunnel info, byte[16] represented as (String, 16)
check = MySchemaOp->createAttribute( "GRETUNNEL",
NoKey,
32,
16,
String,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Creat fifth column, PPP Session info, byte[24] represented as (String, 24)
check = MySchemaOp->createAttribute( "PPPSESS",
NoKey,
32,
24,
String,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
if( (MySchemaTransaction->execute() == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
pMyNdb->closeSchemaTransaction(MySchemaTransaction);
ndbout << "done" << endl;
} //if
//else table already created , proceed
}
static void
createTable_RPACCT(Ndb*pMyNdb)
{
/****************************************************************
* Create table and attributes.
*
* create table RPACCT(
* for attribs, see the REQ SPEC for cello session DB
* )
*
***************************************************************/
const char* tname = "RPACCT";
Uint32 recordsize = 380; //including 12 byte overhead
Uint32 pksize = 8; //size of total prim. key. in bytes.
Uint32 tTableId = pMyNdb->getTable()->openTable(tname);
if (tTableId == -1) {
Uint32 check;
Uint32 i;
NdbSchemaCon *MySchemaTransaction;
NdbSchemaOp *MySchemaOp;
ndbout << "Creating " << tname << "..." << endl;
MySchemaTransaction = pMyNdb->startSchemaTransaction();
if( MySchemaTransaction == NULL )
error_handler(MySchemaTransaction->getNdbErrorString());
MySchemaOp = MySchemaTransaction->getNdbSchemaOp();
if( MySchemaOp == NULL )
error_handler(MySchemaTransaction->getNdbErrorString());
// Createtable
Uint32 tablesize=(recordsize*NUMBEROFRECORDS + OVERHEAD * NUMBEROFRECORDS)/1024;
Uint32 noPages=(pksize*NUMBEROFRECORDS)/PAGESIZE;
ndbout << "table size " << tablesize << "for table name " << tname << endl;
check = MySchemaOp->createTable( tname,
tablesize, // Table Size
TupleKey, // Key Type
noPages // Nr of Pages
);
if( check == -1 )
error_handler(MySchemaTransaction->getNdbErrorString());
// Create first column, primary key
check = MySchemaOp->createAttribute( "SPBBOARDID",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create second column, primary key
check = MySchemaOp->createAttribute( "CALLID",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Creat thrid column MS ID, 4 byte unsigned
check = MySchemaOp->createAttribute( "MSID",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create PDSN FA Address, 4 byte unsigned
check = MySchemaOp->createAttribute( "PDSN",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Serving PCF, 4 byte unsigned
check = MySchemaOp->createAttribute( "SPCF",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create BS ID, 12 byte char, represented as String,12
check = MySchemaOp->createAttribute( "BSID",
NoKey,
32,
12,
String,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create User Zone, 4 byte unsigned
check = MySchemaOp->createAttribute( "UZ",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Forward Multiplex, 4 byte unsigned
check = MySchemaOp->createAttribute( "FMO",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Reverse Multiplex, 4 byte unsigned
check = MySchemaOp->createAttribute( "RMO",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Forward Fund rate, 4 byte unsigned
check = MySchemaOp->createAttribute( "FFR",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Reverse Fund rate, 4 byte unsigned
check = MySchemaOp->createAttribute( "RFR",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Service Option, 4 byte unsigned
check = MySchemaOp->createAttribute( "SO",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Forward Traffic Type, 4 byte unsigned
check = MySchemaOp->createAttribute( "FTT",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Reverse Traffic Type, 4 byte unsigned
check = MySchemaOp->createAttribute( "RTT",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Fund Frame Size, 4 byte unsigned
check = MySchemaOp->createAttribute( "FFS",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Forware Fund RC, 4 byte unsigned
check = MySchemaOp->createAttribute( "FFRC",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Reverse Fund RC, 4 byte unsigned
check = MySchemaOp->createAttribute( "RFRC",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create DCCH Frame Format, 4 byte unsigned
check = MySchemaOp->createAttribute( "DCCH",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Airlink QOS, 4 byte unsigned
check = MySchemaOp->createAttribute( "AQOS",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Bad PPP Frame Count , 4 byte unsigned
check = MySchemaOp->createAttribute( "BPPPFC",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Active Time , 4 byte unsigned
check = MySchemaOp->createAttribute( "AT",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Nb Active Transitions , 4 byte unsigned
check = MySchemaOp->createAttribute( "NBAT",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create SDB Octet Count In , 4 byte unsigned
check = MySchemaOp->createAttribute( "SDBOCI",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Nb SDB In, 4 byte unsigned
check = MySchemaOp->createAttribute( "NBSDBI",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Nb SDB Out, 4 byte unsigned
check = MySchemaOp->createAttribute( "NBSDBO",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create HDLC Bytes received, 4 byte unsigned
check = MySchemaOp->createAttribute( "HDLC",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
if( (MySchemaTransaction->execute() == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
pMyNdb->closeSchemaTransaction(MySchemaTransaction);
ndbout << "done" << endl;
} //if
//else table already created , proceed
}
static void
createTable_IPACCT(Ndb* pMyNdb)
{
/****************************************************************
* Create table and attributes.
*
* create table IPACCT(
* for attribs, see the REQ SPEC for cello session DB
* )
*
***************************************************************/
const char* tname = "IPACCT";
Uint32 recordsize = 70; //including 12 byte overhead
Uint32 pksize = 12; //size of total prim. key. in bytes.
Uint32 tTableId = pMyNdb->getTable()->openTable(tname);
if (tTableId == -1) {
Uint32 check;
Uint32 i;
NdbSchemaCon *MySchemaTransaction;
NdbSchemaOp *MySchemaOp;
ndbout << "Creating " << tname << "..." << endl;
MySchemaTransaction = pMyNdb->startSchemaTransaction();
if( MySchemaTransaction == NULL )
error_handler(MySchemaTransaction->getNdbErrorString());
MySchemaOp = MySchemaTransaction->getNdbSchemaOp();
if( MySchemaOp == NULL )
error_handler(MySchemaTransaction->getNdbErrorString());
// Createtable
Uint32 tablesize=(recordsize*NUMBEROFRECORDS + OVERHEAD * NUMBEROFRECORDS)/1024;
Uint32 noPages=(pksize*NUMBEROFRECORDS)/PAGESIZE;
ndbout << "table size " << tablesize << "for table name " << tname << endl;
check = MySchemaOp->createTable( tname,
tablesize, // Table Size
TupleKey, // Key Type
noPages // Nr of Pages
);
if( check == -1 )
error_handler(MySchemaTransaction->getNdbErrorString());
// Create first column, primary key
check = MySchemaOp->createAttribute( "SPBBOARDID",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create second column, primary key
check = MySchemaOp->createAttribute( "CALLID",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create third column, primary key
check = MySchemaOp->createAttribute( "IPADDR",
TupleKey,
32,
PKSIZE,
String,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Acct session id 4 byte unsigned
check = MySchemaOp->createAttribute( "ASID",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Correlation ID, 4 byte unsigned
check = MySchemaOp->createAttribute( "CID",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create MIP HA Address, 4 byte unsigned
check = MySchemaOp->createAttribute( "MIPHA",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create IP technology, 4 byte unsigned
check = MySchemaOp->createAttribute( "IPT",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Compuls Tunnel ID, 4 byte unsigned
check = MySchemaOp->createAttribute( "CTID",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create IP QOS, 4 byte unsigned
check = MySchemaOp->createAttribute( "IPQOS",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Data octet count in, 4 byte unsigned
check = MySchemaOp->createAttribute( "DOCI",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Data octet count out, 4 byte unsigned
check = MySchemaOp->createAttribute( "DOCO",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Event time, 4 byte unsigned
check = MySchemaOp->createAttribute( "ET",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create In mip sig count, 4 byte unsigned
check = MySchemaOp->createAttribute( "IMSC",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Out mip sig count, 4 byte unsigned
check = MySchemaOp->createAttribute( "OMSC",
NoKey,
32,
1,
UnSigned,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
if( (MySchemaTransaction->execute() == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
pMyNdb->closeSchemaTransaction(MySchemaTransaction);
ndbout << "done" << endl;
} //if
//else table already created , proceed
}
static void
createTable_TODACCT(Ndb* pMyNdb)
{
/****************************************************************
* Create table and attributes.
*
* create table TODACCT(
* for attribs, see the REQ SPEC for cello session DB
* )
*
***************************************************************/
const char* tname = "TODACCT";
Uint32 recordsize = 92; //including 12 byte overhead
Uint32 pksize = 12; //size of total prim. key. in bytes.
Uint32 tTableId = pMyNdb->getTable()->openTable(tname);
if (tTableId == -1) {
Uint32 check;
Uint32 i;
NdbSchemaCon *MySchemaTransaction;
NdbSchemaOp *MySchemaOp;
ndbout << "Creating " << tname << "..." << endl;
MySchemaTransaction = pMyNdb->startSchemaTransaction();
if( MySchemaTransaction == NULL )
error_handler(MySchemaTransaction->getNdbErrorString());
MySchemaOp = MySchemaTransaction->getNdbSchemaOp();
if( MySchemaOp == NULL )
error_handler(MySchemaTransaction->getNdbErrorString());
// Createtable
Uint32 tablesize=(recordsize*NUMBEROFRECORDS + OVERHEAD * NUMBEROFRECORDS)/1024;
Uint32 noPages=(pksize*NUMBEROFRECORDS)/PAGESIZE;
ndbout << "table size " << tablesize << "for table name " << tname << endl;
check = MySchemaOp->createTable( tname,
tablesize, // Table Size
TupleKey, // Key Type
noPages // Nr of Pages
);
if( check == -1 )
error_handler(MySchemaTransaction->getNdbErrorString());
// Create first column, primary key
check = MySchemaOp->createAttribute( "SPBBOARDID",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create second column, primary key
check = MySchemaOp->createAttribute( "CALLID",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create third column, primary key
check = MySchemaOp->createAttribute( "IPADDR",
TupleKey,
32,
PKSIZE,
String,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create third column, primary key
check = MySchemaOp->createAttribute( "INDEX",
TupleKey,
32,
PKSIZE,
UnSigned,
MMBased,
NotNullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
// Create Acct session id 4 byte unsigned
check = MySchemaOp->createAttribute( "TOD",
NoKey,
32,
16,
String,
MMBased,
NullAttribute );
if( (check == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
if( (MySchemaTransaction->execute() == -1) && (!error_handler2((const char*)MySchemaTransaction->getNdbErrorString(), MySchemaTransaction->getNdbError())) )
exit (-1) ;
pMyNdb->closeSchemaTransaction(MySchemaTransaction);
ndbout << "done" << endl;
} //if
//else table already created , proceed
}
static void read_IPACCT(Ndb* pMyNdb, Uint32 CALLID, Uint32 SPBBOARDID , Uint32 IPADDR)
{
int check;
int loop_count_ops;
int count;
int count_attributes;
char* value;
NdbConnection *MyTransaction;
NdbOperation *MyOperation;
NdbRecAttr* tTmp;
MyTransaction = pMyNdb->startTransaction();
if (MyTransaction == NULL)
error_handler(pMyNdb->getNdbErrorString());
MyOperation = MyTransaction->getNdbOperation("IPACCT");
if (MyOperation == NULL)
error_handler( MyTransaction->getNdbErrorString());
check = MyOperation->readTuple();
if( check == -1 )
error_handler( MyTransaction->getNdbErrorString());
check = MyOperation->equal( "SPBBOARDID",SPBBOARDID );
if( check == -1 )
error_handler( MyTransaction->getNdbErrorString());
check = MyOperation->equal( "IPADDR","IPADDR" );
if( check == -1 )
error_handler( MyTransaction->getNdbErrorString());
check = MyOperation->equal( "CALLID",CALLID );
if( check == -1 )
error_handler( MyTransaction->getNdbErrorString());
tTmp = MyOperation->getValue("IPQOS", NULL );
if( tTmp == NULL )
error_handler( MyTransaction->getNdbErrorString());
ndbout << " tTmp " << tTmp->isNULL() << endl;
MyTransaction->execute(Commit);
ndbout << " value read " << tTmp->int32_value() << endl;
}
static void insert_IPACCT(Ndb* pMyNdb, Uint32 CALLID, Uint32 SPBBOARDID , Uint32 IPADDR, Uint32 ASID, Uint32 IPQOS)
{
/****************************************************************
* Insert rows
*
***************************************************************/
int check;
int loop_count_ops;
int count;
int i;
NdbConnection *MyTransaction;
NdbOperation *MyOperation;
ndbout << "Inserting records..." << flush;
MyTransaction = pMyNdb->startTransaction();
if (MyTransaction == NULL)
error_handler(pMyNdb->getNdbErrorString());
MyOperation = MyTransaction->getNdbOperation("IPACCT");
if (MyOperation == NULL)
error_handler(MyTransaction->getNdbErrorString());
check = MyOperation->insertTuple();
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
ndbout << "insertTuple" << endl;
check = MyOperation->equal("CALLID",CALLID );
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
ndbout << "equal" << endl;
check = MyOperation->equal("SPBBOARDID",SPBBOARDID );
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
ndbout << "equal" << endl;
check = MyOperation->equal("IPADDR","IPADDR" );
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
ndbout << "equal" << endl;
check = MyOperation->setValue( "IPQOS", IPQOS);
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
ndbout << "Set Value" << endl;
check = MyOperation->setValue( "ASID", ASID);
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
ndbout << "Set Value" << endl;
check = MyTransaction->execute( Commit );
if(check == -1 ) {
ndbout << "error at commit" << endl;
error_handler(MyTransaction->getNdbErrorString());
}
else
;//ndbout << ".";
pMyNdb->closeTransaction(MyTransaction);
ndbout << "OK" << endl;
return;
}
static void
update_rows(Ndb* pMyNdb){
/****************************************************************
* Update rows in SimpleTable
*
***************************************************************/
int check;
int loop_count_ops;
int count;
int i;
NdbConnection *MyTransaction;
NdbOperation *MyOperation;
ndbout << "Updating records..." << flush;
loop_count_ops = NUMBEROFRECORDS;
for (count=0 ; count < loop_count_ops ; count++) {
MyTransaction = pMyNdb->startTransaction();
if (MyTransaction == NULL)
error_handler( pMyNdb->getNdbErrorString() );
MyOperation = MyTransaction->getNdbOperation(tableName[0]);
if (MyOperation == NULL)
error_handler(MyTransaction->getNdbErrorString());
check = MyOperation->updateTuple();
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
check = MyOperation->equal( attrName[0], (char*)&pkValue[count] );
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
for (i = 1; i < MAXATTR; i++)
{
check = MyOperation->setValue( attrName[i], (char*)&attrValue[count]);
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
}
if( MyTransaction->execute( Commit ) == -1 )
error_handler(MyTransaction->getNdbErrorString());
else
;//ndbout << ".";
pMyNdb->closeTransaction(MyTransaction);
}
ndbout << "OK" << endl;
return;
};
static void
delete_rows(Ndb* pMyNdb){
/****************************************************************
* Delete rows from SimpleTable
*
***************************************************************/
int check;
int loop_count_ops;
int count;
NdbConnection *MyTransaction;
NdbOperation *MyOperation;
ndbout << "Deleting records..."<< flush;
loop_count_ops = NUMBEROFRECORDS;
for (count=0 ; count < loop_count_ops ; count++) {
MyTransaction = pMyNdb->startTransaction();
if (MyTransaction == NULL)
error_handler( pMyNdb->getNdbErrorString() );
MyOperation = MyTransaction->getNdbOperation(tableName[0]);
if (MyOperation == NULL)
error_handler(MyTransaction->getNdbErrorString());
check = MyOperation->deleteTuple();
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
check = MyOperation->equal( attrName[0], (char*)&pkValue[count] );
if( check == -1 )
error_handler(MyTransaction->getNdbErrorString());
if( MyTransaction->execute( Commit ) == -1 )
error_handler(MyTransaction->getNdbErrorString());
else
;// ndbout << ".";
pMyNdb->closeTransaction(MyTransaction);
}
ndbout << "OK" << endl;
return;
};
static void
verify_deleted(Ndb* pMyNdb){
int check;
int loop_count_ops;
int count;
NdbConnection *MyTransaction;
NdbOperation *MyOperation;
ndbout << "Verifying deleted records..."<< flush;
loop_count_ops = NUMBEROFRECORDS;
for (count=0 ; count < loop_count_ops ; count++)
{
MyTransaction = pMyNdb->startTransaction();
if (MyTransaction == NULL)
error_handler(pMyNdb->getNdbErrorString());
MyOperation = MyTransaction->getNdbOperation(tableName[0]);
if (MyOperation == NULL)
error_handler( MyTransaction->getNdbErrorString());
check = MyOperation->readTuple();
if( check == -1 )
error_handler( MyTransaction->getNdbErrorString());
check = MyOperation->equal( attrName[0],(char*)&pkValue[count] );
if( check == -1 )
error_handler( MyTransaction->getNdbErrorString());
// Exepect to receive an error
if( MyTransaction->execute( Commit ) != -1 )
error_handler(MyTransaction->getNdbErrorString());
else
{
;//ndbout << ".";
}
pMyNdb->closeTransaction(MyTransaction);
}
ndbout << "OK" << endl;
return;
};
static void
read_and_verify_rows(Ndb* pMyNdb)
{
int check;
int loop_count_ops;
int count;
int count_attributes;
NdbConnection *MyTransaction;
NdbOperation *MyOperation;
NdbRecAttr* tTmp;
int readValue[MAXATTR];
ndbout << "Verifying records..."<< flush;
loop_count_ops = NUMBEROFRECORDS;
for (count=0 ; count < loop_count_ops ; count++)
{
MyTransaction = pMyNdb->startTransaction();
if (MyTransaction == NULL)
error_handler(pMyNdb->getNdbErrorString());
MyOperation = MyTransaction->getNdbOperation(tableName[0]);
if (MyOperation == NULL)
error_handler( MyTransaction->getNdbErrorString());
check = MyOperation->readTuple();
if( check == -1 )
error_handler( MyTransaction->getNdbErrorString());
check = MyOperation->equal( attrName[0],(char*)&pkValue[count] );
if( check == -1 )
error_handler( MyTransaction->getNdbErrorString());
for (count_attributes = 1; count_attributes < MAXATTR; count_attributes++)
{
tTmp = MyOperation->getValue( (char*)attrName[count_attributes], (char*)&readValue[count_attributes] );
if( tTmp == NULL )
error_handler( MyTransaction->getNdbErrorString());
}
if( MyTransaction->execute( Commit ) == -1 )
error_handler(MyTransaction->getNdbErrorString());
else
{
// Check value in db against value in mem
//ndbout << readValue[1] << " == " << attrValue[count] << endl;
if ( readValue[1]!=attrValue[count] )
error_handler("Verification error!");
else
if ( readValue[2]!=attrValue[count] )
error_handler("Verification error!");
else
if ( readValue[3]!=attrValue[count] )
error_handler("Verification error!");
else
{
;//ndbout << ".";
}
}
pMyNdb->closeTransaction(MyTransaction);
}
ndbout << "OK" << endl;
return;
};
static void
setAttrNames()
{
int i;
for (i = 0; i < MAXATTR ; i++)
{
sprintf(&attrName[i][0], "Col%d", i);
}
}
static void
setTableNames()
{
int i;
sprintf(&tableName[0][0], "SBMCALL", 0);
sprintf(&tableName[1][0], "RPACCT", 0);
sprintf(&tableName[2][0], "IPACCT", 0);
sprintf(&tableName[3][0], "TODACCT", 0);
}
bool error_handler2(const char* error_string, int error_int) {
failed++ ;
ndbout << error_string << endl ;
if ( 4008==error_int || 721==error_int || 266==error_int ){
ndbout << endl << "Attempting to recover and continue now..." << endl ;
return true ; // return true to retry
}
return false ; // return false to abort
}