PG 14.12

The job does DELETE FROM rel_group_user; (no WHERE clause!!) then does DELETE
FROM public.access_user; (also no WHERE clause), but the
public.access_user statement
fails on FK constraint error on rel_group_user (which was just recently
emptied).

Each statement is in a different transaction, since they are executed via
separate psql statements.  Thus, no apparent MVCC visibility weirdness.

My first thought, of course, was that there are *two* rel_group_user tables.
Alas, no, there's just one.  See below for grep statement.

Excerpts from the cron job log file:
[snip]
2024-07-15 02:40:04 Deleting from FISPTAPPGS401DA/TAPd.rel_group_user
DELETE FROM rel_group_user;
DELETE 42747
[snip]
2024-07-15 02:41:15 Deleting from FISPTAPPGS401DA/TAPd.public.access_user
DELETE FROM public.access_user;
ERROR:  update or delete on table "access_user" violates foreign key
constraint "fk_rel_group_user_1" on table "rel_group_user"
DETAIL:  Key (user_id)=(1210) is still referenced from table
"rel_group_user".
ERROR: deleting FISPTAPPGS401DA/TAPd.public.access_user
[snip]

$ psql --host=FISPTAPPGS401DA TAPd -Xc "\dt *.*" | grep " rel_group_user "
 public             | rel_group_user                                | table
      | TAP

Here are the table definitions (if relevant):
TAPd=# \d public.access_user
                                                   Table
"public.access_user"
           Column           |            Type             | Collation |
Nullable |                   Default
----------------------------+-----------------------------+-----------+----------+----------------------------------------------
 user_id                    | integer                     |           | not
null | nextval('access_user_user_id_seq'::regclass)
 login_id                   | character varying(255)      |           | not
null |
[snip]
 Indexes:
    "pk_access_user" PRIMARY KEY, btree (user_id)
    "idx_user_login_id" UNIQUE, btree (login_id)
Foreign-key constraints:
    "fk_access_user_home_domain" FOREIGN KEY (home_domain_id) REFERENCES
access_domain(domain_id)
    "fk_user_userdesktop" FOREIGN KEY (user_desktop_id) REFERENCES
user_desktop(user_desktop_id)
Referenced by:
[snip]
    TABLE "rel_group_user" CONSTRAINT "fk_rel_group_user_1" FOREIGN KEY
(user_id) REFERENCES access_user(user_id)
[snip]

TAPd=# \d rel_group_user
                       Table "public.rel_group_user"
   Column    |            Type             | Collation | Nullable | Default
-------------+-----------------------------+-----------+----------+---------
 user_id     | integer                     |           | not null |
 group_id    | integer                     |           | not null |
 modified_by | integer                     |           |          |
 modified_on | timestamp without time zone |           | not null |
Indexes:
    "idx_rel_group_user" UNIQUE, btree (user_id, group_id)
    "idx_rel_group_user_groupid" btree (group_id)
    "idx_rel_group_user_userid" btree (user_id)
Foreign-key constraints:
    "fk_rel_group_user_1" FOREIGN KEY (user_id) REFERENCES
access_user(user_id)
    "fk_rel_group_user_2" FOREIGN KEY (group_id) REFERENCES
access_group(group_id)

Reply via email to