k_duration_num = Keyword('duration_num')
k_end = Keyword('end')
k_error = Keyword('error')
+ k_expiration_log = Keyword('expiration_log')
+ k_expiration_num = Keyword('expiration_num')
k_expression = Keyword('expression')
k_false = Keyword('false')
k_fifo_files = Keyword('fifo_files')
k_server = Keyword('server')
k_servers = Keyword('servers')
k_set = Keyword('set')
- k_expiration_log = Keyword('expiration_log')
- k_expiration_num = Keyword('expiration_num')
+ k_shard_duration = Keyword('shard_duration')
k_shards = Keyword('shards')
k_show = Keyword('show')
k_sid = Keyword('sid')
k_length,
k_start,
k_end,
+ k_shard_duration,
k_pool,
most_greedy=False), ',', 1)
int_expr),
Sequence(k_name, str_operator, string),
Sequence(
- Choice(k_start, k_end, most_greedy=False),
+ Choice(k_start, k_end, k_shard_duration, most_greedy=False),
int_operator,
time_expr),
Sequence(
* should be used with the libcleri module.
*
* Source class: SiriGrammar
- * Created at: 2020-09-15 15:01:47
+ * Created at: 2020-09-17 11:38:57
*/
#ifndef CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_
#define CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_
CLERI_GID_K_SERVERS,
CLERI_GID_K_SET,
CLERI_GID_K_SHARDS,
+ CLERI_GID_K_SHARD_DURATION,
CLERI_GID_K_SHOW,
CLERI_GID_K_SID,
CLERI_GID_K_SIZE,
* Note that debian alpha packages should use versions like this:
* 2.0.34-0alpha0
*/
-#define SIRIDB_VERSION_PRE_RELEASE "-alpha-2"
+#define SIRIDB_VERSION_PRE_RELEASE "-alpha-3"
#ifndef NDEBUG
#define SIRIDB_VERSION_BUILD_RELEASE "+debug"
from testing import run_test
from testing import Server
from testing import parse_args
+from test_auto_duration import TestAutoDuration
from test_buffer import TestBuffer
from test_cluster import TestCluster
from test_compression import TestCompression
if __name__ == '__main__':
parse_args()
+ run_test(TestAutoDuration())
run_test(TestBuffer())
run_test(TestCompression())
run_test(TestCreateDatabase())
case CLERI_GID_K_POOL:
qp_add_int64(query->packer, (int64_t) series->pool);
break;
+ case CLERI_GID_K_SHARD_DURATION:
+ qp_add_int64(query->packer, (int64_t) (series->idx
+ ? series->idx->shard->duration : 0));
+ break;
case CLERI_GID_K_START:
qp_add_int64(query->packer, (int64_t) series->start);
break;
*/
int siridb_series_cexpr_cb(siridb_series_t * series, cexpr_condition_t * cond)
{
- switch (cond->prop)
+ switch ((enum cleri_grammar_ids) cond->prop)
{
case CLERI_GID_K_LENGTH:
return cexpr_int_cmp(cond->operator, series->length, cond->int64);
return cexpr_int_cmp(cond->operator, series->end, cond->int64);
case CLERI_GID_K_POOL:
return cexpr_int_cmp(cond->operator, series->pool, cond->int64);
+ case CLERI_GID_K_SHARD_DURATION:
+ return cexpr_int_cmp(
+ cond->operator,
+ (series->idx ? series->idx->shard->duration : 0),
+ cond->int64);
case CLERI_GID_K_TYPE:
return cexpr_int_cmp(cond->operator, series->tp, cond->int64);
case CLERI_GID_K_NAME:
return cexpr_str_cmp(cond->operator, series->name, cond->str);
+ default:
+ /* we must NEVER get here */
+ log_critical("Unexpected series property received: %d", cond->prop);
+ assert (0);
}
- /* we must NEVER get here */
- log_critical("Unexpected series property received: %d", cond->prop);
- assert (0);
return -1;
}
* should be used with the libcleri module.
*
* Source class: SiriGrammar
- * Created at: 2020-09-15 15:01:47
+ * Created at: 2020-09-17 11:38:57
*/
#include "siri/grammar/grammar.h"
cleri_t * k_duration_num = cleri_keyword(CLERI_GID_K_DURATION_NUM, "duration_num", CLERI_CASE_SENSITIVE);
cleri_t * k_end = cleri_keyword(CLERI_GID_K_END, "end", CLERI_CASE_SENSITIVE);
cleri_t * k_error = cleri_keyword(CLERI_GID_K_ERROR, "error", CLERI_CASE_SENSITIVE);
+ cleri_t * k_expiration_log = cleri_keyword(CLERI_GID_K_EXPIRATION_LOG, "expiration_log", CLERI_CASE_SENSITIVE);
+ cleri_t * k_expiration_num = cleri_keyword(CLERI_GID_K_EXPIRATION_NUM, "expiration_num", CLERI_CASE_SENSITIVE);
cleri_t * k_expression = cleri_keyword(CLERI_GID_K_EXPRESSION, "expression", CLERI_CASE_SENSITIVE);
cleri_t * k_false = cleri_keyword(CLERI_GID_K_FALSE, "false", CLERI_CASE_SENSITIVE);
cleri_t * k_fifo_files = cleri_keyword(CLERI_GID_K_FIFO_FILES, "fifo_files", CLERI_CASE_SENSITIVE);
cleri_t * k_server = cleri_keyword(CLERI_GID_K_SERVER, "server", CLERI_CASE_SENSITIVE);
cleri_t * k_servers = cleri_keyword(CLERI_GID_K_SERVERS, "servers", CLERI_CASE_SENSITIVE);
cleri_t * k_set = cleri_keyword(CLERI_GID_K_SET, "set", CLERI_CASE_SENSITIVE);
- cleri_t * k_expiration_log = cleri_keyword(CLERI_GID_K_EXPIRATION_LOG, "expiration_log", CLERI_CASE_SENSITIVE);
- cleri_t * k_expiration_num = cleri_keyword(CLERI_GID_K_EXPIRATION_NUM, "expiration_num", CLERI_CASE_SENSITIVE);
+ cleri_t * k_shard_duration = cleri_keyword(CLERI_GID_K_SHARD_DURATION, "shard_duration", CLERI_CASE_SENSITIVE);
cleri_t * k_shards = cleri_keyword(CLERI_GID_K_SHARDS, "shards", CLERI_CASE_SENSITIVE);
cleri_t * k_show = cleri_keyword(CLERI_GID_K_SHOW, "show", CLERI_CASE_SENSITIVE);
cleri_t * k_sid = cleri_keyword(CLERI_GID_K_SID, "sid", CLERI_CASE_SENSITIVE);
cleri_t * series_columns = cleri_list(CLERI_GID_SERIES_COLUMNS, cleri_choice(
CLERI_NONE,
CLERI_FIRST_MATCH,
- 6,
+ 7,
k_name,
k_type,
k_length,
k_start,
k_end,
+ k_shard_duration,
k_pool
), cleri_token(CLERI_NONE, ","), 1, 0, 0);
cleri_t * shard_columns = cleri_list(CLERI_GID_SHARD_COLUMNS, cleri_choice(
cleri_choice(
CLERI_NONE,
CLERI_FIRST_MATCH,
- 2,
+ 3,
k_start,
- k_end
+ k_end,
+ k_shard_duration
),
int_operator,
time_expr