*** 87,89 **** --- 87,147 ---- My proposition : look at Firebird RDBMS at http://firebird.sourceforge.net and also http://www.ibphoenix.com {linebreak} It is using multigenerational database engine for years . There are some technical FAQ articles on those sites, describing in detail something called here "shadow pager" (multiversioning database) + + ==== + _By kevin lyda on 2005-03-04:_ + + two suggestions: + + it would be nice to have gcc idiot check the _printf functions. there's an __attribute__ method to do this, but it gets confused by the %q and %Q format codes. w/o changes to gcc it's not possible to do. if i pestered the gcc folks - and i don't know how successful i'd be - would there be any interest in modifying the headerfiles to define these attributes: + + int sqlite_exec_printf(sqlite *db, + char *sqlfmt, + int (*xCallback)(void*,int,char**,char**), + void *pArg, + char **errmsg, + ...) __attribute__((format(printf, 2, 6))); + + it really does catch a fair number of silly and yet painful errors. + + second suggestion: + + i sometimes would like to log all my sql calls - but using my own logging functions. i'd also like it to be something i can turn on and off at run time. using version 2.8.15 i made the following change: + + --- sqlite/src/main.c 13 Jan 2005 10:54:45 -0000 1.1 + +++ sqlite/src/main.c 4 Mar 2005 13:01:45 -0000 + @@ -463,6 +463,9 @@ + const char sqlite_encoding[] = "iso8859"; + #endif + + +/* logger function */ + +void (*sqlite_logger_func)(const char *); + + + /* + ** Open a new SQLite database. Construct an "sqlite" structure to define + ** the state of this database and return a pointer to that structure. + @@ -635,6 +638,9 @@ + int nCallback; + + if( zSql==0 ) return SQLITE_OK; + + if (sqlite_logger_func) + + (*sqlite_logger_func)(zSql); + + + while( rc==SQLITE_OK && zSql[0] ){ + pVm = 0; + rc = sqlite_compile(db, zSql, &zLeftover, &pVm, pzErrMsg); + + --- sqlite/src/sqlite.h.in 13 Jan 2005 10:54:46 -0000 1.1 + +++ sqlite/src/sqlite.h.in 4 Mar 2005 13:09:07 -0000 + @@ -59,6 +59,11 @@ + typedef struct sqlite sqlite; + + /* + +** you can log all sql statements by assigning this variable a function + +*/ + +extern void (*sqlite_logger_func)(const char *); + + + +/* + ** A function to open a new sqlite database. + ** + ** If the database does not exist and mode indicates write