Help

Sales

Customers


SQLyog MySQL GUI 8.7 beta 3 Released

peter_laursen

Changes (as compared to beta 2 ) include:

Features:
* Several ‘refinements’ with drag’n'drop and FORMS.
* The fix for slow initialization with large autocomplete databases that was introduced in 8.62 and reverted again in 8.63 is now included again.  It has stabilized with this build.

Bug fixes:
* ‘–’ (two hyphens)  followed by TAB (not only SPACE) is a valid MySQL single-line comment. We did not handle TAB in this context.
* The fix for formatting issues with text-mode and multiple multi-line strings in beta2 introduced new issues.  This includes a truncation of text display in some cases and a buffer violation (the latter could crash SQLyog).
* Fixed a crash while copying to clipboard from table data/result tab.
* Autocomplete could sometimes delete the character following cursor position.
* CREATE/ALTER TABLE now ignores NULL entered as default for a NULLable column.  It is redundant. Before invalid syntax was generated.
* With specific user operations in Connections manager a connection could be saved even if user replied NO the the ‘save question’. Also the connection manager now does not prompt user to save changes if only password/passphrase is changed and it is selected not to save password/passphrase.
* The FIND dialogue sometimes failed to keep focus on the FIND dialogue itself (recent fix was not complete).
* When copy/pasting from the editor we will now copy LETTERCASE as displayed (not necessarily as entered if automatic keyword CAPITALIZATION feature is ON). This restores behavior of 8.6x to 8.7.

Downloads: http://webyog.com/en/downloads.php
Purchase: http://webyog.com/en/buy.php


SQLyog MySQL GUI 8.7 beta 2 Released

peter_laursen

Changes (as compared to beta 1 ) include:

Features:
* Improved the ‘graphics experience’ in drag’n'drop of tabs and fixed some painting issues.
* FORM view as we have planned it is now completed in DATA tab with this build. The toolbar in DATA tab is redesigned accordingly.
* The behavior of CTRL+L keyboard shortcut has been changed as compared to beta 1. It will now ‘toggle’ between TEXT mode and either GRID-mode or FORM-mode (which is active)
* When inserting rows GRID-view will now indicate auto_increment columns as (Auto)  for easy identification (FORM-view did since beta 1). Normally user should not enter those, but let the server handle .

Bug fixes:

* Improved vertical scrolling in GRIDs with a large number of rows displayed.
* “EVENT” was not recognized as a keyword by syntax highlighting and autocomplete.
* Schema Sync will now show columns in the order they are defined in the table.  Before they were alphabetically sorted.
* Removed redundant COMMENT clause in the ALTER script generated by Schema Sync.
* If 0 (zero) was given as the default value for a timestamp column CREATE/ALTER TABLE table would raise a syntax error, as SQLyog was quoting the default value as ’0′. Also specifying NULL as default (what is redundant for a NULLable column) would fail for similar reasons.

Downloads: http://webyog.com/en/downloads.php
Purchase: http://webyog.com/en/buy.php


SQLyog MySQL GUI 8.63 Released

peter_laursen

Changes (as compared to 8.62 ) include:

Bug fixes:
* The fix for slow initialization with large autocomplete databases in 8.62 has been reverted with this build. It introduced other issues like a possibility of SQLite database corruption and crashes. The fix will be added to 8.7 development tree when stable.

Downloads: http://webyog.com/en/downloads.php
Purchase: http://webyog.com/en/buy.php


A deadlock I do not understand.

peter_laursen

I am not an expert in InnoDB internals and have only little experience with using transactions actually. But I have started learning basics and understanding SHOW ENGINE INNODB STATUS (and the Information_Schema tables exposing same information in later versions). I stumbled across a different behavior between MySQL 5.0 and later and also find other transactional engines exposing yet another behavior. This is related to SELECT .. LOCK IN SHARE MODE primarily. But let us take SELECT .. FOR UPDATE as well for completness. Case(s) 1 below is about SELECT .. FOR UPDATE and case(s) 2 is about SELECT .. LOCK IN SHARE MODE.

– Case 1a (all InndoDB/XtraDB versions + PBXT)

– From connection 1: Execute the following
USE test;
CREATE TABLE blah(a INT PRIMARY KEY) ENGINE=INNODB;
INSERT INTO blah(a) VALUES(1);
INSERT INTO blah(a) VALUES(0);
START TRANSACTION;
SELECT * FROM blah FOR UPDATE;

– From connection 2: Execute the following
USE test;
DELETE FROM blah;

– from connection 1:
DELETE FROM blah; — 2 row(s) affected

– connection 2 still waiting for commit/rollback/lock_wait_timeout as expected

– case 1 behave identically with all server versions and storage engines supporting transactions (with the exception of ‘Aria’ engine – see case 1b).

– —————————————————————————————————————–

– Case 1b (Aria engine as of MariaDB 5.2.2)

– From connection 1: Execute the following
USE test;
CREATE TABLE blah(a INT PRIMARY KEY) ENGINE=ARIA TRANSACTIONAL = 1;
INSERT INTO blah(a) VALUES(1);
INSERT INTO blah(a) VALUES(0);
START TRANSACTION;
SELECT * FROM blah FOR UPDATE;

– From connection 2: Execute the following
USE test;
DELETE FROM blah; — 2 rows affected so no LOCK on table

– from connection 1:
DELETE FROM blah; — 0 row(s) affected

– —————————————————————————————————————–

– Case 2a – MySQL servers/InnoDB 5.1.51 and 5.5.6 as well as XtraDB as of MariaDB 5.2.2:
– From connection 1:
USE test;
CREATE TABLE blah(a INT PRIMARY KEY) ENGINE=INNODB;
INSERT INTO blah(a) VALUES(1);
INSERT INTO blah(a) VALUES(0);
START TRANSACTION;
SELECT * FROM blah LOCK IN SHARE MODE;

– from connection 2:
USE test;
DELETE FROM blah; — waiting

– from connection 1:
DELETE FROM blah; — 2 rows affected

– connection 2 now instantaneously pops up message
/*
Error Code : 1213
Deadlock found when trying to get lock; try restarting transaction
*/

– —————————————————————————————————————–

– Case 2b – server 5.0.90:
– From connection 1:
USE test;
CREATE TABLE blah(a INT PRIMARY KEY) ENGINE=INNODB;
INSERT INTO blah(a) VALUES(1);
INSERT INTO blah(a) VALUES(0);
START TRANSACTION;
SELECT * FROM blah LOCK IN SHARE MODE;

– from connection 2:
USE test;
DELETE FROM blah;

– from connection 1:
DELETE FROM blah; — 2 rows affected

– connection 1 now pops up message
/*
Error Code : 1213
Deadlock found when trying to get lock; try restarting transaction
*/

– —————————————————————————————————————–

– Case 2c – MariaDB 5.5.2 with PBXT and ARIA engines (they behave the same here)

– From connection 1:
USE test;
CREATE TABLE blah(a INT PRIMARY KEY) ENGINE=INNODB; — ARIA is the same
INSERT INTO blah(a) VALUES(1);
INSERT INTO blah(a) VALUES(0);
START TRANSACTION;
SELECT * FROM blah LOCK IN SHARE MODE;

– from connection 2:
USE test;
DELETE FROM blah; — 2 rows affected, so no LOCK on table

– from connection 1:
DELETE FROM blah; — 0 rows affected

What I do not understand is:

1) What is the explanation of this different server (ie. InnoDB) behaviour between 5.0 and 5.1? Is it a plain bug in MySQL/InnoDB 5.0? Or is it happening due to different (default – I have not changed InnoDB defaults with this example) configuration settings?

2) Why cannot connection 2 in case 2a simply wait and execute DELETE (what will then be against an empty table in this case) once connection 1 has committed and why will there need to be a deadlock with this case? The deadlock prompts instantaneously after the other connection has executed DELETE (and not committed). Bad timing? Server/storage engine interface problem? Or only a Peter-problem? :-)

Documentation at

http://dev.mysql.com/doc/refman/5.1/en/innodb-locking-reads.html

and

http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html

.. are not identical (but ‘content-wise’ I do not see much difference between them, so this does not help me).

It further looks like PBXT does not handle SELECT .. LOCK IN SHARE MODE (but SELECT .. FOR UPDATE seems to work fine and identically to InnoDB). I do not know if PBXT is supposed to handle SELECT .. LOCK IN SHARE MODE – now or one day in the future (but if not I’d prefer a plain error returned!). Also I am not sure what the tested version of the ARIA engine is supposed to do in its current stage (it is documented that “TRANSACTIONAL = 1″ does not mean it has full transactions support but it should ‘gain’ it over time, I understand). With ARIA neither SELECT .. LOCK IN SHARE MODE nor SELECT .. FOR UPDATE seem to have any effect even if table is declared TRANSACTIONAL = 1.

So trying neither PBXT nor ARIA helped me to understand the difference between MySQL 5.0 and later versions with SELECT …LOCK IN SHARE MODE . And FALCON I do not find it interesting to spend time with now.


SQLyog MySQL GUI 8.7 beta 1 Released

peter_laursen

Changes (as compared to 8.62 ) include:

Features:
* Added an option to reorder TABs using drag’n'drop in the GUI. The option is available for connection tabs as well as Query/Query Builder/Schema Designer tabs.
* Added ‘FORM view’ option (in addition to ‘GRID view’ and ‘TEXT view’ already available) for managing data in DATA  tab. ‘FORM view’ will display one row at a time and is in particular convenient when entering data from the keyboard.  Auto_increment columns are handled.  Other CONSTRAINTS must be handled by user. FORM view is an ENTERPRISE/ULTIMATE feature.
* As a consequence of the above CTRL+L keyboard shortcut will now ‘rotate’ the display mode in DATA tab like Grid->Form->Text->Grid etc. Please also see note below.
* The Query Formatter is now completely rewritten.  In principle all types of  SQL statements are now supported and all limitations with the old implementation are lifted.
* Inside ‘pseudo comments’ (like /*! .. this  .. */) “paranthesis’es matching” is now enabled. Inside plain comments it is still disabled.
* The Editor now has a ‘folding option’. Multi-line code and comment blocks between bracket-pairs, BEGIN-END pairs, C-style comment pairs (/* and */), WHILE-END WHILE pairs, LOOP-END LOOP pairs, REPEAT-END REPEAT pairs and CASE-END CASE pairs can now be ‘folded’ in/out (ie: hidden or unhidden).
* Autocomplete will now backquote table name (+ routine name etc.)  if databasename is backquoted when inserting first-mentioned after a  “.” (dot).
* There is now no size limit on files to be opened in the editor (except for available memory).

Bug fixes:

* Fixed formatting issues with text-mode if multiple multi-line string columns were displayed.
* The ‘persistence setting’ for ‘all rows’ in DATA tab would sometimes be forgotten (and it was not fixed in 8.62 as 8.62 release notes told).
* If scrolling in GRIDs is done using Scroll Bar (including Scroll Bar context menu) focus will now not change and will remain on the previously selected row.  However navigation between rows in GRID using Pageup/PageDown will still change the focus between rows.
* If more than 9 Query etc. tabs were open it was not possible to navigate beyond the 9′th using keyboard shortcuts. Now ALT+9 will select the last tab (for connection tabs same was implemented in 8.5).

A note on keyboard shortcut for changing data display modes: The implementation that “CTRL+L keyboard shortcut will now ‘rotate’ the display mode ..” is what we have selected for this beta.  The consideration is that we want to avoid introducing a  lot of ‘weird’ keyboard shortcuts for every situation.  But we realize that switching twice to achieve the desired mode can be an annoyance.  And also if you have a DATA tab open in FORM mode and switch to a RESULT tab, FORM mode will not apply here and we will then have to switch the display mode to GRID mode.  Feedback from users on what will be the best solution will be much appreciated here (more shortcuts, mode should not be global, or ..). What do users have to say about this? You can comment in this Blog or post to our Forums.

Downloads: http://webyog.com/en/downloads.php
Purchase: http://webyog.com/en/buy.php


SQLyog MySQL GUI 8.62 Released

peter_laursen

Changes (as compared to 8.61 ) include:

Features:
* SJA now supports an additional -r parameter that tells how big CHUNKS should be when copying to an empty table. The -r parameter has only effect with Data Sync jobs and is ignored with other types of jobs. This is a command line option only that is not supported from the GUI Wizard.
* GUI improvement in Data Sync Wizard clarifying the difference between syncing ‘All tables’ (existing at any time) and all tables existing at the time of building the job. It is now also much easier to select ‘almost all tables’ for a Data Sync job.
* Data Sync will now ignore differences as regards indexes on source and target tables except for the Primary Key/Unique Index used for sync. There is no need to require that all indexes are the same.
* SJA for Linux had a dependency on the ‘libstdc++.so.5′ shared library that is not installed as default on some recent Linux distros. This and similar dependencies have been solved with this build. The download size has increased but it is necessary to ensure that SJA will run ‘out of the box’ on all Linux systems.

Bug fixes:
* While Viewing Advanced Properties of table SQLyog executed SHOW TABLE STATUS with no LIKE clause. That could be slow.
* Fixed a crash when copying to clipboard from RESULT tab.
* Changed the keyboard shortcut for Save Changes in User Manager for consistency with normal Windows practice.
* Fixed a crash when deleting a row from RESULT tab.
* Invoking specific keyboard shortcuts (Ctrl+TAB, Ctrl+F4) could cause a crash if a background connection thread (Schema Sync, Copy Database, Restore from SQL Dump, Back up database as SQL Dump) was running.
* Working with TRIGGERS could be very slow (in Schema Sync, backup etc.). This is due to an issue with Information_Schema. We now use a SHOW syntax that is not affected.
* Schema Sync prefixed a VIEW-name with the database name and thus it failed if source and target databases were not named identically.
* Schema Sync did not consider ALGORITHM and SQL SECURITY -clauses for a VIEW.
* When executing multiple queries the ‘execution time’ information displayed in status line was for a single query. Now we will aggregate for all queries.
* Removed result tab and profiler tab from a newly opened query tab. There is no information to display at that time.
* Find & Replace was setting the focus back to the editor whenever a match was found.
* SJA wizards were always opening up in the center of primary monitor even though SQLyog was running in another monitor.
* Right clicking on scroll bar of different windows was not popping up the scroll context menu.
* Data Sync was ignoring any table names with more than one leading SPACE character saved in job files.
* Data Sync was not allowing anonymous users to connect while reading the connection details from job files.
* Parenthesis’es highlighting inside ‘single quoted string’, “double quoted string” and `quoted identifier` is disabled now.
* Fixed a crash that could happen due to memory corruption while adding queries executed in Schema Designer to History tab.
* When updating a resultset from RESULT tab SQLyog failed to use the Primary Key alone in the WHERE clause if the SELECT query populating the RESULT tab used a table alias in the FROM clause. Updates could then fail if there were floating point columns in the resultset. Also when adding new row in such case defaults were not displayed in the GRID.
* Initialization of the program could be slow if user had very large SQLite databases used by autocomplete.
* Vertical scrolling in RESULT Tab or DATA Tab was saving the unsaved changes.
* User manager tool bar button was not working with SQLyog Professional version.
* Renaming a connection changing only LETTERCASE failed.
* The ‘persistence setting’ for ‘all rows’ in DATA tab would sometimes be forgotten.
* Importing an external file from BLOB-viewer could fail.

Downloads: http://webyog.com/en/downloads.php
Purchase: http://webyog.com/en/buy.php


MONyog MySQL Monitor 4.1 beta 1 Has Been Released

peter_laursen

Changes (as compared to 4.02) include:

Features:
* Added a new interface for customizing helper functions. Any customization to helper functions and functions added by user used with earlier versions  has to be migrated manually to this version. But from this version and onwards a GUI-’conflict resolver’ will guide user similar to how it works for customized counters.
* Added an option to change the refresh interval from the processlist page.
* Processlist-based sniffer will no longer show the query SHOW FULL PROCESSLIST executed by MONyog (note this only applies the processlist-based sniffer not for the processlist page where user has configurable filtering options).
* Added an option “apply to all servers having the same tag” when editing server registration details.
* Added an option to attach the output of SHOW FULL PROCESSLIST and SHOW GLOBAL STATUS to alert e-mails (and not traps) for a counter (but of course not functional if server or connection is down!).

Downloads: http://webyog.com/en/downloads.php
Purchase: http://webyog.com/en/buy.php