From: | tushar <tushar(dot)ahuja(at)enterprisedb(dot)com> |
---|---|
To: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | After dropping the rule - Not able to insert / server crash (one time ONLY) |
Date: | 2017-12-11 10:24:32 |
Message-ID: | dd3f25fd-8374-eec0-3021-d9cfea5c251f@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
From | Date | Subject | |
---|---|---|---|
Next Message | Dilip Kumar | 2017-12-11 11:03:20 | Re: After dropping the rule - Not able to insert / server crash (one time ONLY) |
Previous Message | Masahiko Sawada | 2017-12-11 10:20:25 | Re: [HACKERS] Transactions involving multiple postgres foreign servers |