From 46989e0dee8274631e009d49c7ca63e2e7fdec3e Mon Sep 17 00:00:00 2001 From: fengzero Date: Tue, 10 Mar 2026 03:07:11 +0000 Subject: [PATCH] filter array in metas --- include/neuron/type.h | 5 +++++ src/adapter/driver/cache.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/neuron/type.h b/include/neuron/type.h index 261eefbf..6c25ab97 100644 --- a/include/neuron/type.h +++ b/include/neuron/type.h @@ -343,6 +343,11 @@ typedef struct { uint8_t precision; } neu_dvalue_t; +static inline bool neu_dvalue_is_array(const neu_dvalue_t *dvalue) +{ + return dvalue->type >= NEU_TYPE_ARRAY_CHAR; +} + static inline void neu_free_dvalue(neu_dvalue_t *dvalue) { if (dvalue->type > NEU_TYPE_ARRAY_CHAR && diff --git a/src/adapter/driver/cache.c b/src/adapter/driver/cache.c index bcca0c35..df73afe0 100644 --- a/src/adapter/driver/cache.c +++ b/src/adapter/driver/cache.c @@ -849,7 +849,12 @@ bool neu_driver_cache_update_change(neu_driver_cache_t *cache, } elem->metas = calloc(n_meta, sizeof(neu_tag_meta_t)); for (int i = 0; i < n_meta; i++) { - memcpy(&elem->metas[i], &metas[i], sizeof(neu_tag_meta_t)); + if (!neu_dvalue_is_array(&metas[i].value)) { + memcpy(&elem->metas[i], &metas[i], sizeof(neu_tag_meta_t)); + } else { + neu_free_dvalue(&metas[i].value); + elem->metas[i].value.type = NEU_TYPE_INT8; + } } elem->n_meta = n_meta;