Universal Code Completion using ANTLR

ucc-data-structureWhile reworking our initial code completion implementation in MySQL Workbench I developed an approach that can potentially be applied for many different situations/languages where you need code completion. The current implementation is made for the needs of MySQL Workbench, but with some small refactorings you can move out the MySQL specific parts and have a clean core implementation that you can easily customize to your needs.

Since this implementation is not only bound to MySQL Workbench I posted the full description on my private blog.

Parsing in MySQL Workbench: the ANTLR age

Some years ago I posted an article about the code size in the MySQL Workbench project and talked a bit about the different subprojects and modules. At that time the project consisted of ~400K LOC (including third-party code) and already then the parser was the second biggest part with nearly a forth of the size of the entire project. This parser project back then used the yacc grammar from the MySQL server codebase and was our base for all parsing tasks in the product. Well, things have changed a lot since these days and this blog post discusses the current parsing infrastructure in MySQL Workbench.
Continue reading “Parsing in MySQL Workbench: the ANTLR age”

MySQL Workbench 6.0: Help is on the way…

Do you know this scenario: you are writing down  a stored procedure but you can’t for the life of you remember the exact syntax of that CASE statement? Has it to end with CASE or not? Can I use more than one WHEN part and how should that be written? Usually you end up opening a web page and read through the excellent MySQL online docs. However, this might cost too much time if you quickly need different statements and other detail info. Here’s where MySQL Workbench’s context help jumps in.

Continue reading “MySQL Workbench 6.0: Help is on the way…”

MySQL Workbench 6.0: Home Screen

The home screen of MySQL Workbench is the first thing you see when you start up the application and it’s therefor an important hub to quickly reach important parts or do repeating tasks like opening certain connections. This article describes the home screen in some detail with additional info and tips.

Continue reading “MySQL Workbench 6.0: Home Screen”

Quick help for an upgrade problem

With the just released version 5.2.34 we also changed the python version used in MySQL Workbench (to 2.7). However, this produces a problem when upgrading from 5.2.33. The reason is that the installer leaves all the compiled python files (*.pyc) in the installation folder. On next load of Workbench you can’t even get beyond the splash screen.

We will soon publish a new release with that problem fixed. In the mean time simply uninstall Workbench before you install 5.2.34. Your stored connections, starters, settings etc. are not touched by this. Make sure that you remove any remaining file once uninstallation finished, before you install 5.2.34.

This problem was first encountered on Windows using the msi package, but might also affect the zip package or even other platforms. In any case remove the old files before installing 5.2.34.

MySQL Workbench: Manage MySQL on Windows Servers the Windows way

The MySQL team has been continuously improving its products on the Windows platform. Along this line, we’ve responded to a request from our users of Workbench on Windows – to provide remote access to Windows Servers using Windows management methods – as an alternative  to SSH.

Managing a MySQL server obviously requires access to the target machine, which usually requires elevated rights for certain tasks like restarting the server or manipulating the configuration file on Windows (where this file is in a protected path). For local connections this is mostly not a big deal. However for remote boxes security measures prevent easy manipulation of such essential things like server processes. In this blog post we discuss native Windows management and how it can be used in MySQL Workbench.

Continue reading “MySQL Workbench: Manage MySQL on Windows Servers the Windows way”

MySQL Workbench on Snow Leopard

As all you Mac users (and probably many non-Macies) know Apple released Snow Leopard (Mac OS X 10.6) recently, even though this release was announced for September previously. Since a large part of the MySQL Workbench user base works on OS X it was clear that many of you will test Workbench on the new OS. However, so far we haven’t had the opportunity to do the same (too busy fixing bugs on released OSes) and hence we did not know about incompatibility problems there.

In the meantime several users did tests and reported us a crash on startup of the application, which means you cannot use MySQL Workbench on Snow Leopard for the time being. We are currently preparing build, test and developer machines with it and will hand out a fixed WB release as soon as possible. So, please stay patient. It’s only a matter of days.

Give and Take

Have you ever looked at the source code of MySQL Workbench? There are quite some hidden gems there, e.g. the OpenGL canvas and our latest addtion: a new UI port of the famous open source edit control Scintilla. This port allows us to use this fantastic editor control natively on Mac OS X Leopard as a Cocoa framework.

Scintilla, native Cocoa port on OS X In fact, we are using Scintilla for a long time already, mainly on Windows. It allows us to give you a powerful editor interface for SQL code. This includes features like syntax highlighting, text markers (e.g. for marking syntax errors), code folding, code completion and many more. However, so far we could not use it on OS X. There is a Carbon port available, but that did not work well (particularly, if the rest of the UI is using Cocoa) so we decided to write our own port for Cocoa, taking the Carbon code as the starting point. This new framework is by far not complete but works already so well that we have it included in our recently published 5.2. alpha release. But we thought there should be more than that. Since we are committed to open source software (even though we have some productivity features in our SE version of MySQL Workbench, which are not available in source code, however the vast majority of the code is open) we decided to publish our port as a separate project, so that also users who do not use MySQL Workbench, but Scintilla, can make use of it. In the good tradition of publishing MySQL code on Launchpad we created a new project called Scintilla-Cocoa, where everybody can see what changed and can download the new code. Currently you have to use a Bazaar client to create a local branch of the Launchpad project in order to actually get the code.

Additionally, we sent the author of the Scintilla project Neil Hodgson a patch so that he can incorporate our code into the main distribution. If anybody of you is interested in helping to complete the Cocoa port let us know. We can give you write access to the Launchpad project where you can directly work on the actual code.