int ai_btree_put(as_sindex_metadata *imd, as_sindex_pmetadata *pimd, void *skey, cf_digest *value) { ai_obj ncol; if (C_IS_DG(imd->sktype)) { init_ai_objFromDigest(&ncol, (cf_digest*)skey); } else { // TODO - ai_obj type is LONG for both Geo and Long init_ai_objLong(&ncol, *(ulong *)skey); } ai_obj apk; init_ai_objFromDigest(&apk, value); uint64_t before = pimd->ibtr->msize + pimd->ibtr->nsize; int ret = reduced_iAdd(pimd->ibtr, &ncol, &apk, COL_TYPE_DIGEST); uint64_t after = pimd->ibtr->msize + pimd->ibtr->nsize; cf_atomic64_add(&imd->si->ns->n_bytes_sindex_memory, (after - before)); if (ret && ret != AS_SINDEX_KEY_FOUND) { cf_warning(AS_SINDEX, "Insert into the btree failed"); return AS_SINDEX_ERR_NO_MEMORY; } return ret; }
int ai_btree_put(as_sindex_metadata *imd, as_sindex_pmetadata *pimd, as_sindex_key *skey, void *value) { int ret = AS_SINDEX_OK; uint64_t uk = *(uint64_t *)value; cf_digest *keyd = (cf_digest *)value; ai_obj ncol; if (C_IS_Y(imd->dtype)) { init_ai_objFromDigest(&ncol, &skey->b[0].digest); } else { init_ai_objLong(&ncol, skey->b[0].u.i64); } ai_obj apk; init_ai_objFromDigest(&apk, keyd); cf_detail(AS_SINDEX, "Insert: %ld %ld %ld", *(uint64_t *) &ncol.y, *(uint64_t *) &skey->b[0].digest, *((uint64_t *) &apk.y)); ulong bb = pimd->ibtr->msize + pimd->ibtr->nsize; ret = reduced_iAdd(pimd->ibtr, &ncol, &apk, COL_TYPE_U160); if (ret == AS_SINDEX_KEY_FOUND) { goto END; } else if (ret != AS_SINDEX_OK) { cf_warning(AS_SINDEX, "Insert into the btree failed"); ret = AS_SINDEX_ERR_NO_MEMORY; goto END; } ulong ab = pimd->ibtr->msize + pimd->ibtr->nsize; if (!as_sindex_reserve_data_memory(imd, (ab - bb))) { reduced_iRem(pimd->ibtr, &ncol, &apk); ret = AS_SINDEX_ERR_NO_MEMORY; goto END; } SITRACE(imd->si, DML, debug, "ai__btree_insert(N): %s key: %d val %lu", imd->iname, skey->b[0].u.i64, uk); END: return ret; }
int ai_btree_put(as_sindex_metadata *imd, as_sindex_pmetadata *pimd, void *skey, cf_digest *value) { int ret = AS_SINDEX_OK; ai_obj ncol; if (C_IS_Y(imd->dtype)) { init_ai_objFromDigest(&ncol, (cf_digest*)skey); } else { init_ai_objLong(&ncol, *(ulong *)skey); } ai_obj apk; init_ai_objFromDigest(&apk, value); ulong bb = pimd->ibtr->msize + pimd->ibtr->nsize; ret = reduced_iAdd(pimd->ibtr, &ncol, &apk, COL_TYPE_U160); if (ret == AS_SINDEX_KEY_FOUND) { goto END; } else if (ret != AS_SINDEX_OK) { cf_warning(AS_SINDEX, "Insert into the btree failed"); ret = AS_SINDEX_ERR_NO_MEMORY; goto END; } ulong ab = pimd->ibtr->msize + pimd->ibtr->nsize; if (!as_sindex_reserve_data_memory(imd, (ab - bb))) { reduced_iRem(pimd->ibtr, &ncol, &apk); ret = AS_SINDEX_ERR_NO_MEMORY; goto END; } END: return ret; }