Обсуждение: Re: unixODBC again :-(

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

Re: unixODBC again :-(

От
Bruce Momjian
Дата:
Folks, I need help on this.  It would be nice to support unixODBC, but I
don't understand the ramifications of these changes.

> pgman@candle.pha.pa.us wrote:
>
> > Nick, sorry this was never resolved.  Do have any recollection of the
> > issues involved?
>
> Hi Bruce,
>
> Yes I can tell you what I was changing, I would love to get the code in the unixODBC distrib to match the one you
have,or even to remove it 
> and point people to you.
>
> There are a few simple changes.
>
> 1. Add options to use unixODBC in the configure.in file, the mainly consists of finding the root of the unixODBC
installprefix, and adding 
> -I /unixODBC/path/include and -L /unixODBC/path/lib to the driver build
>
> 2. Change the way the driver gets config info, to be the same as when built under windows. link with -lodbcinst and
itprovides 
> SQLGetPrivateProfileString. the code that calls this works as long as the correct define is set.
>
> 3. Stop calling ODBC functions in the driver, this is simple but messy, the problem being the call (say) in
SQLAllocStmtthat calls 
> SQLAllocHandle in the driver, ends up calling the SQLAllocHandle in the driver manager.
>
> There are a couple of other changes I have made, that you may want to add, I added the code to allow encrypted
passwords(taken from the pg 
> lib), as crypt is avaiable on unix. Add the option to detect a server name of localhost, and open the unix domain
socket,in fact try two 
> places, to handle the debian build where the location is different. Again both of these would have no place on
Windowsbut in Unix. 
>
> Its chaos here at the moment, having lost a machine (dead disk) in the move to nice new (old building) offices in the
countryside, but if 
> you want any help, just shout.
>
>
> --
> Nick Gorham
> When I die, I want to go like my grandfather did, gently while sleeping,
> and not like his passangers, screaming in a panic, looking for the
> inflatable raft. -- Seen on ./
>
>
>
>


--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Re: [HACKERS] Re: unixODBC again :-(

От
Peter Eisentraut
Дата:
Bruce Momjian writes:

> > 1. Add options to use unixODBC in the configure.in file, the mainly consists of finding the root of the unixODBC
installprefix, and adding 
> > -I /unixODBC/path/include and -L /unixODBC/path/lib to the driver build

--with-includes, --with-libraries

> > 2. Change the way the driver gets config info, to be the same as when built under windows. link with -lodbcinst and
itprovides 
> > SQLGetPrivateProfileString. the code that calls this works as long as the correct define is set.

I don't understand this.  The driver gets the config info just fine; why
add another way?

> > 3. Stop calling ODBC functions in the driver, this is simple but messy, the problem being the call (say) in
SQLAllocStmtthat calls 
> > SQLAllocHandle in the driver, ends up calling the SQLAllocHandle in the driver manager.

This is fixed using magic linker options on ELF platforms.  I don't recall
how the patch tried to address this, but a better solution is probably
necessary.

> > There are a couple of other changes I have made, that you may want
> to add, I added the code to allow encrypted passwords (taken from the
> pg > lib), as crypt is avaiable on unix.

Why not.

> Add the option to detect a
> server name of localhost, and open the unix domain socket,

I don't think so.  localhost is a valid host name.

> in fact try
> two > places, to handle the debian build where the location is
> different.

We have a general approach to non-standard socket names now.

--
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/


Re: [HACKERS] Re: unixODBC again :-(

От
Nick Gorham
Дата:
peter_e@gmx.net wrote:

> Bruce Momjian writes:
>
> > > 1. Add options to use unixODBC in the configure.in file, the mainly consists of finding the root of the unixODBC
installprefix, and adding 
> > > -I /unixODBC/path/include and -L /unixODBC/path/lib to the driver build
>
> --with-includes, --with-libraries

If it works then fine, other drivers use a --with-unixODBC to enable any other changes that are needed.

> > > 2. Change the way the driver gets config info, to be the same as when built under windows. link with -lodbcinst
andit provides 
> > > SQLGetPrivateProfileString. the code that calls this works as long as the correct define is set.
>
> I don't understand this.  The driver gets the config info just fine; why
> add another way?

Well because the driver does not know where to get the config info from, libodbcinst.so in unixODBC provides
SQLGetPrivateProfileString,the 
location of user and system ini files are defined by this lib, if it doesn't do this you may have the situation where
thedriver manager gets 
information from one ini file and the driver from a different one.

> > > 3. Stop calling ODBC functions in the driver, this is simple but messy, the problem being the call (say) in
SQLAllocStmtthat calls 
> > > SQLAllocHandle in the driver, ends up calling the SQLAllocHandle in the driver manager.
>
> This is fixed using magic linker options on ELF platforms.  I don't recall
> how the patch tried to address this, but a better solution is probably
> necessary.

If there is a better way, please let me know, I would love to have a better solution.

> > > There are a couple of other changes I have made, that you may want
> > to add, I added the code to allow encrypted passwords (taken from the
> > pg > lib), as crypt is avaiable on unix.
>
> Why not.
>
> > Add the option to detect a
> > server name of localhost, and open the unix domain socket,
>
> I don't think so.  localhost is a valid host name.

Ok, but don't you think it is worth having some way to get it to use UNIX domain sockets instead of TCP ones, for
instanceif postmaster isn't 
started with a -i ?

> We have a general approach to non-standard socket names now.

Great, thats a non problem then, what do you do ?

--
Nick Gorham
When I die, I want to go like my grandfather did, gently while sleeping,
and not like his passangers, screaming in a panic, looking for the
inflatable raft. -- Seen on ./




Re: [HACKERS] Re: unixODBC again :-(

От
Peter Eisentraut
Дата:
Nick Gorham writes:

> Well because the driver does not know where to get the config info
> from,

Then the driver should be fixed to do that, with or without unixODBC.

> libodbcinst.so in unixODBC provides SQLGetPrivateProfileString,
> the location of user and system ini files are defined by this lib, if
> it doesn't do this you may have the situation where the driver manager
> gets information from one ini file and the driver from a different
> one.

--with-odbcinst=DIRECTORY

> > > Add the option to detect a
> > > server name of localhost, and open the unix domain socket,
> >
> > I don't think so.  localhost is a valid host name.
>
> Ok, but don't you think it is worth having some way to get it to use
> UNIX domain sockets instead of TCP ones, for instance if postmaster
> isn't started with a -i ?

Yes, that would be okay, but it's not okay to eliminate a feature to add
another one.

> > We have a general approach to non-standard socket names now.
>
> Great, thats a non problem then, what do you do ?

Pick up DEFAULT_PGSOCKET_DIR from config.h.

--
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/