| From: | Ilya Matveychikov <matvejchikov(at)gmail(dot)com> |
|---|---|
| To: | pgsql-bugs(at)postgresql(dot)org |
| Subject: | Incorrect accounting (n_tup_ins) of non-inserted rows |
| Date: | 2016-03-18 09:54:20 |
| Message-ID: | CAKh5nabvJBwQaXAMJ833zzY6dDBv4UZJwddhKzEt7wCKh+g_BA@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
Hello,
Seems that accounting of insertions with `n_tup_ins` not correct in
case of insertion errors cause by constraints checking (duplicate key
value violates unique constraint):
EXAMPLE:
postgres=# create table t(name text unique);
CREATE TABLE
postgres=# SELECT n_tup_ins FROM pg_stat_user_tables WHERE relname='t';
n_tup_ins
-----------
0
postgres=# insert into t(name) values('a');
INSERT 0 1
postgres=# SELECT n_tup_ins FROM pg_stat_user_tables WHERE relname='t';
n_tup_ins
-----------
1
postgres=# insert into t(name) values('b');
INSERT 0 1
postgres=# SELECT n_tup_ins FROM pg_stat_user_tables WHERE relname='t';
n_tup_ins
-----------
2
postgres=# insert into t(name) values('a');
ERROR: duplicate key value violates unique constraint "t_name_key"
DETAIL: Key (name)=(a) already exists.
postgres=# SELECT n_tup_ins FROM pg_stat_user_tables WHERE relname='t';
n_tup_ins
-----------
3
name
------
a
b
CODE REFERENCE (src/backend/postmaster/pgstat.c)
/* count attempted actions regardless of commit/abort */
tabstat->t_counts.t_tuples_inserted += trans->tuples_inserted;
tabstat->t_counts.t_tuples_updated += trans->tuples_updated;
tabstat->t_counts.t_tuples_deleted += trans->tuples_deleted;
So, is this behavior normal or probably needs to be fixed?
--
Ilya Matveychikov
| From | Date | Subject | |
|---|---|---|---|
| Next Message | ruslan.zakirov | 2016-03-18 10:04:27 | BUG #14032: trigram index is not used for '=' operator |
| Previous Message | Dmitriy Sarafannikov | 2016-03-18 08:12:44 | Re: Too many files in pg_replslot folder |