HeidiSQL 8.1 released

ansgar posted 4 years ago in Anouncements
This release fixes tons of bugs, while the number of new features is not as high as in a major release.
Especially, we have a new libmysql.dll in place now, which fixes pluggable authentication, broken in
the 8.0 release.

Get it from the download page.

Here are the most noticable changes and new features:

* Make snippets directory customizable. Fixes issue #3276
* Provide a libmysql.dll from a MariaDB-5.3.12 server, to fix pluggable authentication. Also fixes "malformed packet" on LOAD DATA.
* Introduce Win7+ jump items on task button. See http://www.heidisql.com/forum.php?t=12385.
* Introduce the new data option "Local number format"
* Remove "Run file" dialog, and use a standard Windows IProgressDialog instead when executing a SQL file.
* Add CHECK option "FOR UPGRADE" to maintenance dialog. Fixes issue #3279.
* Provide edit box for custom NULL value, in grid export dialog. See http://www.heidisql.com/forum.php?t=13075
* Support length of "max" in data types. Used in MSSQL.
* Issue #3212: Add schema support in MSSQL.
* Add overlay icons for table engines Blackhole and MergeMyISAM.
* Add preference option and logic for alternating grid row background colors. Fixes issue #2820.
* Display values in grid columns which the user explicitly sets to be a UNIX timestamp in date/time format. Fixes issue #3215.
* Append instead of overwrite data grid filter when user has Shift pressed. Fixes issue #865.
* Issue #3191: Implement a simple search/replace dialog in the popup text editor.

... and for the nerds, the full story:

* Shorten long SELECT query in data grid, using '*' when all columns are involved.
* Apply database and table filter on a new connection. Fixes issue #3353.
* Sort snippet filenames manually before displaying in helper box. Seems file ordering is inconsistent between Windows version. Fixes issue #3351.
* Using TDBQuery.ColAttributes() and TTableColumn.LengthSet in a query result does not work, as this relies on a previous SHOW CREATE TABLE parsing. Check PMYSQL_FIELD.length instead to return the correct zero-padded string bitmask for a BIT column. Fixes issue #2544.
* Use a standard TSaveDialog when storing a snippet file. Fixes issue #3346. Also fixes "selection only" version of "Save snippet". Reuse code from actSaveSQLAs action.
* Get Ctrl+Backspace hotkey to work in grid inplace editor, by enabling autocompletion + autosuggestion. Fixes issue #3168.
* Trim clipboard contents for quick filter menu items.
* Add missing event listeners to previously introduced edit box for snippets directory.
* Make snippets directory customizable. Fixes issue #3276
* Fix exception in ReadTextfileChunk when file has 0 bytes.
* Downgrade libmysql.dll to a MariaDB-5.3.12 version. Fixes issue #3343 ("malformed packet" on LOAD DATA). All 5.5 versions seem to be affected, not so 5.3.x. Required tests for the next time I'm updating libmysql.dll: * Ensure LOAD DATA LOCAL INFILE works, and does not throw SQL error 2027/malformed packet * Ensure it's a .dll from the 32bit server version * Ensure it's a MariaDB version, so pluggable authentication still works
* Update libmysql again with a version from MariaDB 5.5.33a. Fix SQL error 2027 "malformed packet", when firing LOAD DATA command. See http://www.heidisql.com/forum.php?t=13454 and issue #3262.
* Attempt to fix issue #2640 again (AV on alt-tab when in popup editor), by disabling the completion form in ApplicationDeActivate event. Activate MainFormOnTaskBar again, which fixes issue #2351 (Windows Flip3D feature) and probably also issue #3342 (Alt-tab in Wine)
* Revert r4003, as issue #2651 could easily be caused by an assigned-check of FPreferencesDialog, which is freed in Toptionsform.FormClose in any case, but leaves the FPreferencesDialog assigned.
* Ensure editDatabaseTableFilterChange is triggered when a db was expanded, which seems the missing event to get the table filter working again. Probably fixes issue #3313.
* Always show the "Copy" tooltip when dragging sessions elsewhere, as we always copy by drag'n drop, never move. See http://www.heidisql.com/forum.php?t=13419
* Load full row content before replacing text using the search+replace dialog on the data grid. Fixes issue #3252.
* Disable grid in AnyGridBeforeCellPaint after TAdoDBQuery.SetRecNo detected a broken MSSQL connection. Hopefully fixes issue #3336.
* List recently active translators in about dialog. Also, read out credits from readme.txt, so I don't have to maintain that list in the TMemo, getting unwanted linefeeds whenever I'm saving it.
* Unescape default text value for a column when inserting a new grid row, so \r and \n and whatever does not get into a cell as a literal. Fixes issue #3283.
* Update libmysql to a 5.5.32 version from the current stable MariaDB release. Fixes issue #3262.
* Provide a way to enter the donators email address in the about dialog, and hide all donate buttons if a check on heidisql.com succeeded. Fixes issue #3334.
* Remove unused uses clause.
* Add donate button to 3 places: * main toolbar * about dialog * updatecheck dialog
* Revert r4357 (add database name in GetCreateViewCode), to fix issue #3329 (view export includes superfluous database name). Issue #3098 is still fixed, by the later r4479 (get view columns from IS.COLUMNS).
* New attempt to fix the file reader for cases where the chunk size end is within a multibyte character. Increase chunk size per loop and retry reading the chunk. See http://www.heidisql.com/forum.php?t=13044
* Be more verbose in RunQueryFile(), on the progress dialog.
* Revert r4503, except for the removed helpers.ScanNulChars() and helpers.RemoveNulChars(). Seem Delphi's encoding detection is totally broken. Also, TStreamReader has bugs and hangs on the second call to ReadTextfileChunk(). Most files should be read fine again, including those mentioned in issue #3331. Also fixes issue #3328. TODO: fix reading specific UTF8 files, mentioned on http://www.heidisql.com/forum.php?t=13044
* Prefer Windows.GetCommandLine over ParamStr() when parsing command line parameters. ParamStr() removes double quotes.
* TJumpList.Apply seems to trigger "Access denied" exceptions in some cases. Log these in the log panel, but do nothing when that happens. See http://www.heidisql.com/forum.php?t=13339
* Introduce Win7+ jump items on task button. See http://www.heidisql.com/forum.php?t=12385. Using JumpList unit from Serhiy Perevoznyk, http://delphi32.blogspot.de/2011/05/adding-windows-7-jump-list-to-delphi.html
* Code cosmetic: Move public AppVer* variables to private scope and introduce public properties for the both which are read publicly.
* Edit raw numbers, not their formatted version which is used for displaying. See issue #653.
* Try a new approach in helpers.OpenTextFile(), helpers.ReadTextfile() and helpers.ReadTextfileChunk(): Based on TStreamReader instead of TFileStream now, so we can finally rely on Delphi internals for detecting a file's encoding. Also, this should fix read errors in some UTF-8 files, e.g. mentioned on http://www.heidisql.com/forum.php?t=13044
* Remove helpers.DetectEncoding(). Use a separate TStreamReader in the only caller to detect the encoding of a selected file
* Remove helpers.ScanNulChar()
* Add missing translation strings for preferences dialog
* Issue #3324: Merge "Highlighter" tab into "SQL" tab again, to keep a low number of tabs
* Divide "Data" options tab into "Data appearance" and "Data editing" tabs, to make room for the new checkbox option "Local number format"
* Introduce the new data option "Local number format"
* Issue #3324: When copying from a numeric grid cell, use raw numbers, not the formatted version.
* Use internal flag to remember whether new grid text was pasted from clipboard. This way we can again use "Grid.Text[] := xyz", which triggers AnyGridNewText(), which again is able to pass the right "Null" parameter to TDBQuery.SetCol(). This fixes issue #3325 (invalidated controls, especially "cancel changes" action after pasting). Also, this fixes pasted formatted numbers not being unformatted internally. Finally, we have 5 lines of code less than before :)
* Show thousand separator in data grids. Fixes issue #3324.
* Introduce TMainForm.FGridCopying flag, and use that to temporarily disable integer to datetime conversion in AnyGridGetText(). Fixes issue #3322.
* Remove properties ServerVersionInt and ServerVersionStr from TDBConnection. Instead, move private GetServerVersionInt() and GetServerVersionStr() to public scope, named like the previously used properties now
* Remove overridden methods in descendants of TDBConnection, do it with a version conditional in the upper class
* Finally, remove ConvertServerVersion() and merge code into ServerVersionStr()
* TOP(x) clause for UPDATES + DELETES introduced in MSSQL 2005. Do not use that on older servers. See http://www.heidisql.com/forum.php?t=13289
* Fix reading chunks from SQL file with a multiplier of the encoding's maximum character length. Broken in r4470.
* Fix usage of wrong TDBObject caused by using wrong offset from TDBObjectList.
* Move code from FillPopupQueryLoad into automatically triggered FillPopupQuery.OnPopup event.
* Make getting system imagelist and imageindex shared code in Helpers.GetSystemImageList and Helpers.GetSystemImageIndex
* Remove call to TranslateComponent, accidentally committed in r4490
* Draw system icons with transparency
* Fix crash caused by freeing main image list, see previous commit. Fixes issue #3316.
* Display system known icons in recent SQL files list.
* Don't know when exactly but in some cases VirtualTree.FocusedColumn seems to have the InvalidColumn (-2) index. Do not pass such negative indexes to a TStringList in TDBQuery.ColAttributes. See http://www.heidisql.com/forum.php?t=13245
* Add caption of column selector, forgotten in previous commit.
* Turn column selection form into a tool window, so I can apply a size-grip at the lower right edge of the form. Remember form dimensions. Fixes issue #3299.
* Add CHECK option "FOR UPGRADE" to maintenance dialog. Fixes issue #3279.
* Remove "Run file" dialog, and use a standard Windows IProgressDialog instead when executing a SQL file. Learned from http://users.skynet.be/oleole/ProgressDialog.htm
* Enhance error handling when "Stop on errors" is activated, by showing an error summary at the end of script execution.
* Fix regex in TDBConnection.ParseViewStructure which matches on IS.COLUMNS.COLUMN_TYPE but just finds empty matches, because all expression groups are optionally. Also, ZEROFILL attribute for numeric columns never gets detected. Fixes issue #3311.
* Make regex in ParseViewStructure even more loose, this time due to dots in the view's name. See http://www.heidisql.com/forum.php?t=13191
* Issue #3304: Escape column names for PHP
* Fetch column names from IS.COLUMNS only, without joining IS.VIEWS from which we anyway don't read something. Fixes issue #3305.
* Escape exported PHP strings using some extra logic, instead of using incompatible TDBConnection.EscapeString. Fixes issue #3304.
* Get column names from VIEW per IS.COLUMNS, not per SHOW COLUMNS, to support MSSQL here. Fixes empty grid results for MSSQL VIEWs. See comment #46 of issue #3212.
* Translate new menu item "Generate SELECT", missing in r4477.
* Add "Generate SELECT..." menu item to query helpers context menu. See http://www.heidisql.com/forum.php?t=13108
* Move file related actions to "File" menu, as suggested here: http://www.heidisql.com/forum.php?t=13097
* Handle ERegistryException's in TMainForm.FinishedQueryExecution by writing them to the SQL log. These seem to happen sporadically in a broken registry, or due to going from a query thread to the main thread again. Guess there is no real fix to that issue. See http://www.heidisql.com/forum.php?t=13088
* Fix unused FCSVNull value in efExcel grid export.
* Provide edit box for custom NULL value, in grid export dialog. See http://www.heidisql.com/forum.php?t=13075
* Increase size of chunk to read from SQL dump from 5M to 20M, so we catch at least the file problems mentioned on http://www.heidisql.com/forum.php?t=13044 .
* Process messages in loop of query batch on run sql file dialog. Helps making this dialog responsive.
* Ensure ReadTextfileChunk reads a multiplier of the encoding's maximum byte count per char. See http://www.heidisql.com/forum.php?t=13044
* Log error message when TEncoding.Convert returns an empty TByte array.
* Turn unhandled exception in case of SQL errors into a popup dialog when running SQL files. See http://www.heidisql.com/forum.php?t=13044
* editDatabaseTableFilter.OnChange is triggered in DBtree.AfterPaint, which is implicitly called a million times, when mouse hovers over the tree. * Move that call from DBtree.AfterPaint to RefreshTree, and call it only when it required. Removes a big bunch of useless magic code execution. * This way, I can wrap the code in editDatabaseTableFilter.OnChange in a BeginUpdate/EndUpdate block to postpone painting while looping over the nodes.
* Include application name in login prompt. Fixes issue #3180.
* Include schema name in ALTER TABLE query on table editor.
* Use table name from helper TDBObject in TDBQuery.PrepareEditing, as TMySQLQuery.TableName does not return the VIEW's name when the VIEW contains aggregated columns. Fixes issue #3284.
* Try to disable platform warnings on command line also
* Silence various compiler warnings about non initialized variables. Globally turn off platform warnings
* Avoid using Format() on event body, as this causes AVs when it contains some % sign. See http://www.heidisql.com/forum.php?t=13010
* Send column default value through UnescapeString and then to EscapeString, and let UnescapeString remove double backslashes. Fixes issue #3283.
* Use the right binary instead of decimal prefixes for bytes: KiB, MiB etc. And introduce unit for 2^60 bytes: Exbibyte. See http://de.wikipedia.org/wiki/Byte .
* Limit test query to return one single row, not all rows. Fixes issue #3271.
* Issue #3240: Set focus on first "Options" tab by default.
* Add page control to trigger editor, and show CREATE code of triggers in separate tab. Fixes issue #3240.
* Make charset query compatible to MSSQL 2000. Fixes issue #3269.
* No need to adjust vertical position of OK button on sorting popup. See http://www.heidisql.com/forum.php?t=12980
* Adjust control dimensions in login form, so translations fit. See http://www.heidisql.com/forum.php?t=12979
* Use TDBQuery.DBObject.Database in TDBQuery.DatabaseName(), so for VIEWs we do not get the db from the table which is selected. Fixes issue #3266.
* Issue #3212: Fall back to db..table if schema is unknown or server has no schema support.
* Support length of "max" in data types. Used in MSSQL.
* Issue #3212: Introduce TDBQuery.DBObject, to which we assign the selected object when getting the result for the data grid. Use that DBObject in TDBQuery.QuotedDbAndTableName and TDBQuery.PrepareEditing, where we need to know the schema of the object.
* Consider schema name when focusing tree node in TMainForm.SetActiveDBObject > TMainForm.FindDBObjectNode > TDBObject.IsSameAs
* Issue #3212: TDBQuery.SaveModifications makes use of TDBQuery.QuotedDbAndTableName, not TDBConnection.QuotedDbAndTableName. Make first one internally call the second one, so both do the same thing.
* Do not always display NULL in a MSSQL grid field when value was edited.
* "WITH .. CHECK OPTION" is already contained in the "source" value of a .frm file. Don't include it a second time in TMySQLConnection.GetCreateViewCode. Fixes issue #3258.
* Support brackets in routine parameters. Fixes issue #3255.
* Issue #3212: Reestablish MSSQL 2000 compatibility by removing SCHEMA_NAME(schema_id) from TAdoDBConnection.FetchDbObjects.
* Issue #3212: Inject XY_SCHEMA=xy clause into all other IS queries in TAdoDBConnection.GetCreateCode.
* Issue #3212: Consider schema name in default objects sorting, so the tree displays the same order as we have in the database tab when sorted by "Name" column.
* Issue #3212: Display schema name also in database tab, to make it consistent with the tree.
* Issue #3212: Filter objects by schemata when gathering columns from IS.COLUMNS in TDBConnection.GetCreateCode, so we don't get columns from objects with the same name in another schema.
* Move helpers:GetIndexIcon to TTableKey.GetImageIndex
* Avoid calling TDBConnection.ClearDbObjects() on active database after copying table. Instead, call actRefresh which takes care of a probably opened table object in the table editor. * Check for table existence via SELECT on IS.TABLES, avoid usage and refresh of db objects here also. * Fixes issue #3250.
* Inject default schema between db and table in TDBConnection.QuotedDbAndTableName if target object does not exist. See issue #3212.
* Copy table dialog: * Clear db cache only once in btnOKclick * Clear db cache of target db when done, instead of refreshing active db * Remove unused variables * Remove empty comment clause from CREATE TABLE code
* Introduce TDBConnection.FindObject(db, obj). Use that in TDBConnection.QuotedDbAndTableName() and for checks for table existence.
* Leave out "_binary" keyword on MSSQL when inserting binary files. Fixes issue #3244.
* Issue #3212: Introduce TDBConnection.QuotedDbAndTableName(), callable with a db and table string. Internally calls TDBObject.QuotedDbAndTableName(), so we get the schema between db and table if required.
* Issue #3212: Add basic support for schemas in MSSQL.
* No background gray for sorted columns any longer. Leads to confusion when mixed with the new alternating row colors. See http://www.heidisql.com/forum.php?t=12882.
* Include ROW_FORMAT in CREATE code. Fixes issue #3243.
* Add overlay icons for table engines Blackhole and MergeMyISAM.
* Add preference option and logic for alternating grid row background colors. Fixes issue #2820.
* Clear tab filename also if query editor is empty. Fixes issue #3241.
* Support cancel button in "Run routine" action. Fixes issue #3151.
* Various variables are int64 or float, for which we have no specific editor other than the string editor. Do not quote these to avoid "Incorrect argument type to variable.." Fixes issue #3153.
* Issue #1289: Remove menu item as long as synchronize dialog is not fully implemented.
* Include net type in server statistics call, so we can distinct between MySQL and MSSQL usage.
* Support editing DEFINER clause in scheduled event editor. Fixes issue #2548.
* Refresh CREATE CODE after pressing Save button on table editor, so we don't display no longer present indexes, and probably more. Fixes issue #3198.
* Call ValidateControls() after pressing last or end button. Fixes issue #3234.
* Remove default length of new INT columns in table editor. Fixes issue #3226.
* Issue #3215: Adjust date/time values converted from UNIX timestamps to use UTC time instead of local time.
* Set minimum height of listColumns in table editor. Works around AV mentioned in issue #3189.
* Display values in grid columns which the user explicitly sets to be a UNIX timestamp in date/time format. Fixes issue #3215.
* Fix disabled "clear" button after adding AND filter in data tab. See http://www.heidisql.com/forum.php?t=12805#p12807
* Append instead of overwrite data grid filter when user has Shift pressed. Fixes issue #865.
* Fix broken Unicode characters in MSSQL, data grid. Fixes issue #2873.
* Fix detection of text column types in MSSQL, so TEXT and NTEXT do not appear as numbers in query results.
* Process placeholders in filename also in grid export dialog. Provide a list of valid placeholders below the recent files pulldown menu. See http://www.heidisql.com/forum.php?t=12506
* Join the two error message snippets with a linefeed, not a space, so that gets more readable. See http://www.heidisql.com/forum.php?t=12758
* Apply system font to forms, not only Segeo on Vista and above. Fixes issue #3204.
* Use additional EOleException message in GetLastError. See http://www.heidisql.com/forum.php?t=12758
* Extend detection of requirement to name resolving in user manager, to allow netmasks. Also, "localhost" is no longer auto-resolved via libmysql.dll. Fixes issue #3205.
* MSSQL: Escape joker chars in conjunction with an "ESCAPE" appendix after the LIKE clause. See http://www.heidisql.com/forum.php?t=12747 .
* MSSQL wants single quotes escaped with a second single quote, not with a backslash. No clue how to escape joker chars in a WHERE clause.
* Issue #3191: Use some standard TActions to implement a simple search/replace dialog in the popup text editor.
* Insert/update NVARCHAR/NTEXT/NCHAR contents with preceding "N", as MSSQL wants Unicode strings handled this way. See issue #2873.
* Put session name into caption of login-on-demand dialog, so applications like Keepass can identify it. Fixes issue #3180.
* Do not restore previous state of checkbox options "Drop database" and "Drop tables", leave them off when calling the export sql dialog. Fixes issue #3197.
* Leave SQL help action disabled as long as there is no selected connection. Fixes issue #3200.
* Introduce server specific quote characters, so ParseTableStructure() and DeQuoteIdent() do not remove too much. * bug report: http://www.heidisql.com/forum.php?t=12685 * broken in r4364, for fixing issue #2496
pzahra posted 4 years ago
Didn't fix this problem though: http://www.heidisql.com/forum.php?t=12991
fm_fvdl posted 4 years ago
* Introduce Win7+ jump items on task button. See http://www.heidisql.com/forum.php?t=12385.
* Introduce the new data option "Local number format"

Nice new features. I did find a bug with the local number format; if a number is formatted (3968872 -> 3.968.872) and you right click on it to filter on it, HeidiSQl uses the formatted number in the filter instead of the 'real' value.
Laban posted 3 years ago
Just started using Keepass, great tool. Any clue as to what settings or plugin to use to integrate with HeidiSQL?

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