Support for System-Versioning Tables

HonzaCZ's profile image HonzaCZ posted 4 years ago in Feature discussion Permalink

Hello,

I have been using Heidi for many years. Even after switching to Linux OS. :)

What do you say to implement support for System-Versioning Tables? Please see url mariadb.com_kb_entemporal-data-tables#system-versioning-tables (s/_/\//)

Now there is noplace in Heidi where I could see that some table is system versioned nor partitions for system versioning. But worse is that I can't edit (inserts, edits, deletes) that table through "Data" tab. Please see attachment #1.

Also there is no way to change schema through GUI. Please see attachment #2.

Are you plan implementing this features? It would be awesome. :)

Cheers, Honza

2 attachment(s):
  • heidi-grid-editing-error
  • heidi-alter-error
bjquinn's profile image bjquinn posted 4 years ago Permalink

Same here. I'm switching away from MySQL Workbench towards HeidiSQL as I'm transitioning servers from MySQL to MariaDB, as HeidiSQL seems to have superior support for MariaDB specific features.

Having the ability to at least edit within a grid on system versioned tables would be a fantastic improvement for me, more important than being able to see info about the system versioning status of a table (though that would be nice as well).

ansgar's profile image ansgar posted 4 years ago Permalink

Probably the solution here's the same as for temporal tables (issue #923)? Would be nice to get a hint how to solve that.

HonzaCZ's profile image HonzaCZ posted 4 years ago Permalink

To check if table is versioned you can use information_schema: SELECT * FROM information_schema.TABLES WHERE TABLE_TYPE = 'SYSTEM VERSIONED'

To fix row editing in Heidi you can just ignore presence of "row_end" in primary keys. Keep in mind that names of the system versioning columns (by default row_start & row_end) are user definable when altering table to use system versioning.

When altering table schema in Heidi it could offer option to choose:

  1. Remove system versioning (loss of history data) -> alter table schema -> recreate system versioning (take care of partitions which can be used to store historical data).
  2. Set @@system_versioning_history variable which allows you to alter table and db handle it internally but can cause inconsistency of historical data structure. See documentation.

About issue you mentioned I'm not sure what relation is between system versioning and temporary tables. I use system versioning on non-temporary tables.

bjquinn's profile image bjquinn posted 4 years ago Permalink

How do I ignore the presence of row_end? Or are you saying that's a change that would need to be implemented in HeidiSQL?

HonzaCZ's profile image HonzaCZ posted 4 years ago Permalink

How do I ignore the presence of row_end? Or are you saying that's a change that would need to be implemented in HeidiSQL?

Yes, sorry, it was meant like the "hint" for ansgar.

bjquinn's profile image bjquinn posted 4 years ago Permalink

Both as a workaround and as a possible basis for a permanent fix, you can in fact edit the table by doing a "select *, row_start, row_end" from the table.

ansgar's profile image ansgar posted 4 years ago Permalink

See issue #1273

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