Releases: HeidiSQL/HeidiSQL
12.7
Get it from the download page
3rd party updates:
- Issue #1946: update libmariadb.dll and plugin libraries to latest v3.3.8
- Update regular expression library to v1.181 2023.11.22, supporting \K pattern to set the begin of a reported match.
- Update InnoSetup compiler to v6.2.2
- Update VirtualTrees component code to release v8.0.3 (major version update)
- Issue #1888: Update plink executables to v0.81
- Update madExcept exception handler to v5.1.4
- Issue #1905: Update OpenSSL libraries used by libpq-15.dll to v3.1.5
- Update SQLite libraries to v3.45.3 from 2024-04-15
New stuff:
- Issue #1879: add drop down menu to "Apply filter" button, with an option to overwrite the current filter based on the different input text
- Issue #1512: add basic support for indexes with descending column direction
- Issue #1429: add "SQL INSERT IGNORE" output format to grid export dialog
- Issue #178: add database and table filter boxes above tree view on table tools dialog
- Issue #1917: Support additional UCA collations introduced in MariaDB 10.10.1.
- Issue #1927: display column comments in completion proposal, give that third column more space to the left and italic style
- Table editor: when user runs into the cryptic "constraint is incorrectly formed" message, append a more meaningful line from SHOW ENGINE INNODB STATUS.
- Support naming result tabs per "-- name: xyz" comment. See https://www.heidisql.com/forum.php?t=10493
- Reorder components in grid export dialog, and convert format radio buttons to combobox. Makes the dialog more wide than high, creating space for wider labels and more format options.
- Issue #1930: Grid export: implement JSON Lines format.
- Issue #139: Alternating row background colors in table columns list and most other main tabs, if activated by user.
Bugfixes and enhancements:
- Enhance readability of focused text in result grid using dark styles. TreeOptions.PaintOptions.toGhostedIfUnfocused grays out text otherwise.
- Fix crash in SynCompletionProposalChange, happening when scrolling very fast to the top of the list
- Fix crash in f_() function with invalid format specifiers from some translation. Happened in Japanese recently.
- Issue #1870: support VARCHAR columns with a length of 0, in temporary fake tables for exporting views
- Detect Windows 11 in about dialog, and remove functions only required for the no longer supported Windows Store version
- Fix activated SSH tunnel for a network type which does not support that, after changing the network type from an explicit SSH-tunnel-type to a TCP/IP version.
- Search replace: ignore numbers in static row id column
- Installer: add newly available translations for Hungarian and Bulgarian
- Add item in Tools main menu for resetting panels to their default dimensions. Useful for quite a few people who move their app window between screens with different resolutions.
- Static row id: always use the color of the session the result belongs to
- Performance: call TimerHostUptimeTimer event every 20 seconds only, instead of each second
- SQL export dialog: cut long file list down to 20 latest items
- Issue #520: Fix crash in sort columns dialog when removing the last column, with a non-default theme
- After reformatting SQL code, unify new lines to Windows line feeds, so the selection's end in SynMemo is correct
- Fix retrieving MySQL events from the current database on older servers, work around MySQL bug 41907. See https://bugs.mysql.com/bug.php?id=41907#c360194
- Make pressed state of favorites button more noticeable, by using the gray-scale icon in unpressed state
- Fix emptied "SHOW WARNINGS" pool due to queried @max_error_count in warning dialog. See https://www.heidisql.com/forum.php?t=41753
- Issue #1899: fix wrong column number on column selector above data grid
- Issue #1906: provide a new preference option to turn on color icons on inactive tabs again
- Issue #1910: Fix CURRENT_TIMESTAMP default text detection as an expression, not as an ordinary string literal, on MySQL 8.0.14+.
- Issue #1887: restore old scroll offset in data grid, when refreshing result or paging to the next rows
- Issue #1918: Remove leading timestamp from log message when copying to new query tab.
- Host tab: use session name as tab caption, and show host name as mouse-over hint. See https://www.heidisql.com/forum.php?t=41399
- Hopefully fix slow loading tabs.
- Issue #1923: Fix completion proposal not showing columns of a table alias when table name contains the word "join".
- Issue #355: Fix non-working scrolling with a horizontal mouse wheel in grids, by preferring TWMScroll.Pos over TScrollInfo.nTrackPos (always 0).
- Add functions-mysql8.ini with some newer functions in it, and search for version specific ini file when connecting. See https://www.heidisql.com/forum.php?t=41892
- Fix too small foreign columns dropdown, scale controls on TSetEditorLink DPI aware
- Issue #1247: Fix invalid SQL code for dropping foreign key constraint in PostgreSQL mode.
- Issue #1586: include "COLLATE xyz" clause when applying collation and user checked the "Convert data" option, so the columns do not get the default collation of the new charset
- Issue #1934: fix empty column list in completion proposal when user input starts with a quote character
- Issue #1933: Update list with known MySQL 8 keywords, taken from https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-in-current-series
- Issue #1939: Fix empty CREATE TABLE code and "List index out of bounds" message in log, due to accessing TTableKey.Collations[x] without being initialized
- Issue #321: Fix SQL code in TTableKey.SQLCode for PostgreSQL
- Issue #1940: In TSecureShellCmd.Connect, include parallel happened errors in any success dialog. Also, log errors to the log panel when both pipes have content.
- Issue #1942: Reset FClipboardHasNull marker before pasting text which was copied outside the application.
- Issue #1943: Set DbTree.DefaultNodeHeight in FormShow rather than in FormCreate, to respect DPI settings.
- Issue #1931: Support CITEXT columns in Postgres and categorize as text type, so these show up in foreign values pulldown editor of data grid.
- Issue #1868: Reset sort order of data tab grid as well, when user clicks "Clear data tab filter".
- Issue #1936: Fix EAbstractError when closing text editor
- Issue #1947: don't change case of detected column names, in CSV parser
12.6
Get it from the download page
3rd party updates:
- Update madExcept exception handler to v5.1.3
- Upgrading to Delphi compiler version 11.3
- Update VirtualTrees component code to release v7.6.5a
- Update vcl-styles-utils from current master branch
- Update SQLite libraries to v3.44.0
- Issue #1841: Update OpenSSL libraries used by libpq-15.dll to v3.1.3
- Update plink executables to v0.79
New stuff:
- Issue #861: New static row id column in all result grids. Uses the session background color, and can be hidden. (see screenshot)
- Issue #750: SQL formatting now with 2 new online formatters: (see screenshot)
- https://github.com/doctrine/sql-formatter - hosted on heidisql.com
- https://sqlformat.org/ - Thanks to Andi Albrecht!
- Add context menu on data grid header with "Query exact row count" item, querying
SELECT COUNT(*)...
on the underlying table - Support main tabs in a single line, and support tab-scrolling per mouse wheel
- Issue #940: Support removing shortcuts per button in preferences. (see screenshot)
- Issue #1619: Use the same hotkey (
Ctrl+S
) for saving a table/trigger/... as for saving a query file.
Bugfixes and enhancements:
- Issue #1863: Fixes compatibility to Wine v8.18 again, and probably to more versions
- Grayscale icons on non-active tabs, for a clearer user interface (see screenshot)
- Separate double-click and middle-click options for closing tabs (see screenshot)
- Issue #1795: remove menu items and code for explain analyzer on https://mariadb.org, which is no longer available
- Issue #1854: fixes incorrect table name used in grid updates when comment with valid query exists
- Issue #279: Support serial columns in PosgreSQL, which is different from auto_increment on MySQL
- Issue #872: fix crash when opening a table with columns defined as
INVISIBLE
, and ensure such columns are selected and visible in the data grid - Translation fixes: remove various unused strings, fix some wrong spelled strings, add some missing strings
- Issue #1850: too short text in popup text editor, when field contains high UTF-8 characters like emojis
- Add missing
PMYSQL_LENGTHS
type, and use this for the result ofmysql_fetch_lengths()
. Fixes an issue broken since 2009 (!) - Issue #1640: Fix crash in MouseUp event of query tab close button, by closing/freeing the tab and button through a timer event
- Issue #752: Fix SQL export on MySQL 8, overwriting view helper tables caused "xyz is not view"
- Keyboard shortcuts: allow the user to accept duplicate assignments per ignore button. (see screenshot)
- Issue #1826: Fix
ON UPDATE
part ofDEFAULT
clause with no parentheses on MySQL 8, which are required only for the initialDEFAULT
value. - Fixes numerous different crashes, found in uploaded crash reports. Thanks to all users reporting these:
- Fix crash after following a foreign key value
- Fix sporadic crash "Cannot make a visible window modal" in search/replace dialog
- Fix crash in various places where we just try to get the current clipboard text
- CSV scanner: fix crash when selected filename cannot be opened
- Fix sporadic crashes in various calls to [TWinControl].SetFocus, with the new class helper .TrySetFocus
- Fix crash in highlighter customizer, as long as no attribute is selected
- Silence a popular crash in DBtreeFocusChanged, when trying to detect whether the user clicked into a different session
- Fix EAccessViolation in TMainForm.DBtreeFocusChanged:124
- Fix crash when trying to stop current query and the helper connection cannot connect for some reason.
- Silence sporadic EAccessViolation in DBtreeBeforeCellPaint, when reading DbObj.Connection.Parameters
- Fix EAccessViolation in TDBObject.GetImageIndex:6
- Fix EAccessViolation in TMainForm.DBtreeGetText:12
- Catch different EInOutError exception happening in rare cases of ForceDirectories()
- Fix EAccessViolation in TMainForm.AnyGridGetText:5
- Fix crash when user clicks Help button on maintenance dialog, in a non-MySQL session
- Catch additional EReadError crash in RunQueryFile
- Fix crash in printer dialog, when printer is somehow not available
- Fix crash after reconnect, when query helpers functions are exapanded
- MSSQL: Catch OLE exception when provider names cannot be listed
- Fix crash in TMainForm.DBtreeGetText happening while connecting through SSH tunnel
- Fix sporadic crash with focused Host tab while connecting to another session
- Warn the user about potential data loss when loading a (csv) file with encoding set to "auto-detect".
Full Changelog: 12.5...12.6
12.5
Get it from the download page
3rd party updates:
- Issue #1784: update OpenSSL libraries used by libpq-15.dll to v3.1.0, taken from http://wiki.overbyte.eu/wiki/index.php/ICS_Download#Download_OpenSSL_Binaries_.28required_for_SSL-enabled_components.29
New stuff:
- Basic implementation of Sequal Suggest as a dialog, under Tools. For generating SQL queries through natural language. See https://sequal.dev/
Bugfixes and enhancements:
- Issue #1800: wrap column default expression in parentheses on MySQL v8.0.13+ when altering a table
- Issue #1800: attempt to distinguish text values from function expressions in a column's default value, for MySQL 8.0.13+ which seems to allow just all functions as default value.
- Issue #1800: add missing CURDATE function definition to functions-mysql.ini
- Do not cut trailing zeros in scientific values like 2.0e30 => 2.0e3. Closes #1793
- Auto detect need to create HTML clipboard header, remove CreateHTMLHeader parameter from StreamToClipboard()
- Refactor HTML clipboard code. See https://www.heidisql.com/forum.php?t=9893
- Make HTML export format compatible to Google Chrome. See https://www.heidisql.com/forum.php?t=9893
- Support ON UPDATE SET DEFAULT and the same for ON DELETE in PostgreSQL foreign keys. See https://www.heidisql.com/forum.php?t=40413
- Issue #1771: add additional sleep time between SSH process checks, so it does not matter when WaitForSingleObject does not really wait (on Wine)
- Issue #1771: prefer a larger SSH process check interval for larger timeouts (timeout:4s => check interval:400ms), and log process exit code each interval.
- Auto-set the first SSH executable from the dropdown when user activates SSH tunnel checkbox. See https://www.heidisql.com/forum.php?t=40399
- Support canceling SQL export before a table's data has been completed. Closes #1516
- Ensure max INSERT setting is an Int64, so a huge value does not wrap into a negative value. See https://www.heidisql.com/forum.php?t=40393
12.4
Get it from the download page
3rd party updates:
- Update DDetours sources to latest (2021-01-01)
- Update vcl-styles-utils sources to latest (2021-01-11)
- Update gnugettext.pas to rev 148 from http://svn.code.sf.net/p/dxgettext/code/trunk/dxgettext/sample/gnugettext.pas
- PostgreSQL: update OpenSSL libraries to v1.1.1s, taken from http://wiki.overbyte.eu/wiki/index.php/ICS_Download#Download_OpenSSL_Binaries_.28required_for_SSL-enabled_components.29
- PostgreSQL: Issue #1758: add libpq-15.dll and its 4 dependent files, all signed with my Authenticode certificate (see #1733)
- madExcept 5.1.2, including a fix for ASLR.
New stuff:
- Issue #921: add SSH tunnel support for SQL Server in TCP/IP mode. "SSH tunnel" tab is not hidden any longer for unsupported network types, only the checkbox is disabled then.
- Issue #1721: Let the user disable a session's SSH tunnel configuration, similar to the SSL checkbox
Bugfixes and enhancements:
- Turn crash into error dialog, on search and replace dialog, when regular expression is invalid
- Issue #1226: switch back to TSynHotKey again, after using THotKey in shortcut customizer since b4926f3 . Fixes non assignable Enter and Del hotkeys, probably more. This time we don't touch the original TSynHotKey for custom fixes, but through the new TExtSynHotKey.
- Restore previous scroll position after saving routine, trigger, event or view. See https://www.heidisql.com/forum.php?t=40291
- Reduce crash probability in TSecureShellCmd.Connect when user disconnects from session before tunnel is reestablished.
- Strip comments from current query before trying to detect a table alias. Closes #1753
- Widen import button on very first tab of session manager, so translations fit to it. Closes #1752
- Find a better alternative to d262a6a : set descending column order on first header click when shift key is pressed . See https://www.heidisql.com/forum.php?t=40243
- Refactor internal structures for grid/table sorting, prefer TObjectList over Array
- Issue #1717: block too fast and overlapping calls of refresh action, to reduce crash probability
- Fix crash due to reset AppSettings.SessionPath through LogSQL()
- Attempt to fix a crash, happening in some cases when user focuses a tree node in a different connection
- Disable ASLR and the same flag for 64 bit mode through base configuration.
- Issue #1568 and issue #1737: exit OnPaintTransient event handler on interlocked calls
- Hide SSL tab when no session is selected
- Prefer previously used filename in save-as-snippet dialog. Closes #1747
- Issue #1730: fix wrong vertical position of linebreaks dropdown
- Issue #1730: apply font to mother query grid as well, in ApplyFontToGrids
- Degrade category of mostly log messages from grid editors to debug.
- Issue #1744: load stored tab file contents always with UTF-8 encoding, to prevent a wrong encoding per auto detection.
- Issue #1721: fix now wrong tab order with the new "SSH tunnel" checkbox
- TConnectionParameters.GetImageIndex: prefer more specific icon for MySQL on RDS sessions
- Update current year in license file
- Issue #1730: add preference option for disabling incremental search through typing in grids
- Include some System.Generics.* units without using project's unit scopes or aliases
- Issue #1568: fix ineffective temporary disabling of OnChange handler
- Issue #1568: content in SQL editor is modified in SynMemoQueryKeyPress. Attempt to prevent some endless loop through OnChange event.
- Remove unit scopes from project settings, prefer fully qualified unit names in uses clauses. Enhance readability and compiler performance.
- Prefer extracted-comments style over translator-comments, which are not displayed on Transifex for some reason. See https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html#The-Format-of-PO-Files
- Create project files for Delphi 11.2, with disabled HighEntropyVa setting so the 64bit builds will run without crash.
- Add comment to joined short+long hint in translation. See 8fc6dba#r93385116
- Use red background for SQL errors in log panel too. See https://www.heidisql.com/forum.php?t=40110
- Issue #1722: rephrase text hint on filter input so it matches an existing translation string
- Automagic modifications to form files, done through updates of IDE and some components. Especially removes no longer published properties OldCreateOrder and PixelsPerInch.
- Issue #1722: add missing translation strings to master file
- Fix wrong tab order of recent filters pulldown on data grid filter panel
- Enhance user query error handling. See https://www.heidisql.com/forum.php?t=40085
- try to find error position in 1M of SQL instead of only 1KB
- do not reset cursor if position was not found
- paint red background on line with error, just until user presses any key
- Issue #1724: silence another exception in MS SQL mode, when checking for IsNull on a field. Seems to be just a different version of the same bug described in #496
- Issue #1725: add history menu pulldown to global filter edit box
- Add missing translation string for new header-click option. See 7bea342#r92151280
- Add option to turn off warning dialog for active but unused SSL settings. See https://www.heidisql.com/forum.php?t=40080
Modifications for installer and updater:
- Issue #1735: Experimental support for non administrative install mode, with the default folder C:\Users\xyz\AppData\Local\Programs\HeidiSQL\
- Issue #811: Make installation of example snippets optional, and display the used path.
- Increase lzma2 compression from max to ultra64. Take up more memory for creating the installer and for installing, but decreases installers file size from 46M to 39M.
- Do not auto-create "c:\Users\Anse\Documents\HeidiSQL", as we only use it for snippets which can also have a custom path. Closes #1751
- Updater: quote name of task to run, making it safe to use white spaces
- Use Release configuration to decrease the updaters file size
- Issue #1616: Close Heidi processes through updater even if the path is different than the current app path, which is the case when running Heidi from a symbolic link folder.
- Refactor build updater once again:
- convert to console application without window, so the user sees all status messages in the order of appearance
- include SysUtils unit, which increases file size to ~2MB, but enhances maintainability
- restrict compilation and resource inclusion to 64bit mode - the build updater is disabled in 32bit mode anyway
- Issue #418: restart via task scheduler after build update, decreasing privileges to the normal user instead of administrator
- Issue #1733: Sign uninstaller within InnoSetup script. This also signs the installer from InnoSetup now, while removing the sign call from the build process.
- Issue #1733: sign yet unsigned 3rd party libraries with my own Authenticate certificate
12.3
Get it from the download page
3rd party updates:
- Update plink binaries to latest v0.78. Closes #1430
New stuff:
- Make clicks on grid column headers configurable, so the user may disable it, preventing him from accidental sortings on large tables. See https://www.heidisql.com/forum.php?t=40026
- Issue #1705: Add new network type "MySQL on RDS", to support its different query for killing a process. New icon provided by @Bens-ct.
Bugfixes and enhancements:
- Issue #1616: force update check to overwrite old HeidiSQL_update.exe in temp directory, once through different file size, and by logic when old one is older than 30 days. Fixes still used old updater with bugs.
- SQL export: Calculate a reasonable LIMIT clause when "Get full table status" session setting is disabled, causing AvgRowLen<=0. See https://www.heidisql.com/forum.php?t=40058
- Fix too narrow column widths restored with high DPI setting, due to Delphi's Round() function using the nearest even number. Use the better suited "kaufmännisch runden" approach.
- Query helpers tree: sync logic behind "Insert at cursor" with what doubleclick does. Enables that menu item for table columns, keywords, functions and snippets. See https://www.heidisql.com/forum.php?t=40022
- Quote BIT values again, in EscapeString version with data type. Closes #1709
- Use rds_kill_query procedure on RDS to kill a running query. Closes #1705
- Revert background color of selected text in Material style to its original, again causing unreadable link text on dialogs described in issue #993. Readability of selected text seems more important to me. See https://www.heidisql.com/forum.php?t=40003
- Include application version and path of selected session in the session manager's window caption
12.2
Get it from the download page
3rd party updates:
- Update SQLite libraries to v3.39.4 from 2022-09-29
New stuff:
- Issue #1536: auto-resize height of data grid filter while user types text in it
- Issue #1691: make timer interval for auto completion proposal configurable, while keeping 500ms as a default value.
- Allow integers and floats to be entered in hexadecimal format in grids. Basically means they're not wrapped in quotes now. See https://www.heidisql.com/forum.php?t=39864
- After restoring query tabs, warn user about tabs which were loading slow
- Add preference option for adding timestamp to log messages. Helpful for debugging performance issues.
- Issue #136: use VerySimpleXML v3-beta from https://github.com/Dennis1000/verysimplexml to reformat XML in grid cells. Also, auto-disable slow wordwrap in editor if text is > 1M large
- Issue #1659: create dialog for customizing highlighter colors and style, for use on grid text editor
- Highlight occurrences of selected text in grid text editor, same as in query editor
- Issue #1669: turn customize-highlighter button into dropdown button with additional items "Format code once" and "Always format code". Usable for SQL, JSON and XML.
Bugfixes and enhancements:
- CSV scanner: lowercase name of table and columns, and unify non-word characters to underscore
- Fix crash when scanning CSV file with more values in data than in header line. Closes #1698
- Fix trailing linebreak counted to last column name in first CSV line
- Fix wrong finish message in log result, when doing something different than an export. See https://www.heidisql.com/forum.php?t=39913
- Issue #1700: exactify positions of line breaks in auto-filter on data grid, to prevent sporadically too long lines
- Issue #1616; Fix broken updater code and binaries, by fixing wrong parameter definition of WindowProc and wrong type cast in a SendMessage() call
- Issue #1616: revert previous modifications on updater binaries, which now do nothing and don't trigger the WM_SHOWWINDOW message
- Issue #1695: attempt to fix a check for a named session before storing the currently used database name
- Prefer CopyFile + DeleteFile over MoveFile, in a second place, where the old binary is backup'd. See issue #1616
- Add log message after finished export, to make it more noticeable the user has control again. See https://www.heidisql.com/forum.php?t=39913
- SSH tunnel: process error pipe contents only if std pipe is empty. See https://www.heidisql.com/forum.php?t=39851
- Allow hex values to have an odd number of digits. See https://www.heidisql.com/forum.php?t=39864
- Issue #1673, #1351 and #1658: use a general approach in TDBQuery.HasFullData for all server types, where we again use Delphi's Length() against a number range of 128..256.
- Fix text value in popup editor cut to 256 chars, for all modes other than MySQL. Closes #1673
- Issue #1652: don't add collation clause to a modified or new JSON column
- Update readme file: add Interbase/Firebird, require Delphi 11.1, code formatting
- Purge cached columns, indexes etc. and reinitialize table editor, when user presses refresh button. Closes #1628
- Issue #1669: turn off always-format setting by default
- Issue #1670: fix text field editing with more than 256 chars on MS SQL
- Add missing ini entries for CURRENT_TIMESTAMP function. Closes #1666
- Use empty default host/ip for new SQLite sessions, to avoid running into some out-of-memory issue. Closes #1602
- Fix previous approach in TDBQuery.HasFullData and StrHasNumChars, which used CharNextW() and stopped at null bytes within binary strings. Again use Length() instead, but let it be longer than GRIDMAXDATA. Closes #1658
- Issue #1659: remove broken sample text box, activate translation on dialog
- Issue #1659: fix exception on closing customize dialog, use empty string when converting clNone to and from web color, instead of #ffffff
- Issue #1656: attempt to give Wine a hint for the right font size, when highlighting selection occurrences
- Use NULL in new row for column with timestamp expression, to fix a following UPDATE query using an empty string in its WHERE clause. Closes #1645
- Leave away NULL clause for new column which allows NULLs. Closes #1642
12.1
Get it from the download page
3rd party updates:
- Update SQLite libraries to v3.39.0, released on 2022-06-25
New stuff:
- Create context menu item "Empty recent filters" on database and table filter above tree view. See https://www.heidisql.com/forum.php?t=39447
- Add support for MariaDB's new UUID column type. Closes #1545
- Add basic support for listing and showing views in SQLite mode. Closes #1196
- Support mouse wheel zoom in grid text editor
- Issue #156: menu item "follow foreign key" in data grid (@dungsaga)
- Let user set line break style for saved query tab files. Closes #892
- Issue #892: support custom line break style when saving log panel contents or CREATE code tabs to file, using the existing "LineBreakStyle" option introduced in 59159c7.
- Support renaming columns in SQLite, and generate separate ALTER TABLE queries for each change. Closes #1256
- Support COLLATE clause in SQLite when creating tables
- Upgrade used compiler to Delphi 11.1
Bugfixes and enhancements:
- Enable 64 bit support for files > 4gb in zipped SQL export
- Support comments on table indexes via table designer. Closes issue #128
- Don't add a "WHERE -- foo" when the filter contains comments only. Closes issue #1537
- Strip comments from procedure parameters before parsing. Closes issue #1477
- Restore maximized state of text editor in OnCreate, not OnShow. See https://www.heidisql.com/forum.php?t=39476
- Don't reset a main control's window procedure if there is no main control. Closes issue #1349
- SSH tunnel: use the shell executable filename in all dialog captions
- Issue #287: v5.1 servers report utf8mb4 from mysql_character_set_name, although it's latin1. Trust the returned charset only on v5.5+ servers, and reset it on older servers.
- MoveFile() does not work when target directory is a symlink, so we prefer CopyFile + DeleteFile. Closes issue #1616
- Auto-fit result columns when compressing export file has finished. Closes issue #1617
- TSHFileOpStruct.pFrom needs a trailing nul char, see https://stackoverflow.com/a/1594859/4110077 and/or https://docs.microsoft.com/de-de/windows/win32/api/shellapi/ns-shellapi-shfileopstructa?redirectedfrom=MSDN#members
- When deleting tab backup file, delete it to recycle bin, for cases where the user did that by accident. Same for snippet file and overwritten export/zip file. See https://www.heidisql.com/forum.php?t=39355
- Set title on completion proposal form, to keep the form resizable with only 1 NbLinesInWindow. See https://www.heidisql.com/forum.php?t=39366
- Issue #1613: fix missing detection of spatial keys
- mysql_character_set_name() from libmysql.dll reports utf8* if in fact it's a latin* charset. Force utf8* charset in that case. See https://www.heidisql.com/forum.php?t=39278
- Don't reapply shortcuts to base editor, but to all others. Closes issue #1600
- Fix crash after copying table to other database, when target database is expanded in DBtree and current session has a background color. Closes issue #1597
- Optimization: set up a single TSynMemo instance instead of all, e.g. when creating a new query tab
- Issue #1351: optimize StrHasNumChars
- Make counting characters in TDBQuery.HasFullData more precise for diacritical characters. Fixes EnsureFullRow not doing its work when a cell contains some emoji. Reported in the forum: https://www.heidisql.com/forum.php?t=39239
- Leave away delimiter at the end of a query batch, in one-go mode. Closes issue #1583
- Issue #1577: make apphelpers.SelectNode more intelligent, returning true/false to indicate whether it successful went through OnFocusChanging event
- Do not auto-close search/replace dialog if no occurrences were found. Closes issue #896
- Enable cancel edit button after search/replace. Closes issue #1579
- Issue #1577: break loop in search/replace on grid if advancing focus on next node is not allowed through OnFocusChanging event
- Convert hardcoded MySQL error codes to named constants, taken from include/mysql/server/mysqld_error.h
- Refactor: move structures for specific network types out of dbstructures, into their own dbstructures.xxx.pas, and include const.inc in project sources
- Set character set and collation of MySQL/MariaDB connections only if current one is not UTF8/16/32. Closes issue #287
- Issue #1256: restrict altering existing SQLite tables, apart from a few things
- Refactor: create and use self explanatory TDBObjectEditor.ObjectExists method
- Table editor: force repaint of column list after click on "delete column", which otherwise still displays the deleted columns until the user hovers over it
- Issue #945: give id column in table editor slightly more width to let the text fit in
- Issue #1256: create spRenameColumn template and prefer that in SQLite and Postgres
- Issue #1521: get back partition clause into table editor by fixing the detection for CREATE code without a closing comment at the end
- Prevent the last column from being dragged out of any VirtualTree header. Closes issue #1021
- Issue #993: white is now used as background for selected text, which is light blue and unreadable. Set Material/clHighlight to hex bebebe instead.
- Set system color clHighlight in Material theme to bright white (was rgb 32464a), to enhance readability of link colors in dialog footers. Closes issue #993.
- Limit icons on column in table editor to show only one per key type. Closes issue #945
- Support custom line breaks in ConfirmTabClear
- Set hint on data grid top label, staying readable when screen width is too small to show the label. Closes issue #836
- Ask user whether modified text shall be stored when pressing cancel button. Closes issue #817
- Set focus on editor when creating new query tab, closing a previously grid editor. Closes issue #725
- Auto-refreshing grid or list only if main form is active. Closes issue #669
- Update cached object reference with new row count after inserting row, which may enable "Data" option in table copy dialog. Closes issue #666
- Disable save and discard buttons of routine editor temporarily while saving changes. Closes issue #616
- Display multi-line column headers in query result grid. Closes issue #1566
- Replace redundant ExtractBaseFileName() with TPath.GetFileNameWithoutExtension()
Full Changelog: 12.0...12.1
12.0
Get it from the download page
3rd party updates:
- Update SQLite libraries to v3.38.0
- Update VirtualTrees component source to v7.6.1
- Update OpenSSL libraries to v1.1.1l (used in PostgreSQL mode)
- Update libmariadb.dll and plugins to current stable versions
New stuff:
- Experimental support for high DPI in default Windows theme/style
- Experimental support for Interbase and Firebird connections (issue #1169)
- Support for Windows 10's built-in SSH client for tunnels, as an alternative to plink (issue #362)
- SQL export: add new menu item "Copy mysqldump command line" in "Options"
- Known function names per server type: function names are now loaded from separated *.ini files, e.g. functions-mariadb.ini
- Create editor commands for moving line up/down (Alt+Up, Alt+Down, "Edit" menu)
- Create "copy with tabs to spaces" action, and place it in Edit menu. (#1285)
- New context menu items "Close query tabs to the right", and "Close all query tabs" (issue #710)
- New item in context menu of headers in grids and lists, for toggling visibility of all columns per one click (#1360)
- New grid export format: SQL UPDATEs (issue #125)
- New grid export format: Jira Textile (issue #1013)
- Empty-tables-confirmation supports disabling foreign key checks (issue #1491)
- Support renaming SQLite tables in database tab (#1427)
- Editor highlights all occurrences of selected word, similar to Notepad++ (issue #670)
Bugfixes and enhancements:
- Loading an sql file does not activate its tab, e.g. when loading multiple files. Fix crash happening when active tab is not a query tab in such cases.
- Remove closing PHP tag from export as PHP array
- Performance enhancement with many opened query tabs
- Fix some potential file related exceptions in text file import
- Support filenames with accented chars in text file import dialog (issue #1387)
- New query tab uses the same memo height as the current tab
- Session background color now used on query result tabs, and in query gutter (issue #932)
- Fix various style/theme related crashes, for instance when closing the grid export dialog
- Reset timezone in SQL exports to zero offset, to be independent from local date/times in TIMESTAMP columns
- Fix missing SET TIME_ZONE.. on export target server (issue #1457)
- Single quotes and backslashes in PostgreSQL connection string values are properly escaped now (issue #1417)
- Prefer SUBSTRING() over SUBSTR() in Postgres mode, to restore Redshift compatibility. (issue #1259)
- Fix "Table x not found in tree" after creating a table with upper case letters on Windows servers. See https://www.heidisql.com/forum.php?t=38150
- Support UINT columns in SQLite mode (issue #1453)
- Update SynEdit's list with known MySQL keywords, taken from https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-in-current-series (issue #1437)
- Run current query: Prefer query left to the current one, if current one contains no text (issue #603)
- SQL export: don't generate ALTER TABLE..DISABLE/ENABLE KEYS for InnoDB tables
- Activate auto-suggest option "Find matches in middle of entered text" by default.
- Don't clear variable from --description cli parameter. (#1295)
- Quote column names for quick filter, when column name matches an SQL function (#1398)
- Session manager: Auto-expand session folder when user filter matches a child session
- Fixes for handling virtual columns (#1210)
- Add option to turn off tab close by doubleclick/middleclick (#1151)
- Activate CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA option for MySQL/MariaDB, fixing some SSL issues on MySQL 8 (issue #1539)
- NUL characters in grid values are replaced with a space when editing or copying. Editor gets read-only mode then. (issue #202)
- Binary values in foreign key pulldown now works with hex code, instead of binary garbage (issue #1540)
- Enhanced foreground/background colors for matching brace in dark themes. (issue #887)
- Fix EAbort error when copying text from SynMemo without highlighter
11.3
Get it from the download page
Still need 32bit support?
- I am planning to drop the 32bit releases in a future release, for keeping the installer package small, and to decrease deployment efforts. Tell me what you think about it.
3rd party updates:
- Update SynEdit component code
- Update VirtualTrees component code
- Include Microsoft Visual C++ 2015-2019 Redistributable in installer, required for some 3rd party libraries (issue #1296)
- Update plink.exe to v0.75
New stuff:
- Log DDL and/or DML queries per session to custom file path (issue #397)
- Grid text editor:
- syntax highlighting for 64 code languages, including JSON and XML (issue #136)
- gutter with line numbers and marks for edited lines
- now using search/replace dialog with regular expression support
- Enable query timeout setting for MySQL and MariaDB (issue #1306)
- Show check constraints on MySQL, MSSQL and PostgreSQL (issue #1298)
- New menu Query > "Editor commands", revealing available quick actions for SQL editors
- Create "Editor commands" menu in "Query" main menu, and populate it with all available editor commands
- Add new preference option for displaying hexadecimal content in lowercase
Bugfixes and enhancements:
- Query tab resizes after minimize (issue #1113)
- Foreign key add issue (issue #1320)
- Cannot update/insert postgres jsonb column from data editor (issue #1321)
- MariaDB 10.5: REPLICATION CLIENT privilege was renamed to BINLOG MONITOR (issue #1302)
- Quoted column default value expression on Percona (issue #1282)
- Cannot delete row in MSSQL (issue #1294)
- Always read portable settings file and imported settings file in UTF8 mode, instead of auto-detecting a potentially wrong encoding. Fixes broken characters loaded from a portable file larger than the examined 16 (?) KB
- Database search feature: prefer a normal log line for tables with no matching data type, so the "Found rows" column has a number, to fix wrong sorting
- function COALESCE is identified as plain text, not function (issue #1342)
- Non-synchronized checkbox state on privileges in user manager tree (issue #1352)
- Auto-scroll grid when tabbing through cells
- Run SQL button disabled after reconnect (issue #1319)
- Don't repeat running prompt to reload a file after multiple external changes (issue #821)
- Fix identifier quoting when creating a foreign key in a database with dots in its name (issue #1364)
- Increase maximum pixel width of status bar panels slightly, so these better fit with a larger font size. (issue #1356)
- Get rid of quotes around hex values and integers in quick filters
- Fix crash happening when using un/comment action. (issue #1359)
- include column names in "copy as" submenu export actions by default (issue #1357)
- Restore/keep cursor position in filter editor after refresh
- Detect pressed shift key before prompting for filter value. (issue #588)
- Fix wrong query duration in log panel after multiple queries in "one-go" mode
- Unhide public schema on Redshift
- Table tools: auto-fit column widths with each result grid update, and show execution time in main status bar
- Enable menu items for
EXPLAIN <query>
on PostgreSQL and SQLite
11.2
Grab it from the download page
3rd party updates:
- update VCL Styles Utils code
- get latest bugfixes for VirtualTrees component
- upgrade installer compilation to InnoSetup v6.1.2
- plink.exe update to v0.74
- update sqlite3 libraries from v3.30.1 to v3.34.0
New features and enhancements in this version:
- New CSV layout detection for "Import text file" dialog (select
<New table>
) - Support for table level check constraints on MariaDB
- New "Rename tab" context menu for query tabs
- New "CREATE code" tab in view editor
- Tab restore feature:
- Gracefully re-create folder if query tab file and its folder was deleted from outside
- restore scroll position
- restore active query tab
- Grid export:
- Convert "Copy rows" context menu item to a submenu, and provide all export formats, with icons
- Support custom hotkeys for each of these grid export actions
- SQL export:
- Prevent "Variable 'sql_notes' can't be set to the value of 'NULL'", via
IFNULL()
wrap - Speed up data exports of large MS SQL tables, by introducing
ORDER BY .. OFFSET .. FETCH
clauses in SELECT's - Limit rows per exported
INSERT
to 1000 for MSSQL. - Auto-create directory path of output file
- Prevent "Variable 'sql_notes' can't be set to the value of 'NULL'", via
- Support shortcut Ctrl+F for focus on filter edit on session manager
- Data grid: Prefer
SUBSTR()
overLEFT()
function, unsupported in old PostgreSQL versions - Support regproc and jsonb column types on PostgreSQL
- Support binary values in "More values" quick filter menu
- Restore minimized main window when user attempts to start a second HeidiSQL process in single-instance mode
- Apply data type colors to column names in completion proposal
- Widen status bar panels for big screens
- Shortcut settings: Prompt user for overwriting an existing shortcut
Bugfixes
- Fix various crash reports uploaded by users via exception dialog
- Accept any whitespace after double-minus comment in MySQL/MariaDB mode
- Add UTF-8 BOM in Excel output only in file-mode, not in copy-mode.
- Fix grid search/replace with scope=selection
- Enable MYSQL_OPT_LOCAL_INFILE, seems still required on some systems for importing local CSV files
- Fix invalid enabled state of "Explain current query" action
- Re-add
CURRENT_TIMESTAMP
function, removed accidentally in last update - Fix cleared highlighter's TableNames list in irrelevant events
- Fix empty library drop-down after changing network type for the first selected session.
- Fix wrongly parsed
ON UPDATE
clause of columns when information_schema is hidden by session setting - Enable cancel button after setting grid cell to
NULL
Complete change list: https://github.com/HeidiSQL/HeidiSQL/milestone/6?closed=1