Thread

  1. lobj bug

    Cob <cob@gnt.kiev.ua> — 1999-10-14T08:40:09Z

    ============================================================================
                            POSTGRESQL BUG REPORT TEMPLATE
    ============================================================================
    
    
    Your name               : Alexey Kobozev
    Your email address      : cob@gnt.kiev.ua
    
    
    System Configuration
    ---------------------
      Architecture (example: Intel Pentium)         : Intel Pentium
    
      Operating System (example: Linux 2.0.26 ELF)  : FreeBSD 2.2.1 & Solaris 2.6
    
      PostgreSQL version (example: PostgreSQL-6.5.2): PostgreSQL-6.5 & 6.5.2
    
      Compiler used (example:  gcc 2.8.0)           : gcc version 2.7.2.1 & 2.8.1
    
    
    Please enter a FULL description of your problem:
    ------------------------------------------------
    Bug in libpq (IMHO).
    
    When I've got large object id (oid) from table any attempt to
    open it with lo_open (lo_export) returns -1 (perrno = 2 - not found).
    
    But using of built-in lo_import/lo_export 
    (insert into xxx values(lo_import('file')) or select lo_export(lobj_id))
    successful.
    
    
    Please describe a way to repeat the problem.   Please try to provide a
    concise reproducible example, if at all possible:
    ----------------------------------------------------------------------
    
    create table tmp (lobj oid);
    
    insert into tmp values(lo_import('some_file'));
    
    select lobj from tmp;
    lobj
    ------
    xxxxxx
    
    //------------- problem.c ----------------
    
    #include <stdio.h>
    #include "libpq-fe.h"
    #include "libpq/libpq-fs.h"
    
    void main()
    {
      PGconn *dbConn = PQsetdb(NULL, NULL, NULL, NULL, "database");
      if(PQstatus(dbConn) == CONNECTION_BAD)
      {
        fprintf(stderr, "%s\n", PQerrorMessage(dbConn));
        exit(1);
      }
    
      if(lo_export(dbConn, xxxxxx, "/tmp/lobj") < 0) 
        fprintf(stderr, "Can't export lobj\n"); //we'll get here
    
      if(lo_open(dbConn, xxxxxx, INV_READ) < 0)
        fprintf(stderr, "Can't even open lobj\n"); //we'll get here
    
      PQfinish(dbConn);
    }
    
    //--------------------------------------------
    
    
    If you know how this problem might be fixed, list the solution below:
    ---------------------------------------------------------------------