From: | Noah Misch <noah(at)leadboat(dot)com> |
---|---|
To: | Zhihong Yu <zyu(at)yugabyte(dot)com> |
Cc: | PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: restoring user id and SecContext before logging error in ri_PlanCheck |
Date: | 2022-12-05 00:56:29 |
Message-ID: | 20221205005629.GA420344@rfd.leadboat.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Nov 02, 2022 at 08:00:58AM -0700, Zhihong Yu wrote:
> Looking down in ri_PerformCheck(), I see there may be case where error from
> SPI_execute_snapshot() would skip restoring UID.
> @@ -2405,13 +2405,19 @@ ri_PerformCheck(const RI_ConstraintInfo *riinfo,
> SECURITY_NOFORCE_RLS);
>
> /* Finally we can run the query. */
> - spi_result = SPI_execute_snapshot(qplan,
> - vals, nulls,
> - test_snapshot, crosscheck_snapshot,
> - false, false, limit);
> -
> - /* Restore UID and security context */
> - SetUserIdAndSecContext(save_userid, save_sec_context);
> + PG_TRY();
> + {
> + spi_result = SPI_execute_snapshot(qplan,
> + vals, nulls,
> + test_snapshot, crosscheck_snapshot,
> + false, false, limit);
> + }
> + PG_FINALLY();
> + {
> + /* Restore UID and security context */
> + SetUserIdAndSecContext(save_userid, save_sec_context);
> + }
> + PG_END_TRY();
After an error, AbortSubTransaction() or AbortTransaction() will restore
userid and sec_context. That makes such changes unnecessary.
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2022-12-05 01:03:55 | Re: Add LSN along with offset to error messages reported for WAL file read/write/validate header failures |
Previous Message | David Rowley | 2022-12-04 23:03:26 | Re: Improve performance of pg_strtointNN functions |