Commit 7f0336e
committed
fix: recover RETURN NEXT variable when retvarno is lost
Thread enclosingForVarName through FOR loop contexts and add
inferReturnNextVar() to recover the variable from:
1. Enclosing FOR loop variable (most common pattern)
2. Single user-declared variable (SETOF scalar, no loop)
Only infers when returnInfo is provided (kind='setof'), preventing
false inference on OUT-param functions where bare RETURN NEXT is
correct.
Also adds extractReturnInfo() to the test infrastructure so round-trip
tests can extract the function's return type from the CREATE FUNCTION
SQL and pass it to the deparser.
Removes fixtures 47-48 from KNOWN_FAILING — they now pass.
Updates snapshot tests from bug-demonstration to fix-verification.1 parent b8b7643 commit 7f0336e
5 files changed
Lines changed: 184 additions & 28 deletions
File tree
- packages/plpgsql-deparser
- __tests__
- __snapshots__
- src
- test-utils
Lines changed: 25 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
183 | 183 | | |
184 | 184 | | |
185 | 185 | | |
186 | | - | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
187 | 198 | | |
188 | 199 | | |
189 | 200 | | |
| |||
194 | 205 | | |
195 | 206 | | |
196 | 207 | | |
197 | | - | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
198 | 220 | | |
199 | 221 | | |
200 | 222 | | |
201 | | - | |
| 223 | + | |
202 | 224 | | |
203 | 225 | | |
204 | 226 | | |
| |||
Lines changed: 47 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1022 | 1022 | | |
1023 | 1023 | | |
1024 | 1024 | | |
1025 | | - | |
1026 | | - | |
| 1025 | + | |
| 1026 | + | |
1027 | 1027 | | |
1028 | 1028 | | |
1029 | 1029 | | |
| |||
1036 | 1036 | | |
1037 | 1037 | | |
1038 | 1038 | | |
| 1039 | + | |
1039 | 1040 | | |
1040 | | - | |
| 1041 | + | |
1041 | 1042 | | |
1042 | | - | |
1043 | | - | |
1044 | | - | |
1045 | | - | |
| 1043 | + | |
1046 | 1044 | | |
1047 | 1045 | | |
1048 | | - | |
| 1046 | + | |
1049 | 1047 | | |
1050 | 1048 | | |
1051 | 1049 | | |
| |||
1054 | 1052 | | |
1055 | 1053 | | |
1056 | 1054 | | |
| 1055 | + | |
1057 | 1056 | | |
1058 | | - | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
1059 | 1077 | | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
1060 | 1094 | | |
1061 | | - | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
1062 | 1099 | | |
1063 | | - | |
1064 | 1100 | | |
1065 | 1101 | | |
1066 | 1102 | | |
Lines changed: 1 addition & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
| 43 | + | |
47 | 44 | | |
48 | 45 | | |
49 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| 89 | + | |
| 90 | + | |
89 | 91 | | |
90 | 92 | | |
91 | 93 | | |
| |||
1179 | 1181 | | |
1180 | 1182 | | |
1181 | 1183 | | |
1182 | | - | |
| 1184 | + | |
1183 | 1185 | | |
1184 | 1186 | | |
1185 | 1187 | | |
| |||
1210 | 1212 | | |
1211 | 1213 | | |
1212 | 1214 | | |
1213 | | - | |
| 1215 | + | |
1214 | 1216 | | |
1215 | 1217 | | |
1216 | 1218 | | |
| |||
1246 | 1248 | | |
1247 | 1249 | | |
1248 | 1250 | | |
1249 | | - | |
| 1251 | + | |
1250 | 1252 | | |
1251 | 1253 | | |
1252 | 1254 | | |
| |||
1283 | 1285 | | |
1284 | 1286 | | |
1285 | 1287 | | |
1286 | | - | |
| 1288 | + | |
1287 | 1289 | | |
1288 | 1290 | | |
1289 | 1291 | | |
| |||
1363 | 1365 | | |
1364 | 1366 | | |
1365 | 1367 | | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
1366 | 1375 | | |
1367 | 1376 | | |
1368 | 1377 | | |
1369 | | - | |
| 1378 | + | |
1370 | 1379 | | |
1371 | 1380 | | |
1372 | 1381 | | |
1373 | | - | |
| 1382 | + | |
1374 | 1383 | | |
1375 | 1384 | | |
1376 | 1385 | | |
1377 | 1386 | | |
1378 | | - | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
1379 | 1394 | | |
1380 | 1395 | | |
1381 | 1396 | | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
| 1428 | + | |
| 1429 | + | |
| 1430 | + | |
| 1431 | + | |
| 1432 | + | |
| 1433 | + | |
| 1434 | + | |
| 1435 | + | |
| 1436 | + | |
| 1437 | + | |
| 1438 | + | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
1382 | 1445 | | |
1383 | 1446 | | |
1384 | 1447 | | |
| |||
1718 | 1781 | | |
1719 | 1782 | | |
1720 | 1783 | | |
1721 | | - | |
| 1784 | + | |
1722 | 1785 | | |
1723 | 1786 | | |
1724 | 1787 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
328 | 328 | | |
329 | 329 | | |
330 | 330 | | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
331 | 368 | | |
332 | 369 | | |
333 | 370 | | |
| |||
368 | 405 | | |
369 | 406 | | |
370 | 407 | | |
371 | | - | |
| 408 | + | |
| 409 | + | |
372 | 410 | | |
373 | 411 | | |
374 | 412 | | |
| |||
0 commit comments