Re: [BUG] calling lo_creat()
От | Tom Lane |
---|---|
Тема | Re: [BUG] calling lo_creat() |
Дата | |
Msg-id | 20638.967663906@sss.pgh.pa.us обсуждение исходный текст |
Список | pgsql-hackers |
"Barnes, Sandy (Sandra)" <Sandy.Barnes@Honeywell.com> writes: > Platform: PostgreSQL 7.0.2 on RedHat6.2 Linux > Test: Testing the creation of large objects. I was putting the large > objects into a database table but this > test program recreates the error for me without having to do that. > Program Error: Can't create large object > Database Log Error: FATAL 1: my bits moved right off the end of the world! > Recreate index pg_attribute_relid_attnum_index Can anyone else duplicate this? I don't see it on my available boxes (7.0.2 and current on HPUX and an old Linux box). The test program is pretty trivial, see attached. regards, tom lane /*-------------------------------------------------------------------------** loOid2.c* test creation of many largeobjects *-------------------------------------------------------------------------*/ #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include "libpq-fe.h" #include "libpq/libpq-fs.h" static Oid createOid(PGconn *conn, int i) {Oid lobjId;int lobj_fd; /* * create a large object */lobjId = lo_creat(conn, INV_READ | INV_WRITE);if (lobjId == 0){ fprintf(stderr, "can't createlarge object\n"); exit(1);} lobj_fd = lo_open(conn, lobjId, INV_WRITE); printf("oid [%d] %d\n", lobjId, i); /* printf("\tfd [%d]", lobj_fd); */ lo_close(conn, lobj_fd); return lobjId; } static void exit_nicely(PGconn *conn) {PQfinish(conn);exit(1); } int main(int argc, char **argv) {char *database;Oid lobjOid;PGconn *conn;PGresult *res;int i; database = argv[1]; /* * set up the connection */conn = PQsetdb(NULL, NULL, NULL, NULL, database); /* check to see that the backend connection was successfully made */if (PQstatus(conn) == CONNECTION_BAD){ fprintf(stderr,"Connection to database '%s' failed.\n", database); fprintf(stderr, "%s", PQerrorMessage(conn)); exit_nicely(conn);} res = PQexec(conn, "begin");PQclear(res); for (i=0; i<100; i++) { lobjOid = createOid(conn, i); }res = PQexec(conn,"end");PQclear(res);PQfinish(conn);return 0; }
В списке pgsql-hackers по дате отправления: