Thread
-
Re: CREATE TABLE LIKE INCLUDING TRIGGERS
jian he <jian.universality@gmail.com> — 2025-12-29T01:26:06Z
hi. in CreateTrigger, we have comments: * relOid, if nonzero, is the relation on which the trigger should be * created. If zero, the name provided in the statement will be looked up. * * refRelOid, if nonzero, is the relation to which the constraint trigger * refers. If zero, the constraint relation name provided in the statement * will be looked up as needed. We can put these two parameters into the CreateTrigStmt. change it from CreateTrigger(CreateTrigStmt *stmt, const char *queryString, Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, Oid funcoid, Oid parentTriggerOid, Node *whenClause, bool isInternal, bool in_partition) to: CreateTrigger(CreateTrigStmt *stmt, const char *queryString, Oid constraintOid, Oid indexOid, Oid funcoid, Oid parentTriggerOid, Node *whenClause, bool isInternal, bool in_partition) This is needed, ProcessUtilitySlow->CreateTrigger don't have the new target table relation OID information, using CreateTrigStmt.relation would cause repeated name lookup issue. v3-0001 and v3-0002 refactor the CreateTrigger function. The parameters relOid and refRelOid are removed and instead added to the CreateTrigStmt structure. These two patch (v3-0001, v3-0002) will also be used in [1] [1]: https://postgr.es/m/CACJufxGkqYrmwMdvUOUPet0443oUTgF_dKCpw3TfJiutfuywAQ@mail.gmail.com v3-0003 is for CREATE TABLE LIKE INCLUDING TRIGGERS. -- jian https://www.enterprisedb.com/