peloton icon indicating copy to clipboard operation
peloton copied to clipboard

Binder Infinite recursive calls of GetColumnObjects if the column tuple in pg_attribute is being modified and not committed

Open Dingshilun opened this issue 6 years ago • 4 comments

Hi, we are working on Alter Table. And if we execute any txns like this: T1 T2 start
start Alter column (rename) select */select that modified column At this time, tuples belong to the table are modified but not committed. Basically any txns that read them would abort. Txn2 would be trapped in recursive GetColumnObjects() and finally get stack overflow. I think it is because that Binder doesn't handle the abort information from GetColumnObjects()'s scan executor and will keep trying. The entry of the recursive calls is binder_node_visitor's Visit().

Dingshilun avatar May 10 '18 22:05 Dingshilun

Did you try using the fix from #1322?

poojanilangekar avatar May 11 '18 00:05 poojanilangekar

No I haven't. I will try using it. Will it be merged into master?

Dingshilun avatar May 11 '18 01:05 Dingshilun

Eventually, yes. Not sure it will be merged before the 721 presentation day.

poojanilangekar avatar May 11 '18 03:05 poojanilangekar

@Dingshilun I think I know what the other problem might be. Change the line 252 of column_catalog.cpp to return table_object->GetColumnObjects(true);. This would make sure that the TableCatalog returns the cached object. And the read only fix would make sure that Txn2 isn't aborted.

poojanilangekar avatar May 11 '18 03:05 poojanilangekar