distal-attribute
distal-attribute
distal-attribute
distal-attribute

Refreshing tree can issue a very long list of queries

User, date Message
Written by lemon_juice
4 years ago
Category: General
127 posts since Tue, 29 Jun 10
I have noticed that refreshing the left object tree unnecessarily queries the server about databases that I have looked at before but now are hidden (collapsed). For example, I open a connection, expand database A, then B, then C, then I'm not interested in B and C anymore so I collapse them and I'm looking at tables from database A. Now when I press the refresh button Heidi queries for information about A, B, and C even though B and C are hidden. This can lead to a long list of queries that take time and decrease performance. For example, this can happen when only table6 is expanded:

SHOW TABLE STATUS FROM `table1`;
SHOW FUNCTION STATUS WHERE `Db`='table1';
SHOW PROCEDURE STATUS WHERE `Db`='table1';
SHOW TRIGGERS FROM `table1`;
SHOW TABLE STATUS FROM `table2`;
SHOW FUNCTION STATUS WHERE `Db`='table2';
SHOW PROCEDURE STATUS WHERE `Db`='table2';
SHOW TRIGGERS FROM `table2`;
SHOW TABLE STATUS FROM `table3`;
SHOW FUNCTION STATUS WHERE `Db`='table3';
SHOW PROCEDURE STATUS WHERE `Db`='table3';
SHOW TRIGGERS FROM `table3`;
SHOW TABLE STATUS FROM `table4`;
SHOW FUNCTION STATUS WHERE `Db`='table4';
SHOW PROCEDURE STATUS WHERE `Db`='table4';
SHOW TRIGGERS FROM `table4`;
SHOW TABLE STATUS FROM `table5`;
SHOW FUNCTION STATUS WHERE `Db`='table5';
SHOW PROCEDURE STATUS WHERE `Db`='table5';
SHOW TRIGGERS FROM `table5`;
SHOW TABLE STATUS FROM `table6`;
SHOW FUNCTION STATUS WHERE `Db`='table6';
SHOW PROCEDURE STATUS WHERE `Db`='table6';
SHOW TRIGGERS FROM `table6`;
SHOW TABLE STATUS FROM `table7`;
SHOW FUNCTION STATUS WHERE `Db`='table7';
SHOW PROCEDURE STATUS WHERE `Db`='table7';
SHOW TRIGGERS FROM `table7`;
SHOW DATABASES;
SHOW CREATE TABLE `table6`.`blog`;

Is this behaviour intentional? I would certainly prefer that only the currently expanded databases be queried. A workaround is to open a new window with the same connection and close the old one to clear the list of remembered databases, but that is a hassle. What do you think?
Written by lemon_juice
4 years ago
127 posts since Tue, 29 Jun 10
Sorry, I made a mistake that could make my point less clear: the example database names should be database1, database2, etc. and not table1, table2... of course!
Written by ansgar
4 years ago
5023 posts since Fri, 07 Apr 06
Well that is intentionally, but feels like that was not so well tested on situations where you have many databases opened. So I guess you're right - only the current db should get refetched, other expanded ones should get collapsed.
Written by lemon_juice
4 years ago
127 posts since Tue, 29 Jun 10
I think databases shouldn't get collapsed when I do a refresh, I would expect the view to stay unchanged - only refreshed. And it's fine for me when multiple databases are refetched as long as they are expanded. It's just that I don't want Heidi to refetch databases that are collapsed.
Written by ansgar
3 years ago
5023 posts since Fri, 07 Apr 06
Done in r3762 - tested and works for me. Please report back if that's working for you. I have a slight feeling I just introduced new access violations in the tree but I may only be afraid because there were so many in the past.
Written by lemon_juice
3 years ago
127 posts since Tue, 29 Jun 10
Thanks, it's working very well from what I can see. No crashes so far but I'll report if there are any.

There's only one small glitch, I don't know if it's related to refreshing - very often when I click on table names in the tree they don't get fully selected - the highlight colour is different (looks like disabled or unfocused item highlight) and the refresh button doesn't work. I have to wait a second and click again, then the table becomes fully selected and the refresh button works.
Written by ansgar
3 years ago
5023 posts since Fri, 07 Apr 06
Think you mean "unfocused" when you say "disabled". That's very normal as when you click a table your focus gets immediately moved to the table editor's "Name" input box. Just watch if that has focus.
Written by lemon_juice
3 years ago
127 posts since Tue, 29 Jun 10
Yes, it becomes unfocused and the focus goes to the name input box. So it looks like intentional behaviour? It's a bit weird to me that the focus goes away to a place I didn't click on. But it's a small issue for me so I don't mind it so much.

BTW, where are the older forum posts? I can see only one page of posts without any navigation to older pages.
Written by ansgar
3 years ago
5023 posts since Fri, 07 Apr 06
Older posts are only searchable, not browsable heresmileMy forum is homebrown and minimalistic. But most old posts can be found via Google.

The stealing focus thing was a feature request, see issue #2289. Feel free to leave a comment there.
Written by lemon_juice
3 years ago
127 posts since Tue, 29 Jun 10
Okay, I see.

The stealing focus request described there seems very reasonable to me but I think it shouldn't have been implemented for existing tables. I left my comment in the tracker.
 

Please login to leave a reply, or register at first.