summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cells/spread_sketch.c6
-rw-r--r--src/cells/spread_sketch.h7
-rw-r--r--src/cube.c29
3 files changed, 35 insertions, 7 deletions
diff --git a/src/cells/spread_sketch.c b/src/cells/spread_sketch.c
index a05d2bd..4486c4c 100644
--- a/src/cells/spread_sketch.c
+++ b/src/cells/spread_sketch.c
@@ -13,6 +13,11 @@
// todo:把primary metric 记到sketch 里,且使用特殊的st Hyperloglog
// todo: topk 也是这样
+/*
+1. 修改set primary metric 为 set sampling
+2. 增加一个list key 和一堆根据key 查base64之类的接口
+3. serialize 不用实现带exdata的情况
+*/
struct entry {
int ref_count;
@@ -336,6 +341,7 @@ void spread_sketch_reset(struct spread_sketch *ss) {
memset(ss->level_cnt, 0, sizeof(ss->level_cnt));
ss->level_cnt[0] = ss->depth * ss->width;
+ ss->level_min = 0;
}
void spread_sketch_set_exdata_schema(struct spread_sketch *ss, exdata_new_cb new_fn, exdata_free_cb free_fn, exdata_merge_cb merge_fn, exdata_reset_cb reset_fn, exdata_copy_cb copy_fn) {
diff --git a/src/cells/spread_sketch.h b/src/cells/spread_sketch.h
index 9717238..64f30f7 100644
--- a/src/cells/spread_sketch.h
+++ b/src/cells/spread_sketch.h
@@ -20,6 +20,8 @@ void spread_sketch_free(struct spread_sketch *ss);
void spread_sketch_reset(struct spread_sketch *ss);
int spread_sketch_add(struct spread_sketch *ss, const char *key, size_t key_length, uint64_t item_hash, void *arg);
+// void spread_sketch_add(struct spread_sketch *ss, const char *key, size_t key_length, const char* item, size_t item_len, void *arg);
+// TODO: 增加add_hash 接口
void spread_sketch_set_exdata_schema(struct spread_sketch *ss, exdata_new_cb new_fn, exdata_free_cb free_fn, exdata_merge_cb merge_fn, exdata_reset_cb reset_fn, exdata_copy_cb copy_fn);
void *spread_sketch_get0_exdata(const struct spread_sketch *ss, const char *key, size_t key_len);
@@ -28,6 +30,11 @@ void *spread_sketch_get0_exdata(const struct spread_sketch *ss, const char *key,
int spread_sketch_get_count(const struct spread_sketch *ss);
size_t spread_sketch_list(const struct spread_sketch *ss, void **exdatas, size_t n_exdatas);
+// 一系列对于spread sketch的查询
+// size_t spread_sketch_list_keys(const struct spread_sketch *ss, const char *keys[], size_t n_keys);
+// const uint32_t spread_sketch_query_register(ss, const char *key, size_t key_len);
+
+// size_t spread_sketch_list(const struct spread_sketch *ss, void **exdatas, size_t n_exdatas);
void spread_sketch_merge(struct spread_sketch *dest, const struct spread_sketch *src);
diff --git a/src/cube.c b/src/cube.c
index efba3a7..6069cdd 100644
--- a/src/cube.c
+++ b/src/cube.c
@@ -137,6 +137,28 @@ struct cube_manager *cube_manager_new() {
return pthis;
}
+void print_field_array(const struct field *fields, size_t n_field)
+{
+ printf("dimension with length %zu \n", n_field);
+ for (size_t i = 0; i < n_field; i++) {
+ printf("%s: ", fields[i].key);
+ switch (fields[i].type)
+ {
+ case FIELD_VALUE_INTEGER:
+ printf("%lld\n", fields[i].value_longlong);
+ break;
+ case FIELD_VALUE_DOUBLE:
+ printf("%lf\n", fields[i].value_double);
+ break;
+ case FIELD_VALUE_CSTRING:
+ printf("%s\n", fields[i].value_str);
+ break;
+ default:
+ break;
+ }
+ }
+}
+
static void field_array_to_key(const struct field fields[], size_t n_tags, char **out_key, size_t *out_key_size)
{
if (n_tags == 0) {
@@ -303,13 +325,6 @@ void cube_manager_calibrate(struct cube_manager *pthis, const struct cube_manage
}
}
- // for (int i = 0; i < pthis->cube_cnt; i++) {
- // if (pthis->cube[i] == NULL) {
- // continue;
- // }
- // metric_manifest_manager_free(pthis->cube[i]->manifest_manager);
- // pthis->cube[i]->manifest_manager = metric_manifest_manager_copy(master->cube[i]->manifest_manager);
- // }
}
struct cube_manager *cube_manager_fork(const struct cube_manager *src)