Re: BUG #17886: Error disabling user triggers on a partitioned table - Mailing list pgsql-bugs

From jazzl 0013
Subject Re: BUG #17886: Error disabling user triggers on a partitioned table
Date
Msg-id CAB4LQjhFKFqUOe6CzR=QdBLxxD68JrxPvCa9nN8xP3ru+5n2Uw@mail.gmail.com
Whole thread Raw
In response to BUG #17886: Error disabling user triggers on a partitioned table  (PG Bug reporting form <noreply@postgresql.org>)
List pgsql-bugs



The following bug has been logged on the website:

Bug reference:      17886
Logged by:          DzmitryH
Email address:      jazz001319@gmail.com
PostgreSQL version: 14.7
Operating system:   Linux 883a37b156f7 5.15.0-52-generic #58-Ubuntu SM
Description:       

sequence of steps:
1. clean install PostgreSQL 14.7
2. Create test database
3. Create partiton table and partitions (for example only default
partiton)
4. Create trigger
5. Disable user trigger on partitions

verbose step:
psql (14.7 (Debian 14.7-1.pgdg110+1))
Type "help" for help.

postgres=# \set VERBOSITY verbose
postgres=# create database testdb;
CREATE DATABASE
postgres=# CREATE TABLE IF NOT EXISTS public.test
(
    id bigserial,
    user_id bigint,
    type text NOT NULL,
    status text NOT NULL,
    details jsonb,
    created_timestamp timestamp with time zone NOT NULL DEFAULT 'now()',
        modified_timestamp timestamp with time zone NOT NULL DEFAULT
'now()',
    shard_id integer NOT NULL DEFAULT '1',
    demo boolean NOT NULL,
    CONSTRAINT test_pkey PRIMARY KEY (id, created_timestamp)
) PARTITION BY RANGE (created_timestamp);
CREATE TABLE
postgres=# CREATE TABLE public.test_def PARTITION OF public.test
    DEFAULT;
CREATE TABLE
postgres=# CREATE OR REPLACE FUNCTION
public.update_last_modified_timestamp()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
  IF NEW != OLD
  THEN
    NEW.modified_timestamp := CURRENT_TIMESTAMP;
  END IF;
  RETURN NEW;
END;
$BODY$;
CREATE FUNCTION
postgres=# CREATE TRIGGER trigger_test
    BEFORE UPDATE
    ON public.test
    FOR EACH ROW
    EXECUTE FUNCTION public.update_last_modified_timestamp();
CREATE TRIGGER
postgres=# alter table public.test DISABLE TRIGGER USER;
ERROR:  42704: trigger "trigger_test" for table "test_def" does not exist
LOCATION:  EnableDisableTriggerNew, trigger.c:1658

result:
postgres=# alter table public.test DISABLE TRIGGER USER;
ERROR:  42704: trigger "trigger_test" for table "test_def" does not exist
LOCATION:  EnableDisableTriggerNew, trigger.c:1658

Expected Result (Postgresql 15.2 and 14.4 - fine):
testdb=> alter table public.test DISABLE TRIGGER USER;
ALTER TABLE




Attachment

pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #17886: Error disabling user triggers on a partitioned table
Next
From: Tom Lane
Date:
Subject: Re: BUG #17886: Error disabling user triggers on a partitioned table