Commit 5ce63f4
committed
Avoid an Assert failure in deconstruct_array() by making get_attstatsslot()
use the actual element type of the array it's disassembling, rather than
trusting the type OID passed in by its caller. This is needed because
sometimes the planner passes in a type OID that's only binary-compatible
with the target column's type, rather than being an exact match. Per an
example from Bernd Helmle.
Possibly we should refactor get_attstatsslot/free_attstatsslot to not expect
the caller to supply type ID data at all, but for now I'll just do the
minimum-change fix.
Back-patch to 7.4. Bernd's test case only crashes back to 8.0, but since
these subroutines are the same in 7.4, I suspect there may be variant
cases that would crash 7.4 as well.1 parent 2b8a624 commit 5ce63f4
1 file changed
+17
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
2463 | 2463 | | |
2464 | 2464 | | |
2465 | 2465 | | |
| 2466 | + | |
| 2467 | + | |
| 2468 | + | |
| 2469 | + | |
2466 | 2470 | | |
2467 | 2471 | | |
2468 | 2472 | | |
| |||
2478 | 2482 | | |
2479 | 2483 | | |
2480 | 2484 | | |
| 2485 | + | |
2481 | 2486 | | |
2482 | 2487 | | |
2483 | 2488 | | |
| |||
2503 | 2508 | | |
2504 | 2509 | | |
2505 | 2510 | | |
2506 | | - | |
2507 | | - | |
| 2511 | + | |
| 2512 | + | |
| 2513 | + | |
| 2514 | + | |
| 2515 | + | |
| 2516 | + | |
| 2517 | + | |
| 2518 | + | |
| 2519 | + | |
2508 | 2520 | | |
2509 | | - | |
| 2521 | + | |
2510 | 2522 | | |
2511 | 2523 | | |
2512 | 2524 | | |
2513 | 2525 | | |
2514 | | - | |
| 2526 | + | |
2515 | 2527 | | |
2516 | 2528 | | |
2517 | 2529 | | |
| |||
0 commit comments