TODO   [plain text]

* Make the pAttributeInfo and pIndexInfo arguments to CSSM_DL_CreateRelation optional (DONE).

* Enhance POD wrappers and use them everywhere (DONE for insert still needs work for get).

* Implement Indexes

* Implement unique index checks for dataInsert and dataModify

* Add unique index info to UNIQUE_RECORD structures.

* Implement KEY items (AppleCSPDL).

* Clean up usage of ReadSection::at(uint32) vs. ReadSection::operator[](uint32)

* Fix AtomicFile for NFS and ASIP (Use alternative locking mechanism).

* Implement ACL evaluation for Db access.

* Implement ACL APIs.

* Make DbModifier thread safe again.

* Cleanup Query objects when DbContext is destroyed (register them with the context).

* What if we open a DB that is being created?  Currently we get back DL_DATABASE_CORRUPT
  should this become DL_DATABASE_DOES_NOT_EXIST?

* When using CssmOid attribute names make sure to deep copy the CssmOids data (DONE).

* Implement SelectionPredicates completely
  To make DataGetFirst and DataGetNext actually work (DONE).

* Implement CreateRelation (DONE)

* Implement DataModify (DONE, now with correct semantics -- CB)

* In DataModify, check that RecordType matches that in the UniqueRecordId.

* Store index data when creating tables and databases.

* Add write buffering in AtomicFile to increase performance; flush buffer before seek.

* Make sure that automatically-assigned attribute ids don't shadow ones passed in explicitly.

* Performance: Avoid reconstructing DbVersion after a write (w/o a schema change) when we
  could derive it from the DbModifier. Only if version is as expected (i.e. no other writes
  in the meantime)

* Add fsync() to make sure AtomicFile is written before rename.