Reports and the root account
Phil Longstaff
plongstaff at rogers.com
Thu Mar 19 12:52:31 EDT 2009
On March 19, 2009 12:40:27 pm Derek Atkins wrote:
> Hi,
>
> Phil Longstaff <plongstaff at rogers.com> writes:
> > While doing some testing on the sql backend, I noticed that when I run a
> > report (e.g. Balance Sheet), the report system attempts to query all
> > transactions for the root account. The sql backend tries to do a
> > xaccAccountLookup() on the guid in the qofQuery, and fails when it
> > returns NULL.
> >
> > I could detect this and fail more gracefully i.e. ignore this account,
> > but I think it should be handled in the report system. I don't plan to
> > address this right now, but can log this in bugzilla if no one else wants
> > to look at it in the near future.
>
> Why do you not have the root account GUID in the SQL DB?
The root account GUID *is* in the db, but not as an account. Instead, there
is a books table with 3 fields: book guid, root account guid, template root
guid.
The problem is that a during split-query processing, xaccAccountLookup()
returns NULL when passed the root account guid, and the report is requesting
that all transactions for the root account be loaded. Since I use
xaccAccountGetMark() and xaccAccountSetMark() so that subsequent queries for
an account's transactions are ignored (since the transactions are already
loaded), these routines log CRIT messages when passed NULL (GNC_IS_ACCOUNT
fails).
I'm looking for the best solution to this. I can ignore a query if
xaccAccountLookup() returns NULL. I can ignore a query if the account being
queried is the root account (which will have no transactions). The report can
be changed to *not* try to load the splits for the root account. At this
point, you're getting the 1st solution with a CRIT message in the trace log.
Phil
More information about the gnucash-devel
mailing list