- Notifications
You must be signed in to change notification settings - Fork4.9k
Commit5f3cec7
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 parent19cefeb commit5f3cec7
1 file changed
+15
-5
lines changedLines changed: 15 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
977 | 977 |
| |
978 | 978 |
| |
979 | 979 |
| |
980 |
| - | |
981 | 980 |
| |
982 | 981 |
| |
983 | 982 |
| |
| |||
995 | 994 |
| |
996 | 995 |
| |
997 | 996 |
| |
998 |
| - | |
999 |
| - | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
1000 | 1000 |
| |
1001 |
| - | |
1002 |
| - | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
1003 | 1013 |
| |
1004 | 1014 |
| |
1005 | 1015 |
| |
|
0 commit comments
Comments
(0)