Re: [Oledb-dev] A major rewrite of the Postgres OLE DB Provider. - Mailing list pgsql-general

From Konstantin Izmailov
Subject Re: [Oledb-dev] A major rewrite of the Postgres OLE DB Provider.
Date
Msg-id 1225592b0612151313j678e8bd6h36d9703d4c1b4428@mail.gmail.com
Whole thread Raw
In response to A major rewrite of the Postgres OLE DB Provider.  (Jeremy Lea <reg@FreeBSD.org>)
List pgsql-general
Great! I will take a look and let you know. I had rewritten the Provider about a year ago as well. However, I did not have time to clean-up most of the new bugs and decided to keep the code for myself. There is certain interest in the US to the more capable Provider.

On 12/15/06, Jeremy Lea <reg@freebsd.org> 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@pgfoundry.org
http://pgfoundry.org/mailman/listinfo/oledb-devel

pgsql-general by date:

Previous
From: Shachar Shemesh
Date:
Subject: Re: [Oledb-dev] A major rewrite of the Postgres OLE DB Provider.
Next
From: Benjamin Smith
Date:
Subject: Performance of outer joins?