Bug in putting the prepare packet in the list
[csql.git] / src / sql / Statement.h
blobba325ce80d771bf7f998048e15b8d22d2b72323b
1 /***************************************************************************
2 * Copyright (C) 2007 by Prabakaran Thirumalai *
3 * praba_tuty@yahoo.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 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
20 #ifndef STATEMENT_H
21 #define STATEMENT_H
22 #include "Parser.h"
24 class Statement
26 protected:
27 ParsedData *parsedData;
28 DatabaseManager *dbMgr;
30 public:
31 void setParsedData(ParsedData *pData) { parsedData = pData; }
32 void setDbMgr(DatabaseManager *dbmgr) { dbMgr = dbmgr; }
35 virtual int noOfParamFields() { return 0; }
36 virtual DbRetVal execute(int &rowsAffected)=0;
37 virtual DbRetVal setParam(int paramNo, void *value)=0;
39 virtual DbRetVal setShortParam(int paramNo, short value)=0;
40 virtual DbRetVal setIntParam(int paramNo, int value)=0;
41 virtual DbRetVal setLongParam(int paramNo, long value)=0;
42 virtual DbRetVal setLongLongParam(int paramNo, long long value)=0;
43 virtual DbRetVal setByteIntParam(int paramNo, ByteInt value)=0;
44 virtual DbRetVal setFloatParam(int paramNo, float value)=0;
45 virtual DbRetVal setDoubleParam(int paramNo, double value)=0;
46 virtual DbRetVal setStringParam(int paramNo, char *value)=0;
47 virtual DbRetVal setDateParam(int paramNo, Date value)=0;
48 virtual DbRetVal setTimeParam(int paramNo, Time value)=0;
49 virtual DbRetVal setTimeStampParam(int paramNo, TimeStamp value)=0;
52 virtual DbRetVal resolve()=0;
53 virtual ~Statement(){}
56 class DmlStatement : public Statement
58 protected:
59 Table *table;
61 void **params;
62 //used to store FieldValue* for insert or ConditionValue* for other stmts
64 char **paramValues;
65 int totalParams;
67 public:
68 int noOfParamFields() { return totalParams; }
69 virtual DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info) =0;
71 virtual DbRetVal execute(int &rowsAffected)=0;
72 virtual DbRetVal setParam(int paramNo, void *value)=0;
74 virtual DbRetVal setShortParam(int paramNo, short value)=0;
75 virtual DbRetVal setIntParam(int paramNo, int value)=0;
76 virtual DbRetVal setLongParam(int paramNo, long value)=0;
77 virtual DbRetVal setLongLongParam(int paramNo, long long value)=0;
78 virtual DbRetVal setByteIntParam(int paramNo, ByteInt value)=0;
79 virtual DbRetVal setFloatParam(int paramNo, float value)=0;
80 virtual DbRetVal setDoubleParam(int paramNo, double value)=0;
81 virtual DbRetVal setStringParam(int paramNo, char *value)=0;
82 virtual DbRetVal setDateParam(int paramNo, Date value)=0;
83 virtual DbRetVal setTimeParam(int paramNo, Time value)=0;
84 virtual DbRetVal setTimeStampParam(int paramNo, TimeStamp value)=0;
87 virtual DbRetVal resolve()=0;
88 virtual ~DmlStatement(){}
91 class InsStatement : public DmlStatement
93 public:
94 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
96 DbRetVal execute(int &rowsAffected);
97 DbRetVal setParam(int paramNo, void *value);
99 DbRetVal setShortParam(int paramNo, short value);
100 DbRetVal setIntParam(int paramNo, int value);
101 DbRetVal setLongParam(int paramNo, long value);
102 DbRetVal setLongLongParam(int paramNo, long long value);
103 DbRetVal setByteIntParam(int paramNo, ByteInt value);
104 DbRetVal setFloatParam(int paramNo, float value);
105 DbRetVal setDoubleParam(int paramNo, double value);
106 DbRetVal setStringParam(int paramNo, char *value);
107 DbRetVal setDateParam(int paramNo, Date value);
108 DbRetVal setTimeParam(int paramNo, Time value);
109 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
111 DbRetVal resolve();
112 InsStatement();
113 ~InsStatement();
116 class SelStatement : public DmlStatement
118 private:
119 DbRetVal resolveStar();
120 DbRetVal setBindFieldAndValues();
121 DbRetVal resolveForCondition();
123 public:
124 FieldValue **bindFields;
125 char **bindFieldValues;
126 int totalFields;
129 DbRetVal execute(int &rowsAffected);
130 DbRetVal setParam(int paramNo, void *value);
132 DbRetVal setShortParam(int paramNo, short value);
133 DbRetVal setIntParam(int paramNo, int value);
134 DbRetVal setLongParam(int paramNo, long value);
135 DbRetVal setLongLongParam(int paramNo, long long value);
136 DbRetVal setByteIntParam(int paramNo, ByteInt value);
137 DbRetVal setFloatParam(int paramNo, float value);
138 DbRetVal setDoubleParam(int paramNo, double value);
139 DbRetVal setStringParam(int paramNo, char *value);
140 DbRetVal setDateParam(int paramNo, Date value);
141 DbRetVal setTimeParam(int paramNo, Time value);
142 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
144 DbRetVal close();
145 DbRetVal resolve();
146 SelStatement();
147 ~SelStatement();
150 DbRetVal setBindField(int pos, void* value);
152 int noOfProjFields();
153 DbRetVal getProjFldInfo (int projpos, FieldInfo *&fInfo);
154 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
156 void *fetch();
157 void *fetchAndPrint();
158 void *next();
159 void *getFieldValuePtr( int );
162 class UpdStatement : public DmlStatement
164 public:
165 DbRetVal execute(int &rowsAffected);
166 DbRetVal setParam(int paramNo, void *value);
168 DbRetVal setShortParam(int paramNo, short value);
169 DbRetVal setIntParam(int paramNo, int value);
170 DbRetVal setLongParam(int paramNo, long value);
171 DbRetVal setLongLongParam(int paramNo, long long value);
172 DbRetVal setByteIntParam(int paramNo, ByteInt value);
173 DbRetVal setFloatParam(int paramNo, float value);
174 DbRetVal setDoubleParam(int paramNo, double value);
175 DbRetVal setStringParam(int paramNo, char *value);
176 DbRetVal setDateParam(int paramNo, Date value);
177 DbRetVal setTimeParam(int paramNo, Time value);
178 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
180 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
183 DbRetVal resolve();
184 UpdStatement();
185 ~UpdStatement();
187 int totalAssignParams;
188 DbRetVal resolveForAssignment();
191 class DelStatement : public DmlStatement
193 public:
194 DbRetVal execute(int &rowsAffected);
195 DbRetVal setParam(int paramNo, void *value);
197 DbRetVal setShortParam(int paramNo, short value);
198 DbRetVal setIntParam(int paramNo, int value);
199 DbRetVal setLongParam(int paramNo, long value);
200 DbRetVal setLongLongParam(int paramNo, long long value);
201 DbRetVal setByteIntParam(int paramNo, ByteInt value);
202 DbRetVal setFloatParam(int paramNo, float value);
203 DbRetVal setDoubleParam(int paramNo, double value);
204 DbRetVal setStringParam(int paramNo, char *value);
205 DbRetVal setDateParam(int paramNo, Date value);
206 DbRetVal setTimeParam(int paramNo, Time value);
207 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
209 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
211 DbRetVal resolve();
212 DelStatement();
213 ~DelStatement();
215 DbRetVal resolveForCondition(); //TODO::put this is Statement class, duplicated from SelStatement.
219 class DdlStatement : public Statement
221 public:
222 DbRetVal execute(int &rowsAffected)=0;
223 //TODO: i think rowsAffected is not part of ddl - gopal said its design decision
224 DbRetVal resolve()=0;
226 DbRetVal setParam(int paramNo, void *value) { }
227 DbRetVal setShortParam(int paramNo, short value) { }
228 DbRetVal setIntParam(int paramNo, int value) { }
229 DbRetVal setLongParam(int paramNo, long value) { }
230 DbRetVal setLongLongParam(int paramNo, long long value) { }
231 DbRetVal setByteIntParam(int paramNo, ByteInt value) { }
232 DbRetVal setFloatParam(int paramNo, float value) { }
233 DbRetVal setDoubleParam(int paramNo, double value) { }
234 DbRetVal setStringParam(int paramNo, char *value) { }
235 DbRetVal setDateParam(int paramNo, Date value) { }
236 DbRetVal setTimeParam(int paramNo, Time value) { }
237 DbRetVal setTimeStampParam(int paramNo, TimeStamp value) { }
240 class CreateTblStatement : public DdlStatement
242 public:
243 DbRetVal execute(int &rowsAffected);
244 DbRetVal resolve();
246 CreateTblStatement();
247 ~CreateTblStatement();
249 private:
250 char tblName[IDENTIFIER_LENGTH];
251 TableDef tblDef;
254 class CreateIdxStatement : public DdlStatement
256 public:
257 DbRetVal execute(int &rowsAffected);
258 DbRetVal resolve(){return OK; }
260 CreateIdxStatement();
261 ~CreateIdxStatement();
265 class DropTblStatement : public DdlStatement
267 public:
268 DbRetVal execute(int &rowsAffected);
269 DbRetVal resolve(){return OK; }
271 DropTblStatement(){}
272 ~DropTblStatement(){}
274 class DropIdxStatement : public DdlStatement
276 public:
277 DbRetVal execute(int &rowsAffected);
278 DbRetVal resolve() {return OK; }
280 DropIdxStatement(){}
281 ~DropIdxStatement(){}
284 class StatementFactory
286 public:
287 static Statement* getStatement(ParsedData *pData );
289 #endif