Search Postgresql Archives

Re: backend crash on DELETE, reproducible locally

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 01, 2018 at 12:27:23PM -0300, Alvaro Herrera wrote:

> Ah, now this is interesting.  Can you please supply the definition of
> the table?

Attached.

> I'm wondering if there is a partitioned table with an FK to
> this one.

There is. Both ref.auto_hint and clin.suppressed_hint are
using inheritance (from audit.audit_fields). However, GNUmed
does not use inheritance for explicit partitioning but rather
similar to how classes and subclasses are used in OO languages.

>  I'm not quite seeing how come 'tup' is NULL there.  Can you
> 'print trigdata' in frame 2?

Sure, how ? :-)

(I can surely type "print trigdata" but does that already
auto-select from "frame 2" ?)

Karsten
-- 
GPG  40BE 5B0E C98E 1713 AFA6  5BC0 3BEA AC80 7D4F C89B
Ausgabeformat ist »wrapped«.
                                                                                             Tabelle »audit.audit_fields«
    Spalte     |           Typ            | Sortierfolge | NULL erlaubt? |                     Vorgabewert                      | Speicherung | Statistikziel |                      Beschreibung                      
---------------+--------------------------+--------------+---------------+------------------------------------------------------+-------------+---------------+--------------------------------------------------------
 pk_audit      | integer                  |              | not null      | nextval('audit.audit_fields_pk_audit_seq'::regclass) | plain       |               | 
 row_version   | integer                  |              | not null      | 0                                                    | plain       |               | the version of the row; mainly just a count
 modified_when | timestamp with time zone |              | not null      | CURRENT_TIMESTAMP                                    | plain       |               | when has this row been committed (created/modified)
 modified_by   | name                     |              | not null      | CURRENT_USER                                         | plain       |               | by whom has this row been committed (created/modified)
Indexe:
    "audit_fields_pkey" PRIMARY KEY, btree (pk_audit)
Check-Constraints:
    "audit_audit_fields_sane_modified_when" CHECK ((modified_when <= clock_timestamp()) IS TRUE)
Regeln:
    audit_fields_no_del AS
    ON DELETE TO audit.audit_fields DO INSTEAD NOTHING
    audit_fields_no_ins AS
    ON INSERT TO audit.audit_fields DO INSTEAD NOTHING
    audit_fields_no_upd AS
    ON UPDATE TO audit.audit_fields DO INSTEAD NOTHING
Kindtabellen: bill.bill,
              bill.bill_item,
              blobs.doc_desc,
              blobs.doc_med,
              blobs.lnk_doc2hospital_stay,
              blobs.lnk_doc_med2episode,
              cfg.report_query,
              clin.allergy_state,
              clin.clin_diag,
              clin.clin_item_type,
              clin.clin_root_item,
              clin.encounter,
              clin.episode,
              clin.external_care,
              clin.fhx_relation_type,
              clin.form_data,
              clin.health_issue,
              clin.incoming_data_unmatchable,
              clin.incoming_data_unmatched,
              clin.lnk_code2item_root,
              clin.lnk_constraint2vacc_course,
              clin.lnk_pat2vaccination_course,
              clin.lnk_substance2episode,
              clin.lnk_tst2norm,
              clin.lnk_type2item,
              clin.lnk_vaccination_course2schedule,
              clin.lnk_vaccine2inds,
              clin.patient,
              clin.review_root,
              clin.suppressed_hint,
              clin.test_org,
              clin.test_panel,
              clin.test_type,
              clin.vaccination_course,
              clin.vaccination_course_constraint,
              clin.vaccination_definition,
              clin.vaccination_schedule,
              clin.vacc_indication,
              clin.vaccine,
              clin.vaccine_batches,
              clin.vacc_route,
              clin.waiting_list,
              de_de.beh_fall_typ,
              de_de.lab_test_gnr,
              de_de.prax_geb_paid,
              dem.address,
              dem.gender_label,
              dem.identity,
              dem.identity_tag,
              dem.inbox_item_category,
              dem.inbox_item_type,
              dem.lnk_identity2ext_id,
              dem.lnk_job2person,
              dem.lnk_org_unit2comm,
              dem.lnk_org_unit2ext_id,
              dem.lnk_person2relative,
              dem.message_inbox,
              dem.occupation,
              dem.org,
              dem.org_unit,
              dem.praxis_branch,
              dem.region,
              dem.relation_types,
              dem.staff,
              dem.street,
              dem.urb,
              gm.access_log,
              ref.auto_hint,
              ref.branded_drug,
              ref.consumable_substance,
              ref.data_source,
              ref.lnk_substance2brand,
              ref.paperwork_templates,
              ref.tag_image

Ausgabeformat ist »wrapped«.
                                                                                                           Tabelle »ref.auto_hint«
        Spalte        |           Typ            | Sortierfolge | NULL erlaubt? |                     Vorgabewert                      | Speicherung | Statistikziel |                              Beschreibung                              
----------------------+--------------------------+--------------+---------------+------------------------------------------------------+-------------+---------------+------------------------------------------------------------------------
 pk_audit             | integer                  |              | not null      | nextval('audit.audit_fields_pk_audit_seq'::regclass) | plain       |               | 
 row_version          | integer                  |              | not null      | 0                                                    | plain       |               | 
 modified_when        | timestamp with time zone |              | not null      | CURRENT_TIMESTAMP                                    | plain       |               | 
 modified_by          | name                     |              | not null      | CURRENT_USER                                         | plain       |               | 
 pk                   | integer                  |              | not null      | nextval('ref.auto_hint_pk_seq'::regclass)            | plain       |               | 
 query                | text                     |              |               |                                                      | extended    |               | This query is run against the database.
 title                | text                     |              |               |                                                      | extended    |               | A short title to summarize and identify the hint.
 hint                 | text                     |              |               |                                                      | extended    |               | When the query returns true this is the hint that should be displayed.
 url                  | text                     |              |               |                                                      | extended    |               | An URL relevant to the hint.
 is_active            | boolean                  |              | not null      | true                                                 | plain       |               | Whether or not this query/hint is active.
 source               | text                     |              |               |                                                      | extended    |               | Who provided query and hint.
 lang                 | text                     |              |               |                                                      | extended    |               | The language the hint is written in.
 recommendation_query | text                     |              |               |                                                      | extended    |               | 
Indexe:
    "auto_hint_pkey" PRIMARY KEY, btree (pk)
    "ref_auto_hint_uniq_query" UNIQUE CONSTRAINT, btree (query)
    "ref_auto_hint_uniq_title" UNIQUE CONSTRAINT, btree (title)
Check-Constraints:
    "audit_audit_fields_sane_modified_when" CHECK ((modified_when <= clock_timestamp()) IS TRUE)
    "ref_auto_hint_sane_hint" CHECK (gm.is_null_or_blank_string(hint) IS FALSE)
    "ref_auto_hint_sane_lang" CHECK (gm.is_null_or_blank_string(lang) IS FALSE)
    "ref_auto_hint_sane_query" CHECK (gm.is_null_or_blank_string(query) IS FALSE)
    "ref_auto_hint_sane_rec_query" CHECK (gm.is_null_or_non_empty_string(recommendation_query))
    "ref_auto_hint_sane_source" CHECK (gm.is_null_or_blank_string(source) IS FALSE)
    "ref_auto_hint_sane_title" CHECK (gm.is_null_or_blank_string(title) IS FALSE)
    "ref_auto_hint_sane_url" CHECK (gm.is_null_or_non_empty_string(url))
Fremdschlüsselverweise von:
    TABLE "clin.suppressed_hint" CONSTRAINT "fk_clin_suppressed_hint_fk_hint" FOREIGN KEY (fk_hint) REFERENCES ref.auto_hint(pk) ON UPDATE RESTRICT ON DELETE CASCADE
Trigger:
    zt_del_auto_hint BEFORE DELETE ON ref.auto_hint FOR EACH ROW EXECUTE PROCEDURE audit.ft_del_auto_hint()
    zt_ins_auto_hint BEFORE INSERT ON ref.auto_hint FOR EACH ROW EXECUTE PROCEDURE audit.ft_ins_auto_hint()
    zt_upd_auto_hint BEFORE UPDATE ON ref.auto_hint FOR EACH ROW EXECUTE PROCEDURE audit.ft_upd_auto_hint()
Erbt von: audit.audit_fields

Ausgabeformat ist »wrapped«.
                                                                                               Tabelle »clin.suppressed_hint«
     Spalte      |           Typ            | Sortierfolge | NULL erlaubt? |                     Vorgabewert                      | Speicherung | Statistikziel |                       Beschreibung                        
-----------------+--------------------------+--------------+---------------+------------------------------------------------------+-------------+---------------+-----------------------------------------------------------
 pk_audit        | integer                  |              | not null      | nextval('audit.audit_fields_pk_audit_seq'::regclass) | plain       |               | 
 row_version     | integer                  |              | not null      | 0                                                    | plain       |               | 
 modified_when   | timestamp with time zone |              | not null      | CURRENT_TIMESTAMP                                    | plain       |               | 
 modified_by     | name                     |              | not null      | CURRENT_USER                                         | plain       |               | 
 pk              | integer                  |              | not null      | nextval('clin.suppressed_hint_pk_seq'::regclass)     | plain       |               | 
 fk_encounter    | integer                  |              | not null      |                                                      | plain       |               | the encounter during which this hint was first suppressed
 fk_hint         | integer                  |              | not null      |                                                      | plain       |               | the hint that is suppressed
 suppressed_by   | name                     |              | not null      | CURRENT_USER                                         | plain       |               | who suppressed this hint
 suppressed_when | timestamp with time zone |              | not null      | statement_timestamp()                                | plain       |               | when was this hint suppressed
 rationale       | text                     |              |               |                                                      | extended    |               | rationale on why this hint is suppressed in this patient
 md5_sum         | text                     |              |               |                                                      | extended    |               | md5 of relevant fields of this hint
Indexe:
    "suppressed_hint_pkey" PRIMARY KEY, btree (pk)
    "idx_suppressed_hint_fk_encounter" btree (fk_encounter)
    "idx_suppressed_hint_fk_hint" btree (fk_hint)
Check-Constraints:
    "audit_audit_fields_sane_modified_when" CHECK ((modified_when <= clock_timestamp()) IS TRUE)
    "clin_suppressed_hint_sane_by" CHECK (length(suppressed_by::text) > 0)
    "clin_suppressed_hint_sane_md5" CHECK (gm.is_null_or_blank_string(md5_sum) IS FALSE)
    "clin_suppressed_hint_sane_rationale" CHECK (gm.is_null_or_blank_string(rationale) IS FALSE)
Fremdschlüssel-Constraints:
    "fk_clin_suppressed_hint_fk_encounter" FOREIGN KEY (fk_encounter) REFERENCES clin.encounter(pk) ON UPDATE RESTRICT ON DELETE RESTRICT
    "fk_clin_suppressed_hint_fk_hint" FOREIGN KEY (fk_hint) REFERENCES ref.auto_hint(pk) ON UPDATE RESTRICT ON DELETE CASCADE
Trigger:
    tr_sanity_check_uniq_hint_per_pat_ins_upd AFTER INSERT OR UPDATE ON clin.suppressed_hint DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE clin.trf_sanity_check_uniq_hint_per_pat_ins_upd()
    zt_del_suppressed_hint BEFORE DELETE ON clin.suppressed_hint FOR EACH ROW EXECUTE PROCEDURE audit.ft_del_suppressed_hint()
    zt_ins_suppressed_hint BEFORE INSERT ON clin.suppressed_hint FOR EACH ROW EXECUTE PROCEDURE audit.ft_ins_suppressed_hint()
    zt_upd_suppressed_hint BEFORE UPDATE ON clin.suppressed_hint FOR EACH ROW EXECUTE PROCEDURE audit.ft_upd_suppressed_hint()
    zzz_tr_announce_clin_suppressed_hint_del AFTER DELETE ON clin.suppressed_hint DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE gm.trf_announce_table_del('operation=DELETE::table=clin.suppressed_hint::PK name=pk', 'select $1.pk', 'select fk_patient from clin.encounter where pk = $1.fk_encounter limit 1')
    zzz_tr_announce_clin_suppressed_hint_ins_upd AFTER INSERT OR UPDATE ON clin.suppressed_hint DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE gm.trf_announce_table_ins_upd('table=clin.suppressed_hint::PK name=pk', 'select $1.pk', 'select fk_patient from clin.encounter where pk = $1.fk_encounter limit 1')
Erbt von: audit.audit_fields


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux