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


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

[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