Thread: Relation missing?
I got an error SELECT ERecord(100, 3492,'2008-05-13 10:25:57', 1, 0); gave me (translating into english) ERROR: relation with OID 31330 doesn't exist CONTEXT: SQL-statement: "INSERT INTO eLog (customer,shop,event,time) VALUES ( $1 , $2 , $3 , $4 )" PL/pgSQL function "erecord" line 5 at SQL statement ERecord is a function written in PL/pgSQL... so what can this mean?
am Tue, dem 13.05.2008, um 15:08:51 +0200 mailte A B folgendes: > I got an error > > SELECT ERecord(100, 3492,'2008-05-13 10:25:57', 1, 0); > > gave me (translating into english) > > ERROR: relation with OID 31330 doesn't exist > CONTEXT: SQL-statement: "INSERT INTO eLog (customer,shop,event,time) > VALUES ( $1 , $2 , $3 , $4 )" > PL/pgSQL function "erecord" line 5 at SQL statement > > ERecord is a function written in PL/pgSQL... so what can this mean? Wild gues: within this function you create this table and you don't use EXECUTE for that. When you start a new session, the first time yout function works fine, but the second call fails. Right? PG caches the plan and the OID's for objects, because this fact it fails the second time. To prevent this, use EXECUTE for all DDL-commands. Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
In this function I create no table, I just do insert into various already existing tables. It is not a prepared statement, but a function I created, so I'm not sure if EXECUTE is what I should use. This function has successfully run many times before, over several days. Excuse my ignorance, but what is DDL commands? Is that like creating tables? 2008/5/13 A. Kretschmer <andreas.kretschmer@schollglas.com>: > am Tue, dem 13.05.2008, um 15:08:51 +0200 mailte A B folgendes: > > > > I got an error > > > > SELECT ERecord(100, 3492,'2008-05-13 10:25:57', 1, 0); > > > > gave me (translating into english) > > > > ERROR: relation with OID 31330 doesn't exist > > CONTEXT: SQL-statement: "INSERT INTO eLog (customer,shop,event,time) > > VALUES ( $1 , $2 , $3 , $4 )" > > PL/pgSQL function "erecord" line 5 at SQL statement > > > > ERecord is a function written in PL/pgSQL... so what can this mean? > > Wild gues: within this function you create this table and you don't use > EXECUTE for that. When you start a new session, the first time yout > function works fine, but the second call fails. Right? > > PG caches the plan and the OID's for objects, because this fact it fails > the second time. To prevent this, use EXECUTE for all DDL-commands. > > > Andreas > -- > Andreas Kretschmer > Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) > GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net > > -- > Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-novice >
am Tue, dem 13.05.2008, um 15:43:52 +0200 mailte A B folgendes: > In this function I create no table, I just do insert into various > already existing tables. Okay, sorry. > It is not a prepared statement, but a function I created, so I'm not > sure if EXECUTE is what I should use. > This function has successfully run many times before, over several days. > > Excuse my ignorance, but what is DDL commands? Is that like creating tables? Right, Data Definition Language. Regards, Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
DDL = Data Definition Language I.e.; CREATE, ALTER and DROP statements. Bruce --- A B <gentosaker@gmail.com> wrote: > In this function I create no table, I just do insert into > various > already existing tables. > It is not a prepared statement, but a function I created, so > I'm not > sure if EXECUTE is what I should use. > This function has successfully run many times before, over > several days. > > Excuse my ignorance, but what is DDL commands? Is that like > creating tables? > > > 2008/5/13 A. Kretschmer <andreas.kretschmer@schollglas.com>: > > am Tue, dem 13.05.2008, um 15:08:51 +0200 mailte A B > folgendes: > > > > > > > I got an error > > > > > > SELECT ERecord(100, 3492,'2008-05-13 10:25:57', 1, 0); > > > > > > gave me (translating into english) > > > > > > ERROR: relation with OID 31330 doesn't exist > > > CONTEXT: SQL-statement: "INSERT INTO eLog > (customer,shop,event,time) > > > VALUES ( $1 , $2 , $3 , $4 )" > > > PL/pgSQL function "erecord" line 5 at SQL statement > > > > > > ERecord is a function written in PL/pgSQL... so what can > this mean? > > > > Wild gues: within this function you create this table and > you don't use > > EXECUTE for that. When you start a new session, the first > time yout > > function works fine, but the second call fails. Right? > > > > PG caches the plan and the OID's for objects, because this > fact it fails > > the second time. To prevent this, use EXECUTE for all > DDL-commands. > > > > > > Andreas > > -- > > Andreas Kretschmer > > Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: > -> Header) > > GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA > http://wwwkeys.de.pgp.net > > > > -- > > Sent via pgsql-novice mailing list > (pgsql-novice@postgresql.org) > > To make changes to your subscription: > > http://www.postgresql.org/mailpref/pgsql-novice > > > > -- > Sent via pgsql-novice mailing list > (pgsql-novice@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-novice >