void UDB_removeAt_(UDB *self, PID_TYPE pid) { if (UDB_isInTransaction(self)) { UDBRecord *record = UDB_recordAtPid_(self, pid); if (!record) { printf("UDB error: missing record with pid %" PID_FORMAT " for remove\n", pid); record = UDB_recordAtPid_(self, pid); return; } UDBRecords_removeRecord_(self->records, record); UDBIndex_setPos_forPid_(self->index, 0, pid); } }
Datum UDB_at_(UDB *self, PID_TYPE pid) { Datum d; UDBRecord *record = UDB_recordAtPid_(self, pid); if (!record) { d.size = 0; d.data = NULL; //printf("missing record with pid %i\n", pid); return d; } return UDBRecord_readDatum(record); }