A major rewrite of the Postgres OLE DB Provider.

From: Jeremy Lea <reg(at)FreeBSD(dot)org>
To: oledb-devel(at)pgfoundry(dot)org
Cc: pgsql-general(at)postgresql(dot)org
Subject: A major rewrite of the Postgres OLE DB Provider.
Date: 2006-12-15 19:34:14
Message-ID: 20061215193414.GA21110@hub.freebsd.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi all,

Because of various things, I have needed to move some stuff that I've
been working on onto a Postgres DB. It makes very heavy use of ADO from
Excel, and so I was running into a number of little annoyances with the
existing OLE DB provider... Especially I could not get parameterised
queries to run, nor could I run multiple commands in one block (which I
need for speed to load big chunks of data).

So, I started hacking on the Provider, and ended up almost completely
rewriting it. I have placed a copy at:

http://people.freebsd.org/~reg/pgoledb-20061215.zip

Things that it has gained:

- Support for the IColumnsRowset interface, which means that ADO's
client cursor engine doesn't need to parse the SQL to make up UPDATE
and INSERT queries.
- Support for IDBInfo and IDBSchemaRowset interfaces, which also help
ADO CCE.
- Runs multiple queries (using PQexec) if you pass a command with no
parameters and IID_NULL for the return record set.
- Proper type handling.
- Passing all of the connection string options (hostaddr, ssl, etc.)
- Lots of bug fixes.
- Much cleaner code (IMHO), no more STL or exceptions.

Things it has lost:

- IMultipleRowsets. libpq can't return multiple results. What was
there was a complete hack.
- Parsing of parameters on stored procedures. This was a hack, which
was being done at the wrong place in the code.
- Support for some types (_text, utinyint, varcharci)
- TIMESTAMP WITH TIMEZONE is reported in GMT not local, since there is
no OLE DB type for this (so you can't go backwards).
- Probably some other things...

I've been testing the code some, and it's working with my application,
but there are probably still many bugs. I would love it if people could
also test it and report errors! I'm trying to get the OLE DB
conformance tests up and running, and hopefully I will find more bugs
that way.

I still need to:
- redo some of the Schema support (realised my design was bad...)
- tidy up some of the tracing.
- prepared queries.
- there are a number of properties where I'm not sure of the right
value.
- add more support for pg_types (especially the array/vector types).
- check threading and locking.
- check error reporting.
- probably a few other things...

I hope this is useful to someone. I would welcome any patches to add
other features. I'm managing this in a local CVS repository at the
moment... Not quite sure what I'm going to do about this and the
PgFoundry project yet.

Regards,
-Jeremy

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2006-12-15 20:06:35 Re: TIMESTAMP WITHOUT TIME ZONE
Previous Message Clodoaldo 2006-12-15 19:21:51 Regular expression and Group By