mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fixed ndbapi-examples, and added tests for mysql-test-run.pl
storage/ndb/ndbapi-examples/ndbapi_simple_dual/Makefile: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/storage/ndb/ndbapi-examples/ndbapi_simple_dual/Makefile storage/ndb/ndbapi-examples/ndbapi_simple_dual/ndbapi_simple_dual.cpp: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/storage/ndb/ndbapi-examples/ndbapi_simple_dual/ndbapi_simple_dual.cpp storage/ndb/ndbapi-examples/mgmapi_logevent_dual/Makefile: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/storage/ndb/ndbapi-examples/mgmapi_logevent_dual/Makefile storage/ndb/ndbapi-examples/mgmapi_logevent_dual/mgmapi_logevent_dual.cpp: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/storage/ndb/ndbapi-examples/mgmapi_logevent_dual/mgmapi_logevent_dual.cpp mysql-test/include/have_ndbapi_examples.inc: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/mysql-test/include/have_ndbapi_examples.inc mysql-test/t/ndbapi.test: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/mysql-test/t/ndbapi.test mysql-test/t/rpl_ndbapi_multi.test: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/mysql-test/t/rpl_ndbapi_multi.test mysql-test/r/have_ndbapi_examples.require: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/mysql-test/r/have_ndbapi_examples.require mysql-test/r/ndbapi.result: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/mysql-test/r/ndbapi.result mysql-test/r/rpl_ndbapi_multi.result: BitKeeper file /windows/Linux_space/MySQL/mysql-5.1/mysql-test/r/rpl_ndbapi_multi.result
This commit is contained in:
@ -17,38 +17,48 @@
|
||||
//
|
||||
// ndbapi_async1.cpp: Using asynchronous transactions in NDB API
|
||||
//
|
||||
// Execute ndbapi_example1 to create the table "MYTABLENAME"
|
||||
// before executing this program.
|
||||
//
|
||||
// Correct output from this program is:
|
||||
//
|
||||
// Successful insert.
|
||||
// Successful insert.
|
||||
|
||||
#include <mysql.h>
|
||||
#include <NdbApi.hpp>
|
||||
|
||||
// Used for cout
|
||||
#include <iostream>
|
||||
|
||||
|
||||
#define PRINT_ERROR(code,msg) \
|
||||
std::cout << "Error in " << __FILE__ << ", line: " << __LINE__ \
|
||||
<< ", code: " << code \
|
||||
<< ", msg: " << msg << "." << std::endl
|
||||
#define MYSQLERROR(mysql) { \
|
||||
PRINT_ERROR(mysql_errno(&mysql),mysql_error(&mysql)); \
|
||||
exit(-1); }
|
||||
#define APIERROR(error) \
|
||||
{ std::cout << "Error in " << __FILE__ << ", line:" << __LINE__ << ", code:" \
|
||||
<< error.code << ", msg: " << error.message << "." << std::endl; \
|
||||
exit(-1); }
|
||||
|
||||
static void create_table(MYSQL &);
|
||||
static void drop_table(MYSQL &);
|
||||
static void callback(int result, NdbTransaction* NdbObject, void* aObject);
|
||||
|
||||
int main()
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if (argc != 3)
|
||||
{
|
||||
std::cout << "Arguments are <socket mysqld> <connect_string cluster>.\n";
|
||||
exit(-1);
|
||||
}
|
||||
char * mysqld_sock = argv[1];
|
||||
const char *connectstring = argv[2];
|
||||
ndb_init();
|
||||
|
||||
Ndb_cluster_connection *cluster_connection=
|
||||
new Ndb_cluster_connection(); // Object representing the cluster
|
||||
|
||||
if (cluster_connection->wait_until_ready(30,30))
|
||||
{
|
||||
std::cout << "Cluster was not ready within 30 secs." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
new Ndb_cluster_connection(connectstring); // Object representing the cluster
|
||||
|
||||
int r= cluster_connection->connect(5 /* retries */,
|
||||
3 /* delay between retries */,
|
||||
@ -65,15 +75,32 @@ int main()
|
||||
<< "Cluster connect failed.\n";
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
if (cluster_connection->wait_until_ready(30,30))
|
||||
|
||||
if (cluster_connection->wait_until_ready(30,0))
|
||||
{
|
||||
std::cout << "Cluster was not ready within 30 secs." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
// connect to mysql server
|
||||
MYSQL mysql;
|
||||
if ( !mysql_init(&mysql) ) {
|
||||
std::cout << "mysql_init failed\n";
|
||||
exit(-1);
|
||||
}
|
||||
if ( !mysql_real_connect(&mysql, "localhost", "root", "", "",
|
||||
0, mysqld_sock, 0) )
|
||||
MYSQLERROR(mysql);
|
||||
|
||||
/********************************************
|
||||
* Connect to database via mysql-c *
|
||||
********************************************/
|
||||
mysql_query(&mysql, "CREATE DATABASE TEST_DB_1");
|
||||
if (mysql_query(&mysql, "USE TEST_DB_1") != 0) MYSQLERROR(mysql);
|
||||
create_table(mysql);
|
||||
|
||||
Ndb* myNdb = new Ndb( cluster_connection,
|
||||
"TEST_DB_2" ); // Object representing the database
|
||||
"TEST_DB_1" ); // Object representing the database
|
||||
|
||||
NdbTransaction* myNdbTransaction[2]; // For transactions
|
||||
NdbOperation* myNdbOperation; // For operations
|
||||
@ -119,10 +146,38 @@ int main()
|
||||
delete myNdb;
|
||||
delete cluster_connection;
|
||||
|
||||
drop_table(mysql);
|
||||
|
||||
ndb_end(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* Create a table named MYTABLENAME if it does not exist *
|
||||
*********************************************************/
|
||||
static void create_table(MYSQL &mysql)
|
||||
{
|
||||
if (mysql_query(&mysql,
|
||||
"CREATE TABLE"
|
||||
" MYTABLENAME"
|
||||
" (ATTR1 INT UNSIGNED NOT NULL PRIMARY KEY,"
|
||||
" ATTR2 INT UNSIGNED NOT NULL)"
|
||||
" ENGINE=NDB"))
|
||||
MYSQLERROR(mysql);
|
||||
}
|
||||
|
||||
/***********************************
|
||||
* Drop a table named MYTABLENAME
|
||||
***********************************/
|
||||
static void drop_table(MYSQL &mysql)
|
||||
{
|
||||
if (mysql_query(&mysql,
|
||||
"DROP TABLE"
|
||||
" MYTABLENAME"))
|
||||
MYSQLERROR(mysql);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* callback : This is called when the transaction is polled
|
||||
*
|
||||
|
Reference in New Issue
Block a user