10/18/07 -------- Read more on DB backup - People seem to have successful experience using snapshot in between pg_start_backup() and pg_stop_backup() - Since replay is always needed to correct problems in a base backup, the difference between a 6 hour tape write and a quick snapshot (a few seconds?) is how much WAL to keep. - Multiple warm standbys are possible. Keh-Cheng points me to an article that uses ZFS cloning capability to replicate the warm standby and to make the replica usable. "Case-preserving and case-insensitive names" I only told half the story in my last report (because I only knew that much then). 1. In addition to strcmp(), parmeter "key" to hcon_alloc_slot() and hcon_lookup() is also used to calculate the hash number. Therefore simply changing strcmp to strcasecmp is not sufficient. 2. Database query to retrieve template record information, where clause was exact match, therefore case-sensitive. I changed it from '=' to 'like' and made it case-insensitive. The ultimate fix would be something as I outline in my last report, i.e., store all lower case in database with additional column for printing purpose. I did a quick and dirty fix as follows, - Created two new hcontainer function: hcon_allocslot_lower() and hcon_lookup_lower(). They are used for names of series, keyword, link, and segment. - An obvious drawback of this implemenation is that these functions must be used in pairs. Any mix up, e.g. hcon_allocslot() with hcon_lookup_lower(), would not likely provide desired results. - The scope of this fix covers names of series, keyword, link, and segment. It does not yet covers the names in the generic dataset, dsds records, in particular. It'll be up to Art to decide whether/where to change. Fixed a few memory problems: - fixed memory leak in db_postgresql.c: paramLength[] - fixed memory leak in drms_server.c: sum->wd - fixed memory leak in drms_env.c: changed to free record_cache before free series_cache, because the latter holds the template, i.e., info stuff. - fixed memory leak in timeio.c - fixed memory leak in drms_record.c This was a hard one to track down. It turned out if drms_open_records() happens to open a record that's already in the cache, i.e., same seriesname and recnum, the old record will be overridden, leaving some garbage behind. I cleaned it up. Fixed a few compiler warnings: some of them were bad. e.g. fix in drms_types.c: was IsNegHugeVal, should be IsNegHugeVal(val) Work in progress: - merging code for proper exit in module and drms_server. See last week's report for implemenation details