old_context = MemoryContextSwitchTo(session_context->memory_context);
+ pool_temp_tables_dump();
+
+Retry:
foreach(cell, session_context->temp_tables)
{
POOL_TEMP_TABLE * table = (POOL_TEMP_TABLE *)lfirst(cell);
ereport(DEBUG1,
(errmsg("pool_temp_tables_commit_pending: remove: %s", table->tablename)));
session_context->temp_tables = list_delete_ptr(session_context->temp_tables, table);
+ pool_temp_tables_dump();
+ goto Retry;
}
}
old_context = MemoryContextSwitchTo(session_context->memory_context);
+ pool_temp_tables_dump();
+
+Retry:
foreach(cell, session_context->temp_tables)
{
POOL_TEMP_TABLE * table = (POOL_TEMP_TABLE *)lfirst(cell);
(errmsg("pool_temp_tables_remove_pending: remove: %s", table->tablename)));
session_context->temp_tables = list_delete_ptr(session_context->temp_tables, table);
+ pool_temp_tables_dump();
+ goto Retry;
}
}
MemoryContextSwitchTo(old_context);
}
+
+void
+pool_temp_tables_dump(void)
+{
+#ifdef TEMP_TABLES_DEBUG
+ ListCell *cell;
+
+ if (!session_context)
+ ereport(ERROR,
+ (errmsg("pool_temp_tables_dump: session context is not initialized")));
+
+ foreach(cell, session_context->temp_tables)
+ {
+ POOL_TEMP_TABLE * table = (POOL_TEMP_TABLE *)lfirst(cell);
+ ereport(DEBUG1,
+ (errmsg("pool_temp_tables_dump: table %s state: %d",
+ table->tablename, table->state)));
+ }
+#endif
+}
extern void pool_temp_tables_delete(char * tablename, POOL_TEMP_TABLE_STATE state);
extern void pool_temp_tables_commit_pending(void);
extern void pool_temp_tables_remove_pending(void);
+extern void pool_temp_tables_dump(void);
#ifdef NOT_USED
extern void pool_set_preferred_master_node_id(int node_id);