forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit3b94b3a
committed
logical decoding: Fix handling of large old tuples with replica identity full.
When decoding the old version of an UPDATE or DELETE change, and if thattuple was bigger than MaxHeapTupleSize, we either Assert'ed out, orfailed in more subtle ways in non-assert builds. Normally individualtuples aren't bigger than MaxHeapTupleSize, with big datums toasted.But that's not the case for the old version of a tuple for logicaldecoding; the replica identity is logged as one piece. With the defaultreplica identity btree limits that to small tuples, but that's not thecase for FULL.Change the tuple buffer infrastructure to separate allocate over-largetuples, instead of always going through the slab cache.This unfortunately requires changing the ReorderBufferTupleBufdefinition, we need to store the allocated size someplace. To avoidrequiring output plugins to recompile, don't store HeapTupleHeaderDatadirectly after HeapTupleData, but point to it via t_data; that leavesrooms for the allocated size. As there's no reason for an output pluginto look at ReorderBufferTupleBuf->t_data.header, remove the field. Itwas just a minor convenience having it directly accessible.Reported-By: Adam DratwińskiDiscussion: CAKg6ypLd7773AOX4DiOGRwQk1TVOQKhNwjYiVjJnpq8Wo+i62Q@mail.gmail.com1 parenta50f50a commit3b94b3a
File tree
5 files changed
+236
-72
lines changed- contrib/test_decoding
- expected
- sql
- src
- backend/replication/logical
- include/replication
5 files changed
+236
-72
lines changedLines changed: 58 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
285 | 285 |
| |
286 | 286 |
| |
287 | 287 |
| |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
288 | 346 |
| |
289 | 347 |
| |
290 | 348 |
| |
|
Lines changed: 37 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
260 | 260 |
| |
261 | 261 |
| |
262 | 262 |
| |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
263 | 300 |
|
Lines changed: 48 additions & 34 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
625 | 625 |
| |
626 | 626 |
| |
627 | 627 |
| |
| 628 | + | |
| 629 | + | |
628 | 630 |
| |
629 | 631 |
| |
630 |
| - | |
| 632 | + | |
| 633 | + | |
631 | 634 |
| |
632 | 635 |
| |
633 |
| - | |
634 |
| - | |
| 636 | + | |
635 | 637 |
| |
636 | 638 |
| |
637 | 639 |
| |
| |||
650 | 652 |
| |
651 | 653 |
| |
652 | 654 |
| |
653 |
| - | |
654 | 655 |
| |
655 | 656 |
| |
656 | 657 |
| |
| |||
669 | 670 |
| |
670 | 671 |
| |
671 | 672 |
| |
| 673 | + | |
| 674 | + | |
| 675 | + | |
672 | 676 |
| |
673 | 677 |
| |
674 | 678 |
| |
675 | 679 |
| |
676 | 680 |
| |
677 |
| - | |
| 681 | + | |
678 | 682 |
| |
679 |
| - | |
680 |
| - | |
681 |
| - | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
682 | 687 |
| |
683 | 688 |
| |
684 | 689 |
| |
| |||
687 | 692 |
| |
688 | 693 |
| |
689 | 694 |
| |
| 695 | + | |
| 696 | + | |
| 697 | + | |
690 | 698 |
| |
691 | 699 |
| |
692 | 700 |
| |
693 |
| - | |
| 701 | + | |
694 | 702 |
| |
695 |
| - | |
696 |
| - | |
697 |
| - | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
698 | 707 |
| |
699 | 708 |
| |
700 | 709 |
| |
| |||
732 | 741 |
| |
733 | 742 |
| |
734 | 743 |
| |
| 744 | + | |
| 745 | + | |
735 | 746 |
| |
736 | 747 |
| |
737 |
| - | |
| 748 | + | |
| 749 | + | |
738 | 750 |
| |
739 | 751 |
| |
740 |
| - | |
741 |
| - | |
| 752 | + | |
742 | 753 |
| |
743 | 754 |
| |
744 | 755 |
| |
| |||
795 | 806 |
| |
796 | 807 |
| |
797 | 808 |
| |
798 |
| - | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
799 | 817 |
| |
800 | 818 |
| |
| 819 | + | |
801 | 820 |
| |
802 | 821 |
| |
803 | 822 |
| |
804 | 823 |
| |
805 |
| - | |
806 |
| - | |
807 |
| - | |
808 |
| - | |
809 | 824 |
| |
810 | 825 |
| |
811 | 826 |
| |
812 | 827 |
| |
813 | 828 |
| |
814 |
| - | |
| 829 | + | |
815 | 830 |
| |
816 | 831 |
| |
817 | 832 |
| |
818 |
| - | |
| 833 | + | |
819 | 834 |
| |
820 |
| - | |
821 |
| - | |
| 835 | + | |
822 | 836 |
| |
823 | 837 |
| |
824 | 838 |
| |
825 | 839 |
| |
826 |
| - | |
827 |
| - | |
828 |
| - | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
829 | 843 |
| |
830 | 844 |
| |
831 | 845 |
| |
| |||
856 | 870 |
| |
857 | 871 |
| |
858 | 872 |
| |
| 873 | + | |
859 | 874 |
| |
860 | 875 |
| |
861 |
| - | |
862 | 876 |
| |
863 | 877 |
| |
| 878 | + | |
864 | 879 |
| |
865 | 880 |
| |
866 | 881 |
| |
867 | 882 |
| |
868 | 883 |
| |
869 | 884 |
| |
870 |
| - | |
871 | 885 |
| |
872 | 886 |
| |
873 | 887 |
| |
874 | 888 |
| |
875 | 889 |
| |
876 | 890 |
| |
877 |
| - | |
| 891 | + | |
878 | 892 |
| |
879 |
| - | |
| 893 | + | |
880 | 894 |
| |
881 | 895 |
| |
882 | 896 |
| |
883 |
| - | |
884 |
| - | |
885 |
| - | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
886 | 900 |
|
0 commit comments
Comments
(0)