Sunday, November 30, 2008

I have started again to work on the FlameRobin redesign, with multithreaded database access. Since FR 0.9.0 is using the wxAUI library for tabbed property pages I decided to use wxAUI for all of FR:

Ideally it will be possible to open sql editor windows and property windows either in tabs or in their own parent frames. A new poll is up so we get an idea whether the current FlameRobin UI is liked (or not so much) among the FR user base.

- Use saved user name and password - Use saved user name and encrypted password - Use saved user name, but always ask for password - Use trusted user authentication

The method is selected via a choice control. For the last two thepassword entry field is disabled, for the last one both the user nameand the password entry fields are disabled.

Empty password is supported now for the first method. Unfortunately ouruser management does not allow for empty passwords. Supporting thecreation of users without password is easy (remove two lines from IBPP),but deleting the password of an existing user is impossible ATM. Thisneeds more work anyway.

I had to modify our internal copy of IBPP slightly, will add patches forthat to SF tracker.

Tuesday, October 21, 2008

I thought how nice would be to have something like that withFlameRobin. And now I was contacted by FirebirdConfig author, JhonnySuarez, about having it as a plugin for FlameRobin.

I know we haven't done any preparation for 'plugins' but maybe wecould simply hook it up to some menu item in Server menu and invokethe FirebirdConfig executable from there, with some parameters. Ormaybe we should work on some generic plugin architecture first toallow others to create useful plugins as well.

Only obstacles I see so far:

- it's (currently) Windows only, so an #ifdef would have to take care of that- license is MPL, which is not compatible. It would be good thatFirebirdConfig is released under MIT license (Expat license) or asimilar one, so we don't have to include two licenses in installer.

P.S. Jhonny is reading this list, so we can discuss the details andyou can ask any question to which he can reply.

Monday, September 29, 2008

A new release is out. It brings new features like Firebird 2.1 support, tabbed browsing, etc. Windows, Linux and Mac OS X binaries and source code package are available for download. Here are the details.

or write the iso xubuntu-8.04.1-desktop-i386-flamerobin.iso on the dvd with k3b or nautilusafter the system boots you can create an database withthe username:sysdbapassword:masterkeyand the path/tmp/flamrobin.fdb

I have tested it by using virtual manager similar to this guide only that i used this iso xubuntu-8.04.1-desktop-i386-flamerobin.iso instead of jeos

- Firebird 2.1: Support for database triggers- Firebird 2.1: Support for global temporary tables- Firebird 2.1: Descriptions can be set for generators- Firebird 2.1: Support for domains as stored procedure parameter types- Firebird 2.1: Detect when the equals sign (=) is be used instead of DEFAULT- SQL Editor: Improved autocomplete for table columns- SQL Editor: fixed problems with scolling of log control- SQL Editor: removed flicker when executing scripts with COMMITs or AUTODLL ON- DataGrid: Copy as Update and Insert for single cell does not require cell to be selected anymore- DLL extraction for GRANTs fixed- Fixed random crashes when dropping object from its property page- Implemented missing prompt for dropping of some objects

- GRANT statements moved to end of database DDL script for easier diffs

I have committed to SVN the experimental tab-based implementation ofproperty pages (using wxAUI). I have developed it on Linux, but itwould be nice if others (i.e. you) could test on other platforms tosee how it works. It's a single commit, and if it turns out that itdoesn't work, we can revert it (at least it would be a nice demo forwhat I'd like to see in 'new' FR Michael is working on).

What is done:

- added a notebook control to the main frame (when you start FR,maximize the window)- notebook control shows tabs of all opened metadata item property pages- you can also open links in separate "windows" like the "old" FRusing the "open link in a new window" context menu- browsing around should be complete and bug free- maybe adding a 'open link in a new tab' would also be a good idea,as you currently cannot watch both 'triggers' and 'fields' of a table(for example) in separate tabs (only in a separate window).

- I also added a special "items" tab, that shows children of thecurrently selected tree item (in the main tree)- "items" tab is only a 'demo', it just shows items, you cannot doanything with them- also, each part of the address label (home > localhost > ... ) couldbe made a clickable link to go back in hierarchy

To do all this, I moved all the property-page functionality fromMetadataItemPropertiesFrame to a new class,MetadataItemPropertiesPanel. Currently, MetadataItemPropertiesFrameonly show a single item, but I guess it could be extended to supportmultiple tabs as well.

Before going further I have few doubts, and I'd like others to try itout and give some input. There seem to be many ways to handle'tab-based browsing'. We can have the current code, or have ability tohave multiple MainFrame's (i.e. tree+notebook), or we can have asingle main frame (tree-only) and many notebook-frames.

The more 'separation' (i.e. freedom) we have for these elements, itwould be harder to do navigation. Currently it's easy since one treemaps to one list control.

Also, there seem to exist some wxAUI classes for MDI, so maybe theywould be interesting to play with.

P.S. I know that some of the classes might need to get renamed afterthis, for example framemanager doesn't make much sense when itactually manages panels. If left it as-is as it's a public interfaceto other classes, and I'm still not sure about the final shape of thewhole thing.

We’ve been using Firebird as infovark’s SQL database for several months now. It’s an open source fork of Borland’s InterBase SQL server. So far, we’ve been extremely impressed by the database itself. Its companion database administration tool, FlameRobin, is shaping up nicely too. It’s currently in version 0.86, but it handles most of what we need.

run the included executable. It should load your current fr_databases.conf file and show the databases in a tree. Double-clicking a database node initiates the connection in a worker thread. Please note that you can try to connect to a database on an unavailable server, and continue to work with the program. Current FR would freeze until the timeout.

I have built it using MSVC++ on Windows, and using gcc on Ubuntu. Boostlibraries need to be installed on the machine, that can be done usingapt-get on Ubuntu, and by manually installing the latest librariesinstaller from www.boost.org on Windows. On Windows the environmentvariable BOOST_ROOT needs to be defined.

The code doesn't do a whole lot currently: It loads thefr_databases.conf file and shows the databases in a tree view.Double-click or [Return] on a database node connects / disconnects adatabase. Connected databases show the lists of system tables and usertables. These lists are populated on-demand, when the collection nodesare to be expanded. All access to the database (API calls) is performedin a background thread.

The most interesting (as in different from current FlameRobin sources)code can be found in src/hierarchy (DBH uses Boost smart pointers) andin src/engine (multi-threaded API calls).

This is mostly a bug-fix release, probably a first ’stable’ 0.8version without major bugs. Windows, Linux and Mac OS X binaries andsource code package are available for download. I recommend all Linuxdistribution packagers to upgrade (especially if you still use 0.8.3or lower). Here’s the changelog since 0.8.3:

New features- DataGrid: BLOB data is now (optionally) shown in cells. Read-only for now.- DataGrid: A basic ORDER BY clause building when column header isdouble-clicked- Support for LIST function in Firebird 2.1- Support for MON tables in Firebird 2.1 (Read-only for now.)

Enhancements and Bug fixes- DataGrid: FR no longer crashes when transaction has ended(commit/rollback) and grid edit control is active- DataGrid: Complete string is now shown for editing and copying multiline text- DataGrid: Copy command now copies a single cell if nothing is selected- DataGrid: Fixed mixup between BLOB ID and data it contains- DataGrid: Fixed bug when editing or deleting in grid causes exceptions.- DataGrid: Successfully deleted rows are deselected, so user caneasily see what is done.- DDL extraction for GRANTs now only quotes names when needed- DDL extraction for defaults does not use double quotes anymore.- Database property page now shows minor ODS version when it is not zero- Hovering over icons in privileges window, now really shows the grantor- Improved parsing of SELECT statements- Support for INSERT..RETURNING and EXECUTE STATEMENT that return asingle record- Fixed messagebox flood when Execute Procedure called and it doesn’treturn anything- Print preview and SaveToHtmlFile works again for manual and changelog- Extracting invalid DDL (missing domain data in system tables) doesnot crash FR anymore- Silent installation (on Windows) does not show changelog window anymore- Autogenerated domains (system domains) do not show up in the tree anymore- Added ALTER DOMAIN action for domains- Tree now shows NOT NULL for columns that inherit NOT NULL from domain- Fixed parsing bug when non-reserved keyword is used as identifier- Fixed autocomplete for selectable procedure alias when procedurecall contains parameters (in PSQL)

- DataGrid: BLOB data is now (optionally) shown in cells. Read-only for now.- DataGrid: A basic ORDER BY clause building when column header is double-clicked- Support for LIST function in Firebird 2.1- Support for MON tables in Firebird 2.1 (Read-only for now.)

Enhancements and Bug fixes

- DataGrid: FR no longer crashes when transaction has ended (commit/rollback) and grid edit control is active- DataGrid: Complete string is now shown for editing and copying multiline text- DataGrid: Copy command now copies a single cell if nothing is selected- DataGrid: Fixed mixup between BLOB ID and data it contains- DataGrid: Fixed bug when editing or deleting in grid causes exceptions.- DataGrid: Successfully deleted rows are deselected, so user can easily see what is done.- DDL extraction for GRANTs now only quotes names when needed- DDL extraction for defaults does not use double quotes anymore.- Hovering over icons in privileges window, now really shows the grantor- Improved parsing of SELECT statements- Support for INSERT..RETURNING and EXECUTE STATEMENT that return a single record- Fixed messagebox flood when Execute Procedure called and it doesn't return anything- Print preview and SaveToHtmlFile works again for manual and changelog- Extracting invalid DDL (missing domain data in system tables) does not crash FR anymore- Silent instalation (on Windows) does not show changelog window anymore- Autogenerated domains (system domains) do not show up in the tree anymore- Added ALTER DOMAIN action for domains- Tree now shows NOT NULL for columns that inherit NOT NULL from domain- Fixed parsing bug when non-reserved keyword is used as identifier.- Fixed autocomplete for selectable procedure alias when procedure call contains parameters (in PSQL)

Friday, February 29, 2008

QuickEasy Software, from Cape Town, today became a Silver sponsor, with CEO Heinrich van der Vyver stating “…recently converted our software from IB6 to run on Firebird 2.0.3 and I’m very pleased with the result, also with the backend utility Flamerobin.”

I have installed quilt/dput on my machine$apt-get install quilt dputI have modified debian/rules and debian/control to add myself to the maintainerssomething like is described in this documentIncreased the ubuntu package nr$dch -i$debuild -S -sa$dput my-ppa flamerobin_0.8.3-1ubuntu6_source.changesHere is the log

Monday, February 18, 2008

[Ed: Milan solved the speed problem for g++, here is what he wrote on devel-list]Hi all,

Today I tried building FlameRobin with MSVC Express. It works reallynice and it builds FR from scratch in about 2.5 minutes on thismachine where I tried it (Intel Celeron M 1.4GHz with 256MB RAM). Thisin on Windows XP Pro with all anti-virus and similar software turnedoff.

Then I tried on Linux (it's a dual boot machine) and GCC took 272seconds, i.e. 4.5 minutes. Both compilers are using PCH. I got reallyfrustrated about this in the past, so much that I considered toinstall Windows on my machine and do FR development there.

But, I suddenly got the idea that GCC might be losing too much timeoptimizing. So, I tried to lover the optimization from level 2 tolevel 1. I got slight improvement: 225 seconds. Still too slow. Then Iturned it off, and I got the amazing 130 seconds, i.e. 2:10. This isquite acceptable to development and I guess I'll only use -O2 when webuild the release versions from now on.

The option can be changed by setting CXXFLAGS environment variablebefore you run 'configure' script. Something like this (if your shellis bash):

Wednesday, January 23, 2008

I never used wx's ODBC classes; I'm using SQLite3 (via wxSQLite3) / FireBird (via IBPP) databases. I already have -hand written- Lua bindings of wxSQLite3 and IBPP. In a recent C++ project, I used wxGrid/FireBird (code taken from FlameRobin); I like it. Now I want to test/use them with wxLua.

Monday, January 14, 2008

I have implemented the ability to show blob data in the grid and now theneed to show multiline text has increased. I have some ideas about it,but I'd like to see as much possible feedback as I believe many usersare using multiline text columns. Here are the ideas of UI to coverit:

a) show tooltip while mouse hovers over cellsb) show tooltip on some user action (like double-click)c) have a separate subwindow (split grid or sql editor adding anothercolumn to it) which stays on screen until user closes (hides) itd) have a separate window/dialog that would only show the data

c) and d) is something I plan for Blobs with tabs fortext/hex/image/etc. representation, so maybe it is the best idea fortext as well? Such dialog could have some options like 'save to file'and similar.

Please give any comment or your own idea. I might even set up awebsite poll if we can't figure out what is the best solution.