+int isamb_unlink (ISAMB b, ISAMC_P pos)
+{
+ struct ISAMB_block *p1;
+
+ if (!pos)
+ return 0;
+ p1 = open_block(b, pos);
+ p1->deleted = 1;
+ if (!p1->leaf)
+ {
+ int sub_p;
+ int item_len;
+ char *src = p1->bytes + p1->offset;
+
+ decode_ptr(&src, &sub_p);
+ isamb_unlink(b, sub_p);
+
+ while (src != p1->bytes + p1->size)
+ {
+ decode_ptr(&src, &item_len);
+ src += item_len;
+ decode_ptr(&src, &sub_p);
+ isamb_unlink(b, sub_p);
+ }
+ }
+ close_block(b, p1);
+ return 0;
+}
+
+int isamb_merge (ISAMB b, ISAMC_P pos, ISAMC_I *stream)