gnucash-2.3 + sql backend
plongstaff at rogers.com
Sat Jun 6 19:37:11 EDT 2009
On June 6, 2009 05:16:33 pm Klaus Dahlke wrote:
> On Sat, 6 Jun 2009 13:09:58 -0400
> Phil Longstaff <plongstaff at rogers.com> wrote:
> > On June 6, 2009 12:38:14 pm Klaus Dahlke wrote:
> > > Hi Phil,
> > > I digged around a bit and found the following statement in
> > > gnucash.trace:
> > >
> > > * 18:31:18 INFO <qof.session> [qof_session_load_backend] selected
> > > GnuCash Libdbi (POSTGRESQL) Backend * 18:31:18 CRIT <gnc.backend.dbi>
> > > [pgsql_error_fn()] DBI error: could not connect to server: Connection
> > > refused Is the server running on host "localhost" and accepting TCP/IP
> > > connections on port 0?
> > >
> > > the server is up and running, started even with the -i option:
> > > postgres 22560 1 0 18:30 ? 00:00:00
> > > /usr/lib/postgresql-8.3/bin/postgres --silent-mode=true -i
> > >
> > > The server listens to the default port :5432 and works normal.
> > >
> > > Any ideas?
> > Yes, there's still a problem, and I just fixed it (r18108).
> > Phil
> Hi Phil,
> in meanwhile, I figured out to correct that myself: I changed the line to
> gnc-backend-dbi.c: result = dbi_conn_set_option_numeric( be->conn,
> "port", 5432 );
> which works for me in the moment (having an hard coded port number is
> probably not the best way).
> With that, saving into an existing empty postgres database works fine. But
> I have a delicate problem when it comes to re-open the database.
> a) I used 'save as postres' to save foo.xac into the postgres. Works fine.
> b) quitting gnucash
> c) starting gnucash without any other command
> d) it then loads postgres://localhost/dbname:user:password quit fast
> e) unfortunately, some accounts show wrong balances
> If an account shows a wrong balances, then gnucash has calculated a balance
> less then zero for the time of when the first entry occurs. Example:
> received an interest payment for a savings account. The first line the
> account shows then: date: 1.1.2002, income=3.67; balance=-44.11
> Thus, gnucash has calculated a balance of 47.78 being present on
> Surprisingly, this is not the case when using sqlite3. The file got saved
> and after quitting gnucash and reading the sqlite3 database, the values are
> the same as before and as in the .xac file.
> When further investigating the case, I saw that the differences might be
> linked to having not reconciled entries. On the command line I set all
> entires to be reconsiled: gnucash=# update splits set reconcile_date=
> '20090606120000' where reconcile_date='19700101000000'; UPDATE 9539
> gnucash=# update splits set reconcile_state= 'y' where reconcile_state='n';
> UPDATE 9539
> After reading the so modified gnucash database, the values are correct.
> Again, it surprises me that when reading a postgres database the sorting
> via reconcile_date has an impact and for sqlite3 not.
> BTW: there is an entry in gnucash.trace regarding the timestamp:
> * 23:11:13 WARN <qof.engine> [gnc_iso8601_to_timespec_gmt()] mktime
> failed to handle daylight saving: tm_hour=0 tm_year=70 tm_min=0 tm_sec=0
> tm_isdst=-1 for string=1970-01-01 00:00:00
I use the statement "SELECT account_guid, reconcile_state, sum(quantity_num)
as quantity_num, quantity_denom FROM splits GROUP BY account_guid,
reconcile_state, quantity_denom" to calculate and load the account balances.
SQLite3 returns the list sorted by account_guid and reconcile_state, but
postgresql doesn't. Turns out the list needs to be sorted, so I just added
"ORDER BY account_guid, reconcile_state". Committed as r18109.
More information about the gnucash-devel