Features:
* SQLyog can be started with a ‘-dir’ switch like “SQLyogENT -dir somefolder”. This -dir switch specifies where SQLyog will look for the sqlyog.ini file and where all writable files will be saved. This was mainly implemented for users that want to have all SQLyog-related files on a removable drive or some kind of encrypted storage. Note that if you use the setting in ‘preferences’ to store TAGS file some specific place the ‘preferences’ setting will still have effect, also if the -dir switch is used.
* Improved/rearranged the GRIDS in Data Sync and Import External Data wizards.
* SJA mail functionality now supports SSL/TLS encryption. This applies to SJA for Linux and SJA for Windows running on Windows, but not SJA for Windows running on Wine, as we did not find any way to access encryption functionality from Wine.
* ALTER VIEW will now format the SELECT-part of the VIEW definition.
* Now all batch jobs will not generate BULK INSERTS larger than 16MB (like already implemented in Import External Data in 8.11).
* In CREATE/ALTER TABLE the charset and collation columns can now be hidden for better overview (most users never use it).
* When updating from DATA or RESULT grid the UPDATE statement will now only list columns that were changed. That results in more readable statements and may also improve performance with ‘wide’ tables and tables with large BLOB/TEXT columns.
* As a consequence of the above the restriction, that a grid containing spatial or binary data could not be updated, has been lifted (but such columns themselves still cannot be updated from the grid).
* Added an option to perform backups in a single transaction (similar to ‘mysqldump’ “–single-transaction” option).
* The connection manager has been redesigned to allow for longer connection names. Also the ‘…’ button was renamed to ‘rename’ (what was what it always did).
* Added support for MySQL compressed protocol in both SQLyog GUI and SJA. Please see detailed note below.
* Added an option for user to specify the timeout setting for the session (note: it will work with MySQL 4.1 and up only as earlier versions do not support SESSION variables). Please see detailed note below.
* Now SQLyog logs to the sqlyog.err file if memory allocation fails with string manipulation (for example when handling blob/text data where a single value may be larger than available memory).
* Version parameter was added to SJA. You can now execute “sja –version” or “sja -v” and version will be returned. Before only the file size could be used to detect the SJA version.
* Now full GUI support for all charsets added to MySQL after 5.1. Everywhere SQLyog presents user for a list of available charsets and collations the server will be queried about this information. Before it was not like that everywhere!
* If the custom size for bulk insert in ‘preferences’ is larger than server default, then SQLyog will use the server default for generating BULK INSERT statements. Users overlooked/forgot that they had specified a setting. As a result backups that would not restore on same server could occur. Also now user specification is restricted to 5 digits (what means it will have to be less than 100 MB).
* The various options available for backups have been reorganized in GUI to make it more clear what options have effect on the source server while backup job is running and what options are options that are written to the file.
* A new query tab can now be opened by double-clicking in the unused space to the right of existing open tabs.
Bug Fixes:
* Edit menu showed F5 for both Refresh and Execute Query.
* Autocapitalisation settings had effect where they should not. It has now been disabled in MESSAGES tab and in the error dialogue.
* Non-column results (like functions, expressions etc.) were affected by column-width persistence feature what they should not (it had weird effects sometimes).
* Various places a horizontal scrollbar displayed where it was not required.
* Fixed wrong behavior with GRID scroll bar after resize.
* ALTER TABLE dialogue executed SHOW TABLE STATUS with no LIKE-clause. That could be slow with a large number of big InnoDB tables in a database.
* PROFILER tab sometimes did not show after executing multiple queries.
* After doing FILTER in DATA tab, LIMIT would be reset to previous value.
* A ‘duplicate key’ error would occur with batch jobs (including Data Sync) if an autoincrement column had a ‘0′ value. We now set ‘NO_AUTO_VALUE_ON_ZERO’ sql_mode for batch jobs.
* On Wine F8 keyboard shortcut was only functional after executing a query.
* When copy database/table from a MySQL server 5.1 or higher to a 3.x or 4.0 server timestamps with ON UPDATE-clause caused a syntax error as ON UPDATE is not valid on such target. There was no issue when source was 5.0 as we transform the CREATE statement. But the condition had a bug so it did not work with 5.1+ .
* It was not possible to enter an empty string in the GUI for ENUM/SET management.
* When queries were inserted from ‘edit .. paste SQL statements’ menu the tokenizer editor component could fail to identify exactly where a statement started and stopped. Reason was that the tokenizer expects Windows linebreaks (\r\n) but templates contained Unix linebreaks (\n).
* SQLyog could fail to save properly from RESULT tab if PK-column(s) were not displayed in GRID (an incorrect WHERE-clause was generated). This bug was introduced in 8.1.
* Data Sync could throw an incorrect ‘AUTO INCREMENT definition mismatch’ error for data types (like TIMESTAMP type) where auto-increment does not apply with specific schemas. Also this bug affected Schema Sync.
* Fixed a crash in Scheduled Backup.
* A scheduled SJA job raised an internal error code in the Windows scheduler. It had no effect on the job as such (queries were executed, mails were sent), but various monitoring tools for Windows servers would raise an alert.
* Emptying a database rendered Autocomplete non-functional for the session.
* Fixed an issue with Schema Sync if the same ’stored program’ was formatted differently on source and target. Target was not always synced properly and SS would detect differences forever.
* On Wine Data Sync could pop up a message that SJA had crashed. But actually it only crashed after user clicked OK in the dialogue.
* ‘reorder columns’ threw away ” (empty string) DEFAULTs for string columns.
* When data were changed in GRIDs and the GRID-curser was moved to another row of the GRID by right-clicking in a cell of another row of the GRID, no UPDATE statement was sent (left-click and arrow-down key worked as expected).
* With low wait_timeout setting on <target> it could happen that Data Sync took more time than this setting to prepare a BULK INSERT statement. Connection to <target> would be lost and sync not completed. We now SET wait_timeout = 28800 in Data Sync. Also ‘restore from SQL dump’ will now do the same.
* Mails sent by SJA could truncate a HTML tag for background color. ‘white’ would become ‘hite’. The display with specific email clients was unpredictable.
* When data sync used the option to generate a sync script the sja.log displayed ZERO’s for inserted, updated and deleted rows. Now the log will display what was written to the script instead.
* When a routine body contained empty lines, Schema Sync would sometimes not sync such empty lines properly. Schema Sync would then detect differences forever.
* In INFO tab/HTML-view empty lines in a routine body could be ’stripped out’.
* ‘copy database’ failed to copy triggers when selecting only triggers for copy.
* In various error dialogues we will now truncate query strings to 2 KB. Before there was no limit.
Miscellaneous: * SQLyog reconnects are now coded differently (now the MySQL API reconnect option is used - before it was our own code). The new code means that with SSH-tunnel it will now not be necessary to re-instantiate PLINK (the running PLINK instance will be used). As a consequence SQLyog will now not log to HISTORY when SQLyog reconnected in most situations. However a PLINK<->SSHD reconnect will still be logged always.
Additional comments: * DO NOT take for granted that use of compressed protocol will always increase performance, because the truth is that most often it will make things slower. Use of compressed protocol will decrease the amount of data to be transferred over the network, but it will result in additional load on both the server and the client (due to compressing and uncompressing). You should never use the option when connecting to MySQL on local machine, on local network or over a fast Internet connection. With slower connections however using this option may improve overall performance. It is impossible to be more specific as most Internet connections have asymmetric properties that differ across Internet providers and telecom companies.
* The option to define timeout for the session (different from the global setting) is possible with MySQL servers from 5.0 and up. However most users will not need to care about it - not even if server (global) timeout setting is low. SQLyog will reconnect if connection was lost since last query was run. Most often user does not even notice. However we have reports of situations where the network takes very long time to process such reconnect requests. In this situation setting the timeout from the client will prevent the situation to occur. Also SSH-users connecting to SSH servers/daemons that are slow to establish connection and where MySQL has a low timeout setting can use this option with advantage.
SJA for Linux:
* As usual with a new SQLyog release also SJA for Linux was updated with the fixes and additions that apply.
* Important note: The C++ shared libary that SJA needs to run (libstdc++.so.5) is now linked dynamically (before it was statically).