After dropping the rule - Not able to insert / server crash (one timeONLY)
От | tushar |
---|---|
Тема | After dropping the rule - Not able to insert / server crash (one timeONLY) |
Дата | |
Msg-id | dd3f25fd-8374-eec0-3021-d9cfea5c251f@enterprisedb.com обсуждение исходный текст |
Ответы |
Re: After dropping the rule - Not able to insert / server crash (onetime ONLY)
|
Список | pgsql-hackers |
Hi, While testing something , I found that even after rule has dropped not able to insert data and in an another scenario , there is a Crash/ Please refer this scenario's - 1) Rows not inserted after dropping the RULE postgres=# create table e(n int); CREATE TABLE postgres=# create rule e1 as on insert to e do instead nothing; CREATE RULE postgres=# create function e11(n int) returns int as $$ begin insert into e values(10); return 1; end; $$ language 'plpgsql'; CREATE FUNCTION postgres=# select e11(1); e11 ----- 1 (1 row) postgres=# select e11(1); e11 ----- 1 (1 row) postgres=# select * from e; => Expected , due to the RULE enforced n --- (0 rows) postgres=# drop rule e1 on e; ==>Drop the rule DROP RULE postgres=# select e11(1); =>again try to insert into table e11 ----- 1 (1 row) postgres=# select * from e; =>This time , value should be inserted but still showing 0 row. n --- (0 rows) 2)Server crash (one time) postgres=# create table en(n int); CREATE TABLE postgres=# create function en1(n int) returns int as $$ begin insert into en values(10); return 1; end; $$ language 'plpgsql'; CREATE FUNCTION postgres=# postgres=# select en1(1); en1 ----- 1 (1 row) postgres=# select * from en; n ---- 10 (1 row) postgres=# create rule en11 as on insert to en do instead nothing; CREATE RULE postgres=# select en1(1); ostgres=# select en1(1); TRAP: FailedAssertion("!(!stmt->mod_stmt)", File: "pl_exec.c", Line: 3721) server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: 2017-12-11 10:05:57.847 GMT [18493] LOG: server process (PID 18604) was terminated by signal 6: Aborted 2017-12-11 10:05:57.847 GMT [18493] DETAIL: Failed process was running: select en1(1); 2017-12-11 10:05:57.847 GMT [18493] LOG: terminating any other active server processes 2017-12-11 10:05:57.847 GMT [18498] WARNING: terminating connection because of crash of another server process 2017-12-11 10:05:57.847 GMT [18498] DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory. 2017-12-11 10:05:57.847 GMT [18498] HINT: In a moment you should be able to reconnect to the database and repeat your command. Failed. !> 2017-12-11 10:05:57.849 GMT [18493] LOG: all server processes terminated; reinitializing again try to connect and fire this same query - postgres=# select en1(1); =>This time no crash but again rows not inserted en1 ----- 1 (1 row) This is not a regression, i am able to see such behavior in v9.6 as well. -- regards,tushar EnterpriseDB https://www.enterprisedb.com/ The Enterprise PostgreSQL Company
В списке pgsql-hackers по дате отправления: