forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitb00f342
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 parent5046708 commitb00f342
1 file changed
+15
-5
lines changedLines changed: 15 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
971 | 971 |
| |
972 | 972 |
| |
973 | 973 |
| |
974 |
| - | |
975 | 974 |
| |
976 | 975 |
| |
977 | 976 |
| |
| |||
989 | 988 |
| |
990 | 989 |
| |
991 | 990 |
| |
992 |
| - | |
993 |
| - | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
994 | 994 |
| |
995 |
| - | |
996 |
| - | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
997 | 1007 |
| |
998 | 1008 |
| |
999 | 1009 |
| |
|
0 commit comments
Comments
(0)