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.