On 12/15/06, Jeremy Lea <reg@xxxxxxxxxxx> wrote:
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
_______________________________________________
Oledb-devel mailing list
Oledb-devel@xxxxxxxxxxxxx
http://pgfoundry.org/mailman/listinfo/oledb-devel