/* mysel tpc-B SQL select Programma per effettuare selezioni sulle tabelle standard (TPC-B) Il suo utilizzo consente di effettuare prove parametriche sull'utilizzo di MySQL in parallelo da parte di piu' utenti. */ #include /* #include */ #include "mysql.h" int Bid; int Aid; double Abalance; char username[40]; char passwd[40]; char hostname[40]; char query[256]; MYSQL m; MYSQL_RES *results; MYSQL_ROW record; int i; int ntimes; int scale; main(argc, argv) int argc; char **argv; { if (argc != 5) { if (argc != 6) { printf("select TPC-B for MySQL database: version 1.0.0 - SQL\n"); printf("Usage: mysel user passwd hostname times [scale] \n"); exit(2); } } strcpy(username, argv[1]); strcpy(passwd, argv[2]); strcpy(hostname, argv[3]); sscanf(argv[4], "%d", &ntimes); if (argc == 5) { scale=1; } else { sscanf(argv[5], "%d", &scale); } if ( ntimes < 1 ) { printf("Usage: mysubmit user passwd hostname times log [scale] \n"); printf("times must be more than 0\n"); exit(2); } if ( scale < 1 ) { printf("Usage: mysubmit user passwd hostname times log [scale] \n"); printf("scale must be more than 0\n"); exit(2); } srand(getpid()); mysql_init(&m); if (!mysql_real_connect(&m, hostname, username, passwd, "bench", 0,NULL,0)) { fprintf(stderr, "Error in connect: %s\n", mysql_error(&m)); exit(1); } while (ntimes--) { Bid = rand(); Bid = Bid - Bid/scale*scale; Aid = rand(); Aid = Aid - Aid/100000*100000; Aid = Aid + 100000*Bid; sprintf(query,"SELECT Abalance FROM B_ACCOUNTS WHERE Aid = %d", Aid); if (mysql_query(&m, query)) { fprintf(stderr, "Error in SEL acc: %s\n", mysql_error(&m)); } results = mysql_store_result(&m); record = mysql_fetch_row(results); mysql_free_result(results); } mysql_close(&m); exit(0); }