On Fri, 2003-11-21 at 22:34, Rodrigo Moya wrote:
> cool! Please go ahead.
So here it is.
Attached is a patch for configure.in and providers/Makefile.in + a
tarball which should be decompressed in the providers directory (not
part of the patch since I don't want to create the bdb directory without
your authorization).
It is an experimental (but working) release, which supports only
sleepycat (db3) implementation. Currently gda_connection_get_schema
(with GDA_CONNECTION_SCHEMA_TABLES) is used to retrieve the data, as a
single table of pair values (key and data).
The connection string must define FILE, and optionally DATABASE (for
files which contain more than one databases).
TODO:
* support previous implementation (db1)
* transactions
* updatable data models
* a simple sql dialect (via libgdasql)?
* ...
I included a small test case for the provider (in
providers/bdb/gda-bdb-test.c). I plan to include it in the testing
directory asap.
Please tell me what you think ;-)
Thanks,
--
Laurent
Attachment:
gda-bdb-0.0.3.tar.gz
Description: application/compressed-tar
Index: configure.in
===================================================================
RCS file: /cvs/gnome/libgda/configure.in,v
retrieving revision 1.231
diff -u -r1.231 configure.in
--- configure.in 24 Nov 2003 23:14:47 -0000 1.231
+++ configure.in 28 Nov 2003 13:07:23 -0000
@@ -117,6 +117,47 @@
*) lib="lib";;
esac
+dnl Test for Berkeley DB
+try_bdb=true
+AC_ARG_WITH(bdb,
+[ --with-bdb=<directory> use bdb library in <directory>],[
+if test $withval = no
+then
+ try_bdb=false
+elif test $withval = yes
+then
+ dir="/usr"
+else
+ dir=$withval
+fi
+])
+bdbdir=""
+if test $try_bdb = true
+then
+ AC_MSG_CHECKING(for Berkeley DB files)
+ for d in $dir /usr /usr/local
+ do
+ if test -f $d/$lib/libdb.so -a -f $d/include/db.h
+ then
+ AC_MSG_RESULT(found Berkeley DB in $d)
+ bdblib="-ldb"
+ bdbdir=$d
+ break
+ fi
+ dnl FIXME: check for db1 (non-sleepycat implementation)
+ done
+ if test x$bdbdir = x
+ then
+ AC_MSG_WARN(Berkeley DB backend not used)
+ else
+ AC_DEFINE(HAVE_BDB)
+ BDB_CFLAGS="-I${bdbdir}/include"
+ BDB_LIBS="-L${bdbdir}/lib ${bdblib}"
+ fi
+fi
+
+AM_CONDITIONAL(BDB, test x$bdbdir != x)
+
dnl Test for ODBC
try_odbc=true
AC_ARG_WITH(odbc,
@@ -831,6 +872,8 @@
dnl ******************************
dnl Variables
dnl ******************************
+AC_SUBST(BDB_LIBS)
+AC_SUBST(BDB_CFLAGS)
AC_SUBST(ODBC_LIBS)
AC_SUBST(ODBC_CFLAGS)
AC_SUBST(MYSQL_LIBS)
@@ -889,6 +932,7 @@
libsql/Makefile
libgda/Makefile
providers/Makefile
+providers/bdb/Makefile
providers/freetds/Makefile
providers/firebird/Makefile
providers/ibmdb2/Makefile
@@ -922,6 +966,7 @@
echo " Installation prefix = $prefix"
echo " Providers"
echo " XML = yes"
+echo " Berkeley DB = `if test x$bdbdir != x; then echo yes; else echo no; fi`"
echo " FireBird = `if test x$firebirddir != x; then echo yes; else echo no; fi`"
echo " FreeTDS = `if test x$freetdsdir != x; then echo yes; else echo no; fi`"
echo " IBM DB2 = `if test x$ibmdb2dir != x; then echo yes; else echo no; fi`"
Index: providers/Makefile.am
===================================================================
RCS file: /cvs/gnome/libgda/providers/Makefile.am,v
retrieving revision 1.18
diff -u -r1.18 Makefile.am
--- providers/Makefile.am 4 Jul 2003 16:29:26 -0000 1.18
+++ providers/Makefile.am 28 Nov 2003 13:07:23 -0000
@@ -1,3 +1,7 @@
+if BDB
+GDA_BDB_SERVER=bdb
+endif
+
if IBMDB2
GDA_IBMDB2_SERVER=ibmdb2
endif
@@ -51,6 +55,7 @@
endif
SUBDIRS = \
+ $(GDA_BDB_SERVER) \
$(GDA_FREETDS_SERVER) \
$(GDA_IBMDB2_SERVER) \
$(GDA_FIREBIRD_SERVER) \