- Change table engine via popupmenu in ListTables
- Edit comment via same popupmenu + an own dialog
Not keeping the same feature in different corners of the application looks more straight forward. Users will have exactly one point where they can modify all table related properties. Should simplify it in the end, although some users will have to get used to it.
- Drop pagecontrol to access more than one selected table. Didn't seem helpful for any case, looked ugly and was a click hell to use.
- Implement changeable editors for table name, comment, engine, charset, collation and auto_increment value.
- Backward compatibility kept: A 3.23.58 server leads to disabling editors for engine, charset and collation while keeping the others working.
A table's charset and collation can now be provided at creation time and at altering time. Just as it's implemented for databases. Fullfills now most of the wishes in RFE #1693393.
So, after changing the engine of a table the table status dataset was refreshed but never displayed, until having switched to a different db. So, MenuRefreshClick was loading but not displaying the table status.
- TMySQLConnection.Query now returns the result if any. Fill RowsAffected and RowsFound at the same time.
- TMySQLConnection.GetRow / GetVar implemented for simple query-logic with minimal overhead.
- Give SetDatabase the chance to reset FDatabase to the prior value by catching a potential exception.
- Switch cardinal parameter to integer to avoid typecasting in callers. Safe, because mysql_num_fields will never return more than 2^31 columns - maximum columncount in MySQL is ~3000.
- Implement TMySQLConnectionOptions, replace property "Compressed" by single option.
- Introduce published events for DB aware components
- Add register procedure to enable installation into IDE
- Correctly set Active := False before raising an exeption
- Reset Database property to old value if USE command was not successful
- Introduce QuoteIdent function
- Various half-ready code blocks in TDataset procedures
a) option "Remember last used database" is active
b) the last used db was dropped externally or
the session was just opened with "OnlyDBs" in place and the last db is not contained in this list.
* Make export table locks local to current connection work.
* Bugfix: In non-file mode, export commands go directly to server without being parsed; thus they must not have semicolons at end of sentence. A regression here causes issue #1747558 and issue #1795486, which this commit fixes again.
(Briefly considered adding a cleanSql() which just runs result := parseSql(sql)[0], which would do the same in fewer lines of code, albeit with the small overhead of having the semicolon both added and afterwards removed again..)
- Add property Capabilities to TMySQLConnection which is automatically filled after connect. Can be easily used by client-applications to decide if a feature can be used or not. The client will not need to know the relevant version numbers.
- documentation
- Consistently rename TSQL* types to TMySQL*
- Read ServerVersionStr always "live" by calling GetServerVersionStr as the reader. The version string *can* change after a reconnect.
- Let ExecUpdateQuery raise the errordialog if creating a database failed. Tells the user the exact reason for why it has failed, not just a vague guess "Maybe that was not a valid name"
- Avoid a superflous exception when creating a database with upper case characters in it and the server lowercases all dbnames silently. Gracefully compare case-insensitive when searching the new created db in dbtree.
Range and overflow checking can be turned off when building a release exe to improve performance slightly.
Debugging options can be turned off when building a release exe to reduce the executable file size.