54 typedef enum aql_status aql_status_t;
55 #define AQL_ERROR(x) ((x) >= 3)
115 typedef enum token token_t;
117 typedef char value_t[DB_MAX_ELEMENT_SIZE];
121 const char *prev_pos;
126 typedef struct lexer lexer_t;
128 enum aql_aggregator {
138 typedef enum aql_aggregator aql_aggregator_t;
140 struct aql_attribute {
142 uint8_t element_size;
144 char name[ATTRIBUTE_NAME_LENGTH + 1];
146 typedef struct aql_attribute aql_attribute_t;
149 char relations[AQL_RELATION_LIMIT][RELATION_NAME_LENGTH + 1];
150 aql_attribute_t attributes[AQL_ATTRIBUTE_LIMIT];
151 aql_aggregator_t aggregators[AQL_ATTRIBUTE_LIMIT];
152 attribute_value_t values[AQL_ATTRIBUTE_LIMIT];
153 index_type_t index_type;
154 uint8_t relation_count;
155 uint8_t attribute_count;
161 typedef struct aql_adt aql_adt_t;
163 #define AQL_TYPE_NONE 0
164 #define AQL_TYPE_SELECT 1
165 #define AQL_TYPE_INSERT 2
166 #define AQL_TYPE_UPDATE 3
167 #define AQL_TYPE_DROP 4
168 #define AQL_TYPE_DELETE 5
169 #define AQL_TYPE_RENAME 6
170 #define AQL_TYPE_CREATE_ATTRIBUTE 7
171 #define AQL_TYPE_CREATE_INDEX 8
172 #define AQL_TYPE_CREATE_RELATION 9
173 #define AQL_TYPE_REMOVE_ATTRIBUTE 10
174 #define AQL_TYPE_REMOVE_INDEX 11
175 #define AQL_TYPE_REMOVE_RELATION 12
176 #define AQL_TYPE_REMOVE_TUPLES 13
177 #define AQL_TYPE_JOIN 14
179 #define AQL_FLAG_AGGREGATE 1
180 #define AQL_FLAG_ASSIGN 2
181 #define AQL_FLAG_INVERSE_LOGIC 4
183 #define AQL_CLEAR(adt) aql_clear(adt)
184 #define AQL_SET_TYPE(adt, type) (((adt))->optype = (type))
185 #define AQL_GET_TYPE(adt) ((adt)->optype)
186 #define AQL_SET_INDEX_TYPE(adt, type) ((adt)->index_type = (type))
187 #define AQL_GET_INDEX_TYPE(adt) ((adt)->index_type)
189 #define AQL_SET_FLAG(adt, flag) (((adt)->flags) |= (flag))
190 #define AQL_GET_FLAGS(adt) ((adt)->flags)
191 #define AQL_ADD_RELATION(adt, rel) \
192 strcpy((adt)->relations[(adt)->relation_count++], (rel))
193 #define AQL_RELATION_COUNT(adt) ((adt)->relation_count)
194 #define AQL_ADD_ATTRIBUTE(adt, attr, dom, size) \
195 aql_add_attribute(adt, attr, dom, size, 0)
196 #define AQL_ADD_PROCESSING_ATTRIBUTE(adt, attr) \
197 aql_add_attribute((adt), (attr), DOMAIN_UNSPECIFIED, 0, 1)
198 #define AQL_ADD_AGGREGATE(adt, function, attr) \
200 (adt)->aggregators[(adt)->attribute_count] = (function); \
201 aql_add_attribute((adt), (attr), DOMAIN_UNSPECIFIED, 0, 0); \
203 #define AQL_ATTRIBUTE_COUNT(adt) ((adt)->attribute_count)
204 #define AQL_SET_CONDITION(adt, cond) ((adt)->lvm_instance = (cond))
205 #define AQL_ADD_VALUE(adt, domain, value) \
206 aql_add_value((adt), (domain), (value))
208 int lexer_start(lexer_t *,
char *, token_t *, value_t *);
209 int lexer_next(lexer_t *);
210 void lexer_rewind(lexer_t *);
212 void aql_clear(aql_adt_t *adt);
213 aql_status_t aql_parse(aql_adt_t *adt,
char *query_string);
214 db_result_t aql_add_attribute(aql_adt_t *adt,
char *name,
215 domain_t domain,
unsigned element_size,
217 db_result_t aql_add_value(aql_adt_t *adt, domain_t domain,
void *value);
218 db_result_t db_query(db_handle_t *handle,
const char *format, ...);
219 db_result_t db_process(db_handle_t *handle);
Declarations for the result acquisition API.
Database configuration options.