New to SQL

Linas Vepstas linas at
Fri Jul 16 11:30:58 EDT 2004

On Wed, Jul 14, 2004 at 01:02:05PM -0500, Perry Smith was heard to remark:
> Yes, I too would be most happy to help.  I'm finally in a position to 
> work on this stuff.  I may be confused but having a real database 
> backend is very attractive to me for a number of reasons.

p.s. gnucash-devel not gnucash-user is teh right place for this

> On Jul 14, 2004, at 11:29 AM, Derek Atkins wrote:
> >linas at (Linas Vepstas) writes:
> >
> >>I'm engaged in a very round-about development of a generic sql 
> >>backend,
> >>with the goal of supporting the new features, and a larger collection
> >>of sql db's.  Unfortunately, its a big project and I'm able to devote
> >>only a few weekends a month to make progress.
> >
> >By any chance, Linas, do you have a roadmap or some way to get help
> >from others interested in donating effort to this feature-set?

Heh.  Barely enough time to read my email, and they want road maps ... 

The overall idea is to create a "generic" object infrastructure to
map C objects (specifically Qof objects) to SQL tables in an "automatic"
way.   The mapping would be safe for multi-user, simultaneous updates
(i.e. do the corect locking/versioning, etc).

The technology I've picked for this is, (ahem, excuse the favoritism),
my own: a smash-up of qof and dwi (see sourceforge).

status & roadmap:

-- 1. Use dwi to specify the mapping of qof object 'param' to sql table
      field.  (Done)
-- 2. Save & restore qof object to sql database, using above mapping. (Done)
-- 3. provide versioning support, so that multi-user updates can be
      properly handled. (Started)
-- 4. provide table locking (Started).
-- 5. step back, look what else there remains to be done (e.g. figuring
      out how to support the business object COW).
-- 6. Implement a proof-of-concept in 'gnotime', iron out the gotcha's
      there, before moving to gnucash.

The current demo code is in qof/dwi CVS only.  the tarballs are way
downleavel).  See dwi/examples/qof-proto which I have just barely
started beating into the qof "backend" framework, which see 
qof/examples/backend.   Good luck.

Not listed in the above:
-- a. DWI currently requires compile-time linking to gtk, even though 
   there is absolutely no reason for this for the above.  gtk is 
   needed for other DWI features.  This needs to be replaced by some
   kind of plugin/dynamic load stunt.  This is technically hard/dirty;
   I'll reject patches that do this wrong.

-- b. test dwi with various other db's  (I've only done postgres).
-- c. implement/flesh out the db login proceedures.
-- d. change gnc-event to use qof entity pointers instead of guid pointers.
-- e. clean up core gnucash objects to use QofInstance.  Figure out
   what else is common between all gnucash objects (e.g. COW ??), and 
   add that to QofInstance.
-- f. "refactor" price query, so that it uses the standard qof query
   mechanism instead of the hacky thing its doing now.

I really really need help with the letter tasks a.-f. and working on
those will not put you on a collision course with where I wanted to go
with things.  (except possibly COW, which is potentially hard/paradigm
breaking, so I'll be staring at that real hard).  These tasks are also
probably a lot easier than trying to grok the big-picture of the
mainline qof backend development, especially if you are new to qof.


pub  1024D/01045933 2001-02-01 Linas Vepstas (Labas!) <linas at>
PGP Key fingerprint = 8305 2521 6000 0B5E 8984  3F54 64A9 9A82 0104 5933

More information about the gnucash-devel mailing list