+ if (rec->size[recInfo_delKeys])
+ {
+ zebra_rec_keys_t delkeys = zebra_rec_keys_open();
+
+ zebra_rec_keys_t sortkeys = zebra_rec_keys_open();
+
+ zebra_rec_keys_set_buf(delkeys, rec->info[recInfo_delKeys],
+ rec->size[recInfo_delKeys],
+ 0);
+#if FLUSH2
+ extract_flush_record_keys2(zh, rec->sysno,
+ zh->reg->keys, 0, delkeys, 0);
+#else
+ extract_flush_record_keys(zh, rec->sysno, 0, delkeys, 0);
+ extract_flush_record_keys(zh, rec->sysno, 1, zh->reg->keys, 0);
+#endif
+ zebra_rec_keys_close(delkeys);
+
+ zebra_rec_keys_set_buf(sortkeys, rec->info[recInfo_sortKeys],
+ rec->size[recInfo_sortKeys],
+ 0);
+
+ extract_flush_sort_keys(zh, rec->sysno, 0, sortkeys);
+ zebra_rec_keys_close(sortkeys);
+ }
+ else
+ {
+#if FLUSH2
+ extract_flush_record_keys2(zh, rec->sysno, zh->reg->keys, 0, 0, 0);
+#else
+ extract_flush_record_keys(zh, rec->sysno, 1, zh->reg->keys, 0);
+#endif
+ }
+ extract_flush_sort_keys(zh, rec->sysno, 1, zh->reg->sortKeys);
+
+ xfree(rec->info[recInfo_delKeys]);
+ zebra_rec_keys_get_buf(zh->reg->keys,
+ &rec->info[recInfo_delKeys],
+ &rec->size[recInfo_delKeys]);
+
+ xfree(rec->info[recInfo_sortKeys]);
+ zebra_rec_keys_get_buf(zh->reg->sortKeys,
+ &rec->info[recInfo_sortKeys],
+ &rec->size[recInfo_sortKeys]);
+ return ZEBRA_OK;
+}
+
+void zebra_it_key_str_dump(ZebraHandle zh, struct it_key *key,
+ const char *str, size_t slen, NMEM nmem, int level)
+{
+ char keystr[200]; /* room for zints to print */
+ int ord = CAST_ZINT_TO_INT(key->mem[0]);
+ const char *index_type;
+ int i;
+ const char *string_index;
+
+ zebraExplain_lookup_ord(zh->reg->zei, ord, &index_type,
+ 0/* db */, &string_index);
+ assert(index_type);
+ *keystr = '\0';
+ for (i = 0; i < key->len; i++)
+ {
+ sprintf(keystr + strlen(keystr), ZINT_FORMAT " ", key->mem[i]);
+ }
+
+ if (*str < CHR_BASE_CHAR)