mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
I checked the alter table code, and started suspecting the relation
cache. I found if I manually added a line to flush the whole relation cache, the assert error disappeared. Looking through the code, I found that the relation cache is flushed at the end of each query if the reference count is zero for the relation. However, printf's showed that the rd_relcnt(reference count) for the accessed query was not returning to zero after each query. It turns out the parser was doing a heap_ropen in parser/analyze.c to get information about the table's columns, but was not doing a heap_close. This was causing the query after the ALTER TABLE ADD to see the old table structure, and the executor's assert was reporting the problem.
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: parse_state.h,v 1.1 1996/08/28 07:23:56 scrappy Exp $
|
||||
* $Id: parse_state.h,v 1.2 1996/10/13 04:26:39 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -16,7 +16,7 @@
|
||||
typedef struct ParseState {
|
||||
int p_last_resno;
|
||||
List *p_target_resnos;
|
||||
Relation parser_current_rel;
|
||||
Relation p_parser_current_rel;
|
||||
List *p_rtable;
|
||||
int p_query_is_rule;
|
||||
int p_numAgg;
|
||||
|
Reference in New Issue
Block a user