+int zebraExplain_removeDatabase(ZebraExplainInfo zei, void *update_handle)
+{
+ struct zebDatabaseInfoB **zdip = &zei->databaseInfo;
+
+ while (*zdip)
+ {
+ if (*zdip == zei->curDatabaseInfo)
+ {
+ struct zebDatabaseInfoB *zdi = *zdip;
+ Record rec;
+
+ zei->dirty = 1;
+ zei->updateHandle = update_handle;
+
+ if (zdi->attributeDetails)
+ {
+ /* remove attribute details keys and delete it */
+ zebAttributeDetails zad = zdi->attributeDetails;
+
+ rec = rec_get(zei->records, zad->sysno);
+ (*zei->updateFunc)(zei->updateHandle, rec, 0);
+ rec_rm(&rec);
+ }
+ /* remove database record keys and delete it */
+ rec = rec_get (zei->records, zdi->sysno);
+ (*zei->updateFunc)(zei->updateHandle, rec, 0);
+ rec_rm(&rec);
+
+ /* remove from list */
+ *zdip = zdi->next;
+
+ /* current database is IR-Explain-1 */
+ return 0;
+ }
+ zdip = &(*zdip)->next;
+ }
+ return -1;
+}
+