sqlite file format, anyone?

Matthew Vanecek mevanecek at yahoo.com
Sun Jun 22 00:35:44 CDT 2003


On Sat, 2003-06-21 at 22:54, Linas Vepstas wrote:
> On Sat, Jun 21, 2003 at 10:07:18PM -0400, Derek Atkins was heard to remark:
> > Matthew Vanecek <mevanecek at yahoo.com> writes:
> > 
> > > KVP tables.  
> 
> I'm going to play dumb for a moment.  What's wrong with storing the 
> triplet (keypath,value,guid-of-parent) where 'keypath' is the 
> slash-delimited list of keys? 
> 
> > > go backwards (i.e., refer back to *whatever* table from the KVP table
> > > based on the GUID).
> 
> Wouldn't this be solved by (keypath,value,guid-of-parent,type-of-parent)?
> 

Not really, unless you used table-name for type-of-parent.  In
Postgresql, you might could use OIDs, but that's highly non-portable.

> > > I'm hoping my version of the PG backend is pluggable enough that you can
> > > just plug-n-play the db access code.  The bulk of the work is in the
> > > Query decoding and Engine loading.  
> 
> I'm going to strongly disagree with this. Unless I misunderstand the
> statement. I did the 'obvious generalizations' as m4 macros (maybe not
> a good technology choice, but it was worth a shot).  But there's a 
> huge amount of code that's not m4 macros.  Its very specific, and its
> really needded to make things work correctly.
> 
> I initially thought that 95% of the code would be generic m4 macros,
> just 'query decoding and engine loading' but that turned out be not 
> the case; maybe only 25% is m4 macros.
> 
> I vastly underestimated how easy the sql backend would be; the complexity
> there was necessity, not frivolity.  I'm concerned that you'll trip
> over this too ...  See? you haven't even started, and already I'm saying
> 'I told you so' ... :-)
> 

Too late, already started.  Trying to fit it in around work and life is
a bitch, but I manage to get a bit done here and there.  Right now I'm
modelling the work I've already done so I can see where I'm at and what
I need to do.

Anyhow, a lot of the queries can be standardized on the SELECT/FROM
side--it's mainly the WHERE and ORDER BYs that are truly dynamic.

Certainly you are right--this is by no means a trivial task.  We're
dealing with people's financial data here.  That's another reason I'm
not rushing this (aside from life...), and, I fear, causing a bit of
anxiety for Derek. ;)  This type of application, however, is what I do
for a living.  Pretty graphics, flying ships, explosive charts--those
are all foreign items for me.  Database access, now, that's my
bread-n-butter. yum!

I tried the m4 route, too, for initial generation.  I think it works
well for that--getting the code base started.  It's difficult to
maintain, though.

Well, it's past my bed time, so have a good night!
-- 
Matthew Vanecek
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
********************************************************************************
For 93 million miles, there is nothing between the sun and my shadow except me.
I'm always getting in the way of something...



More information about the gnucash-devel mailing list