Removing support for < 7.4 servers - Mailing list pgsql-odbc

From Heikki Linnakangas
Subject Removing support for < 7.4 servers
Date
Msg-id 52134AB6.2050301@vmware.com
Whole thread Raw
Responses Re: Removing support for < 7.4 servers  (Steve Crawford <scrawford@pinpointresearch.com>)
Re: Removing support for < 7.4 servers  (Michael Paquier <michael.paquier@gmail.com>)
Re: Removing support for < 7.4 servers  ("Inoue, Hiroshi" <inoue@tpf.co.jp>)
Re: Removing support for < 7.4 servers  (Michael Paquier <michael.paquier@gmail.com>)
List pgsql-odbc
Hi,

I've been browsing the code to figure out how we could use
protocol-level cursors, instead of DECLARE/FETCH, to make the default
behavior of the driver nicer. However, all the different ways a query
can be prepared and executed is making my head explode. The driver
supports many completely obsoleted ways to do things, for the sake of
supporting 7.3 era servers which didn't support the extended query
protocol. There is even some code to support 6.2-era servers.

I'd like to rip out all the support for pre-7.4 servers, including
protocol version 2, to simplify the code. Any objections? If someone is
running a really old server version, I think it's fair to insist that
they also use a somewhat old version of the driver. (the only thing
anyone should be doing with 7.3 servers today is pg_dump, to be honest)

I pushed a patch to github to do that, to see what the effect is to the
code:
https://github.com/hlinnaka/psqlodbc/commit/d5cbe6e62a72d87200217b73360a2c515a2fec79

$ git diff --stat master..require74
  columninfo.c   |   51 ++-
  columninfo.h   |    2 +-
  connection.c   |  766 +++++++++----------------------------
  connection.h   |   60 +--
  convert.c      |  235 ++----------
  descriptor.c   |   10 -
  dlg_specific.c |   82 ++--
  dlg_specific.h |    8 +-
  dlg_wingui.c   |   24 --
  execute.c      |   54 +--
  info.c         | 1148
+++++++++++++++++---------------------------------------
  info30.c       |   47 +--
  misc.c         |    4 +-
  multibyte.c    |   33 +-
  odbcapi.c      |    6 +-
  odbcapiw.c     |    3 +-
  options.c      |    5 -
  parse.c        |   90 ++---
  pgtypes.c      |   43 +--
  psqlodbc.h     |    9 -
  psqlodbc.rc    |   22 --
  qresult.c      |  113 ++----
  resource.h     |    5 -
  results.c      |  167 ++++-----
  socket.c       |   34 +-
  socket.h       |    3 -
  statement.c    |   39 +-
  statement.h    |    6 -
  28 files changed, 784 insertions(+), 2285 deletions(-)

That's just the beginning though. I think we can get rid of much of the
"premature execution" stuff, replacing it with the v3 protocol-level
Describe functionality. The driver already uses that in many cases, but
not all. That requires some more investigation and thorough testing of
all the corner cases, though.

Timingwise, I'm thinking we would do this in the first 9.4 version of
the driver. The server guys will put out the 9.3 release in the next
couple of weeks, so we should put out a stable 9.3 version of the ODBC
driver very soon. But after that, we can do more drastic changes again.

- Heikki


pgsql-odbc by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: ODBC build broken on Windows with commit
Next
From: Steve Crawford
Date:
Subject: Re: Removing support for < 7.4 servers