1912116 remove getMaxTrans and getMaxThreads from Config
[csql.git] / include / Statement.h
blob3bb1de247b06128461abbdd18a433ff00c15e819
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 DbRetVal execute(int &rowsAffected)=0;
36 virtual DbRetVal setParam(int paramNo, void *value)=0;
38 virtual DbRetVal setShortParam(int paramNo, short value)=0;
39 virtual DbRetVal setIntParam(int paramNo, int value)=0;
40 virtual DbRetVal setLongParam(int paramNo, long value)=0;
41 virtual DbRetVal setLongLongParam(int paramNo, long long value)=0;
42 virtual DbRetVal setByteIntParam(int paramNo, ByteInt value)=0;
43 virtual DbRetVal setFloatParam(int paramNo, float value)=0;
44 virtual DbRetVal setDoubleParam(int paramNo, double value)=0;
45 virtual DbRetVal setStringParam(int paramNo, char *value)=0;
46 virtual DbRetVal setDateParam(int paramNo, Date value)=0;
47 virtual DbRetVal setTimeParam(int paramNo, Time value)=0;
48 virtual DbRetVal setTimeStampParam(int paramNo, TimeStamp value)=0;
51 virtual DbRetVal resolve()=0;
52 virtual ~Statement(){}
55 class DmlStatement : public Statement
57 protected:
58 Table *table;
60 void **params;
61 //used to store FieldValue* for insert or ConditionValue* for other stmts
63 char **paramValues;
64 int totalParams;
66 public:
67 int noOfParamFields() { return totalParams; }
68 virtual DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info) =0;
70 virtual DbRetVal execute(int &rowsAffected)=0;
71 virtual DbRetVal setParam(int paramNo, void *value)=0;
73 virtual DbRetVal setShortParam(int paramNo, short value)=0;
74 virtual DbRetVal setIntParam(int paramNo, int value)=0;
75 virtual DbRetVal setLongParam(int paramNo, long value)=0;
76 virtual DbRetVal setLongLongParam(int paramNo, long long value)=0;
77 virtual DbRetVal setByteIntParam(int paramNo, ByteInt value)=0;
78 virtual DbRetVal setFloatParam(int paramNo, float value)=0;
79 virtual DbRetVal setDoubleParam(int paramNo, double value)=0;
80 virtual DbRetVal setStringParam(int paramNo, char *value)=0;
81 virtual DbRetVal setDateParam(int paramNo, Date value)=0;
82 virtual DbRetVal setTimeParam(int paramNo, Time value)=0;
83 virtual DbRetVal setTimeStampParam(int paramNo, TimeStamp value)=0;
86 virtual DbRetVal resolve()=0;
87 virtual ~DmlStatement(){}
90 class InsStatement : public DmlStatement
92 public:
93 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
95 DbRetVal execute(int &rowsAffected);
96 DbRetVal setParam(int paramNo, void *value);
98 DbRetVal setShortParam(int paramNo, short value);
99 DbRetVal setIntParam(int paramNo, int value);
100 DbRetVal setLongParam(int paramNo, long value);
101 DbRetVal setLongLongParam(int paramNo, long long value);
102 DbRetVal setByteIntParam(int paramNo, ByteInt value);
103 DbRetVal setFloatParam(int paramNo, float value);
104 DbRetVal setDoubleParam(int paramNo, double value);
105 DbRetVal setStringParam(int paramNo, char *value);
106 DbRetVal setDateParam(int paramNo, Date value);
107 DbRetVal setTimeParam(int paramNo, Time value);
108 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
110 DbRetVal resolve();
111 InsStatement();
112 ~InsStatement();
115 class SelStatement : public DmlStatement
117 private:
118 DbRetVal resolveStar();
119 DbRetVal setBindFieldAndValues();
120 DbRetVal resolveForCondition();
122 public:
123 FieldValue **bindFields;
124 char **bindFieldValues;
125 int totalFields;
128 DbRetVal execute(int &rowsAffected);
129 DbRetVal setParam(int paramNo, void *value);
131 DbRetVal setShortParam(int paramNo, short value);
132 DbRetVal setIntParam(int paramNo, int value);
133 DbRetVal setLongParam(int paramNo, long value);
134 DbRetVal setLongLongParam(int paramNo, long long value);
135 DbRetVal setByteIntParam(int paramNo, ByteInt value);
136 DbRetVal setFloatParam(int paramNo, float value);
137 DbRetVal setDoubleParam(int paramNo, double value);
138 DbRetVal setStringParam(int paramNo, char *value);
139 DbRetVal setDateParam(int paramNo, Date value);
140 DbRetVal setTimeParam(int paramNo, Time value);
141 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
143 DbRetVal close();
144 DbRetVal resolve();
145 SelStatement();
146 ~SelStatement();
149 DbRetVal setBindField(int pos, void* value);
151 int noOfProjFields();
152 DbRetVal getProjFldInfo (int projpos, FieldInfo *&fInfo);
153 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
155 void *fetch();
156 void *fetchAndPrint();
157 void *next();
158 void *getFieldValuePtr( int );
161 class UpdStatement : public DmlStatement
163 public:
164 DbRetVal execute(int &rowsAffected);
165 DbRetVal setParam(int paramNo, void *value);
167 DbRetVal setShortParam(int paramNo, short value);
168 DbRetVal setIntParam(int paramNo, int value);
169 DbRetVal setLongParam(int paramNo, long value);
170 DbRetVal setLongLongParam(int paramNo, long long value);
171 DbRetVal setByteIntParam(int paramNo, ByteInt value);
172 DbRetVal setFloatParam(int paramNo, float value);
173 DbRetVal setDoubleParam(int paramNo, double value);
174 DbRetVal setStringParam(int paramNo, char *value);
175 DbRetVal setDateParam(int paramNo, Date value);
176 DbRetVal setTimeParam(int paramNo, Time value);
177 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
179 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
182 DbRetVal resolve();
183 UpdStatement();
184 ~UpdStatement();
186 int totalAssignParams;
187 DbRetVal resolveForAssignment();
190 class DelStatement : public DmlStatement
192 public:
193 DbRetVal execute(int &rowsAffected);
194 DbRetVal setParam(int paramNo, void *value);
196 DbRetVal setShortParam(int paramNo, short value);
197 DbRetVal setIntParam(int paramNo, int value);
198 DbRetVal setLongParam(int paramNo, long value);
199 DbRetVal setLongLongParam(int paramNo, long long value);
200 DbRetVal setByteIntParam(int paramNo, ByteInt value);
201 DbRetVal setFloatParam(int paramNo, float value);
202 DbRetVal setDoubleParam(int paramNo, double value);
203 DbRetVal setStringParam(int paramNo, char *value);
204 DbRetVal setDateParam(int paramNo, Date value);
205 DbRetVal setTimeParam(int paramNo, Time value);
206 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
208 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
210 DbRetVal resolve();
211 DelStatement();
212 ~DelStatement();
214 DbRetVal resolveForCondition(); //TODO::put this is Statement class, duplicated from SelStatement.
218 class DdlStatement : public Statement
220 public:
221 DbRetVal execute(int &rowsAffected)=0;
222 //TODO: i think rowsAffected is not part of ddl - gopal said its design decision
223 DbRetVal resolve()=0;
225 DbRetVal setParam(int paramNo, void *value) { }
226 DbRetVal setShortParam(int paramNo, short value) { }
227 DbRetVal setIntParam(int paramNo, int value) { }
228 DbRetVal setLongParam(int paramNo, long value) { }
229 DbRetVal setLongLongParam(int paramNo, long long value) { }
230 DbRetVal setByteIntParam(int paramNo, ByteInt value) { }
231 DbRetVal setFloatParam(int paramNo, float value) { }
232 DbRetVal setDoubleParam(int paramNo, double value) { }
233 DbRetVal setStringParam(int paramNo, char *value) { }
234 DbRetVal setDateParam(int paramNo, Date value) { }
235 DbRetVal setTimeParam(int paramNo, Time value) { }
236 DbRetVal setTimeStampParam(int paramNo, TimeStamp value) { }
239 class CreateTblStatement : public DdlStatement
241 public:
242 DbRetVal execute(int &rowsAffected);
243 DbRetVal resolve();
245 CreateTblStatement();
246 ~CreateTblStatement();
248 private:
249 char tblName[IDENTIFIER_LENGTH];
250 TableDef tblDef;
253 class CreateIdxStatement : public DdlStatement
255 public:
256 DbRetVal execute(int &rowsAffected);
257 DbRetVal resolve(){return OK; }
259 CreateIdxStatement();
260 ~CreateIdxStatement();
264 class DropTblStatement : public DdlStatement
266 public:
267 DbRetVal execute(int &rowsAffected);
268 DbRetVal resolve(){return OK; }
270 DropTblStatement(){}
271 ~DropTblStatement(){}
273 class DropIdxStatement : public DdlStatement
275 public:
276 DbRetVal execute(int &rowsAffected);
277 DbRetVal resolve() {return OK; }
279 DropIdxStatement(){}
280 ~DropIdxStatement(){}
283 class StatementFactory
285 public:
286 static Statement* getStatement(ParsedData *pData );
288 #endif