- Notifications
You must be signed in to change notification settings - Fork5
Commit1d5e7a6
committed
Repair logic flaw in cost estimator: cost_nestloop() was estimating CPU
costs using the inner path's parent->rows count as the number of tuplesprocessed per inner scan iteration. This is wrong when we are using aninner indexscan with indexquals based on join clauses, because the rowscount in a Relation node reflects the selectivity of the restrictionclauses for that rel only. Upshot was that if join clause was veryselective, we'd drastically overestimate the true cost of the join.Fix is to calculate correct output-rows estimate for an inner indexscanwhen the IndexPath node is created and save it in the path node.Change of path node doesn't require initdb, since path nodes don'tappear in saved rules.1 parentd825e55 commit1d5e7a6
File tree
11 files changed
+83
-63
lines changed- src
- backend
- nodes
- optimizer
- path
- plan
- util
- include
- nodes
- optimizer
11 files changed
+83
-63
lines changedLines changed: 2 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
1135 | 1135 |
| |
1136 | 1136 |
| |
1137 | 1137 |
| |
| 1138 | + | |
1138 | 1139 |
| |
1139 | 1140 |
| |
1140 | 1141 |
| |
|
Lines changed: 4 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
375 | 375 |
| |
376 | 376 |
| |
377 | 377 |
| |
| 378 | + | |
| 379 | + | |
| 380 | + | |
378 | 381 |
| |
379 | 382 |
| |
380 | 383 |
| |
|
Lines changed: 4 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
6 | 6 |
| |
7 | 7 |
| |
8 | 8 |
| |
9 |
| - | |
| 9 | + | |
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
| |||
1019 | 1019 |
| |
1020 | 1020 |
| |
1021 | 1021 |
| |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
1022 | 1025 |
| |
1023 | 1026 |
| |
1024 | 1027 |
| |
|
Lines changed: 5 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
1510 | 1510 |
| |
1511 | 1511 |
| |
1512 | 1512 |
| |
| 1513 | + | |
| 1514 | + | |
| 1515 | + | |
| 1516 | + | |
1513 | 1517 |
| |
1514 | 1518 |
| |
1515 | 1519 |
| |
|
Lines changed: 20 additions & 13 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
42 | 42 |
| |
43 | 43 |
| |
44 | 44 |
| |
45 |
| - | |
| 45 | + | |
46 | 46 |
| |
47 | 47 |
| |
48 | 48 |
| |
| |||
202 | 202 |
| |
203 | 203 |
| |
204 | 204 |
| |
205 |
| - | |
| 205 | + | |
206 | 206 |
| |
207 | 207 |
| |
208 | 208 |
| |
| |||
281 | 281 |
| |
282 | 282 |
| |
283 | 283 |
| |
284 |
| - | |
285 |
| - | |
286 |
| - | |
287 |
| - | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
288 | 291 |
| |
289 |
| - | |
| 292 | + | |
290 | 293 |
| |
291 | 294 |
| |
292 | 295 |
| |
| |||
418 | 421 |
| |
419 | 422 |
| |
420 | 423 |
| |
421 |
| - | |
422 |
| - | |
423 | 424 |
| |
424 | 425 |
| |
425 | 426 |
| |
426 | 427 |
| |
427 | 428 |
| |
428 |
| - | |
429 |
| - | |
| 429 | + | |
430 | 430 |
| |
431 | 431 |
| |
432 | 432 |
| |
| |||
447 | 447 |
| |
448 | 448 |
| |
449 | 449 |
| |
450 |
| - | |
451 |
| - | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
452 | 459 |
| |
453 | 460 |
| |
454 | 461 |
| |
|
Lines changed: 21 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
9 | 9 |
| |
10 | 10 |
| |
11 | 11 |
| |
12 |
| - | |
| 12 | + | |
13 | 13 |
| |
14 | 14 |
| |
15 | 15 |
| |
| |||
1454 | 1454 |
| |
1455 | 1455 |
| |
1456 | 1456 |
| |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
| 1476 | + | |
1457 | 1477 |
| |
1458 | 1478 |
| |
1459 | 1479 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
99 | 99 |
| |
100 | 100 |
| |
101 | 101 |
| |
| 102 | + | |
102 | 103 |
| |
| 104 | + | |
103 | 105 |
| |
104 | 106 |
| |
105 | 107 |
| |
|
Lines changed: 3 additions & 37 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
13 |
| - | |
| 13 | + | |
14 | 14 |
| |
15 | 15 |
| |
16 | 16 |
| |
| |||
314 | 314 |
| |
315 | 315 |
| |
316 | 316 |
| |
317 |
| - | |
318 | 317 |
| |
319 | 318 |
| |
320 | 319 |
| |
| |||
350 | 349 |
| |
351 | 350 |
| |
352 | 351 |
| |
353 |
| - | |
354 |
| - | |
355 |
| - | |
356 |
| - | |
357 |
| - | |
358 |
| - | |
359 |
| - | |
360 |
| - | |
361 |
| - | |
362 |
| - | |
363 |
| - | |
364 | 352 |
| |
365 |
| - | |
366 |
| - | |
367 | 353 |
| |
368 | 354 |
| |
369 | 355 |
| |
| |||
383 | 369 |
| |
384 | 370 |
| |
385 | 371 |
| |
386 |
| - | |
387 |
| - | |
388 |
| - | |
389 |
| - | |
390 |
| - | |
391 |
| - | |
392 |
| - | |
393 |
| - | |
394 |
| - | |
395 | 372 |
| |
396 | 373 |
| |
397 | 374 |
| |
| |||
404 | 381 |
| |
405 | 382 |
| |
406 | 383 |
| |
407 |
| - | |
408 |
| - | |
409 |
| - | |
410 |
| - | |
411 |
| - | |
412 |
| - | |
413 |
| - | |
414 |
| - | |
415 |
| - | |
416 | 384 |
| |
417 | 385 |
| |
418 | 386 |
| |
| |||
433 | 401 |
| |
434 | 402 |
| |
435 | 403 |
| |
436 |
| - | |
437 |
| - | |
438 |
| - | |
439 |
| - | |
| 404 | + | |
| 405 | + | |
440 | 406 |
| |
441 | 407 |
| |
442 | 408 |
| |
|
Lines changed: 10 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
337 | 337 |
| |
338 | 338 |
| |
339 | 339 |
| |
| 340 | + | |
340 | 341 |
| |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
341 | 348 |
| |
| 349 | + | |
342 | 350 |
| |
343 | 351 |
| |
344 | 352 |
| |
| |||
400 | 408 |
| |
401 | 409 |
| |
402 | 410 |
| |
403 |
| - | |
404 |
| - | |
| 411 | + | |
405 | 412 |
| |
406 | 413 |
| |
407 | 414 |
| |
|
Lines changed: 9 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
252 | 252 |
| |
253 | 253 |
| |
254 | 254 |
| |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
255 | 261 |
| |
256 | 262 |
| |
257 | 263 |
| |
| |||
260 | 266 |
| |
261 | 267 |
| |
262 | 268 |
| |
263 |
| - | |
| 269 | + | |
| 270 | + | |
264 | 271 |
| |
265 | 272 |
| |
266 | 273 |
| |
|
Lines changed: 2 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
58 | 58 |
| |
59 | 59 |
| |
60 | 60 |
| |
61 |
| - | |
| 61 | + | |
62 | 62 |
| |
63 | 63 |
| |
64 | 64 |
| |
|
0 commit comments
Comments
(0)