Обсуждение: Removing support for < 7.4 servers

Поиск
Список
Период
Сортировка

Removing support for < 7.4 servers

От
Heikki Linnakangas
Дата:
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


Re: Removing support for < 7.4 servers

От
Steve Crawford
Дата:
On 08/20/2013 03:53 AM, Heikki Linnakangas wrote:
> Hi,
>
> ...
> 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)
Speaking generally as a user...

It seems like this might be a good opportunity to establish an overall
support/EOL policy for the drivers. Anyone running 7.4 has been on their
own for years anyway and shouldn't expect driver authors to spend
valuable development resources supporting those outdated systems.

I would not personally object to a driver EOL/support policy that tracks
alongside the EOL/support schedule of PostgreSQL itself. If support for
anything pre-8.4 is impeding you, drop it.

Cheers,
Steve



Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Tue, Aug 20, 2013 at 7:53 PM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:
> 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
+1. It looks like a good plan to refresh this code tree by removing
old protocols, and just by seeing the first patch you sent, code is
simplified in many places.

> 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.
Regression tests and precise documentation would be a nice addition as
well when doing this implementation.

> 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.
Agreed.
--
Michael


Re: Removing support for < 7.4 servers

От
"Inoue, Hiroshi"
Дата:
(2013/08/20 19:53), Heikki Linnakangas wrote:
> 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.

Protocol-level cursors don't support SCROLLABLE or HOLDABLE option
unfortunately.

 > 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)

Agreed.

> 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.

"Premature execution" should be removed completely when we remove
support for < 7.4 servers.

regards,
Hiroshi Inoue



Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Tue, Aug 20, 2013 at 7:53 PM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:
> 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
Heikki, do you plan to rework on that soon or do you mind if I look at
it? I imagine that such cleanup is still welcome for the code.
Regards,
--
Michael


Re: Removing support for < 7.4 servers

От
Heikki Linnakangas
Дата:
On 03/07/2014 08:41 AM, Michael Paquier wrote:
> On Tue, Aug 20, 2013 at 7:53 PM, Heikki Linnakangas
> <hlinnakangas@vmware.com> wrote:
>> 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
> Heikki, do you plan to rework on that soon or do you mind if I look at
> it? I imagine that such cleanup is still welcome for the code.

Yes, it's still very much welcome. Feel free.

In addition to the protocol stuff, I think we can safely assume we're
building with ODBCVER 0x351, and remove all the #ifdefs around that. I
think we could also change the column names discussed here:
http://www.postgresql.org/message-id/5315E622.2010904@ntlworld.com.

Anything else we'd like to clean up? Perhaps we should create a wiki
page for this in wiki.postgresql.org.

It would be good to do such big changes as part of the next major
release, 09.04.xxxx. But we need to start doing them earlier, and
continue to do bug fixes for the 09.03.xxxx series at the same time.
Historically, we've only maintained one branch of psqlodbc, the latest
one. I don't think we want to change that, so we need to be fairly
careful to not do any big behavioral changes to existing applications.
Otherwise an application could get stuck on an older release. Even with
that constraint, there's a lot of old cruft that we could safely remove
and clean up.

I'd suggest that you do the changes on a fork in github and keep the
mailing list posted on how it's going, and we merge that into the main
psqlodbc repository when it's time for the 09.04.xxxx release.

If you create new test cases, those should work with the current
codebase as well, so we can merge those into the master branch earlier.
So please post those separately to the mailing list as you go.

- Heikki


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Fri, Mar 7, 2014 at 5:12 PM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:
> It would be good to do such big changes as part of the next major release,
> 09.04.xxxx. But we need to start doing them earlier, and continue to do bug
> fixes for the 09.03.xxxx series at the same time. Historically, we've only
> maintained one branch of psqlodbc, the latest one. I don't think we want to
> change that, so we need to be fairly careful to not do any big behavioral
> changes to existing applications. Otherwise an application could get stuck
> on an older release. Even with that constraint, there's a lot of old cruft
> that we could safely remove and clean up.
It would be nice IMO if odbc follows a branching model similar to jdbc
or Postgres itself with stable branches dedicated to each major
release. i imagine that as long as the clean up is not really done,
such a development model is complicated because it would make
development of bug fixes on back-branches more complicated though...

> I'd suggest that you do the changes on a fork in github and keep the mailing
> list posted on how it's going, and we merge that into the main psqlodbc
> repository when it's time for the 09.04.xxxx release.
Yep, no problem. Hm... I understand that this is hard to estimate, but
I suppose that a potential target for a 09.04.X release would be once
Postgres 9.4.0 is out. Thoughts?

> If you create new test cases, those should work with the current codebase as
> well, so we can merge those into the master branch earlier. So please post
> those separately to the mailing list as you go.
Sure.
--
Michael


Re: Removing support for < 7.4 servers

От
Heikki Linnakangas
Дата:
On 03/07/2014 02:50 PM, Michael Paquier wrote:
> On Fri, Mar 7, 2014 at 5:12 PM, Heikki Linnakangas
> <hlinnakangas@vmware.com> wrote:
>> It would be good to do such big changes as part of the next major release,
>> 09.04.xxxx. But we need to start doing them earlier, and continue to do bug
>> fixes for the 09.03.xxxx series at the same time. Historically, we've only
>> maintained one branch of psqlodbc, the latest one. I don't think we want to
>> change that, so we need to be fairly careful to not do any big behavioral
>> changes to existing applications. Otherwise an application could get stuck
>> on an older release. Even with that constraint, there's a lot of old cruft
>> that we could safely remove and clean up.
> It would be nice IMO if odbc follows a branching model similar to jdbc
> or Postgres itself with stable branches dedicated to each major
> release. i imagine that as long as the clean up is not really done,
> such a development model is complicated because it would make
> development of bug fixes on back-branches more complicated though...

Well, as long as there are no big behavioral changes in the driver,
there's not much point maintaining back-branches. Users might as well
just grab the latest driver.

>> I'd suggest that you do the changes on a fork in github and keep the mailing
>> list posted on how it's going, and we merge that into the main psqlodbc
>> repository when it's time for the 09.04.xxxx release.
> Yep, no problem. Hm... I understand that this is hard to estimate, but
> I suppose that a potential target for a 09.04.X release would be once
> Postgres 9.4.0 is out. Thoughts?

Yeah, around that I time I guess. I believe the packagers would prefer
for the driver release some weeks before the server release, so that
they have time to package it and release together with the server.

psqlodbc has always been pretty relaxed about the schedule, and has
often lagged behind the server major version by months. There hasn't
really been much difference between a major vs. minor version bump in
psqlodbc.

- Heikki


Re: Removing support for < 7.4 servers

От
Daniel Homerick
Дата:
It's perhaps worth noting that in the recent past (and possibly in the current release -- I haven't checked) the ANSI
driveron windows was built as ODBC version 3 instead of 3.5. I raised this issue when I discovered it (see the post
titled"UUID returned as SQL_VARCHAR instead of SQL_GUID, contains no data" from 10/10/2012) but I never got a response
andto my knowledge it's not been changed. 

I don't know if there was ultimately some reason why that build needed to use the older ODBC revision, or if it's just
somethingthat was overlooked. 

- Dan


-----Original Message-----
From: pgsql-odbc-owner@postgresql.org [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Heikki Linnakangas
Sent: Friday, March 07, 2014 12:12 AM
To: Michael Paquier
Cc: pgsql-odbc@postgresql.org
Subject: Re: [ODBC] Removing support for < 7.4 servers

On 03/07/2014 08:41 AM, Michael Paquier wrote:
> On Tue, Aug 20, 2013 at 7:53 PM, Heikki Linnakangas
> <hlinnakangas@vmware.com> wrote:
>> 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/d5cbe6e62a72d87200217b733
>> 60a2c515a2fec79
> Heikki, do you plan to rework on that soon or do you mind if I look at
> it? I imagine that such cleanup is still welcome for the code.

Yes, it's still very much welcome. Feel free.

In addition to the protocol stuff, I think we can safely assume we're building with ODBCVER 0x351, and remove all the
#ifdefsaround that. I think we could also change the column names discussed here:  
http://www.postgresql.org/message-id/5315E622.2010904@ntlworld.com.

Anything else we'd like to clean up? Perhaps we should create a wiki page for this in wiki.postgresql.org.

It would be good to do such big changes as part of the next major release, 09.04.xxxx. But we need to start doing them
earlier,and continue to do bug fixes for the 09.03.xxxx series at the same time.  
Historically, we've only maintained one branch of psqlodbc, the latest one. I don't think we want to change that, so we
needto be fairly careful to not do any big behavioral changes to existing applications.  
Otherwise an application could get stuck on an older release. Even with that constraint, there's a lot of old cruft
thatwe could safely remove and clean up. 

I'd suggest that you do the changes on a fork in github and keep the mailing list posted on how it's going, and we
mergethat into the main psqlodbc repository when it's time for the 09.04.xxxx release. 

If you create new test cases, those should work with the current codebase as well, so we can merge those into the
masterbranch earlier.  
So please post those separately to the mailing list as you go.

- Heikki


--
Sent via pgsql-odbc mailing list (pgsql-odbc@postgresql.org) To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-odbc


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Tue, Mar 11, 2014 at 1:36 AM, Daniel Homerick
<daniel.homerick@2d3sensing.com> wrote:
> It's perhaps worth noting that in the recent past (and possibly in the current release -- I haven't checked) the ANSI
driveron windows was built as ODBC version 3 instead of 3.5. I raised this issue when I discovered it (see the post
titled"UUID returned as SQL_VARCHAR instead of SQL_GUID, contains no data" from 10/10/2012) but I never got a response
andto my knowledge it's not been changed. 
>
> I don't know if there was ultimately some reason why that build needed to use the older ODBC revision, or if it's
justsomething that was overlooked. 
Interestingly, I noticed this piece of code in connection.c, which
might be a consequence of that:
    rv->driver_version = ODBCVER;
#ifdef  WIN32
    if (VER_PLATFORM_WIN32_WINDOWS == platformId && rv->driver_version > 0x0300)
        rv->driver_version = 0x0300;
#endif /* WIN32 */
The driver informs that the version it uses is 0x0300. It has been
introduced by commit 08b2a1c.
Regards,
--
Michael


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Fri, Mar 7, 2014 at 10:25 PM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:
> Yeah, around that I time I guess. I believe the packagers would prefer for
> the driver release some weeks before the server release, so that they have
> time to package it and release together with the server.

OK, I have created a fork on github here
(https://github.com/michaelpq/psqlodbc) with all the cleanup related
code in a dedicated branch called cleanup-9.4. I might rebase this
branch based on latest HEAD of odbc from time to time to avoid any
conflicts when applying the cleanup patches. For the time being I have
done the following:
- Removal of protocol older than 7.4 (including ksqo, schema_support).
Thanks Heikki for the patch. It would have been actually hard to
remove the ksqo things, I don't know much the history of Postgres <
7.4.
- Removal of the ODBCVER blocks.
- Update of documentation, removing referencies to old server versions.
- Changed PRECISION field to use COLUMN_SIZE when getting the
information of a type (patch attached as it is simple). I have let
COLUMN_PRECISION as it is as COLUMNS_COLUMN_SIZE is kind of strange,
only changed the type name reported.

This makes me think that we should add some regression tests for
SQLGetTypeInfo, SQLColumns, SQLSpecialColumns & friends. Thoughts?

I noticed as well the following things in the code that may need some
more thinking:
- Reorganization of the code organized by versions (I am thinking that
grouping those APIs makes sense if we drop the ODBCVER ifdef blocks
and protocols older than 7.4). Following files are impacted:
odbcapi*.c info*.c, pgapi*.c
- Some code has been added for support of SQL_INTERVAL in commit
6e45dcb, but it is disabled with flag PG_INTERVAL_AS_SQL_INTERVAL.
Should we do something about that? And what are the applications that
faced problems with that?
- I am not sure that odbc.sql and odbc-drop.sql are of any use. Should
we remove them?
- Is inouealc.c in the code tree for conveniency?
Regards,
--
Michael

Вложения

Re: Removing support for < 7.4 servers

От
Heikki Linnakangas
Дата:
On 03/12/2014 10:10 AM, Michael Paquier wrote:
> On Fri, Mar 7, 2014 at 10:25 PM, Heikki Linnakangas
> <hlinnakangas@vmware.com> wrote:
>> Yeah, around that I time I guess. I believe the packagers would prefer for
>> the driver release some weeks before the server release, so that they have
>> time to package it and release together with the server.
>
> OK, I have created a fork on github here
> (https://github.com/michaelpq/psqlodbc) with all the cleanup related
> code in a dedicated branch called cleanup-9.4.

Ahh, that's the way I like my patches:

  49 files changed, 273 insertions(+), 2571 deletions(-)

:-)

> I might rebase this
> branch based on latest HEAD of odbc from time to time to avoid any
> conflicts when applying the cleanup patches.

Yeah, please do. I find it easier to work with branches that are rebased
over current master, rather than merged.

> For the time being I have done the following:
> - Removal of protocol older than 7.4 (including ksqo, schema_support).
> Thanks Heikki for the patch. It would have been actually hard to
> remove the ksqo things, I don't know much the history of Postgres <
> 7.4.

Now that we don't need the Protocol setting for the actual protocol
version, I think we should invent a new setting for the "rollback"
behavior. It's currently stored as a prefix of the protocol, which IMHO
never made much sense, but now even less. Accept it in the Protocol
setting for backwards-compatibility, but document the new field as the
primary setting and use that in the examples and GUI.

> - Changed PRECISION field to use COLUMN_SIZE when getting the
> information of a type (patch attached as it is simple). I have let
> COLUMN_PRECISION as it is as COLUMNS_COLUMN_SIZE is kind of strange,
> only changed the type name reported.

I didn't quite understand this, but in general, I think we should
consistently use the new attribute names.

Also note that the driver manager actually does some mapping of
deprecated ODBC function calls to the new functions, so that the driver
only needs to provide the ODBC 3.X functions. For example, if the driver
doesn't provide the deprecated SQLGetStmtAttr function, and the
application calls it, the driver manager will call SQLGetStmtOption
instead (or just handle the call internally without calling the driver,
depending on the attribute). So once we drop support for compiling the
driver in ODBC 2.X mode, we could completely drop many of the interface
functions. before we actually do that, though, it would be good to have
regression test coverage of the deprecated functions with different
attributes, to make sure they get mapped correctly and still work if
used in an application.

> This makes me think that we should add some regression tests for
> SQLGetTypeInfo, SQLColumns, SQLSpecialColumns & friends. Thoughts?

Yeah, absolutely. Would be good to run a code coverage report (e.g lcov)
to see which SQL interface functions are not currently covered by the
regression tests.

> I noticed as well the following things in the code that may need some
> more thinking:
> - Reorganization of the code organized by versions (I am thinking that
> grouping those APIs makes sense if we drop the ODBCVER ifdef blocks
> and protocols older than 7.4). Following files are impacted:
> odbcapi*.c info*.c, pgapi*.c

Agreed.

> - Some code has been added for support of SQL_INTERVAL in commit
> 6e45dcb, but it is disabled with flag PG_INTERVAL_AS_SQL_INTERVAL.
> Should we do something about that? And what are the applications that
> faced problems with that?

No idea.

> - I am not sure that odbc.sql and odbc-drop.sql are of any use. Should
> we remove them?

Probably. The script still works, but I'm not sure how useful it is.

> - Is inouealc.c in the code tree for conveniency?

I believe the purpose is to find memory leaks. I'm not sure how useful
that is nowadays; it's probably easier to just run the regression tests
under valgrind.

- Heikki


Re: Removing support for < 7.4 servers

От
Heikki Linnakangas
Дата:
On 03/12/2014 10:10 AM, Michael Paquier wrote:
> On Fri, Mar 7, 2014 at 10:25 PM, Heikki Linnakangas
> <hlinnakangas@vmware.com> wrote:
>> Yeah, around that I time I guess. I believe the packagers would prefer for
>> the driver release some weeks before the server release, so that they have
>> time to package it and release together with the server.
>
> OK, I have created a fork on github here
> (https://github.com/michaelpq/psqlodbc) with all the cleanup related
> code in a dedicated branch called cleanup-9.4. I might rebase this
> branch based on latest HEAD of odbc from time to time to avoid any
> conflicts when applying the cleanup patches. For the time being I have
> done the following:

BTW, please keep brief a list of the changes you've made, especially for
any backwards-incompatible changes. That'll come handy when it's time to
write the release notes.

- Heikki


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Wed, Mar 12, 2014 at 5:51 PM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:
> On 03/12/2014 10:10 AM, Michael Paquier wrote:
> BTW, please keep brief a list of the changes you've made, especially for any
> backwards-incompatible changes. That'll come handy when it's time to write
> the release notes.
Sure, I'll add a page on the postgres wiki for that.
--
Michael


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Wed, Mar 12, 2014 at 5:50 PM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:
> On 03/12/2014 10:10 AM, Michael Paquier wrote:
>> For the time being I have done the following:
>> - Removal of protocol older than 7.4 (including ksqo, schema_support).
>> Thanks Heikki for the patch. It would have been actually hard to
>> remove the ksqo things, I don't know much the history of Postgres <
>> 7.4.
>
>
> Now that we don't need the Protocol setting for the actual protocol version,
> I think we should invent a new setting for the "rollback" behavior. It's
> currently stored as a prefix of the protocol, which IMHO never made much
> sense, but now even less. Accept it in the Protocol setting for
> backwards-compatibility, but document the new field as the primary setting
> and use that in the examples and GUI.
I see, that's the (0|1|2) part of the Protocol string. What about
RollbackOnError as name for the new parameter?

>> - Changed PRECISION field to use COLUMN_SIZE when getting the
>> information of a type (patch attached as it is simple). I have let
>> COLUMN_PRECISION as it is as COLUMNS_COLUMN_SIZE is kind of strange,
>> only changed the type name reported.
>
>
> I didn't quite understand this, but in general, I think we should
> consistently use the new attribute names.
The order of the fields for SQLTables, SQLColumns, etc. is decided by
some enums in catfunc.h. PRECISION/COLUMN_SIZE is referenced there as
COLUMNS_PRECISION. What I have done in my patch was changing the
column name returned to the caller of PGAPI_GetTypeInfo, but not the
internal reference called COLUMNS_PRECISION.

> Also note that the driver manager actually does some mapping of deprecated
> ODBC function calls to the new functions, so that the driver only needs to
> provide the ODBC 3.X functions. For example, if the driver doesn't provide
> the deprecated SQLGetStmtAttr function, and the application calls it, the
> driver manager will call SQLGetStmtOption instead (or just handle the call
> internally without calling the driver, depending on the attribute). So once
> we drop support for compiling the driver in ODBC 2.X mode, we could
> completely drop many of the interface functions. before we actually do that,
> though, it would be good to have regression test coverage of the deprecated
> functions with different attributes, to make sure they get mapped correctly
> and still work if used in an application.
I found the following list of deprecated functions:
http://msdn.microsoft.com/en-us/library/ms716309%28v=vs.85%29.aspx
By having a quick look at the code, this results in removing
odbcapi25w.c. Am I missing some of them?

>> This makes me think that we should add some regression tests for
>> SQLGetTypeInfo, SQLColumns, SQLSpecialColumns & friends. Thoughts?
>
>
> Yeah, absolutely. Would be good to run a code coverage report (e.g lcov) to
> see which SQL interface functions are not currently covered by the
> regression tests.
I imagine that it makes sense to have those tests in current HEAD as well...

So, following this email, the next real step is providing additional
regression tests just to be sure that we are breaking nothing when
dropping support for the older protocols...
--
Michael


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Wed, Mar 12, 2014 at 8:17 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> On Wed, Mar 12, 2014 at 5:51 PM, Heikki Linnakangas
> <hlinnakangas@vmware.com> wrote:
>> On 03/12/2014 10:10 AM, Michael Paquier wrote:
>> BTW, please keep brief a list of the changes you've made, especially for any
>> backwards-incompatible changes. That'll come handy when it's time to write
>> the release notes.
> Sure, I'll add a page on the postgres wiki for that.
And here is the wiki page:
https://wiki.postgresql.org/wiki/ODBC_Updates_with94
Feel free to ping me if you think that modifications are required, or
to modify the page directly...
Regards,
--
Michael


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Thu, Mar 13, 2014 at 11:36 AM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> And here is the wiki page:
> https://wiki.postgresql.org/wiki/ODBC_Updates_with94
> Feel free to ping me if you think that modifications are required, or
> to modify the page directly...
Just to keep everybody updated, I have done some progress for that:
- Cleanup of the #ifdef ODBCVER blocks
- Removal of all references to ~7.4 servers in documentation
- Removal of code paths for ~7.4 servers (ksqo, etc.)
- Renaming of column PRECISION to COLUMN_SIZE in pgtypes.c
- Reorganization and grouping of info*.c, odbcapi*.c, pgapi*.c
All those things are organized in different commits in the fork of
odbc I am keeping on github to facilitate future merge, and pass all
the regression tests including the latest ones committed.

The following things are still unclear to me:
- What to do with PG_INTERVAL_AS_SQL_INTERNAL? It is said that
applications using that got broken.
- odbc.sql, odbc-drop.sql and inouealc.c do not seem mandatory in the code tree.

About the regression tests, all the things I got in mind are done,
committed thanks to Heikki. Only remains the support of regression
tests on Windows.
Regards,
--
Michael


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Tue, Apr 1, 2014 at 8:00 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> Just to keep everybody updated, I have done some progress for that:
> - Cleanup of the #ifdef ODBCVER blocks
> - Removal of all references to ~7.4 servers in documentation
> - Removal of code paths for ~7.4 servers (ksqo, etc.)
> - Renaming of column PRECISION to COLUMN_SIZE in pgtypes.c
> - Reorganization and grouping of info*.c, odbcapi*.c, pgapi*.c
> All those things are organized in different commits in the fork of
> odbc I am keeping on github to facilitate future merge, and pass all
> the regression tests including the latest ones committed.
This work has been rebased on latest master commit (9e71e4d):
https://github.com/michaelpq/psqlodbc/tree/cleanup-94
--
Michael


Re: Removing support for < 7.4 servers

От
Heikki Linnakangas
Дата:
On 06/09/2014 03:59 AM, Michael Paquier wrote:
> On Tue, Apr 1, 2014 at 8:00 PM, Michael Paquier
> <michael.paquier@gmail.com> wrote:
>> Just to keep everybody updated, I have done some progress for that:
>> - Cleanup of the #ifdef ODBCVER blocks
>> - Removal of all references to ~7.4 servers in documentation
>> - Removal of code paths for ~7.4 servers (ksqo, etc.)
>> - Renaming of column PRECISION to COLUMN_SIZE in pgtypes.c
>> - Reorganization and grouping of info*.c, odbcapi*.c, pgapi*.c
>> All those things are organized in different commits in the fork of
>> odbc I am keeping on github to facilitate future merge, and pass all
>> the regression tests including the latest ones committed.
> This work has been rebased on latest master commit (9e71e4d):
> https://github.com/michaelpq/psqlodbc/tree/cleanup-94

Great, thanks for working on this!

- Heikki


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:



On Mon, Jun 9, 2014 at 9:59 AM, Michael Paquier <michael.paquier@gmail.com> wrote:
This work has been rebased on latest master commit (9e71e4d):
https://github.com/michaelpq/psqlodbc/tree/cleanup-94
Ping. Code rebased on 58ca764.
--
Michael

Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Mon, Jun 23, 2014 at 2:41 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> On Mon, Jun 9, 2014 at 9:59 AM, Michael Paquier <michael.paquier@gmail.com>
> wrote:
>> This work has been rebased on latest master commit (9e71e4d):
>> https://github.com/michaelpq/psqlodbc/tree/cleanup-94
> Ping. Code rebased on 58ca764.
Ping. Code rebased on 8d0e832.
--
Michael


Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:


On Sun, Aug 10, 2014 at 10:18 PM, Michael Paquier <michael.paquier@gmail.com> wrote:
On Mon, Jun 23, 2014 at 2:41 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> On Mon, Jun 9, 2014 at 9:59 AM, Michael Paquier <michael.paquier@gmail.com>
> wrote:
>> This work has been rebased on latest master commit (9e71e4d):
>> https://github.com/michaelpq/psqlodbc/tree/cleanup-94
Ping. Code rebase on c685835.
--
Michael

Re: Removing support for < 7.4 servers

От
Heikki Linnakangas
Дата:
On 10/07/2014 10:29 AM, Michael Paquier wrote:
> On Sun, Aug 10, 2014 at 10:18 PM, Michael Paquier <michael.paquier@gmail.com
>> wrote:
>
>> On Mon, Jun 23, 2014 at 2:41 PM, Michael Paquier
>> <michael.paquier@gmail.com> wrote:
>>> On Mon, Jun 9, 2014 at 9:59 AM, Michael Paquier <
>> michael.paquier@gmail.com>
>>> wrote:
>>>> This work has been rebased on latest master commit (9e71e4d):
>>>> https://github.com/michaelpq/psqlodbc/tree/cleanup-94
>>
> Ping. Code rebase on c685835.

Ok, I think it's time to go ahead with this. Committed the first patch
in that series, removing support for old protocol versions. Will review
the rest now.

I don't have the GUI tools to modify the configuration dialogs, so I
just removed the stuff for KSQO and choosing the protocol. That seems to
be enough to make it compile, but there's now just gaps in the dialog
where those options used to be. Will need some re-organizing to make it
pretty again.

- Heikki



Re: Removing support for < 7.4 servers

От
Michael Paquier
Дата:
On Thu, Oct 30, 2014 at 1:41 AM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:
> On 10/07/2014 10:29 AM, Michael Paquier wrote:
>>
>> On Sun, Aug 10, 2014 at 10:18 PM, Michael Paquier
>> <michael.paquier@gmail.com
>>>
>>> wrote:
>>
>>
>>> On Mon, Jun 23, 2014 at 2:41 PM, Michael Paquier
>>> <michael.paquier@gmail.com> wrote:
>>>>
>>>> On Mon, Jun 9, 2014 at 9:59 AM, Michael Paquier <
>>>
>>> michael.paquier@gmail.com>
>>>>
>>>> wrote:
>>>>>
>>>>> This work has been rebased on latest master commit (9e71e4d):
>>>>> https://github.com/michaelpq/psqlodbc/tree/cleanup-94
>>>
>>>
>> Ping. Code rebase on c685835.
>
>
> Ok, I think it's time to go ahead with this. Committed the first patch in
> that series, removing support for old protocol versions. Will review the
> rest now.
Thanks for looking at that. Why not marking as well the next release
as 09.04.XX?
--
Michael