Re: Writing a new driver - Mailing list pgsql-odbc

From Shachar Shemesh
Subject Re: Writing a new driver
Date
Msg-id 41D7A936.2080201@shemesh.biz
Whole thread Raw
In response to Writing a new driver  (Atanas Atanasov <nasko@gyuvetch.bg>)
List pgsql-odbc
Atanas Atanasov wrote:

> Deat Shachar Shemesh,
>
> I have got all the stuff from Microsoft i.e. Visual Studio 6.0, 2003
> .NET, 2005 .NET, MSDN, Platform SDK for XP SP2 and 2003 Server.
> Actually I am not really sure whether I need an ODBC driver exactly or
> not. My aim is this. I have a not very popular DBMS which doesn't
> support any king of external interface except its own integrated language.
>
Is it an SQL one? Does it support things such as updateable cursors?

> Actually there is a DLL which can be used but the programming with it
> id not very easy, i.e. it resembles more an API (like ODBC API) but
> not the modern toold like ADO etc.
>
ADO contains no direct database interactions. It's just a wrapper around
ODBC or OLE DB. Either technologies will give you ADO support.

> So it is possible to program with it but it takes quite, some time. My
> aim is to create a sort of bridge between this dll ot the dbms
> directly, so that it will allow me to use it with ADO from ASP and
> Visual Basic.
>
That's exactly what the existing drivers for Postgres do. In ODBC the
backend API is directly implemented, while in PgOleDb libpq is used, but
either way, they are pretty much just adapting layers between what
PostgreSQL can do and what the driver is expected to know how to do.

> I am not sure whether I need exactly an ODBC driver. It might be
> something else but the end result should be an simplified interfacing
> model through ADO (or could be DAO as well, but preferably ASP).
>
Either ODBC or OLE DB will give you that (ADO, DAO and ASP). There are
some considerations as to what's preferable, but those no one can help
you without knowing a little more on what you're trying to do.

> So regarding the driver itself, I read that it should, kind of,
> redefine a set of standard functions in a DLL and that all tha info I
> have. All I need is a very simple driver which read from text files
> from example. I saw the many open source drivers available, but at
> this stage they are of no use, due to a number of reasons. First they
> are definitely involved with the internal structure of the sql server
> (mysql, psql, msql etc), and secondlt the source is for multiplatform.
> So all I am seeing is a lot of source without any logical connection
> or at least sort of explanation from where to start from. I need loke
> a step by step tutorial in creatin ga driver.
>
There should be examples in the MS site. In any case, what's the DBMS?
Is it open source?

> If you think that the problem is solvable otherwise, please suggest
> something.
>
No, a driver is what you need. I think, though, you are expecting it to
be easy. Don't. Figuring out what the APIs mean is a non-trivial task. I
tend to think that it's less trivial for OLE DB than for ODBC, but maybe
it's just because I am doing the former and haven't tried the later
beyond shallow maintaining. There are other differences, performance
being a major one. OLE DB is expected to return all the results at once,
yielding slightly better performance. Still, if you are going to go for
developing this on your own, pick whatever works best for you.

I don't think that the existing drivers are too multi-platform. They are
built around the particular databases' semantics, because that's what a
driver is. Still, they should prove a fairly good starting point,
ASSUMING THE LICENSE IS RIGHT. I can't stress this point enough. If you
can't afford for the resulting driver to be open source, don't use any
of the open source drivers. At least PostgreSQL's and MySQL's are under
a copyleft license, which means you are not allowed to use them without
releasing the resulting code as open source yourself. Don't be a
copyright violator. If you can't open source the resulting code, don't
use anything that is GPL or LGPL.

One last word of advice. If you need this for a commercial reason,
consider hiring someone who's already been there. Driver development
takes a lot of patience and reading through docs trying to understand
the semantics of the API. Much more so than writing code that uses that
very same API. You are seeing this already - the docs we pointed you to
are the docs we work by. There is nothing more. It will usually be much
simpler, probably cheaper, definitely faster, to use a commercial body
to develop it for you. Pick someone who has already done this sort of
development in the past. Like I said earlier, Lingnu is good candidate
for OLE DB drivers, but we won't do an ODBC one. Haven't before, and
there are others who'll probably do it better.

          Shachar

--
Shachar Shemesh
Lingnu Open Source Consulting ltd.
http://www.lingnu.com/


pgsql-odbc by date:

Previous
From: "Shum@mingyik.com"
Date:
Subject: Which version of ODBC Driver can work with PostgreSQL (8.0...) for Windwos ?
Next
From: Jaime Casanova
Date:
Subject: Re: Which version of ODBC Driver can work with PostgreSQL (8.0...) for Windwos ?