Archive for the ‘Announcements’ Category

MySQL Workbench 5.2.40 GA Released

Май 16th, 2012

The MySQL Developer Tools team is announcing the next maintenance release of it’s flagship product, MySQL Workbench, version 5.2.40. This version contains more than 28 bug fixes applied over version 5.2.39.

MySQL Workbench 5.2 GA

• Data Modeling

• Query

• Administration

Please get your copy from our Download site.

Sources and binary packages are available for several platforms, including Windows, Mac OS X and Linux. http://dev.mysql.com/downloads/workbench/

Workbench Documentation can be found here.

http://dev.mysql.com/doc/workbench/en/index.html

Utilities Documentation can be found here.
http://dev.mysql.com/doc/workbench/en/mysql-utilities.html

In addition to the new Query/SQL Development and Administration modules, version 5.2 features improved stability and performance – especially in Windows, where OpenGL support has been enhanced and the UI was optimized to offer better responsiveness.

This release also includes improvements to the scripting capabilities of the SQL Editor. You can read more about it in http://wb.mysql.com/workbench/doc/

For a detailed list of resolved issues, see the change log.

http://dev.mysql.com/doc/workbench/en/wb-change-history.html

If you need any additional info or help please get in touch with us. Post in our forums or leave comments on our blog pages.

- The MySQL Workbench Team


PlanetMySQL Voting: Vote UP / Vote DOWN

MySQL Workbench 5.2.39 GA Released

Апрель 11th, 2012

The MySQL Developer Tools team is announcing the next maintenance release of it’s flagship product, MySQL Workbench, version 5.2.39. This version contains MySQL Utilities 1.0.5, a set of command line Python utilities for helping performing and scripting various administration tasks for MySQL. A complete list of changes in this release of the Utilities can be found at:
http://dev.mysql.com/doc/workbench/en/wb-utils-news-1-0-5.html

More than 74 bugs were fixed in this version.

MySQL Workbench 5.2 GA

• Data Modeling

• Query (replaces the old MySQL Query Browser)

• Administration (replaces the old MySQL Administrator)

Please get your copy from our Download site.

Sources and binary packages are available for several platforms, including Windows, Mac OS X and Linux. http://dev.mysql.com/downloads/workbench/

Workbench Documentation can be found here.

http://dev.mysql.com/doc/workbench/en/index.html

Utilities Documentation can be found here.
http://dev.mysql.com/doc/workbench/en/mysql-utilities.html

In addition to the new Query/SQL Development and Administration modules, version 5.2 features improved stability and performance – especially in Windows, where OpenGL support has been enhanced and the UI was optimized to offer better responsiveness.

This release also includes improvements to the scripting capabilities of the SQL Editor. You can read more about it in http://wb.mysql.com/workbench/doc/

For a detailed list of resolved issues, see the change log.

http://dev.mysql.com/doc/workbench/en/wb-change-history.html

If you need any additional info or help please get in touch with us. Post in our forums or leave comments on our blog pages.

- The MySQL Workbench Team


PlanetMySQL Voting: Vote UP / Vote DOWN

MySQL Workbench 5.2.37 GA Released

Декабрь 27th, 2011

The MySQL Developer Tools team is announcing the next maintenance release of it’s flagship product, MySQL Workbench, version 5.2.37. 

This release contains 21 bug fixes, including a fix for a slowdown on loading of schema objects in the SQL Editor. 


MySQL Workbench 5.2 GA


• Data Modeling

• Query (replaces the old MySQL Query Browser)

• Administration (replaces the old MySQL Administrator)

Please get your copy from our Download site. Sources and binary packages are available for several platforms, including Windows, Mac OS X and Linux.


http://dev.mysql.com/downloads/workbench/


Workbench Documentation can be found here.


http://dev.mysql.com/doc/workbench/en/index.html


In addition to the new Query/SQL Development and Administration modules, version 5.2 features improved stability and performance – especially in Windows, where OpenGL support has been enhanced and the UI was optimized to offer better responsiveness. This release also includes improvements to the scripting capabilities of the SQL Editor. You can read more about it in


http://wb.mysql.com/workbench/doc/


For a detailed list of resolved issues, see the change log.


http://dev.mysql.com/doc/workbench/en/wb-change-history.html


If you need any additional info or help please get in touch with us.


Post in our forums, leave comments on our blog pages or if you want to talk to us directly you can visit us on our IRC channel #workbench on irc.freenode.net.


- The MySQL Workbench Team


Alfredo Kojima


PlanetMySQL Voting: Vote UP / Vote DOWN

Get 20% off on any Devart product (expires January 10th)!

Декабрь 14th, 2011

Merry Christmas and Happy New Year!

As Christmas holidays are drawing closer, we offer you to get 20% off any product license order.

Don’t think twice, just save 20%. And what more, you get free access to all future releases of the respective products for one year.

Get 20% discount!

Hurry up, this offer is available only from December 01, 2011 till January 10, 2012. Decide and order right now.

We wish you all the best in the coming year, let joy and happiness be your constant partners and friends!

Best Christmas Wishes,
Devart Team


PlanetMySQL Voting: Vote UP / Vote DOWN

MySQL Workbench Blog is now at mysqlworkbench.org

Сентябрь 29th, 2011

The URL for the MySQL Workbench community blog is being changed to mysqlworkbench.org. The old URL will soon no longer point to this blog. Nothing else is changing, so update your bookmarks and keep checking for news, announcements and other content of interest for all MySQL Workbench users!


PlanetMySQL Voting: Vote UP / Vote DOWN

MySQL Workbench 5.2.35 GA Available

Сентябрь 23rd, 2011

The MySQL Developer Tools team is proud to announce the next release of it’s flagship product, MySQL Workbench, version 5.2.35. This is the next maintenance release containing 29 bug fixes as well as new feature additions. We also updated the supported platforms to include most recent editions of Fedora and Ubuntu Linux.

MySQL Workbench 5.2.35 now supports the Native Windows Authentication Method – available in the commercial MySQL server product – and the creation of user accounts utilizing this new authentication method.

For the PHP developers out there, Workbench now also comes with a new set of plugins to turn SQL Queries into PHP code to be put right into your scripts.

A big “Thank You” again to everyone for the large amount of feedback and ideas we have received on how to further improve and extend MySQL Workbench. We are continuously working on improving the functionality and stability of MySQL Workbench – please keep sending us your ideas!

MySQL Workbench 5.2 GA

  • Data Modeling
  • Query (replaces the old MySQL Query Browser)
  • Administration (replaces the old MySQL Administrator)

Please get your copy from our Download site. Sources and binary packages are available for several platforms, including Windows, Mac OS X and Linux.

http://dev.mysql.com/downloads/workbench/

Workbench Documentation can be found here.

http://dev.mysql.com/doc/workbench/en/index.html

In addition to the new Query/SQL Development and Administration modules, version 5.2 features improved stability and performance – especially in Windows, where OpenGL support has been enhanced and the UI was optimized to offer better responsiveness. This release also includes improvements to the scripting capabilities of the SQL Editor. You can read more about it in

http://wb.mysql.com/workbench/doc/

For a detailed list of resolved issues, see the change log.

http://dev.mysql.com/doc/workbench/en/wb-change-history.html

If you need any additional info or help please get in touch with us.

Post in our forums, leave comments on our blog pages or if you want to talk to us directly you can visit us on our IRC channel #workbench on irc.freenode.net.

- The MySQL Workbench Team


PlanetMySQL Voting: Vote UP / Vote DOWN

Old GUI tools repositories on Launchpad

Сентябрь 15th, 2011

You might remember that MySQL was aquired by Sun, which later went into Oracle (who won’t? :-) ). As usual in such a process network infrastructure is being merged to ease managing it. Such a merge is currently in process with the effect that previously publicly available servers are now behind Oracle’s firewalls. From a security point of view this is good news, not so for services that relied on this access. One of them is our copy of all old GUI tools repositories on Launchpad. These repositories have been made available 3 years ago when we prepared the switch to MySQL Workbench as our main product. The idea behind it was that anybody who is interested can work on the code and propose patches.

As you can see there this hasn’t worked out well. No merges were proposed during all the time, so we are going to use this interruption of the Launchpad mirroring to stop this entirely. It does not make sense to have Launchpad work as pure download place (if at all). The GUI tools repositories will be removed (the one for Scintilla Cocoa will stay). The source code of the old tools can still be downloaded via our archive page as before.


PlanetMySQL Voting: Vote UP / Vote DOWN

2011 DevProConnections nominates dbForge Studio for MySQL as Best IDE Product!

Август 16th, 2011
dbForge Studio for MySQL - Best IDE Product

dbForge Studio for MySQL - Best IDE Product

Support Your Favorite Devart Products in 2011 DevProConnections Voting!

We would like to invite you to take part in 2011 DevProConnections voting. The Community Choice Awards, as presented by Windows IT Pro, SQL Server Magazine, and DevProConnections, allow you to decide, which IT products get chosen for acclaim and recognition.


This year Devart dbForge Studio for MySQL is nominated in the following category.

2011 DevProConnections Community Choice Awards:

Category 14 (page 2): Best IDE Product – dbForge Studio for MySQL

If you think that Devart’s MySQL GUI Client is worth of being the best in the given categories, vote now for your favourite Devart products:

2011 DevProConnections Community Choice Awards

With Best Wishes,
The Devart Team


PlanetMySQL Voting: Vote UP / Vote DOWN

Handling stack overflow on custom stacks

Декабрь 31st, 2010

On my computer, the callstack of a new process is around 10MB*. Modern operating system automatically reserve some amount of virtual memory and install protections on the page below the stack to create a segmentation fault on stack overflow. This ensures that a stack overflow won’t go corrupting random parts of memory.

We want to have a lot of coroutines, so they should have smaller stacks, maybe 16 or 64KB. This makes stack overflow an even greater possibility, but at the same time, coroutines implemented in user space don’t get this checking for free—we have to build it ourselves. In the process, we can even do better: we can give some information about the coroutine which crashed. Here’s the idea:

  • Memory-protect the page on the bottom of the stack (remember, x86 callstacks grow down) to disallow reads and writes.
  • Install a signal handler for SIGSEGV.
  • In the handler, examine which address caused the page fault:
    • If the address is within the protected page of a coroutine, report a callstack overflow for the coroutine, with a stack backtrace and some information about the coroutine that crashed.
    • Otherwise, report a generic memory fault at the address, with a stack backtrace.

I’m treating stack overflow as a fatal error here, but a more nuanced approach is possible: rather than killing the whole database, it could just kill that coroutine and return to the scheduler. But this particular kind of error tolerance would require broad modifications to RethinkDB which we’re not ready to do. I could also make stack overflow resize the stack to be larger, but this is difficult in C++ because there might be pointers into the stack.

Nothing here is complicated to implement, but it involves the interaction of a few different system calls, which I’ll explain in this article.

Manipulating memory protection

We want to allocate the stack and make the bottom page unreadable and unwritable. The mprotect system call manipulates memory protection, and getpagesize tells us how big a page is (it might not be 4KB). valloc makes a page-aligned memory allocation.

void *stack = valloc(stack_size);
mprotect(stack, getpagesize(), PROT_NONE);

When deallocating the stack, be sure to reset the protection to what it was before.

mprotect(stack, getpagesize(), PROT_READ|PROT_WRITE);
free(stack);

Installing a signal handler

In order to catch the segfault, we have to install a signal handler. The signal system call won’t cut it—it just doesn’t give us enough information about what happened. Instead, we have to use sigaction, which takes a whole struct of parameters, not just a function pointer, for how to handle the signal. One struct member is sa_flags. We have to turn on the SA_ONSTACK flag in order to use a user-provided stack (see below) and the SA_SIGINFO flag, in order to call a function with more information.

If SA_SIGINFO is set, then we can set the sa_sigaction member to a function which takes a siginfo_t struct as an argument. The si_addr member of that struct contains the address of the location which caused the fault. All together, the code for establishing the page handler is as follows:

struct sigaction action;
bzero(&action, sizeof(action));
action.sa_flags = SA_SIGINFO|SA_STACK;
action.sa_sigaction = &sigsegv_handler;
sigaction(SIGSEGV, &action, NULL);

The signal handler itself will print out the CPU where the coroutine was initialized, but it would be easy to extend to support printing other metadata contained in the coroutine. int coro_t::in_coro_from_cpu(int) reports which CPU a coroutine was initialized on, or -1 if the address was not from the protected page of a coroutine stack. crash will cause the program to terminate with the given error message, together with a stack trace.

void sigsegv_handler(int signum, siginfo_t *info, void *data) {
    void *addr = info->si_addr;
    int info = coro_t::in_coro_from_cpu(addr);
    if (cpu == -1) {
        crash("Segmentation fault from reading the address %p.", addr);
    } else {
        crash("Callstack overflow from a coroutine initialized on CPU %d at address %p.", cpu, addr);
    }
}

Installing a special stack for the signal handler

By default, when a signal is delivered, its handler is called on the same stack where the program was running. But if the signal is due to stack overflow, then attempting to execute the handler will cause a second segfault. Linux is smart enough not to send this segfault back to the same signal handler, which would prevent an infinite cascade of segfaults. Instead, in effect, the signal handler does not work.

To make it work, we have to provide an alternate stack to execute the signal handler on. The system call to install this stack is called sigaltstack. As a parameter, it takes a stack_t, which consists of a pointer to the base of the stack, the size of the stack, and some flags that aren’t relevant for our purposes.

stack_t segv_stack;
segv_stack.ss_sp = valloc(SEGV_STACK_SIZE);
segv_stack.ss_flags = 0;
segv_stack.ss_size = SEGV_STACK_SIZE;
sigaltstack(&segv_stack, NULL);

SEGV_STACK_SIZE doesn’t have to be so big, but it has to be big enough to call printf from. The MINSIGSTKSZ constant indicates how big a stack has to be to execute any signal handler at all. To be on the safe side, used that constant plus 4096 for SEGV_STACK_SIZE. sigaltstack should be called before the associated call to sigaction which is intended to register a signal handler with that stack.

Operating in a multithreaded environment

If a process calls sigaction and then spawns pthreads within it, then those pthreads will inherit the signal handlers that were already installed. Apparently, this is not the case for sigaltstack: If a signal handler is installed with sigaction using a sigaltstack, and a thread spawned from that process is killed with the right signal, then the installed stack will not be found! The signal handler must instead be installed on each pthread individually. I’m not sure whether this is a bug in Linux or just a quirk of POSIX; in any case, I couldn’t find it documented anywhere.

Pulling it all together

A few simple system calls can allow stack overflows in user-space coroutines to be handled nicely, providing detailed error messages without runtime overhead in cases where the stack does not overflow. Indeed, the benchmarks which I previously reported are unaffected by this change. Other programming language runtimes, like that of Io, checks the height of the callstack on every function call in order to catch overflow. This technique is more efficient.

Io supports callstacks that will resize on overflow, to a point. Such a feature is more difficult to implement in C++ because there might be pointers into the callstack, and weak typing makes it impossible to trace the stacks and heap to update these even if we wanted to. However, virtual memory may be usable to implement this resizing. First, it may just work to allocate very large stacks and not touch them, hoping that the virtual memory system will ensure that no physical memory or swap space is used for the stacks. But this might put stress on the kernel’s data structures, and it may not work well if overcommitting is turned off, as it is in some server environments. Alternatively, mremap may be used to expand the stack from the page fault handler. But I’m not sure how I could reserve a chunk of virtual memory to expand into, without depending on overcommitting in some cases. None of these techniques would work out well on 32-bit systems because there isn’t enough address space. This is still something to look into in the future, though.

I implemented stack overflow checking after getting stuck on a particular bug in the database, and when returning to that bug, I found that this was in fact the cause! Stack overflow isn’t an obscure, uncommon thing, especially when stacks are small and there might be recursion. Working together with the operating system allows us to broaden the applicability of these software engineering benefits to performance-critical code.


* You can find the value on your computer by running the following program (without optimizations!) and examining the difference between the first and last number, when it terminates with a segfault.

#include <stdio.h>
int main() {
        char stuff[2048];
        printf("I'm at %p\n", &stuff);
        main();
}

If this is all as exciting to you as it is to me, you should consider working at RethinkDB! We’re hiring—please see our jobs page for more details.


PlanetMySQL Voting: Vote UP / Vote DOWN

MySQL Workbench 5.2.31 GA Available

Декабрь 9th, 2010

We’re proud to announce the next release of MySQL Workbench, version 5.2.31. This is a maintenance release focusing on general product improvement and usability.

We managed to close 97 bugs for this release.

MySQL Workbench:  Remote Administration on Windows – Support for Windows “Remote” Management within the New Server Instance Wizard and Manage Server Instance Form. This works for servers on the same domain (or trusted) – ie typical Windows LAN environments.  We expect Windows users to prefer this “native” way to do remote admin on Windows.  SSH remote admin has been available for some time on Windows, Mac OS, and Linux.

MySQL Workbench:  Utilities Plugin – Starts a shell that contains a set of python scripts that perform basic tasks such as copying, exporting, and importing databases, finding database objects or processes, cloning servers and cloning users.

MySQL Workbench: Scripting shell – Provides python plugin scripters with break points, start, step, pause, and added debug information.

As always, we want to thank everyone for the great feedback we have received. This helps us to continuously improve the functionality and stability of MySQL Workbench – we appreciate all your ideas for improving MySQL Workbench.  Please keep sending us your ideas!
MySQL Workbench 5.2 GA

  • Data Modeling
  • Query (replaces the old MySQL Query Browser)
  • Administration (replaces the old MySQL Administrator)

Please get your copy from our Download site. Sources and binary packages are available for several platforms, including Windows, Mac OS X and Linux.

http://dev.mysql.com/downloads/workbench/

To get started quickly, please take a look at this short tutorial.

MySQL Workbench 5.2 RC Tutorial

http://wb.mysql.com/?p=406

Workbench Documentation can be found here.

http://dev.mysql.com/doc/workbench/en/index.html

In addition to the new Query/SQL Development and Administration modules, version 5.2 features improved stability and performance – especially in Windows, where OpenGL support has been enhanced and the UI was optimized to offer better responsiveness.
This release also includes improvements to the scripting capabilities of the SQL Editor. You can read more about it in

http://wb.mysql.com/workbench/doc/

For a detailed list of resolved issues, see the change log.

http://dev.mysql.com/doc/workbench/en/wb-change-history.html

If you need any additional info or help please get in touch with us.

Post in our forums, leave comments on our blog pages or if you want to talk to us directly you can visit us on our IRC channel #workbench on irc.freenode.net.

- The MySQL Workbench Team


PlanetMySQL Voting: Vote UP / Vote DOWN