ID:               23786
 Updated by:       [EMAIL PROTECTED]
 Reported By:      dave at codewhore dot org
-Status:           Open
+Status:           Closed
 Bug Type:         Documentation problem
 Operating System: Linux 2.4
 PHP Version:      4CVS-2003-05-23 (stable)
 New Comment:

This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation
better.




Previous Comments:
------------------------------------------------------------------------

[2004-09-22 11:02:53] [EMAIL PROTECTED]

"Use of the pg_put_line() causes most large object operations,
including pg_lo_read() and pg_lo_tell(), to subsequently fail. You can
use pg_copy_from() and pg_copy_to() instead."

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

[2003-05-24 00:54:12] dave at codewhore dot org

I'm moving this to the documentation category, since I haven't been
able to prove that the invalidation of open large object handles is
actually a ext/pgsql problem (and not just intrinsic to the Postgres
server/protocol/client-library).

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

[2003-05-23 15:55:02] dave at codewhore dot org

Hi:

Use of the pg_put_line() function causes most large object operations,
including pg_lo_read and pg_lo_tell, to subsequently fail. A test
script demonstrates this:

<?php
  $c = pg_connect('dbname=database user=postgres');
  var_dump($c);
  var_dump(pg_query($c, 'begin transaction'));
  $fd = pg_lo_open($c, $lo_id_goes_here, 'r');
  var_dump($fd);

  var_dump(pg_query($c, 'copy table_name_goes_here from stdin'));
  var_dump(pg_put_line($c, "\\.\n"));
  var_dump(pg_end_copy($c));
  var_dump(pg_lo_tell($fd));

  var_dump(pg_lo_close($fd));
  var_dump(pg_query($c, 'commit'));
?>

I would expect to see:
  resource(4) of type (pgsql link)
  resource(5) of type (pgsql result)
  resource(6) of type (pgsql large object)
  resource(7) of type (pgsql result)
  bool(true)
  bool(true)
  int(0)
  bool(true)

Instead, I get:
  resource(4) of type (pgsql link)
  resource(5) of type (pgsql result)
  resource(6) of type (pgsql large object)
  resource(7) of type (pgsql result)
  bool(true)
  bool(true)
  int(-1)
  Warning: pg_lo_close(): Unable to close PostgreSQL large object
descriptor 0. in /home/dave/test.php on line 14
  bool(false)

The pg_copy_from and pg_copy_to functions, strangely enough, don't
exhibit this behavior.

If this is something intrinsic to the design of Postgres' wire protocol
(e.g. not a PHP bug - I don't know if it is or not), it'd be worth
leaving a nice big warning in the docs for pg_put_line/pg_lo_open.

Thanks in advance,
- Dave


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


-- 
Edit this bug report at http://bugs.php.net/?id=23786&edit=1

Reply via email to