On Fri, 24 Dec 1999 16:37:49 GMT, the world broke into rejoicing as
Grant Likely <[EMAIL PROTECTED]>  said:
> Rob Walker wrote:
> > 
> > is it possible to disable the date range in the register display?  I
> > would like to see all of my transactions.  Especially since I am going
> > to be working on the date field, I would like to be able to just say,
> > "show them all".
> > 
> 
> Allow me to second that preference.
> 
> However, I've noticed that if I set the date range to show all my
> transactions (about 6 months worth), the register slows down
> completely.  Is there any way to modify the display so that it only
> loads the transactions from the engine that it actually need to display?

Methinks this goes along with two rather massive changes to the
engine:
  a) Providing the ability to write data out to random-access data
     structures (I'm thinking of prototyping something where each
     transaction establishes its own directory, and then writes data
     into a DBM file inside that directory), and then
  b) Having some secondary index based on account+date, which allows the
     system to jump straight to a particular date.  That leaves a
     "balance consistency" problem unless we have...
  c) A function that takes a start date and an account, and walks through
     the account from 0000/00/00 to the start date, and computes the total
     up to that date.
     In an SQL database, one might do this via something like
     select sum(value) from data_table
        where account='This Account' and
              eff_date < '1999/11/15';
     and use the result as the opening balance.  If using a Berkeley DB
     data structure, this would be more directly expressed as some C
     code, and be a bit less descriptive.  Not obvious that it would
     necessarily be any slower, so long as the value gets cached somewhere,
     and the calculation algorithm is reasonably good.
  d) The other thing that would logically go along with this would be to have
     some sort of "transaction lock" scheme which would forbid two windows
     from modifying the same transaction at the same time.  The "Mark I"
     implementation would involve either:
     i) Putting a .lock file in the directory described in a), or
     ii) Having a lock table and a lock manager process...

  e) The next step, once all of this is done, would be for the only
     transactions that are loaded in are those that are actually being
     displayed.

     This would mandate setting up a "partial balance" table, where
     there would be a vector that would contain an element representing
     the balance after each transaction.   That actually might be a good
     thing to implement as part of c)...
--
Rules of the Evil Overlord #15. "I will make it clear that I do know
the meaning of the word "mercy"; I simply choose not show them any." 
<http://www.eviloverlord.com/lists/overlord.html>
[EMAIL PROTECTED] - <http://www.ntlug.org/~cbbrowne/lsf.html>

--
Gnucash Developer's List 
To unsubscribe send empty email to: [EMAIL PROTECTED]

Reply via email to