Thread: help

help

From
Burcu Akkan
Date:
Hello;
I couln't provide the connection using ODBC driver. I enabled the
tcpip_socket. What can I do more? Please help me..



Re: help

From
Richard Huxton
Date:
On Thursday 28 August 2003 08:47, Burcu Akkan wrote:
> Hello;
> I couln't provide the connection using ODBC driver. I enabled the
> tcpip_socket. What can I do more? Please help me..

1. Make sure you can access PG from the client machine using psql
2. Turn on logging for the ODBC driver, then check the logs
3. Come back to the list with the precise error message

--
  Richard Huxton
  Archonet Ltd

ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched, pgodbc-7.02.00.05)

From
Chris Gamache
Date:
We have a problem where the value of currval() transitions from one pooled
connection to another with pgodbc-7.02.00.05. I am wondering if pgodbc has been
fixed to wipe connection-related variables like currval and nextval when a
pooled connection is recycled. Is there perhaps some setting that I am missing?

Also, I can't find a definitive changelog describing all the various
improvements between 7.02.00.05 and the current stable version. That makes it
difficult to assess the dangers of upgrading!

CG

__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

Re: ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched, pgodbc-7.02.00.05)

From
Doug McNaught
Date:
Chris Gamache <cgg007@yahoo.com> writes:

> We have a problem where the value of currval() transitions from one pooled
> connection to another with pgodbc-7.02.00.05. I am wondering if pgodbc has been
> fixed to wipe connection-related variables like currval and nextval when a
> pooled connection is recycled. Is there perhaps some setting that I am missing?

If this happens, your application code is broken.  You should always
call nextval() before calling currval() on a given connection.  These
are server-side functions (not variables) and the ODBC driver can't
"reset" them.

-Doug


Re: ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched, pgodbc-7.02.00.05)

From
Chris Gamache
Date:
Doug, thanks for the reply!

Bruce, back me up (or shoot me down..): currval() should be undefined when a
connection is first made for any given sequence. If a connection is recycled,
shouldn't currval() be undefined for any given sequence to simulate the
behavior of a connection first being made?

CG

--- Doug McNaught <doug@mcnaught.org> wrote:
> Chris Gamache <cgg007@yahoo.com> writes:
>
> > We have a problem where the value of currval() transitions from one pooled
> > connection to another with pgodbc-7.02.00.05. I am wondering if pgodbc has
> been
> > fixed to wipe connection-related variables like currval and nextval when a
> > pooled connection is recycled. Is there perhaps some setting that I am
> missing?
>
> If this happens, your application code is broken.  You should always
> call nextval() before calling currval() on a given connection.  These
> are server-side functions (not variables) and the ODBC driver can't
> "reset" them.
>
> -Doug
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

Re: ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched, pgodbc-7.02.00.05)

From
Bruce Momjian
Date:
Chris Gamache wrote:
>
> Doug, thanks for the reply!
>
> Bruce, back me up (or shoot me down..): currval() should be undefined when a
> connection is first made for any given sequence. If a connection is recycled,
> shouldn't currval() be undefined for any given sequence to simulate the
> behavior of a connection first being made?

It would be nice if we wiped out currval when a shared connection is
passed.  We have added RESET ALL to clear out most SET values, but we
don't have any code to clear currval values.

Is there a reason the person would be calling currval when they haven't
called nextval yet?

---------------------------------------------------------------------------

>
> CG
>
> --- Doug McNaught <doug@mcnaught.org> wrote:
> > Chris Gamache <cgg007@yahoo.com> writes:
> >
> > > We have a problem where the value of currval() transitions from one pooled
> > > connection to another with pgodbc-7.02.00.05. I am wondering if pgodbc has
> > been
> > > fixed to wipe connection-related variables like currval and nextval when a
> > > pooled connection is recycled. Is there perhaps some setting that I am
> > missing?
> >
> > If this happens, your application code is broken.  You should always
> > call nextval() before calling currval() on a given connection.  These
> > are server-side functions (not variables) and the ODBC driver can't
> > "reset" them.
> >
> > -Doug
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 7: don't forget to increase your free space map settings
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! SiteBuilder - Free, easy-to-use web site design software
> http://sitebuilder.yahoo.com
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched, pgodbc-7.02.00.05)

From
Chris Gamache
Date:
If for no other reason that it is reasonable to assume that currval() would be
undefined at the start of a connection, it should be resetable.


<pseudo-code...>

create temporary table t_tbl (id serial, myvalue text);
NOTICE:  CREATE TABLE will create implicit sequence 't_tbl_id_seq' for SERIAL
column 't_tbl.id'
NOTICE:  CREATE TABLE / UNIQUE will create implicit index 't_tbl_id_key' for
table 't_tbl'
CREATE

begin;
update t_tbl set myvalue='newvalue' where id=currval('t_tbl_id_seq');
UPDATE 0
commit;
COMMIT

if recaff = 0 {

  begin;
  BEGIN
  insert into t_tbl (myvalue) values ('newvalue');
  INSERT 253902900 1
  commit;
  COMMIT

}

</pseudo-code>


If sequences are used to keep track of the row last inserted, isn't it critical
to be able to insure the value of currval() doesn't belong to someone else's
connection?

CG


--- Bruce Momjian <pgman@candle.pha.pa.us> wrote:
> Chris Gamache wrote:
> >
> > Doug, thanks for the reply!
> >
> > Bruce, back me up (or shoot me down..): currval() should be undefined when
> a
> > connection is first made for any given sequence. If a connection is
> recycled,
> > shouldn't currval() be undefined for any given sequence to simulate the
> > behavior of a connection first being made?
>
> It would be nice if we wiped out currval when a shared connection is
> passed.  We have added RESET ALL to clear out most SET values, but we
> don't have any code to clear currval values.
>
> Is there a reason the person would be calling currval when they haven't
> called nextval yet?
>
> ---------------------------------------------------------------------------
>
> >
> > CG
> >
> > --- Doug McNaught <doug@mcnaught.org> wrote:
> > > Chris Gamache <cgg007@yahoo.com> writes:
> > >
> > > > We have a problem where the value of currval() transitions from one
> pooled
> > > > connection to another with pgodbc-7.02.00.05. I am wondering if pgodbc
> has
> > > been
> > > > fixed to wipe connection-related variables like currval and nextval
> when a
> > > > pooled connection is recycled. Is there perhaps some setting that I am
> > > missing?
> > >
> > > If this happens, your application code is broken.  You should always
> > > call nextval() before calling currval() on a given connection.  These
> > > are server-side functions (not variables) and the ODBC driver can't
> > > "reset" them.
> > >
> > > -Doug
> > >
> > >
> > > ---------------------------(end of broadcast)---------------------------
> > > TIP 7: don't forget to increase your free space map settings
> >
> >
> > __________________________________
> > Do you Yahoo!?
> > Yahoo! SiteBuilder - Free, easy-to-use web site design software
> > http://sitebuilder.yahoo.com
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> >
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073



__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

Re: ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched,

From
Oliver Elphick
Date:
On Thu, 2003-09-04 at 16:29, Chris Gamache wrote:

> If sequences are used to keep track of the row last inserted, isn't it critical
> to be able to insure the value of currval() doesn't belong to someone else's
> connection?

That can't happen.  currval() is _guaranteed_ to return only the last
value generated during your own current session.  That is why you cannot
use it unless you have used nextval() first in the same session.

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "If any of you lack wisdom, let him ask of God, who
      gives to all men generously and without reproach, and
      it will be given to him."           James 1:5


Re: ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched, pgodbc-7.02.00.05)

From
Chris Gamache
Date:
That is my point exactly. That is why (windows?) connection pooling breaks this
model. It wouldn't be a problem if there were a way to undefine currval() for
all sequences... It would be a command issued by the ODBC driver when the
connection is made (best), or by the connecting process as its first order of
business (do-able).

CG


--- Oliver Elphick <olly@lfix.co.uk> wrote:
> On Thu, 2003-09-04 at 16:29, Chris Gamache wrote:
>
> > If sequences are used to keep track of the row last inserted, isn't it
> critical
> > to be able to insure the value of currval() doesn't belong to someone
> else's
> > connection?
>
> That can't happen.  currval() is _guaranteed_ to return only the last
> value generated during your own current session.  That is why you cannot
> use it unless you have used nextval() first in the same session.
>
> --
> Oliver Elphick                                Oliver.Elphick@lfix.co.uk
> Isle of Wight, UK                             http://www.lfix.co.uk/oliver
> GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
>                  ========================================
>      "If any of you lack wisdom, let him ask of God, who
>       gives to all men generously and without reproach, and
>       it will be given to him."           James 1:5
>


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

Re: ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched,

From
Hiroshi Inoue
Date:
Chris Gamache wrote:
>
> That is my point exactly. That is why (windows?) connection
> pooling breaks this model. It wouldn't be a problem if there
> were a way to undefine currval() for all sequences...
> It would be a command issued by the ODBC driver when the
> connection is made (best), or by the connecting process as
> its first order of business (do-able).

How could the driver know if the connection is recycled ?
SQL..Connect API function isn't called when the connection
is recycled.

regards,
Hiroshi Inoue
    http://www.geocities.jp/inocchichichi/psqlodbc/

Re: ODBC Connection Pooling (Windows 2000 MDAC 2.7 patched, pgodbc-7.02.00.05)

From
Chris Gamache
Date:
Rats... In that case, the application creating the connection would have to
issue a command to the back-end before running any other SQL statements.

--- Hiroshi Inoue <Inoue@tpf.co.jp> wrote:
> Chris Gamache wrote:
> >
> > That is my point exactly. That is why (windows?) connection
> > pooling breaks this model. It wouldn't be a problem if there
> > were a way to undefine currval() for all sequences...
> > It would be a command issued by the ODBC driver when the
> > connection is made (best), or by the connecting process as
> > its first order of business (do-able).
>
> How could the driver know if the connection is recycled ?
> SQL..Connect API function isn't called when the connection
> is recycled.
>
> regards,
> Hiroshi Inoue
>     http://www.geocities.jp/inocchichichi/psqlodbc/



__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com