celloDb.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:39k
- /* 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
- }