adding test scripts
[csql.git] / test / performance / loadtest / ODBCLoadWiscSchema.c
blobeb99d70e83fe7e0a135cc8c3cf03c16527e0bcd4
2 #include <iostream>
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6 #include <time.h>
7 #include <sql.h>
8 #include <sqlext.h>
9 #include "NanoTimer.h"
10 //#define START 70000001
11 //#define END 1010000000
12 using namespace std;
14 int START=0;
15 int END=0;
17 NanoTimer timer;
19 void extract_error(
20 char *fn,
21 SQLHANDLE handle,
22 SQLSMALLINT type)
24 SQLINTEGER i = 0;
25 SQLINTEGER native;
26 SQLCHAR state[ 7 ];
27 SQLCHAR text[256];
28 SQLSMALLINT len;
29 SQLRETURN ret;
31 fprintf(stderr,
32 "\n"
33 "The driver reported the following diagnostics whilst running "
34 "%s\n\n",
35 fn);
39 ret = SQLGetDiagRec(type, handle, ++i, state, &native, text,
40 sizeof(text), &len );
41 if (SQL_SUCCEEDED(ret))
42 printf("%s:%ld:%ld:%s\n", state, i, native, text);
44 while( ret == SQL_SUCCESS );
47 inline void
48 check_error (SQLSMALLINT handleType, SQLHANDLE handle, int rc, int line)
50 if (rc)
52 cout << "Error " << rc << " at line: " << line << endl;
53 SQLCHAR state[10];
54 SQLINTEGER native;
55 SQLCHAR mesg[300];
56 int i=0;
57 while (SQLGetDiagRec (handleType, handle, i++, state, &native, mesg, 300,
58 NULL) == SQL_SUCCESS)
60 mesg[299] = '\0';
61 cout << "state: " << state << endl;
62 cout << "native: " << native << endl;
63 cout << "mesg: " << mesg << endl;
65 exit (1);
70 inline void
71 checkrc (int rc, int line)
73 if (rc)
75 cout << "Error " << rc << " at line: " << line << endl;
76 exit (1);
80 void
81 readWriteTrans (SQLHDBC hdbc)
83 int rc = SQLSetConnectAttr (hdbc, SQL_ATTR_ACCESS_MODE,
84 (SQLPOINTER) SQL_MODE_READ_WRITE, 0);
85 checkrc (rc, __LINE__);
86 rc = SQLEndTran (SQL_HANDLE_DBC, hdbc, SQL_COMMIT);
87 checkrc (rc, __LINE__);
90 void
91 readOnlyTrans (SQLHDBC hdbc)
93 int rc = SQLSetConnectAttr (hdbc, SQL_ATTR_ACCESS_MODE,
94 (SQLPOINTER) SQL_MODE_READ_ONLY, 0);
95 checkrc (rc, __LINE__);
96 rc = SQLEndTran (SQL_HANDLE_DBC, hdbc, SQL_COMMIT);
97 checkrc (rc, __LINE__);
101 runInsertTest (SQLHANDLE henv, SQLHANDLE hdbc, SQLHANDLE hstmt)
103 int rc;
104 int iHolder;
105 char sHolder[200];
106 char sData[200];
107 iHolder = 0;
108 strcpy (sData, "0123456789012345678901234567890123456789");
109 rc = SQLPrepare (hstmt, (unsigned char *) "insert into t1 values(?,12,13,14,15,16,17,18,19,20,21,100,100,'AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXX','GXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXA','OXXXXXXXXXXXXXXXXXXXXXXXXXOXXXXXXXXXXXXXXXXXXXXXXXXO')",SQL_NTS);
110 checkrc (rc, __LINE__);
111 rc = SQLBindParameter (hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER,
112 0, 0, &iHolder, 0, NULL);
113 checkrc (rc, __LINE__);
114 SQLINTEGER sLen = SQL_NTS;
115 /* rc = SQLBindParameter (hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,
116 196, 0, (void *) sHolder, 0, &sLen);*/
117 checkrc (rc, __LINE__);
118 int i, j, k;
119 int tCount=0;
122 /* Run 1per Test */
123 int commit=0;
124 for (i = START; i <= END; i++)
126 iHolder = i ;
127 strcpy (sHolder, sData);
128 rc = SQLExecute (hstmt);
129 checkrc (rc, __LINE__);
130 if(commit==1000){
131 rc = SQLTransact (henv, hdbc, SQL_COMMIT);
132 checkrc (rc, __LINE__);
133 commit=0;
134 }else {commit++;}
135 tCount++;
137 printf("Total Record Inserted %d\n",tCount);
138 return 0;
143 main (int ac, char **av)
145 int rc;
146 char *dsn;
147 START = atoi(getenv("START"));
148 END = atoi(getenv("END"));
149 SQLHENV henv;
150 SQLHDBC hdbc;
151 SQLHSTMT hstmt;
152 bool ddl=false;
153 if (ac ==2) ddl = true;
155 dsn = (char *) "DSN=myodbc3;";
157 rc = SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
158 checkrc (rc, __LINE__);
159 SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
161 rc = SQLAllocHandle (SQL_HANDLE_DBC, henv, &hdbc);
162 checkrc (rc, __LINE__);
163 rc = SQLConnect (hdbc,
164 (SQLCHAR *) "test", (SQLSMALLINT) strlen ("test"),
165 (SQLCHAR *) "root",
166 (SQLSMALLINT) strlen ("root"),
167 (SQLCHAR *) "manager",
168 (SQLSMALLINT) strlen ("manager"));
170 SQLCHAR outstr[1024];
171 SQLSMALLINT outstrlen;
172 /* rc = SQLDriverConnect(hdbc, NULL, (SQLCHAR*)"DSN=myodbc3;UID=root;PWD=root123;", SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);
174 if (SQL_SUCCEEDED(rc)) {
175 printf("Connected\n");
176 //printf("Returned connection string was:\n\t%s\n", outstr);
177 if (rc == SQL_SUCCESS_WITH_INFO) {
178 printf("Driver reported the following diagnostics\n");
179 extract_error("SQLDriverConnect", hdbc, SQL_HANDLE_DBC);
181 } else {
182 fprintf(stderr, "Failed to connect\n");
183 extract_error("SQLDriverConnect", hdbc, SQL_HANDLE_DBC);
186 //check_error (SQL_HANDLE_DBC, hdbc, rc, __LINE__);
187 checkrc (rc, __LINE__);
188 rc = SQLSetConnectOption (hdbc, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF);
189 checkrc (rc, __LINE__);
190 rc = SQLAllocHandle (SQL_HANDLE_STMT, hdbc, &hstmt);
191 checkrc (rc, __LINE__);
192 if(ddl){
193 rc = SQLExecDirect(hstmt, (SQLCHAR*) "CREATE TABLE t1 (f1 INT NOT NULL , f2 INT NOT NULL , f3 INT NOT NULL , four INT NOT NULL , ten INT NOT NULL , twenty INT NOT NULL , onepercent INT NOT NULL , tenpercent INT NOT NULL , twentypercent INT NOT NULL , fiftypercent INT NOT NULL , unique3 INT NOT NULL , evenonepercent INT NOT NULL , oddonepercent INT NOT NULL , stringu1 CHAR (52) NOT NULL , stringu2 CHAR (52) NOT NULL , string4 CHAR (52) NOT NULL );", SQL_NTS );
194 checkrc (rc, __LINE__);
195 rc = SQLExecDirect(hstmt, (SQLCHAR*)"create index idx1 on t1(f1) tree unique;"
196 ,SQL_NTS );
197 checkrc (rc, __LINE__);
199 runInsertTest (henv, hdbc, hstmt);
201 rc = SQLExecDirect(hstmt, (SQLCHAR*) "DROP TABLE t1;", SQL_NTS );
202 checkrc (rc, __LINE__);
203 rc = SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_COMMIT );
204 checkrc (rc, __LINE__);
206 rc = SQLFreeHandle (SQL_HANDLE_STMT, hstmt);
207 checkrc (rc, __LINE__);
208 rc = SQLDisconnect (hdbc);
209 checkrc (rc, __LINE__);
210 rc = SQLFreeHandle (SQL_HANDLE_DBC, hdbc);
211 checkrc (rc, __LINE__);
212 rc = SQLFreeHandle (SQL_HANDLE_ENV, henv);
213 checkrc (rc, __LINE__);
214 exit (0);