[DBD::Pg 1/2] Format our prepared statements with %x, not %d, for very long-running transactions in which the internal prepare_number rolls over into negative numbers - which bumps up against Postgres' rules about prepared statement names. Per RT #88827.
dbdpg-commits-gENoVmVU/[email protected] Sat, 21 Sep 2013 22:35:55 -0400
| Newsgroups | gmane.comp.db.postgresql.dbdpg.cvs |
|---|---|
| Message-ID | <[email protected]> |
Committed by Spencer Sun <ssun-lTB0Xd325TxqO0yjgLDq5wC/[email protected]> Subject: [DBD::Pg 1/2] Format our prepared statements with %x, not %d, for very long-running transactions in which the internal prepare_number rolls over into negative numbers - which bumps up against Postgres' rules about prepared statement names. Per RT #88827. --- dbdimp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dbdimp.c b/dbdimp.c index f0a7032..b94d259 100644 --- a/dbdimp.c +++ b/dbdimp.c @@ -2136,7 +2136,7 @@ static int pg_st_prepare_statement (pTHX_ SV * sth, imp_sth_t * imp_sth) Renew(imp_sth->prepare_name, 25, char); /* freed in dbd_st_destroy */ /* Name is "dbdpg_xPID_#", where x is 'p'ositive or 'n'egative */ - sprintf(imp_sth->prepare_name,"dbdpg_%c%d_%d", + sprintf(imp_sth->prepare_name,"dbdpg_%c%d_%x", (imp_dbh->pid_number < 0 ? 'n' : 'p'), abs(imp_dbh->pid_number), imp_dbh->prepare_number); -- 1.7.1