📄 subsql_8h-source.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>subsql.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center>
<hr><h1>subsql.h</h1><div class="fragment"><pre>00001 <span class="comment">//-< SUBSQL.H >------------------------------------------------------*--------*</span>
00002 <span class="comment">// FastDB Version 1.0 (c) 1999 GARRET * ? *</span>
00003 <span class="comment">// (Main Memory Database Management System) * /\| *</span>
00004 <span class="comment">// * / \ *</span>
00005 <span class="comment">// Created: 20-Nov-98 K.A. Knizhnik * / [] \ *</span>
00006 <span class="comment">// Last update: 10-Dec-98 K.A. Knizhnik * GARRET *</span>
00007 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00008 <span class="comment">// Interactive data manipulation language (subset of SQL)</span>
00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00010
00011 <span class="preprocessor">#ifndef __SUBSQL_H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define __SUBSQL_H__</span>
00013 <span class="preprocessor"></span>
00014 BEGIN_FASTDB_NAMESPACE
00015
00016 <span class="keyword">enum</span> SubSqlTokens {
00017 tkn_alter = tkn_last_token,
00018 tkn_array,
00019 tkn_autoincrement,
00020 tkn_autocommit,
00021 tkn_backup,
00022 tkn_bool,
00023 tkn_commit,
00024 tkn_compactify,
00025 tkn_count,
00026 tkn_create,
00027 tkn_delete,
00028 tkn_describe,
00029 tkn_drop,
00030 tkn_exit,
00031 tkn_export,
00032 tkn_hash,
00033 tkn_help,
00034 tkn_http,
00035 tkn_import,
00036 tkn_index,
00037 tkn_int1,
00038 tkn_int2,
00039 tkn_int4,
00040 tkn_int8,
00041 tkn_inverse,
00042 tkn_memory,
00043 tkn_of,
00044 tkn_off,
00045 tkn_on,
00046 tkn_open,
00047 tkn_profile,
00048 tkn_real4,
00049 tkn_real8,
00050 tkn_rectangle,
00051 tkn_reference,
00052 tkn_rollback,
00053 tkn_server,
00054 tkn_set,
00055 tkn_stop,
00056 tkn_semi,
00057 tkn_show,
00058 tkn_to,
00059 tkn_update,
00060 tkn_values,
00061 tkn_version
00062 };
00063
00064
00065
00066 <span class="keyword">class </span>dbList {
00067 <span class="keyword">public</span>:
00068 <span class="keyword">enum</span> NodeType {
00069 nInteger,
00070 nBool,
00071 nReal,
00072 nString,
00073 nTuple,
00074 nAutoinc,
00075 nIdentifier
00076 };
00077
00078 dbList* next;
00079 <span class="keywordtype">int</span> type;
00080 <span class="keyword">union </span>{
00081 <span class="keywordtype">bool</span> bval;
00082 db_int8 ival;
00083 real8 fval;
00084 <span class="keywordtype">char</span>* sval;
00085 <span class="keyword">struct </span>{
00086 <span class="keywordtype">int</span> nComponents;
00087 dbList* components;
00088 } aggregate;
00089 };
00090
00091 ~dbList() {
00092 <span class="keywordflow">if</span> (type == nTuple) {
00093 dbList* list = aggregate.components;
00094 <span class="keywordflow">while</span> (list != NULL) {
00095 dbList* tail = list->next;
00096 <span class="keyword">delete</span> list;
00097 list = tail;
00098 }
00099 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == nString || type == nIdentifier) {
00100 <span class="keyword">delete</span>[] sval;
00101 }
00102 }
00103
00104 dbList(<span class="keywordtype">int</span> type) {
00105 this->type = type;
00106 next = NULL;
00107 }
00108 };
00109
00110
00111 <span class="keyword">struct </span>tableField {
00112 <span class="keywordtype">char</span>* name;
00113 <span class="keywordtype">char</span>* refTableName;
00114 <span class="keywordtype">char</span>* inverseRefName;
00115 <span class="keywordtype">int</span> type;
00116
00117 tableField() { name = refTableName = inverseRefName = NULL; }
00118 ~tableField() { <span class="keyword">delete</span>[] name; <span class="keyword">delete</span>[] refTableName; <span class="keyword">delete</span>[] inverseRefName; }
00119 };
00120
00121 <span class="keyword">class </span>dbUpdateElement {
00122 <span class="keyword">public</span>:
00123 dbUpdateElement* next;
00124 <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;
00125 dbExprNode* value;
00126 <span class="keywordtype">char</span>* strValue;
00127
00128 dbUpdateElement() {
00129 next = NULL;
00130 strValue = NULL;
00131 value = NULL;
00132 }
00133 ~dbUpdateElement() {
00134 <span class="keyword">delete</span>[] strValue;
00135 <span class="keyword">delete</span> value;
00136 }
00137 };
00138
00139
00140 <span class="preprocessor">#define MAX_HISTORY_SIZE 16</span>
00141 <span class="preprocessor"></span>
00142
00143 <span class="keyword">class </span>dbSubSql : <span class="keyword">public</span> <a class="code" href="classdbDatabase.html">dbDatabase</a> {
00144 <span class="keyword">private</span>:
00145 <span class="keywordtype">int</span> pos;
00146 <span class="keywordtype">int</span> line;
00147 <span class="keywordtype">int</span> tknPos;
00148 <span class="keywordtype">char</span>* buf;
00149 <span class="keywordtype">int</span> buflen;
00150 FILE* in;
00151 <span class="keywordtype">bool</span> opened;
00152 db_int8 ival;
00153 real8 fval;
00154 <span class="keywordtype">char</span>* name;
00155
00156 <span class="keyword">static</span> <span class="keywordtype">char</span>* prompt;
00157
00158 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* droppedTables;
00159 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* existedTables;
00160
00161 <a class="code" href="classdbQuery.html">dbQuery</a> query;
00162 dbCompiler compiler;
00163
00164 <span class="keywordtype">int</span> ungetToken;
00165 <span class="keywordtype">bool</span> autocommit;
00166
00167 <span class="keywordtype">bool</span> dotIsPartOfIdentifier;
00168 <span class="keywordtype">char</span>* dateFormat;
00169
00170 dbThread httpServerThread;
00171 HTTPapi* httpServer;
00172 <span class="keywordtype">bool</span> httpServerRunning;
00173 <span class="keywordtype">char</span>* queryHistory[MAX_HISTORY_SIZE];
00174 <span class="keywordtype">unsigned</span> historyUsed;
00175 <span class="keywordtype">unsigned</span> historyCurr;
00176 <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc httpServerThreadProc(<span class="keywordtype">void</span>* arg);
00177
00178 <span class="keywordtype">void</span> deleteColumns(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* columns);
00179
00180 <span class="keywordtype">void</span> httpServerLoop();
00181
00182 <span class="keywordtype">void</span> startHttpServer(<span class="keywordtype">char</span> <span class="keyword">const</span>* address);
00183 <span class="keywordtype">void</span> stopHttpServer(<span class="keywordtype">char</span> <span class="keyword">const</span>* address);
00184
00185 <span class="keywordtype">void</span> handleError(dbErrorClass error, <span class="keywordtype">char</span> <span class="keyword">const</span>* msg = NULL, <span class="keywordtype">int</span> arg = 0);
00186
00187 <span class="keywordtype">void</span> error(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg);
00188 <span class="keywordtype">void</span> warning(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg);
00189
00190 <span class="keywordtype">void</span> profile();
00191
00192 <span class="keywordtype">int</span> <a class="code" href="classdbDatabase.html#dbSubSqlb17">get</a>();
00193 <span class="keywordtype">void</span> unget(<span class="keywordtype">int</span> ch);
00194 <span class="keywordtype">int</span> scan();
00195 <span class="keywordtype">bool</span> parse();
00196
00197 <span class="keywordtype">bool</span> expect(<span class="keywordtype">char</span>* expected, <span class="keywordtype">int</span> token);
00198
00199 <span class="keywordtype">void</span> recovery();
00200
00201 <span class="keywordtype">bool</span> isValidOid(oid_t oid);
00202
00203 <span class="keywordtype">void</span> dumpRecord(byte* record, <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);
00204 <span class="keyword">static</span> <span class="keywordtype">int</span> calculateRecordSize(dbList* list, <span class="keywordtype">int</span> offs,
00205 <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);
00206 <span class="keywordtype">int</span> initializeRecordFields(dbList* node, byte* dst, <span class="keywordtype">int</span> offs,
00207 <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);
00208 <span class="keywordtype">bool</span> <a class="code" href="classdbDatabase.html#dbSubSqla33">insertRecord</a>(dbList* list, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);
00209 <span class="keywordtype">bool</span> readCondition();
00210 <span class="keywordtype">int</span> readExpression();
00211 <span class="keywordtype">int</span> readValues(dbList** chain);
00212 <span class="keywordtype">bool</span> updateFields(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, dbUpdateElement* elems);
00213 <span class="keywordtype">bool</span> updateTable(<span class="keywordtype">bool</span> create);
00214 <span class="keywordtype">int</span> parseType(<span class="keywordtype">char</span>*& refTableName, <span class="keywordtype">char</span>*& inverseRefName);
00215 <span class="keywordtype">int</span> updateRecords(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, dbList *fields, dbList *values, <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a> &cursor, byte *buf);
00216 <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* readFieldName();
00217
00218 <span class="keyword">public</span>:
00219 <span class="keywordtype">void</span> run(<span class="keywordtype">int</span> firstParam, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]);
00220 <span class="keywordtype">void</span> selectionPage(WWWconnection& con);
00221 <span class="keywordtype">void</span> queryPage(WWWconnection& con);
00222 <span class="keywordtype">void</span> defaultPage(WWWconnection& con);
00223
00224 dbSubSql(dbAccessType accessType);
00225 <span class="keyword">virtual</span>~dbSubSql();
00226 };
00227
00228
00229 END_FASTDB_NAMESPACE
00230
00231 <span class="preprocessor">#endif</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 for FastDB by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -