1
0
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:
Bruce Momjian
1996-10-13 04:26:39 +00:00
parent bef3c89a1c
commit abb1b3e770
3 changed files with 17 additions and 11 deletions

View File

@@ -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;