GDA backend status - Dec 9, 2006 Based on r15090 Merged with r15803 Building: - I am currently building with libgda 1.99.1 installed in /opt/libgda-1.99.1. Configure.in will use pkg-config to set up the include and lib information. This cannot be overridden (yet) by any switch on the ./configure command. Execution: - A basic GDA backend framework now exists. This framework accepts URLs of the form gda://DSN:USERNAME:PASSWORD. "gda" is required. "DSN" represents a dataset configured in ~/.libgda/config. USERNAME and PASSWORD are not required but can be specified. - The backend assumes that the database already exists. Tables will be created if they don't exist. I have only tested with mysql. In theory, other db engines supported by libgda should work correctly. - The backend will save commodities and load them on startup. - The backend will save accounts and load them on startup. Accounts created for scheduled transactions will be loaded into the CoA. - The backend will save budgets and load them on startup. - The backend will save lots and load them on startup. - The backend will save prices and load them on startup. - Don't use scheduled transactions. An account and a scheduled transaction will be saved. Frequency info will not be saved/restored. Other related info will not be saved/restored. - Slots will be saved and restored for all objects. - When a register is opened, splits and transactions will be queried. If a transaction is created or edited (I haven't tested deletion yet), the db is updated properly. Libgda Issues: - There is a bug in libgda. Dates are not saved. libgda creates the SQL as 'MM-DD-YYYY' instead of 'YYYY-MM-DD'. MySQL doesn't complain, but stores the date as '0000-00-00'. Fixed in libgda CVS. GC and GDA Backend Issues: - To avoid having the backend commit everything twice (because of the Qof two phase commit protocol), saved objects are marked clean when committed. To do this, I need to reach right into the QofInstance structure and clear the dirty flag. There should be a better way to do this. Note this also keeps the book from being marked dirty. Q: If a db backend becomes the standard and xml is only for import/export, does the concept of clean/dirty disappear? - Recurrences are currently only used by budgets, and recurrence save/restore is included in the budget save/restore code. If recurrences will eventually be used elsewhere in GC, recurrence save/restore code may need to be split out on its own (separate recurrences table?) - The backend has its own tables for objects which include db-related info. Can these be merged with the engine object tables? - When a price is committed, the priceDB is also committed. Could there eventually be multiple priceDBs? If not, the priceDB commit is just ignored. - Multiple books? The old postgres backend had a books table. If the new db should have one, accounts (and other objects) should have a book guid field. - If I try to "Save As" and type a url (e.g. gda://xxx), this gets converted to file:///home/phil/.../gda%3F%2A%2Axxx. (I don't remember the % escapes exactly, but you get the picture). I tried adding gtk_file_chooser_set_local_only( file_box, FALSE) but that didn't help. TODO: - Add --with-libgda= configure option - Business objects - Check for memory leaks - Better representation for gnc_numeric - doesn't compare well i.e. a query for splits where 'value > 20.00' will be difficult. Maybe should convert gnc_numeric <-> double. - Queries - Split query is handled specially because it is quite involved. Only other query I've seen is by the business backend for invoices due soon. Generic query handler not built yet. - SQLite if just a "file". If the file being opened is an SQLite db, should be handled properly. If a file is saved as file://xxx, xxx should be created as a SQLite db. Perhaps xml:// should be used for xml interchange format. - Finish scheduled transactions