Author Archive

Drizzle support for phpMyAdmin – week 2

June 5th, 2011 No comments

With my semester nearing its end I didn’t have much time for coding, but I managed to get done with a few interesting things:

  • a new Plugins tab, which replaces Engines in Drizzle – it contains a list of installed plugins, with a list of features (engines, auth methods, functions, system views etc.) provided by each of them
  • created a Drizzle version of phpMyAdmin configuration storage, so all user preferences and other advanced functions are enabled and can work correctly
  • home page got correct wording for when user is connected to MariaDB or Drizzle database – no more indications that MySQL is used when it actually isn’t

In the future I plan to extend Plugins tab with some filtering and/or a second view, to provide a easily readable list of all plugin-provided features from one category.

During the next week I plan to concentrate on getting table Structure tab fully working, along with data browsing. Well, I say “get fully working” but in reality I want to go through all use cases and check whether it behaves correctly with Drizzle, and if it doesn’t – provide necessary fixes.

Categories: phpMyAdmin, Summer of Code 2011 Tags:

Drizzle support for phpMyAdmin – week 1

May 29th, 2011 No comments

With first week over, phpMyAdmin is now able to correctly handle displaying of navigation frame and database / table lists for Drizzle. The changes introduced this week were:

  • reading of table size and average row length from table cache (meaning that it works only if table is loaded into Drizzle’s cache),
  • showing row counts for PBMS tables, internally they are treated as InnoDB tables with approximate row count of 0,
  • database list tab works correctly, the number of available statistics is way down when compared to MySQL, but its a direct consequence of lack of table statistics in Drizzle,
  • I hid tabs for features not supported by Drizzle: Replication, Privileges, Engines (this will get replaced with a new Plugins tab),
  • due to how privileges work, everyone is treated as a superuser,
  • home page no more shows any “MySQL” headers when connected to a Drizzle server,
  • some internal changes that are not directly related to this week’s planned tasks, but involve my future work, i.e. removal of deprecated PMA_DBI_get_fields, changes to PMA_DBI_get_columns

Week ago I hoped to get accurate table and index sizes for InnoDB, as the engine itself makes it possible to access this data (as the amount of disk pages used by object), but it appears that only Percona makes this information available. MySQL seems to use it internally with its SHOW FULL TABLE STATUS, and Drizzle has currently no way of accessing it.

During next week I want to create a new server tab – Plugins, which replaces Engines tab for MySQL, and provides a list of all loaded plugins.

Categories: phpMyAdmin, Summer of Code 2011 Tags:

Drizzle support for phpMyAdmin – plans for first week

May 21st, 2011 No comments

Coding for Summer of Code is about to begin, meaning that for the next twelve weeks you will be seeing here weekly reports on my work. I have already set up my environment and made some changes to random bits of phpMyAdmin code, mostly to facilitate access to database metadata stored in information_schema and data_dictionary schemas. At the beginning I won’t be spending entire weeks on coding because my semester ends around the end of June, but changes introduced during that period will probably have the biggest impact on Drizzle support in phpMyAdmin – at the end of June all browsing and searching features should be working correctly.

Like in previous year, my public code repository lies at, with the work occurring on the drizzle branch. Demo version, updated hourly, is at During the first week I want to make sure that the most basic functionality works correctly, i.e. we have correct and navigation frame and database/table lists. Some work on that is already done, but there are still some missing bits. If possible, I want to extract information on table and index sizes, which I should be able to do for InnoDB tables working with InnoDB plugin (HailDB doesn’t publish necessary information in data_dictionary).

Categories: phpMyAdmin, Summer of Code 2011 Tags:

Drizzle support for phpMyAdmin

April 27th, 2011 No comments

Yay, I have been accepted to Google Summer of Code for the third time! This year I will be coding my Drizzle support project for phpMyAdmin, which will enable it to be used with Drizzle.

Here is a short info on what I will be trying to achieve.


Implementing support for Drizzle in phpMyAdmin, which will allow users to utilize this tool with new, hopefully successful database management system.

Benefits to the users

phpMyAdmin will become a convenient tool for managing Drizzle databases, probably one of the first, if not first.

Project Details (abridged)

I want to look through phpMyAdmin code and test all features with Drizzle, making changes where necessary, so that at the end of upcoming summer all important features will work with Drizzle.

My work will encompass:

  1. Refactoring PMA_DBI_* functions to make them work with Drizzle
  2. Creating a set of functions for working with drizzle PHP extension
  3. Looking through all phpMyAdmin functionality to check whether it works with Drizzle, and making changes where necessary
  4. Removal of access to features which are unavailable in Drizzle core: privileges, replication
Categories: phpMyAdmin, Summer of Code 2011 Tags:

User preferences – weeks 11 and 12

August 16th, 2010 No comments

My last Summer of Code report for my user preferences project. During last two weeks I worked on fixing bugs and improving code documentation. The most notable changes include:

  • fixed <select> handling
  • fixed regular expression validation when phpMyAdmin custom error handler is set
  • removed debug code, made CSS caching aware of user preferences changes
  • fixed configuration merge when importing settings
  • added information about setup script to “manage your settings” tab, as some people are not aware that such feature exists
  • cleaned up comments
Categories: phpMyAdmin, Summer of Code 2010 Tags:

User preferences – week 10

August 1st, 2010 No comments

Despite encountering some bugs in my code, I managed to finish all planned tasks, i.e.:

  • some fields have an additional comment (denoted by a blue “i” next to them), with an information whether required PHP extension is available (for compression and validator), or whether field value has an upper limit (MaxDbList, MaxTableList)
  • users can change only_db and hide_db values

Other changes and fixed bugs:

  • user preferences forms now work correctly without output buffering
  • removed superfluous ob_end_clean() which caused page rendering to fail when OBGzip was enabled
  • fixed config file generation in setup script when users clicks Download without showing preview
  • further improvements to array formatting in config files generated by setup script
  • fixed some fields not saving due to equality conversions (eg. 0 == ‘auto’)
  • selected tab is kept selected when settings are saved

Additionally, “Validator” tab has been removed from user preferences.

In the next two weeks I intend to find and remove remaining bugs, check code comments and improve documentation.

Categories: phpMyAdmin, Summer of Code 2010 Tags:

User preferences – week 9

July 27th, 2010 No comments

Things done in week 8, aside from styling changes and bugfixes:

  • connection collation and language are saved to user preferences
  • better tab menu – tabs that don’t fit into the first line of menu are collapsed into a submenu; when window size changes, items are added to it or removed, depending on current window size
  • cleaned up config tabs JavaScript to be simpler, using jQuery’s functions
  • Developer tab (controlled by UserprefsDeveloperTab setting) with debugging options
  • Warnings tab with options to disable mcrypt, Suhosin and pmadb warnings
  • SQL Validator tab, allows users to enable SQL validation provided by Mimer SQL Validator Web Service
  • changes in Server tabs in setup script

This week I want to improve configuration forms and make them easier to use: include some more information (eg. whether required extension is available at all). I have yet to decide whether do it by adding information somewhere near such option, or use validation message for that.

Next, I want to look into allowing users to set only_db and hide_db.

Categories: phpMyAdmin, Summer of Code 2010 Tags:

User preferences – week 8

July 19th, 2010 No comments

Tasks completed this week:

  • HTML 5 local storage – proper UI, if pmadb is unavailable user is asked whether settings from browser should be imported
  • import – allow to import configurations that fail validation, invalid fields are skipped
  • UI – CSS for Darkblue/orange theme, shorter inputs for numeric inputs
  • validation – valdiators can be configured by taking additional arguments, one field can have many attached valdiators
  • MaxDbList and MaxTableList options – in user preferences forms their values are bounded by the original value
  • bugs fixed: user preferences didn’t work correctly with fontsize and DefaultTheme, “restore default value” button in forms was always displayed, added a few missing string escapes in phpMyAdmin code, added missing validations for a few options, added missing comments to some functions

This week I want to:

  • store connection collation and language in user preferences
  • allow users to disable some options (eg. “Validate SQL” link, main frame information) which are enabled, but without the possibility to enable them
  • experiment with phpMyAdmin tabs and figure out a good way to hide some rarely used options under a menu link, something like:
    “Option 1” “Option 2” “More >”
    Hovering over “More” would show a vertical menu with hidden options, users wolud be able to determine which options should go into this menu
  • if I will have enough time, look into allowing users to set only_db and hide_db
collation_connection lang

Categories: phpMyAdmin, Summer of Code 2010 Tags:

User preferences – week 7

July 12th, 2010 No comments

Import and export for files in JSON format and for HTML 5 local storage is almost complete. There are still a few things that don’t work and a few I want to add, but basic functionality is there.

User preferences are moved to server top level menu, along with a new page for import and export.

This week I will finish preferences import/export, and try to catch and fix all remaining bugs. The next task is to check whether all user-editable string inputs are safe to use and add value escaping where it is needed.

Categories: phpMyAdmin, Summer of Code 2010 Tags:

User preferences – week 6

July 5th, 2010 No comments

Import and export options are in place. After giving it some more thought, I settled on manually copying all options to configuration files. It meant more work to get it done, but allowed me to group similar formats and keep form list short. Also, loading everything from plugin files would mean reading a dozen of additional files and storing a big cache array in session.

Besides taking care of the remaining options, I finally removed all unnecessary strings from and finished refactoring of old code.

This week I plan to add import and export functionality for user preferences, and HTML 5 persistent storage.

Categories: phpMyAdmin, Summer of Code 2010 Tags: