18 #pragma GCC diagnostic ignored "-Waddress"
46 #define as_string_equals(__val) AS_PREDICATE_EQUAL, AS_INDEX_TYPE_DEFAULT, AS_INDEX_STRING, __val
57 #define as_integer_equals(__val) AS_PREDICATE_EQUAL, AS_INDEX_TYPE_DEFAULT, AS_INDEX_NUMERIC, (int64_t)__val
69 #define as_integer_range(__min, __max) AS_PREDICATE_RANGE, AS_INDEX_TYPE_DEFAULT, AS_INDEX_NUMERIC, (int64_t)__min, (int64_t)__max
81 #define as_range(indextype, datatype, __min, __max) AS_PREDICATE_RANGE, AS_INDEX_TYPE_ ##indextype, AS_INDEX_ ##datatype, __min, __max
93 #define as_contains(indextype, datatype, __val) AS_PREDICATE_EQUAL, AS_INDEX_TYPE_ ##indextype, AS_INDEX_ ##datatype, __val
105 #define as_equals(datatype, __val) AS_PREDICATE_EQUAL, AS_INDEX_TYPE_DEFAULT, AS_INDEX_ ##datatype, __val
107 #define as_geo_within(__val) AS_PREDICATE_RANGE, AS_INDEX_TYPE_DEFAULT, AS_INDEX_GEO2DSPHERE, __val
109 #define as_geo_contains(__val) AS_PREDICATE_RANGE, AS_INDEX_TYPE_DEFAULT, AS_INDEX_GEO2DSPHERE, __val
119 typedef union as_predicate_value_u {
153 typedef enum as_predicate_type_e {
168 typedef struct as_predicate_s {
200 typedef enum as_order_e {
218 typedef struct as_ordering_s {
241 typedef struct as_query_bins_s {
275 typedef struct as_query_predicates_s {
309 typedef struct as_query_predexp_s {
343 typedef struct as_query_sort_s {
505 typedef struct as_query_s {
646 #define as_query_select_inita(__query, __n) \
648 if ( (__query) != NULL && (__query)->select.entries == NULL ) {\
649 (__query)->select.entries = (as_bin_name*) alloca(sizeof(as_bin_name) * (__n));\
650 if ( (__query)->select.entries ) { \
651 (__query)->select._free = false;\
652 (__query)->select.capacity = (__n);\
653 (__query)->select.size = 0;\
724 #define as_query_where_inita(__query, __n) \
726 if ( (__query) != NULL && (__query)->where.entries == NULL ) {\
727 (__query)->where.entries = (as_predicate*) alloca(sizeof(as_predicate) * (__n));\
728 if ( (__query)->where.entries ) { \
729 (__query)->where._free = false;\
730 (__query)->where.capacity = (__n);\
731 (__query)->where.size = 0;\
809 #define as_query_predexp_inita(__query, __n) \
810 if ( (__query) != NULL && (__query)->predexp.entries == NULL ) { \
811 (__query)->predexp.entries = \
812 (as_predexp_base **) \
813 alloca(__n * sizeof(as_predexp_base *)); \
814 if ( (__query)->predexp.entries ) { \
815 (__query)->predexp._free = false; \
816 (__query)->predexp.capacity = __n; \
817 (__query)->predexp.size = 0; \
bool as_query_where(as_query *query, const char *bin, as_predicate_type type, as_index_type itype, as_index_datatype dtype,...)
as_query * as_query_init(as_query *query, const as_namespace ns, const as_set set)
as_query * as_query_new(const as_namespace ns, const as_set set)
bool as_query_select(as_query *query, const char *bin)
bool as_query_where_init(as_query *query, uint16_t n)
char as_namespace[AS_NAMESPACE_MAX_SIZE]
bool as_query_predexp_add(as_query *query, as_predexp_base *predexp)
void as_query_destroy(as_query *query)
bool as_query_select_init(as_query *query, uint16_t n)
char as_bin_name[AS_BIN_NAME_MAX_SIZE]
bool as_query_apply(as_query *query, const char *module, const char *function, const as_list *arglist)
as_predexp_base ** entries
as_query_predicates where
bool as_query_predexp_init(as_query *query, uint16_t n)
char as_set[AS_SET_MAX_SIZE]