I've included a portion of the GDA_STATUS file which brings up some
questions:

- 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?

Some engine tables don't exist (commodity), some have extra parameters,
some don't have all needed parameters, some don't have setters for every
parameter, some have an inappropriate setter, ...   I've often wondered
if the engine object <-> backend interface should NOT use the standard
get/set APIs but should be more of a serialize/deserialize interface
where when an object is to be committed, the object's SaveYourself
method is called.  This method grabs the backend and calls
SaveThisParameter multiple times.  When loading, the object would be
malloc'ed and then its RestoreYourself method would be called.  This
would call the backend's RestoreThisParameter.  This would also solve
the problem of commits occuring while an object is being loaded (I have
a flag to catch these).

- When a price is committed, the priceDB is also committed.  Could there
eventually be multiple priceDBs?  The priceDB is currently 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.

Phil

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to