Bug #646: Problems inserting new records

Поиск
Список
Период
Сортировка
От pgsql-bugs@postgresql.org
Тема Bug #646: Problems inserting new records
Дата
Msg-id 20020425125203.4713A475862@postgresql.org
обсуждение исходный текст
Ответы Re: Bug #646: Problems inserting new records  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Miguel Juan (mjuan@cibal.es) reports a bug with a severity of 2
The lower the number the more severe it is.

Short Description
Problems inserting new records

Long Description
Hello,

I have installed Postgresql server 7.2.1 on a windows XP, and the server runs well. I have done a dump from a database
thatis working on a RH Linux 7.2 and with PG 7.1.3, and I can make selects inserts, and updates on tables on the new
server.

But the problem comes when I try to make a insert on a view using an appropiate rule (This works with postgresql 7.1.3
and7.1.2)
 

I get the next Error (The same error in the server side using pgsql or using ODBC on a client):

SearchSys Cache: Bad cache id 27



Sample Code
\connect - postgres
DROP INDEX "i13gdinformesm_vol";
DROP INDEX "i9gdinformesm_atributo";
DROP INDEX "i12gdinformesm_codserv";
DROP INDEX "i11gdinformesm_glosario";
DROP INDEX "i10gdinformesm_uf";
DROP INDEX "i4informesm";
DROP INDEX "i3informesm";
DROP INDEX "i2informesm";
DROP INDEX "gdinformesm_codiinfo_key";
DROP INDEX "i6informesm";
DROP INDEX "i8informesm";
DROP INDEX "i7informesm";
DROP INDEX "i5informesm";
DROP TABLE "gdinformesm";

CREATE TABLE "gdinformesm" (
    "codiinfo" integer DEFAULT nextval('gdinformesm_codiinfo_seq'::text) NOT NULL,
    "fichero" character varying(50),
    "vol" character(4),
    "descripcion" character varying(30),
    "fecha" date,
    "hora" time DEFAULT 'now',
    "codserv" integer,
    "codmedico" integer,
    "tipo" integer,
    "validado" character(1) DEFAULT 'N' NOT NULL,
    "carpeta" integer,
    "glosario" integer,
    "uf" integer,
    "paciente" integer NOT NULL,
    "atributo" integer,
    "grupo" integer NOT NULL,
    "pgrupo" character(1) DEFAULT '-' NOT NULL,
    "potros" character(1) DEFAULT '-' NOT NULL,
    CONSTRAINT "gdinformesm_potros" CHECK ((((potros = 'r'::bpchar) OR (potros = 'w'::bpchar)) OR (potros =
'-'::bpchar))),
    CONSTRAINT "gdinformesm_validado" CHECK ((((validado = 'S'::bpchar) OR (validado = 'N'::bpchar)) OR (validado =
'B'::bpchar))),
    CONSTRAINT "gdinformesm_pgrupo" CHECK ((((pgrupo = 'r'::bpchar) OR (pgrupo = 'w'::bpchar)) OR (pgrupo =
'-'::bpchar)))
);


REVOKE ALL on "gdinformesm" from PUBLIC;
GRANT ALL on "gdinformesm" to "postgres";
GRANT ALL on "gdinformesm" to GROUP "administradores";


CREATE  INDEX "i5informesm" on "gdinformesm" using btree ( "paciente" "int4_ops" );


CREATE  INDEX "i7informesm" on "gdinformesm" using btree ( "grupo" "int4_ops", "pgrupo" "bpchar_ops" );


CREATE  INDEX "i8informesm" on "gdinformesm" using btree ( "potros" "bpchar_ops" );


CREATE  INDEX "i6informesm" on "gdinformesm" using btree ( "codmedico" "int4_ops" );


CREATE UNIQUE INDEX "gdinformesm_codiinfo_key" on "gdinformesm" using btree ( "codiinfo" "int4_ops" );


CREATE  INDEX "i2informesm" on "gdinformesm" using btree ( "fichero" "varchar_ops" );


CREATE  INDEX "i3informesm" on "gdinformesm" using btree ( "descripcion" "varchar_ops" );


CREATE  INDEX "i4informesm" on "gdinformesm" using btree ( "carpeta" "int4_ops" );


CREATE  INDEX "i10gdinformesm_uf" on "gdinformesm" using btree ( "uf" "int4_ops" );


CREATE  INDEX "i11gdinformesm_glosario" on "gdinformesm" using btree ( "glosario" "int4_ops" );


CREATE  INDEX "i12gdinformesm_codserv" on "gdinformesm" using btree ( "codserv" "int4_ops" );


CREATE  INDEX "i9gdinformesm_atributo" on "gdinformesm" using btree ( "atributo" "int4_ops" );


CREATE  INDEX "i13gdinformesm_vol" on "gdinformesm" using btree ( "vol" "bpchar_ops" );

\connect - mjuan
DROP VIEW "gdinformes";

REVOKE ALL on "gdinformes" from PUBLIC;
GRANT ALL on "gdinformes" to PUBLIC;
GRANT ALL on "gdinformes" to "postgres";
GRANT ALL on "gdinformes" to "mjuan";


CREATE VIEW "gdinformes" as SELECT gdinformesm.codiinfo, gdinformesm.fichero, gdinformesm.vol, gdinformesm.descripcion,
gdinformesm.fecha,gdinformesm.hora, gdinformesm.codserv, gdinformesm.codmedico, gdinformesm.tipo, gdinformesm.validado,
gdinformesm.carpeta,gdinformesm.glosario, gdinformesm.uf, gdinformesm.paciente, gdinformesm.atributo,
gdinformesm.grupo,gdinformesm.pgrupo, gdinformesm.potros FROM gdinformesm WHERE (((gdinformesm.codmedico = (SELECT
gdmedicos.codmedicoFROM gdmedicos WHERE (gdmedicos.clave = text(getpgusername())))) OR (((gdinformesm.pgrupo =
'r'::bpchar)OR (gdinformesm.pgrupo = 'w'::bpchar)) AND (gdinformesm.grupo = ANY (SELECT gdgrupmed.codgrupo FROM
gdgrupmedWHERE (gdgrupmed.codmed = (SELECT gdmedicos.codmedico FROM gdmedicos WHERE (gdmedicos.clave =
text(getpgusername()))))))))OR ((gdinformesm.potros = 'r'::bpchar) OR (gdinformesm.potros = 'w'::bpchar)));
 


CREATE RULE gdinformes_update AS ON UPDATE TO gdinformes DO INSTEAD UPDATE gdinformesm SET fichero = new.fichero, vol =
new.vol,descripcion = new.descripcion, fecha = new.fecha, hora = new.hora, codserv = new.codserv, codmedico =
new.codmedico,tipo = new.tipo, validado = new.validado, carpeta = new.carpeta, glosario = new.glosario, uf = new.uf,
paciente= new.paciente, atributo = new.atributo, grupo = new.grupo, pgrupo = new.pgrupo, potros = new.potros WHERE
((gdinformesm.codiinfo= new.codiinfo) AND (((old.codmedico = (SELECT gdmedicos.codmedico FROM gdmedicos WHERE
(gdmedicos.clave= text("current_user"())))) OR ((old.pgrupo = 'w'::bpchar) AND (old.grupo = ANY (SELECT
gdgrupmed.codgrupoFROM gdgrupmed WHERE (gdgrupmed.codmed = (SELECT gdmedicos.codmedico FROM gdmedicos WHERE
(gdmedicos.clave= text("current_user"())))))))) OR (old.potros = 'w'::bpchar)));
 

CREATE RULE gdinformes_delete AS ON DELETE TO gdinformes DO INSTEAD DELETE FROM gdinformesm WHERE
((gdinformesm.codiinfo= old.codiinfo) AND (((old.codmedico = (SELECT gdmedicos.codmedico FROM gdmedicos WHERE
(gdmedicos.clave= text("current_user"())))) OR ((old.pgrupo = 'w'::bpchar) AND (old.grupo = ANY (SELECT
gdgrupmed.codgrupoFROM gdgrupmed WHERE (gdgrupmed.codmed = (SELECT gdmedicos.codmedico FROM gdmedicos WHERE
(gdmedicos.clave= text("current_user"())))))))) OR (old.potros = 'w'::bpchar)));
 

CREATE RULE gdinformes_insert AS ON INSERT TO gdinformes DO INSTEAD INSERT INTO gdinformesm (codiinfo, fichero, vol,
descripcion,fecha, hora, codserv, codmedico, tipo, validado, carpeta, glosario, uf, paciente, atributo, grupo, pgrupo,
potros)VALUES (nextval('gdinformesm_codiinfo_seq'::text), new.fichero, new.vol, new.descripcion, new.fecha,
"time"('now'::text),new.codserv, new.codmedico, new.tipo, gdinformes_validado_check(new.validado), new.carpeta,
new.glosario,new.uf, new.paciente, new.atributo, new.grupo, gdinformes_pgrupo_check(new.pgrupo),
gdinformes_potros_check(new.potros));


No file was uploaded with this report

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Bug #645: core dump while \df in trasaction
Следующее
От: pgsql-bugs@postgresql.org
Дата:
Сообщение: Bug #647: test