+ disambiguate field use in foreign updates
+ add a test case for NOT operator
+ generalize updates to modify/add/delete
+ have caches (relation, too) track PK set as well as data -- allow cache to handle not-in DB
- cache for DBVerify
- have client respond when it gets an unexpected update so server can update records
  (jusr deregister with the unknown cookie?)
- make a library for creating domains (useful in tests)
+ what does the server do when the database stops responding -- should be
  equivalent to VNetworkException to the client (could rely on cache until
  connection restablished, then reload)
+ VectorCache should use singleton Cache<SETDATA, KEY, SET=SETDATA:Db>
  + define template <class DATA> class CacheImpl<DATA> {}, always specialize to ..Cache
  + use type CacheImpl<DATA> in VectoCache, use type
  + Loki::SingletonHolder< CacheImpl<DATA>, Loki::CreateUsingNew, Loki::DefaultLifetime, Loki::ClassLevelLockable> as instance
+ problem with (at least foreign) registration cleanup on server
- pif.addRecordInDomain(users,
                       (users.userid == "1",      // !!compiles!!
                        users.firstname = "newJohn",
                        users.lastname = "newBerry",
                        users.expired = false,
                        users.count = 111,
                        users.credits = 0,
                        users.speed = 10));
- test fgroup fix in Users
- share existsSets as singletons registered by domain name
- add test for case insensitivity of fields and registers
+ test unrelated fields in bind iterator (seems to core unpredictably)
- fix dbcreator
  - follow parent XML files -- order independent loading
  - allow alternate to type in DBEntry; reference="DomainName"
  - manage relationship cleanup inside pserver (remove relation mapping when their targets are removed)
- add test for all caches being shutdown

- The following compiles and shouldn't:
RegistrationBinding
RegistrationBindingCacheImpl::operator[](const Data& group) throw (NotFoundInProvisioningException&, VDbException&)
{
   return (*this)[group.convertString()];
}

- remove throw declarations in templates

- after getting a parse error in http, it continues to react, also what is wrong with this http
DEBUG | 20020614-114648.830 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | ProvisionClientHandler.cxx:66 | process: Received Message : GET GetRecordsInDomain HTTP/1.1
: 60

<arguments>
<domain>businessgroups</domain>
</arguments>


Debug | 20020614-114648.832 | ottawa.gloo.net | VOCAL APP | VOCAL | 17231 | 3075 | VException.cxx:70 | Exception at msg/HttpException.hxx:111 Malformed HTTP header.
DEBUG | 20020614-114649.084 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | ProvisionClientHandler.cxx:71 | process: Error parsing Http Message
DEBUG | 20020614-114649.140 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | ProvisionClientHandler.cxx:1184 | Send 400 Fail Message: HTTP/1.1 400 Bad Request
Content-Length: 26

<error>bad request</error>
DEBUG | 20020614-114649.142 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | ProvisionClientHandler.cxx:101 | handleGetRequest(GetRecordsInDomain)
DEBUG | 20020614-114649.142 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | ProvisionClientHandler.cxx:223 | handleGetRecordsInDomain
DEBUG | 20020614-114649.143 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | PGSQLConnection.cxx:59 | DBSelectHelper(SELECT COUNT(*) FROM  )
Debug | 20020614-114649.152 | ottawa.gloo.net | VOCAL APP | VOCAL | 17231 | 3075 | VException.cxx:70 | Exception at PGSQLConnection.cxx:71 DBSelect Error: PostgreSQL error: ERROR:  parser: parse error at or near ""
(in SELECT COUNT(*) FROM  )
DEBUG | 20020614-114649.152 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | ProvisionClientHandler.cxx:260 | Caught: VDbException: DBSelect Error: PostgreSQL error: ERROR:  parser: parse error at or near ""
(in SELECT COUNT(*) FROM  )
WARNING | 20020614-114649.154 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | ProvisionClientHandler.cxx:261 | Failed call to provisioning service
DEBUG | 20020614-114649.155 | ottawa.gloo.net | pserver | PROVS | 17120 | 3075 | ProvisionClientHandler.cxx:1184 | Send 400 Fail Message: HTTP/1.1 400 Bad Request
Content-Length: 50

<error>Failed call to provisioning service</error>

- user hash<> rathern than Hasher<> in Cache, VectorKeyCache
- add exists test for VectorKeyCache
- add primaryKey in Cache::load -- allow client to decide whether to include key in all
  (requires FieldList to keep a set of fields)
- return count (uas unsigned int) on setRecordsInDomain (requires a change to DBConnection::DBUpdate)
- initialize column values according to type

- add a test for constructor throwing in Cache<> and then recovery
  - check that when update occurs, it gets put back in exists set
- move error detection and CacheManager::serviceUnavailable() to ProvisioningInterface
- Add to XML entry interface for domain specification:
        - default value
        - not null
        - keyIndex
        - rangeIndex
- Add to XML entry interface for domain specification:
        - ephemeral
        - fastWrites
- send OK/Fail response to Update requests from pserver
- correct PHP to produce lower case SQL commands
======================================================================

Copyright 2000-2003, Cisco Systems, Inc.
THE INFORMATION HEREIN IS PROVIDED ON AN "AS IS" BASIS, WITHOUT ANY
WARRANTIES OR REPRESENTATIONS, EXPRESS, IMPLIED OR STATUTORY, INCLUDING
WITHOUT LIMITATION, WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY OR
FITNESS FOR A PARTICULAR PURPOSE.

$Id: TODO,v 1.2.2.1 2003/03/28 05:25:53 bko Exp $
