|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.68 2000/06/28 03:31:05 tgl Exp $ |
| 11 | + * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.69 2000/07/02 02:28:38 tgl Exp $ |
12 | 12 | *
|
13 | 13 | * NOTES
|
14 | 14 | *Transaction aborts can now occur two ways:
|
@@ -749,6 +749,7 @@ AtCommit_Memory()
|
749 | 749 | *Release all transaction-local memory.
|
750 | 750 | * ----------------
|
751 | 751 | */
|
| 752 | +Assert(TopTransactionContext!=NULL); |
752 | 753 | MemoryContextDelete(TopTransactionContext);
|
753 | 754 | TopTransactionContext=NULL;
|
754 | 755 | TransactionCommandContext=NULL;
|
@@ -825,17 +826,26 @@ AtAbort_Memory()
|
825 | 826 | {
|
826 | 827 | /* ----------------
|
827 | 828 | *Make sure we are in a valid context (not a child of
|
828 |
| - *TransactionCommandContext...) |
| 829 | + *TransactionCommandContext...). Note that it is possible |
| 830 | + *for this code to be called when we aren't in a transaction |
| 831 | + *at all; go directly to TopMemoryContext in that case. |
829 | 832 | * ----------------
|
830 | 833 | */
|
831 |
| -MemoryContextSwitchTo(TransactionCommandContext); |
| 834 | +if (TransactionCommandContext!=NULL) |
| 835 | +{ |
| 836 | +MemoryContextSwitchTo(TransactionCommandContext); |
832 | 837 |
|
833 |
| -/* ---------------- |
834 |
| - *We do not want to destroy transaction contexts yet, |
835 |
| - *but it should be OK to delete any command-local memory. |
836 |
| - * ---------------- |
837 |
| - */ |
838 |
| -MemoryContextResetAndDeleteChildren(TransactionCommandContext); |
| 838 | +/* ---------------- |
| 839 | + *We do not want to destroy transaction contexts yet, |
| 840 | + *but it should be OK to delete any command-local memory. |
| 841 | + * ---------------- |
| 842 | + */ |
| 843 | +MemoryContextResetAndDeleteChildren(TransactionCommandContext); |
| 844 | +} |
| 845 | +else |
| 846 | +{ |
| 847 | +MemoryContextSwitchTo(TopMemoryContext); |
| 848 | +} |
839 | 849 | }
|
840 | 850 |
|
841 | 851 |
|
@@ -863,7 +873,8 @@ AtCleanup_Memory()
|
863 | 873 | *Release all transaction-local memory.
|
864 | 874 | * ----------------
|
865 | 875 | */
|
866 |
| -MemoryContextDelete(TopTransactionContext); |
| 876 | +if (TopTransactionContext!=NULL) |
| 877 | +MemoryContextDelete(TopTransactionContext); |
867 | 878 | TopTransactionContext=NULL;
|
868 | 879 | TransactionCommandContext=NULL;
|
869 | 880 | }
|
|