adding sqlserver executable
[csql.git] / include / Statement.h
blobb2cb9a2779cb442bdb072ce4bfda700a8eed4e3c
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;
50 virtual DbRetVal setBinaryParam(int paramNo, void *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;
85 virtual DbRetVal setBinaryParam(int paramNo, void *value)=0;
87 virtual DbRetVal resolve()=0;
88 virtual void* getParamValuePtr( int pos )=0;
89 virtual ~DmlStatement(){}
92 class InsStatement : public DmlStatement
94 public:
95 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
97 DbRetVal execute(int &rowsAffected);
98 DbRetVal setParam(int paramNo, void *value);
100 DbRetVal setShortParam(int paramNo, short value);
101 DbRetVal setIntParam(int paramNo, int value);
102 DbRetVal setLongParam(int paramNo, long value);
103 DbRetVal setLongLongParam(int paramNo, long long value);
104 DbRetVal setByteIntParam(int paramNo, ByteInt value);
105 DbRetVal setFloatParam(int paramNo, float value);
106 DbRetVal setDoubleParam(int paramNo, double value);
107 DbRetVal setStringParam(int paramNo, char *value);
108 DbRetVal setDateParam(int paramNo, Date value);
109 DbRetVal setTimeParam(int paramNo, Time value);
110 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
111 DbRetVal setBinaryParam(int paramNo, void *value);
112 void* getParamValuePtr( int );
113 DbRetVal resolve();
114 InsStatement();
115 ~InsStatement();
118 class SelStatement : public DmlStatement
120 private:
121 DbRetVal resolveStar();
122 DbRetVal setBindFieldAndValues();
123 DbRetVal resolveForCondition();
125 public:
126 FieldValue **bindFields;
127 char **bindFieldValues;
128 int totalFields;
131 DbRetVal execute(int &rowsAffected);
132 DbRetVal setParam(int paramNo, void *value);
134 DbRetVal setShortParam(int paramNo, short value);
135 DbRetVal setIntParam(int paramNo, int value);
136 DbRetVal setLongParam(int paramNo, long value);
137 DbRetVal setLongLongParam(int paramNo, long long value);
138 DbRetVal setByteIntParam(int paramNo, ByteInt value);
139 DbRetVal setFloatParam(int paramNo, float value);
140 DbRetVal setDoubleParam(int paramNo, double value);
141 DbRetVal setStringParam(int paramNo, char *value);
142 DbRetVal setDateParam(int paramNo, Date value);
143 DbRetVal setTimeParam(int paramNo, Time value);
144 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
145 DbRetVal setBinaryParam(int paramNo, void *value);
147 DbRetVal close();
148 DbRetVal resolve();
149 SelStatement();
150 ~SelStatement();
152 DbRetVal openTables();
154 DbRetVal setBindField(int pos, void* value);
156 int noOfProjFields();
157 DbRetVal getProjFldInfo (int projpos, FieldInfo *&fInfo);
158 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
160 void *getParamValuePtr( int );
161 DataType getFieldType( int );
162 int getFieldLength( int );
163 char* getFieldName( int );
165 void *fetch();
166 void *fetch(DbRetVal &rv);
167 void *fetchAndPrint(bool SQL);
168 void *next();
169 void *getFieldValuePtr( int );
172 class UpdStatement : public DmlStatement
174 public:
175 DbRetVal execute(int &rowsAffected);
176 DbRetVal setParam(int paramNo, void *value);
178 DbRetVal setShortParam(int paramNo, short value);
179 DbRetVal setIntParam(int paramNo, int value);
180 DbRetVal setLongParam(int paramNo, long value);
181 DbRetVal setLongLongParam(int paramNo, long long value);
182 DbRetVal setByteIntParam(int paramNo, ByteInt value);
183 DbRetVal setFloatParam(int paramNo, float value);
184 DbRetVal setDoubleParam(int paramNo, double value);
185 DbRetVal setStringParam(int paramNo, char *value);
186 DbRetVal setDateParam(int paramNo, Date value);
187 DbRetVal setTimeParam(int paramNo, Time value);
188 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
189 DbRetVal setBinaryParam(int paramNo, void *value);
190 void* getParamValuePtr(int);
191 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
194 DbRetVal resolve();
195 UpdStatement();
196 ~UpdStatement();
198 int totalAssignParams;
199 DbRetVal resolveForAssignment();
202 class DelStatement : public DmlStatement
204 public:
205 DbRetVal execute(int &rowsAffected);
206 DbRetVal setParam(int paramNo, void *value);
208 DbRetVal setShortParam(int paramNo, short value);
209 DbRetVal setIntParam(int paramNo, int value);
210 DbRetVal setLongParam(int paramNo, long value);
211 DbRetVal setLongLongParam(int paramNo, long long value);
212 DbRetVal setByteIntParam(int paramNo, ByteInt value);
213 DbRetVal setFloatParam(int paramNo, float value);
214 DbRetVal setDoubleParam(int paramNo, double value);
215 DbRetVal setStringParam(int paramNo, char *value);
216 DbRetVal setDateParam(int paramNo, Date value);
217 DbRetVal setTimeParam(int paramNo, Time value);
218 DbRetVal setTimeStampParam(int paramNo, TimeStamp value);
219 DbRetVal setBinaryParam(int paramNo, void *value);
221 DbRetVal getParamFldInfo(int paramPos, FieldInfo *&info);
222 void* getParamValuePtr(int);
223 DbRetVal resolve();
224 DelStatement();
225 ~DelStatement();
227 DbRetVal resolveForCondition(); //TODO::put this is Statement class, duplicated from SelStatement.
231 class DdlStatement : public Statement
233 public:
234 DbRetVal execute(int &rowsAffected)=0;
235 //TODO: i think rowsAffected is not part of ddl - gopal said its design decision
236 DbRetVal resolve()=0;
238 DbRetVal setParam(int paramNo, void *value) { }
239 DbRetVal setShortParam(int paramNo, short value) { }
240 DbRetVal setIntParam(int paramNo, int value) { }
241 DbRetVal setLongParam(int paramNo, long value) { }
242 DbRetVal setLongLongParam(int paramNo, long long value) { }
243 DbRetVal setByteIntParam(int paramNo, ByteInt value) { }
244 DbRetVal setFloatParam(int paramNo, float value) { }
245 DbRetVal setDoubleParam(int paramNo, double value) { }
246 DbRetVal setStringParam(int paramNo, char *value) { }
247 DbRetVal setDateParam(int paramNo, Date value) { }
248 DbRetVal setTimeParam(int paramNo, Time value) { }
249 DbRetVal setTimeStampParam(int paramNo, TimeStamp value) { }
250 DbRetVal setBinaryParam(int paramNo, void *value) { }
253 class CreateTblStatement : public DdlStatement
255 public:
256 DbRetVal execute(int &rowsAffected);
257 DbRetVal resolve();
259 CreateTblStatement();
260 ~CreateTblStatement();
262 private:
263 char tblName[IDENTIFIER_LENGTH];
264 TableDef tblDef;
267 class CreateIdxStatement : public DdlStatement
269 public:
270 DbRetVal execute(int &rowsAffected);
271 DbRetVal resolve(){return OK; }
273 CreateIdxStatement();
274 ~CreateIdxStatement();
278 class DropTblStatement : public DdlStatement
280 public:
281 DbRetVal execute(int &rowsAffected);
282 DbRetVal resolve(){return OK; }
284 DropTblStatement(){}
285 ~DropTblStatement(){}
287 class DropIdxStatement : public DdlStatement
289 public:
290 DbRetVal execute(int &rowsAffected);
291 DbRetVal resolve() {return OK; }
293 DropIdxStatement(){}
294 ~DropIdxStatement(){}
297 class StatementFactory
299 public:
300 static Statement* getStatement(ParsedData *pData );
302 #endif