54typedef enum aql_status aql_status_t;
55#define AQL_ERROR(x) ((x) >= 3)
115typedef enum token token_t;
117typedef char value_t[DB_MAX_ELEMENT_SIZE];
121 const char *prev_pos;
126typedef struct lexer lexer_t;
138typedef enum aql_aggregator aql_aggregator_t;
140struct aql_attribute {
142 uint8_t element_size;
144 char name[ATTRIBUTE_NAME_LENGTH + 1];
146typedef 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;
161typedef 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_RELATION_COUNT(adt) ((adt)->relation_count)
192#define AQL_ADD_RELATION(adt, name) \
193 aql_add_relation(adt, name)
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))
208int lexer_start(lexer_t *,
char *, token_t *, value_t *);
209int lexer_next(lexer_t *);
210void lexer_rewind(lexer_t *);
212void aql_clear(aql_adt_t *adt);
213aql_status_t aql_parse(aql_adt_t *adt,
char *query_string);
214db_result_t aql_add_relation(aql_adt_t *adt,
const char *name);
215db_result_t aql_add_attribute(aql_adt_t *adt,
char *name,
216 domain_t domain,
unsigned element_size,
218db_result_t aql_add_value(aql_adt_t *adt, domain_t domain,
void *value);
219db_result_t db_query(db_handle_t *handle,
const char *format, ...);
220db_result_t db_process(db_handle_t *handle);
Database configuration options.
Declarations for the result acquisition API.