Files
gnucash/GDA_STATUS
Phil Longstaff ca48802395 Merge 15090:15803 from trunk into branch
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/branches/gda-dev@15847 57a11ea4-9604-0410-9ed3-97b8803252fd
2007-04-07 16:05:40 +00:00

89 lines
3.9 KiB
Plaintext

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