Fixing failing tests in join test module
[csql.git] / examples / dbapi / dbapiexample.c
blob910eb56c6820467f44965b965777cec1e67d0f5f
1 /***************************************************************************
2 * Copyright (C) 2007 by www.databasecache.com *
3 * Contact: praba_tuty@databasecache.com *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 **************************************************************************/
16 #include<CSql.h>
17 int main()
19 //connect to the database first
20 Connection conn;
21 DbRetVal rv = conn.open("root", "manager");
22 if (rv != OK)
24 printf("Error during connection %d\n", rv);
25 return -1;
28 //get dbmgr to create table and index
29 DatabaseManager *dbMgr = conn.getDatabaseManager();
30 if (dbMgr == NULL) { printf("Auth failed\n"); return -1;}
32 //create table with two fields, f1 integer and f2 string
33 TableDef tabDef;
34 tabDef.addField("f1", typeInt, 0, NULL, true);
35 tabDef.addField("f2", typeString, 20);
36 rv = dbMgr->createTable("t1", tabDef);
37 if (rv != OK) { printf("Table creation failed\n"); return -1; }
38 printf("Table created\n");
40 //Creating hash index on field f1 of table t1
41 HashIndexInitInfo *idxInfo = new HashIndexInitInfo();
42 strcpy(idxInfo->tableName, "t1");
43 idxInfo->list.append("f1");
44 idxInfo->indType = hashIndex;
45 rv = dbMgr->createIndex("indx1", idxInfo);
46 if (rv != OK) { printf("Index creation failed\n"); return -1; }
47 printf("Index created\n");
49 //open the table handle for doing DML operations
50 Table *table = dbMgr->openTable("t1");
51 if (table == NULL) { printf("Unable to open table\n"); return -1; }
52 int id = 0;
53 char name[20] = "THIRU";
54 table->bindFld("f1", &id);
55 table->bindFld("f2", name);
56 char *tuple;
57 int ret;
58 int i;
59 int icount =0;
60 char names[10][20]={"Ganga", "Gopal", "Chaitra", "Aruna", "Vinayak", "Shekar",
61 "Pramod", "Rakesh", "Murthy", "Amit" };
63 //insert 10 tuples into the table t1
64 for(i = 0; i< 10; i++)
66 conn.startTransaction();
67 id= i;
68 strcpy(name, names[i]);
69 ret = table->insertTuple();
70 if (ret != 0) break;
71 icount++;
72 conn.commit();
74 char msgBuf[1024];
75 sprintf(msgBuf,"Total rows inserted %d \n",icount);
76 os::write(1,msgBuf,strlen(msgBuf));
78 //set the condition f1 >=5
79 Condition p1;
80 int val1 = 5;
81 p1.setTerm("f1", OpGreaterThanEquals, &val1);
82 table->setCondition(&p1);
83 icount=0;
84 printf("Selection f1 >= 5 starts on table t1\n");
85 conn.startTransaction();
86 table->execute();
87 printf("Tuple values:\n");
88 while(true)
90 tuple = (char*)table->fetch() ;
91 if (tuple == NULL) { break; }
92 printf(" f1=%d f2=%s\n", id, name);
93 icount++;
95 table->close();
96 conn.commit();
97 sprintf(msgBuf,"Total Rows selected: %d \n", icount);
98 os::write(1,msgBuf,strlen(msgBuf));
100 //unset the condtion set as we need to delete all rows
101 table->setCondition(NULL);
102 conn.startTransaction();
103 table->execute();
104 icount = 0;
105 while(true)
107 tuple = (char*)table->fetch();
108 if (tuple == NULL) { break;}
109 table->deleteTuple();
110 icount++;
112 conn.commit();
113 table->close();
114 printf("Total Deleted Rows %d\n", icount);
116 dbMgr->closeTable(table);
117 dbMgr->dropTable("t1");
118 printf("Table dropped\n");
119 conn.close();
120 return 0;