forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitd9ffccf
committed
Avoid crash after function syntax error in a replication worker.
If a syntax error occurred in a SQL-language or PL/pgSQL-languageCREATE FUNCTION or DO command executed in a logical replication worker,we'd suffer a null pointer dereference or assertion failure. Thatseems like a rather contrived case, but nonetheless worth fixing.The cause is that function_parse_error_transpose assumes it must beexecuting within the context of a Portal, but logical/worker.cdoesn't create a Portal since it's not running the standard executor.We can just back off the hard Assert check and make it fail gracefullyif there's not an ActivePortal. (I have a feeling that the aggressivecheck here was my fault originally, probably because I wasn't sure ifthe case would always hold and wanted to find out. Well, now we know.)The hazard seems to exist in all branches that have logical replication,so back-patch to v10.Maxim Orlov, Anton Melnikov, Masahiko Sawada, Tom LaneDiscussion:https://postgr.es/m/b570c367-ba38-95f3-f62d-5f59b9808226@inbox.ruDiscussion:https://postgr.es/m/adf0452f-8c6b-7def-d35e-ab516c80088e@inbox.ru1 parent5ecf836 commitd9ffccf
1 file changed
+15
-5
lines changedLines changed: 15 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
990 | 990 |
| |
991 | 991 |
| |
992 | 992 |
| |
993 |
| - | |
994 | 993 |
| |
995 | 994 |
| |
996 | 995 |
| |
| |||
1008 | 1007 |
| |
1009 | 1008 |
| |
1010 | 1009 |
| |
1011 |
| - | |
1012 |
| - | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
1013 | 1013 |
| |
1014 |
| - | |
1015 |
| - | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
1016 | 1026 |
| |
1017 | 1027 |
| |
1018 | 1028 |
| |
|
0 commit comments
Comments
(0)