GC, QOF and queries

Daniel Espinosa esodan at gmail.com
Fri Nov 3 11:45:16 EST 2006


2006/11/2, Derek Atkins <warlord at mit.edu>:
> Quoting Phil Longstaff <plongstaff at rogers.com>:
>
> > I have started working on a gda backend and am starting with a QofQuery
> > -> SQL translator.  I assume no one else has such a beast (there is a
> > SQL -> QofQuery translator as part of QOF.  When we get an SQL backend,
> > it won't make sense to translate SQL -> QofQuery -> SQL).  I have also
> > looked at the pattern of queries.  When GC starts, there is only one
> > query - for bills which need to be paid.  There is no query for the
> > account tree, for example.  GC must assume that session_begin loads the
> > account tree.
>
> The PG Backend has a sample Query -> SQL converter, but it's very
> limited -- it only does Transaction (Split) searches.
>
> > Is this expected behaviour?  I had assumed that everything would be
> > queried for.
>
> This is expected behavior.  Take a look at the PG Backend.  All of the
> accounts are expected to get loaded at start time.  From the business
> side, the Tax Tables and Terms are also expected to get loaded at
> start time.
>
> Not everything gets loaded by a query.

Why you need to load all the registers in memory? in GDA you can use a
GdaDataModel to refer a table or a query and get the data *just* when
you use it, I think this is better in terms of performance.


>
> > Secondly, I looked at the begin/commit edit behaviour when an account
> > was being created.  There was a *lot* of begin/commit activity on the
> > commodity, including some cases of begin/commit/commit.  Is this
> > expected behaviour?
>
> Begin/Commit can be nested (and indeed SHOULD be nested, IMNSHO)..  However
> the begins and commits should be balanced.  If they are not balanced
> then that is a bug.

Using a GdaDataModel or a GdaQuery, you can directly modify the data
in the DataBase using a begin/commit transaction (usefull in a
multiuser enviroment), of course this could fix the *autosave* future
request becouse you can edit a transaction and when saved it wil be
automaticaly commit to the server/database.

>
> Only the final commit() should push the data out to the database.
>

GDA allows you to commit the data directly with out a "buffer" managed
by GC and then commited when the user push the "Save Button".

-- 
Trabajar, la mejor arma para tu superación
"de grano en grano, se hace la arena" (R) (entrámite, pero para los
cuates: LIBRE)



More information about the gnucash-devel mailing list