Saturday, December 12, 2015

phpMyAdmin work during tenth and eleventh weeks

During the two weeks most I attended a mix of bug fixing, implementing new features, refactoring and unit test improvements.

I did not realize that some of the unit tests were not running as part of the test suite unit Michal pointed out and included them. However, this caused quite some test failures as most of the recently added and updated tests had not been running. These were fixed at the very beginning of the period.

Unit Testing
Fix unit test failures related to refactoring

Quite a number of bugs were fixed during the two weeks and some more were investigated. Following are the list of bug fixes attended.

Bug Fixes
issue #11701 Show create procedure SQL
issue #11706 Database export template not saving compression option
issue #11710 Unable to add/remove `on update CURRENT_TIMESTAMP` option while editing a timestamp field
issue #11724 Temporary fix for live data edit of big sets is not working
issue #11728 CSV import skip row count after
issue #11732 Exporting feature does not work with union table
Exclude db name in SQL when relations are made between table in the same db
Buffer pool and InnoDB status details are not shown for InnoDB

Bug Investigations
issue #11722 Excel import improper handling of dates/times
issue #11732 "Browse Foreign Values" Search broken across databases in 4.5.2
issue #11734 No result shown, if writing statement, comment, single select

Inbility to reorder parameters of routines had bothered me in the past. So, as requested in issue #11701, I implemented the ability to do this.

Feature Enhancements
issue #11701 Allow changing parameter order of routines

Moreover, continueing the refactoring effert from last fortnight I went on to refactor server engines page. This involed introducing a controller class and using templating to adhere to MVC pattern. Unit tests were also updated to match the new classes.

Refactor server engines page to use MVC pattern 

Sunday, November 29, 2015

phpMyAdmin work during eighth and ninth weeks

Last two weeks were dedicated completely to code refactoring where I converted a couple of server level page to MVC architecture. This is a continuation of what started during the last GSoC where we started to take up MVC architecture.

I started with server_variables.php page and created a new controller named ServerVariablesController to handle all interactions from the page. Refactoring included moving the HTML generation to 'View' (using templating) and organizing previous functions into methods and introducing instance variables where appropriate. 

Server databases page was also refactored in a similar manner. Additionally, the functionalities of display_create_database.lib.php, db_create.php and build_html_for_db.lib.php were integrated into the new controller. Moreover, some functionalities that supported both ajax and non-ajax behavior (that used to facilitate scenarios with JavaScript disabled) was simplified. Towards the end of the period, server charsets page was refactored in a similar manner.

Code refactoring
Refactor server variables page to use MVC architecture
Refactor server databases page to use MVC architecture
Simplify database dropping
Merge the functionalities of display_create_database.lib.php, db_create.php and build_html_for_db.lib.php into ServerDatabasesController
Refactor server charsets page to use MVC architecture
Organize controllers into a better package hierarchy

I also engaged in fixing coding style violations, both introduced by refactoring as well as the ones that already existed. Further, I updated the test suite to account for newly introduced controller classes and now removed functions.

Coding style improvements
Fix coding style violations

Unit testing
Update unit tests for new controller classes

Sunday, November 22, 2015

phpMyAdmin work during sixth and seventh weeks

During the two week I attended to a combination of bugs, features/improvements, code refactoring as well as code quality improvements. However, most of the time was spent on bugs as there were number of bugs being reported. Following are the bugs fixed and investigated during the two weeks.

Bugs fixed
issue #11476 Errors instead of git info when PHP has no gzip support
issue #11630 Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
issue #11632 Exporting GIS visualization ignores start and row count
issue #11639 Bug with the MainBackground Color
issue #11647 Restrict configuration NavigationTreeDbSeparator to strings
Indicate when there are no parameters for parameter binding in SQL query box
Profiling checkbox is missing

Bugs investigated
issue #11637 "AS" from the main table of the query is being deleted when you are exporting a query
issue #11651 Issue while creating tables
issue #11659 Totally turn off autocomplete and sql syntax check

Among the new features implemented, issue #11641, which requested to disable one of the relational features, was discussed during the team meeting and it was suggested to use a special value for the same configuration directive to disable the feature. This was implemented targeting future 4.6 release. Additionally, as part of minimizing the upload footprint, GIS features were adjusted to function without bulky OpenLayers library. Moreover, profiling chart now uses the generic charting mechanism which facilitate moving to a new charting library with less hassle.

New features/Improvements
issue #11641 Ability to disable the navigationhiding Feature
issue #11654 Use a slider for Internal relations
Make OpenLayers library optional for GIS visualization
Link license.php
Use generic charting mechanism for profiling chart as well

Additionally, following refactoring and code quality improvement work was carried out during the period.

Code Refactoring
Refactoring GIS visualization page
Move controllers to appropriate packages

Code quality
Fix style violations in JS code

Sunday, November 1, 2015

phpMyAdmin work during third, fourth and fifth weeks

I did not engage in phpMyAdmin development work during the fourth week while I was less active during the third week due to personal engagements. So, here is a combined blog post for third, fourth and fifth weeks.

During the period I worked on fixing the bugs reported by users as well as those reported by the automated error reporting mechanism. I cleaned up automatically reported errors by exporting them to GitHub tracker, linking them where necessary and by fixing them. Following are the bugs fixed and investigated during the period. 

Bugs Fixed
#11551 Fatal error when switched to master from QA_4_5
#11594 'only_db' config option bug when db names contain underscore and are grouped
#11603 Namespace clash for class Error
#11606 PMA_Util not found when changing password
#11607 Unable to change password from Login information tab
#11610 Undefined variable: res_rel
#11611 Warning while exporting schema to PDF
#11612 Undefined index: new_row_format
#11614 Undefined variable: db
#11617 Getting real row count is not allowed for views
#11622 Reloading privileges is not allowed

Bugs Investigated
#11556 Cannot create table, please enter a valid length keeps coming up
#11568 Erroneous handling of tables with FKs to other databases
#11577 Table aliases ignored when using intellisense
#11583 Cross DB foreign key constraints results in undefined offsets

A security issues was reported during the period and I contributed by coordinating and generating security announcements.

Security Issues
Content spoofing Issue in phpMyAdmin

Additionally, I engaged in some code refactoring and code quality improvements. Refactoring was on `DatabaseStructureController` as highlighted by Marc due to long method lengths. Moreover, unit tests related to PHP classes were renamed to be consistent with the corresponding names of the classes they are testing.

Refactoring and code quality improvements
Refactor DatabaseStructureController
Fix issues reported by PHPCS
Fix issues reported by JSLint

Unit testing
Rename and organize test classes

Feature enhancements
Add supported file format for Archive storage engine

Sunday, October 11, 2015

phpMyAdmin work during first and second weeks

I started my second year as a contract developer for phpMyAdmin project on 1st of October 2015. However, this year I have limited my hours, working only on part time basis. I hope to work for 20 hours a week. Since there were only two days on the first week I am combining the work done on the first week with that of the second. 

The first two weeks was totally focused on bug fixes since there was a constant steam of bugs from the newly released 4.5 version. Most of the bugs were related to the rewritten parser and I got good insight on the new parser while trying to fix some of these bugs. Following are the bugs fixed.

Bug fixes
issue #11521 Notice of undefined variable when performing SHOW CREATE
issue #11522 Strange behavior on table rename
issue #11526 Foreign key to other database's tables fails
issue #11539 Rename table does not result in refresh in left panel
issue #11544 Notices about undefined indexes on structure pages of information_schema tables
issue #11546 "Visualize GIS data" seems to be broken
issue #11548 Confirm box on "Reset slave" option
Fix notices while changing from HASH type to RANGE type
UI does not support inserting multiple values for JSON functions
Tracking does not make sense for information_schema
Fix cookies clearing on version change

Moreover, following bugs were investigated during the period.

Bugs investigated
issue #11515 Multi source replication is not recognized
issue #11538 Copy multiple tables to database
issue #11536 Format of exports looses SQL on 2nd export
issue #11547 "distinct" removed from query while query result export to excel

I plan to spend more time on refactoring in the coming weeks.

Leave days - 7th Oct

Sunday, September 27, 2015

phpMyAdmin work during fiftieth and fifty first weeks

During these two weeks I worked relatively lesser number of hours and had to take a couple of days off. So, I am combining the work done during the two weeks to a single blog post.

During the two weeks I concentrated mostly on feature enhancements. Two major features were implemented during the period. First of them is the ability to specify the routine level privileges and I noticed that this feature is missing when I went though the MySQL GRANT syntax. Even though this sounded easier when I started working on it, it took two full days to complete the feature. This was mostly due to the code quality of the related code segments. So, I'd put server_privileges.php file as one of the key places where refactoring can help.

The second major feature is the UI to define partition definitions. Existing create table UI has only a text area to define the partition definition. Someone who is not familiar with partition syntax would not be able to do this with the old UI. The new UI allows specifying partitioning parameters and parameters for each partitions. Additionally, I worked on making the metro theme compatible with the 4.5 version. I had accumulated commits for this for sometime. During the two week I did the final touches and the pull request was merged.

Feature enhancements
Issue #11479 Allow setting routine wise privileges
Issue #11490 UI for defining partitioning in create table window
Pull #6 Metro theme for future version 4.5
Add server plugins page
Minor UI improvements to the User accounts page

Additionally, following bugs were fixed during the two weeks.

Bugs fixed
Issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system
Issue #11475 Warnings linked to Drizzle
Issue #11487 Warning when entering Query
Issue #11491 Propose table structure broken
Do not suggest upgrading when there is no compatible versions

Leave days : 17th, 23rd

Monday, September 14, 2015

phpMyAdmin work during forty eighth and forty ninth weeks

I am combining two weeks of work into this blog post. I took 3 days off work (on 1st, 7th and 11th of September) and this is mostly why I am combining work of two weeks.

Following are the bugs fixed and investigated during the period.

Bugs fixed
Issue #11445 MySQL 5.7 and Status page for an unprivileged user
Issue #11446 MySQL 5.7 and Variables page for an unprivileged user
Issue #11450 Validation fails when using functions
Issue #11451 Designer-Bug in move.js on multiple server configuration
Issue #11454 Find and replace is broken
Issue #11457 414 Request-URI Too Large
Issue #11461 Foreign key constraints for InnoDB tables with upper-case letters disabled

Bugs investigated
Issue #11453 Paste command is gone in 4.4
Issue #11464 phpMyAdmin suggests upgrading to newer version not usable on that system
Issue #11470 Impossible to cancel "Drop files here" overlay

Issue #11445 and #11446 was due to permission changes introduced in MySQL 5.7 which prevented unprivileged users from issuing SHOW commands. Issue #11454 was a regression in upcoming 4.5 version this was fixed for the release candidate. Issue #11461 was tricky to fix, however only affected the apple users.

With regard to feature enhancements, the major change was the removal of Drizzle support. Development of Drizzle has been abandoned for years and hence support for Drizzle will be removed from version 4.6.  Most of the development work of issue #6297 was carried out during earlier weeks. However, it was during this period the pull request got merged.

Feature enhancements
Issue #6297 Use GET only for read only operations
Issue #11456 Disabled storage engines
Remove Drizzle support from master branch
Mark default storage engine

A security vulnerability was reported after some time during the two weeks. The vulnerability was in code related to reCaptcha test which is an additional opt-in security feature provided in phpMyAdmin.

Security fixes
Fix reCaptcha bypass

Saturday, August 29, 2015

phpMyAdmin work during forty sixth and forty seventh weeks

During this period I moved from Colombo to Melbourne, Australia. So, I had to take couple of days off on both weeks for preparation work as well as settling down in Australia. Hence, I am combining the work done during these two weeks to a single blog post.

The bugs fixed during the time includes bugs from both stable version and the upcoming 4.5 version. 

Bugs fixed
#11404 "Switch to copied table" doesn't work
#11408 Export breaks when field name is 0
#11410 SPATIAL index option is not clickable
#11414 Unclear export options / organization / hierarchy
#11421 Stored-proc / routine - broken parameter parsing
#11436 CREATE DATABASE should be enabled by default on server exports
Remove unnecessary title after slider initialization
Fix missing template in table search page
Fix function based search for geometry columns in table search page
Fix GIS editor in table insert/edit page
Fix x coordinates of points which was the repetition of y coordinates
Respect the Auto increment checkbox in SQL export
Fix missing name for configuration read_as_multibytes
Fix - Do not export `sys` database when exporting server
Add missing 'sql_create_database' configuration to setup and user preferences

Additionally, following bugs were investigated.

Bugs investigated
#11433 '%' does not work as it is with sprintf
#11434 Class 'SqlParser\Lexer' not found

With regards to the feature enhancements, there were no major features implemented during the period. However, a number of smaller enhancements were carried out. I also went on to do some language improvements where a number of sentences that used title case were converted to sentence case to be compliant with phpMyAdmin language guide. Moreover, I started working on supporting JSON data type introduced in MySQL 5.7.8. However, this had to be postponed due to bugs in PHP with respect to JSON data type.

Feature enhancements
Improvements to partition details on table structure page
Spatial indexes with multiple columns are not allowed
Organize SQL export options
Make the SQL exports compatible for side by side comparison with old exports
Allow editing unless it's a static variable. Allow editing new dynamic variables added in MariaDB and newer versions of MySQL
Minor UI improvements in zoom search page
Language improvements - Use sentence case as per phpMyAdmin language guide

Feature requests investigated
#11438 Support JSON data type

Wednesday, August 19, 2015

phpMyAdmin work during forty fourth and forty fifth weeks

I took leave on first three days off on forty fourth week to visit Anuradhpura and here I am combining the work done on the rest of the two days with the work done on the forty fifth week in to a single blog post.

During the two weeks I continued to QA the development version to identify any bugs arising from the ongoing developments. So, most of the bugs were fixed in the master branch. Additionally I fixed two incompatibilities with PHP7 in the stable version of phpMyAdmin. Both these incompatibilities were in third party libraries we use and these libraries were upgraded and tested.

Bugs fixed
#11345 Token mismatch error
#11349 Table list doesn't expand when current table on different page
#11364 JS error when trying to navigate to db structure page after db creation failed
#11382 Selecting values for set field throws JS error
#11389 ReCaptcha produce deprecated messages under PHP 7
#11387 phpseclib < 2.0 produces deprecated messages on PHP 7
Fix - Counting real number of rows always return zero
Fix - Index list not updated upon dropping a column

Bugs investigated
#11384 Query formatting adds space between ! and =

The highlight in terms of feature enhancements is the improved partition support. Now you can view all the details related to table partitions and sub partitions in the table structure page. Moreover, all the partition operations can be performed from there. 

Additionally, I improved the cache invalidation on version upgrade. With the new page loading introduced in version 4.0, phpMyAdmin cached the JS files and fired the relevant event on loading a page. Now these cached files are invalidate upon version upgrade.

Feature enhancements
Improved partition support
Clear internal cache at script handler upon version upgrade
Minor UI improvements to the db operations page
Do not attach index table unnecessarily
Refactor db_designer.php

Code quality improvements
Create separate controllers from table and database structure pages
Organize templates into a meaningful structure
Fix coding style issues reported by PHPCS

Friday, July 31, 2015

phpMyAdmin work during forty third week

During the week I mostly focused on fixing bugs. I attended to a mix of bugs that were prevalent in current stable version as well as those arose due to ongoing development targeting the next major release. 

Among the older bugs, I went on to investigate a couple of bugs related to replication features. Since I did not have a replication setup I first created such as investigated the bugs that had been reported. Bug #10307 which reported how cross database replication was broken due to the use of fully qualified table names was fixed. Other replication related bugs, which were also quite old, were mostly out of date.

Bugs that were fixed and investigated during the week are

Bugs fixed
#10307 Replication broken when using cross-database master/slave config and phpMyAdmin
#11322 Missing null checkbox when grid editing a null cell
#11324 JS error while opening a new page in Desginer
#11326 Exported schema includes all the tables of the database
#11328 Exporting table generates AUTO_INCREMENT=; for new tables
#11334 Table creation time, last update and last check column are empty
#11336 Exporting a table exports database level events
Fix various broken features due to refactoring in database structure page
Fix retrieve default storage engine correctly

Bugs investigated
#10435 Revoking non-existent Grant Option breaks MySQL 5.6 Replication
#10622 "Loading" doesn't disappear when stopping replication slave
#11325 Exporting database schema to PDF is broken
#11327 Default value for BIT column exported as b

When analyzing the JS errors reported in error reporting server, it was evident that quite a lot of them were due to caching issues on upgrading to a new phpMyAdmin version. This was addressed during the week and hopefully these issues will no longer occur.

Avoid caching JS and CSS files across phpMyAdmin versions
Upgrade TCPDF to version 6.2.9
UI improvements to replication and binary log pages
Improvements to the feature allowing to export databases and tables into separate files

Monday, July 27, 2015

phpMyAdmin work during forty second week

During this week I attended to a mix of bug fixes and feature enhancements.

I installed upcoming MySQL 5.7 and paid attention to areas in phpMyAdmin that needs to be updated to work with 5.7. First of all I noticed that I am unable to create phpMyAdmin configuration storage table since TIMESTAMP columns in them lacked a default value and this is not allowed in MySQL 5.7. Moreover I attended to a couple of UI bugs I happen to notice while I was working. Following are the bugs that were fixed.

Bugs fixed
#1808 "Improve table structure" generates invalid SQL
#1817 Creating configuration storage tables fail in MySQL 5.7
UI fixes in error reporting feature
Fix legend for table SQL page
Fix gutter style for normal and dark console themes

On the feature enhancement front, the major work was to improve the rtl language support. There were quite a number of instances that were broken even in the current stable version. Since Arabic is not shipped currently due to lack of translation, these were fixed in master branch. While some of these were style changes, others involved changing the DOM structure. Additionally, I attended to some UI improvements as well as improvements targeting MySQL 5.7

Feature enhancements
UI improvements in the 'Variables' and 'SQL' pages
Allow linking MySQL 5.7 document links
Terminology improvements in the 'User accounts' and 'Privileges' pages
Document SQL parameter binding feature
Improve support for rtl languages
Update ChangeLog links
Mark MySQL 5.7 'sys' schema as a system schema

Since GSoC work is ongoing, we could observer an increase in coding style violations reported by PHPCS. During the week, I attended to these violations as well.

Code quality improvements
Fix PHP coding style violations reported by PHPCS

P.S. This was a four day week with me taking leave on Thursday.

Wednesday, July 22, 2015

phpMyAdmin work during the forty first week

During this week I attended to bug fixes, new features as well as general coding improvements. 

The highlight of the week in terms bug fixes was the ability to use error reporting server. It was not usable for a long time and now that the situation has improved to Smitha, I attended to a number of bugs reported there. I noticed that a large number of bugs were due to caching issue while upgrading. This affected relational features on PHP front while a number of JS issues reported were also due to this. I also engaged in reporting issues and sending pull requests to improve the error reporting server. Bugs fixed and attended during the week are

Bugs fixed
#4979 Problem when import *.ods file
#4980 Cannot read property 'status' of null
#4981 Uncaught TypeError: Cannot read property 'attr' of null
#4984 Undefined <feature>work upon upgrade to new version
#4985 Column headers move when scrolling

Bugs investigated
#4983 Theme configurations not defined
#4986 First stack trace item missing in PHP error reports

The highlight in terms of new feature is the support for virtual columns. Support for virtual columns was initially requested for MariaDB. However my earlier attempt to implement the feature was abandoned due to lack of parser support. Virtual columns are featured in upcoming MySQL 5.7 as well and since the column expression can be extracted from information_schema in MySQL I could add support for MySQL virtual columns without parser update. After discussing this on developer mailing list GSoC student who is working on the parser rewrite added support for virtual columns to the new parser and with this I went on to extend the feature for MariaDB as well.

Feature requests implemented
#1517 Support for MariaDB virtual/persistent columns
Support MySQL 5.7.5 virtual columns

Feature requests investigated
#1658 Better Performance

To the latter part of the week I worked on improving coding style which had deteriorated a bit during the last couple of months.

Coding improvements
Centralize querying for SHOW CREATE TABLE statements
Documentation improvements on upgrading
Fix PHP coding style violations reported by PHPCS

Forty first week of my work was a four day week with me taking 16th of July as day off.

Thursday, July 16, 2015

phpMyAdmn work during the fortieth week

The fortieth week of work was mostly spent on fixing the bugs in the upcoming 4.5 version. 

While implementing the export templates I noticed that lock_table directive is not repopulated similar to other directive when back button is click and this was fixed. Further, quite a lot of the links to new system variables in phpMyAdmin's Variables page  was missing, and these were also added. Bug #4854 was fixed allowing users to use multiple servers in parallel. Earlier this was not possible and a series of fixes such as introducing IV per server finally led to this fix.

Here is the list of bugs fixed and investigated.

Bugs fixed
#4854 "Error: Token mismatch" when using multiple servers in parallel
#4973 Show a warning when a user account allowing any user from localhost to connect (partial fix)
#4976 Timepicker CSS issues in Original theme
#4978 Cancelled page settings changes do not revert the UI
Correctly set lock_table directive when repopulating on back button click
All columns listed for xaxis are selected in query charts
Saved chart image does not have a proper name or an extension
Add missing links Variables page to MySQL documentation for system variables
Fix height of the selection box of monitor charts
Remove menu options that do not make sense for visual query builder
Remove unused parameter causing notices

Bugs investigated
#4864 Tried to set secure cookie on non-secure connection

Among feature improvements, the most notable one is the use of native tabs in server plugin page in place of the jQuery tabs. Additionally, the process list was updated to show additional columns for MariaDB and as discussed during the last team meeting names of some of the pmadb directives were changed. 

Feature requests implemented
#1685 mariadb processlist
Underscores are preferred to separate words in configuration storage table names/directives
Use phpmyadmin's secondary tabs instead of jQuery tabs in server plugins page
Set indeterminate for export checkboxes when either data or structure is not selected

Feature requests investigated
#1684 Use GET only for read only operations

Tuesday, July 7, 2015

phpMyAdmin work during thirty eighth and thirty ninth weeks

I had to take two days off on the thirty ninth week of work. So, here I am combining it with the previous week to report what I have been up to. Continuing from the last couple of weeks we saw a decline in the number of bugs reported, indicating that the releases are much stable.

Due to the above reason I spent more time on feature requests and general coding improvements. I went on to clean the feature request tracker by investigating the feature requests and implementing them when they made sense. Here are the features implemented during the week.

Feature requests implemented
#689  Column privileges and update
#812  Store export definitions for reuse
#1531 Cant use external config file
#1552 CSV import: Allow "Columns escaped with" to be optional
#1561 Being able to use multiple servers at the same time when using cookie auth
Get default_fk_check_value on demand rather than checking the value in every script
Remove configuration storage data related to a user upon deleting the user
Upgrade CodeMirror to version 5.4.0

Additionally, following feature requests were investigated

Feature requests investigated
#757  Dropdown for special SQL like SUM, AVG and GROUP BY
#1270 Allow specifying mime types and transformations in queries
#1390 Export tables list must be ordered by constraints
#1682 Add quick action features

From the general coding improvements front, following were done.

General code improvements
OOP improvements in navigation panel
Match export parameters with the names of corresponding config values
Fix JavaScript variable scope error reported by Codacy

Even though reported in low numbers, following bugs were fixed and investigated.

Bugs fixed
#4916 Autocomplete either doesn't function at all or auto completes the original table name when joining multiple aliased tables
#4963 Improve/restore non-unique index row editing
#4966 MySQL errors are not shown when DebugSQL is enabled
#4967 Field named '0' is not recognized
#4969 Autoload from prefs_storage not behaving properly
Show build query dialog in full screen view also
Missing selected/entered values when editing active options in visual query builder
Remove character set from create_tables_drizzle.sql

Bugs investigated
#4964 New version using older files
#4968 Combine create / alter table statements
#4972 Bug when processing binary data

Tuesday, June 23, 2015

phpMyAdmin work during thirty seventh week

This was a four day work week since I was on leave on Friday, 19th June.

The highlight of the week was the improvements to the Visual Query Builder. This included a number of bug fixes and improvements to the look and feel. VQB probably did not reach to the users very well, otherwise we should have got more bug reports relating to the issues fixed.

To the latter part of the week, I also engaged in fixing issues reported by Codacy (

* Code improvements
Various UI improvements to the visual query builder
Fix issues reported by Codacy

As usual I also engaged in regular bug fixes during the week. Highlight among the bugs fixed was  bug #4795. This requested phpMyAdmin to join two or more tables in Query Builder by using other tables that have not been included in the query. This was more of the feature request IMO.

Following are the bugs fixed and investigated during the week.

Bugs fixed
#4795 Query builder: missing joint for the intermediary table
#4955 Clicking on the navi logo does not always work (partial fix)
#4956 Trying to build query in visual builder throws JS error
#4958 Designer Javascript error with specially crafted table name
#4960 Table creation results in GET request with missing server parameter that invalidates the session
#4961 Javascript error when Designer is opened
#4962 insert by foreign key scrolls page to top
Visual builder: Generated query has extraneous comma at the end of group by clause
Visual builder: Add missing backquotes
Visual builder: Reset state variables on page teardown

Bugs investigated
#4959 Navigation pane mouseover oddity with specially crafted database/table names

Monday, June 15, 2015

phpMyAdmin work during thirty sixth week

The highlight of the my work during the week is the general improvements work carried out. 'Query' page of the database level was improved during the week ( This included, introducing aliases and sort ordering. Additionally I worked on porting the Metro theme to the future 4.5.0 release (, so we will have an additional theme by the time new version is released.

* General improvements
Improvements to the QBE page
Porting Metro theme for future version 4.5
UI improvements to the print view and table operations page
Minor performance improvements in the navigation panel
Update sample config file

After 9 bug fix releases from the 4.4 branch, the rate at which the bugs are being reported has slowed down indicating that it's quite stable. However, on the other hand, a number of new issues could be observed mostly introduced by the ongoing GSoC work carried out targeting the 4.5 release. Following are the bugs fixed during the week. As mentioned earlier, most of them were fixed in QA_4_5 branch.

* Bugs fixed
#4510 QBE generates wrong query
#4946 When hide table structure actions is false, action should be in a row
#4947 Editing a view gives errors
#4950 Issues in database selection for replication
#4951 Trying to save chart as image crashes the browser
#4953 can't drag sql.gz file onto import input
#4954 Warnings on query results refresh
#4956 Trying to build query in visual builder throws JS error
Empty column list in display order drop down in table search
Fix notice on undefined variable 'col_extra'

Additionally, following issues were investigated.

* Bugs investigated
#4948 explain is broken in latest version
#4926 Browsing tables chokes on 30k tables in DB
#4959 Navigation pane mouseover oddity with specially crafted database/table names

Sunday, June 7, 2015

phpMyAdmin work during thirty fifth week

The bug fixes carried out during the week was mostly on the master branch and most of them were due to the ongoing developments by GSoC students. Additionally a couple of bugs on the stable branch reported by the users were fixed. Following are the bugs fixed during the week.

Bugs fixed
#4932 Drizzle version numbers
#4936 utf8mb4 fields show only ????s for 4-byte Unicode characters after import
#4937 Custom export with backquotes off is not working
#4939 Connection input field not hidden when adding a new table
#4940 Notices in GIS visualization page
#4941 Table structure multi submit is broken
#4942 Export to gzip saves plain text under Chrome

Moreover, following bugs were investigated

Bugs investigated
#4933 INSERT validation issues with MySQL functions
#4935 Eliminate remaining occurences of eval() in phpMyAdmin to make it work on machines where eval() is disabled

On the new features front, rfe #1634 was discussed during the last IRC meeting and received the green light to be implemented. This rfe requested not to group items in the navigation panel when there is only a single group and no other items or groups in a particular sub tree.

Bug #4934 reported the shift + click to apply selected function to all rows in insert/edit page was not functioning in some browsers. Since shift + click event was non standard on browsers we decided to remove the feature altogether. This was also carried out during the week.

Feature requests implemented
#1634 Don't group tables in tree if the result has only one group
#1677 Support spatial indexes in table create form
Remove support for Shift + Click on function name to apply to all rows in insert/edit page

During the latter part of the week, I engaged in analyzing the performance issues and fixing them. This was based on the profiling carried out earlier using xdebug. I attended to table browse, insert and edit pages since they showed highest performance deterioration competed to 3.x series.

General coding improvements
Fix coding styles violations reported by PHPCS
Performance improvements for table browse, insert and edit pages

Wednesday, June 3, 2015

phpMyAdmin work during thirty fourth week

This week was more a of quieter week where I focused mostly on bug fixes.

Bug #4872 was on navigation and main panel not reloading after a related change. Trying to fix this bug I realized that the related code was quite scattered and some parts outdated when ajax was introduced. The related code segments seemed quite brittle. Even though the bug was fixed these sections would benefit from refactoring.

Following are the bugs fixed during the week.

Bugs fixed
#4872 Drop table doesn't remove the table name from navigation bar
#4905 Sorting by an alias
#4920 Relation view doesn't list fields of table in other database
#4921 Textarea rows settings ignored Features > Text fields
#4923 Limits table comments to 60 characters
#4927 "Disable foreign key" doesn't work with a single query SQL file
#4929 Edit view structure doesn't load the algorithm
#4930 Database copy doesn't work for tables with more than one FULLTEXT index
#4931 False error before entering reCAPTCHA

Among the bugs that were investigated, bug #4926 reported how browsing tables chokes with a database having 30k tables. Configuration 'DisableIS' did not help either. I personally think that such a big number of tables is a corner case.

Bugs investigated
#4925 Multi table 'Empty'/'Drop' doesn't work
#4926 Browsing tables chokes on 30k tables in DB

Feature requests received little attention during the week and following are the ones implemented.

Feature requests implemented
#1672 MIME types should be lower case
Add a configuration to display/hide the comment column in db structure page

#1672 seems to be broken again in master, probably due to ongoing templating and I plan to fix it today.

P.S: This was a four day week; I was on leave on 26th May

Wednesday, May 27, 2015

phpMyAdmin work during thirty third week

Similar to the last week I spent most of the time working on bug fixes. Additionally I spent more time on general code improvements during the week. It was mostly the bugs that led to these code improvements, i.e. while fixing bugs I went on to do some related improvements. The list of bugs fixed during the week is as follows.

Bugs fixed
#4910 Insane slow
#4911 Lock page icon is not shown after fresh reload
#4912 "Highlight pointer" and "Row marker" doesn't work properly
#4913 GROUP_CONCAT is shown as GROUPBY_CONCAT in the autocomplete in SQL Query editor
#4917 Changing time with datetime picker gives JS error
#4918 Date field popup dialog position bug
Allow accessing visual query builder when pmadb is not configured
Browse foreigners window goes out of the window

Additionally the following bugs were investigated during the week.

Bugs investigated
#4914 Navigation pane highlighting issue when in database view
#4916 Autocomplete either doesn't function at all or auto completes the original table name when joining multiple aliased tables

Bugs #4913 and #4916 were infact CodeMirror bugs and I sent pull requests to the upstream project fixing these bugs. When CodeMirror 5.3 was released with a fix for #4913 I upgraded CodeMirror to this new version. This needed some effort as CodeMirror had not been updated for some time. Moreover, custom style affecting CodeMirror was in tangle with library's CSS and this is now resolved. The same bugs also led to refactoring code segments related to syntax highlighted SQL editors across phpMyAdmin. Moreover, bug #4910 led to improve routines, triggers and event fetching code to adhere to DisableIS directive.

General coding improvements
Improve JavaScript codes related to the query chart page
Improve routines, triggers and event fetching code to adhere to DisableIS directive
Upgrade CodeMirror to version 5.3.0
Refactor code segments related to syntax highlighted SQL editors across phpMyAdmin

Following feature requests were also implemented during the period.

Feature requests implemented
#1242 Work with --skip-grant-tables
#1619 Show databases as list instead of as dropdown when no database is selected - update
#1671 Directly show table comments in structure view

Sunday, May 17, 2015

phpMyAdmin work during thirty second week

The main highlight of the week was the two security issues handled during the week. I was after some time a security issue was reported and in fact there was only on security issue reported prior to these in 2015. As the security coordinator I handle communicating with reporters, obtaining CVE IDs, preparing security announcements and part of the fixing as well. We had to port the changes to 4.0, 4.2, 4.3 and 4.4 since all these series are supported for security fixes. The issues were,

Security issues
#4899 CSRF in setup
#4900 Man-In-the-Middle - Github API

The usual bug fixing continued during the week. An old bug, #4367 Import status infinite loop, received attention and was fixed sine it was reported to be still present in the current stable version. Moreover, a couple of bugs related to designer was fixed.

Bugs fixed
#4367 Import status infinite loop
#4512 ForceSSL Redirect Check
#4898 JS error after selecting a field and press Enter
#4902 Designer: Loading does not work
#4904 Setup: Overview > Display does not work
#4906 Designer: pages from all databases
Escape database and table names for partition maintenance

Feature request #1242 Work with --skip-grant-tables, was investigated and this seems to work for most part in the current master branch. Additionally, following feature requests were fixed,

Feature requests implemented
#1668 Procedures window shift-click should select multiple rows
#1669 Designer: "Sticky" menu option
Allow truncating partitions in partition maintenance

Feature requests investigated
#1242 Work with --skip-grant-tables

Improvements were done to the code segments related to partition maintenance. Further, filter_input s were removed from code since they bypass token check, posing a security threat.

Code improvements
Improve partition maintenance functionality
Quit using filter_input since they bypass token check

phpMyAdmin work during thirty first week

I am sorry this post comes quite late, almost a week after the thirty first week has ended. I thought of combining this with the next week report but later decided to have separate posts for each week to be able to track work done during individual weeks.

Again, bug fixes were the predominant operation during the week and some of these bugs were reported by myself. So, following are the bugs fixed during the period.

Bugs fixed
#4885 Some icons are above the overlay of jQuery dialogs
#4886 Clicking on external links in advisor rules give JS error
#4887 Name column excluded from quick filters in central columns
#4888 Filter in central columns does not work in other languages
#4890 'window.webkitStorageInfo' & 'webkitIndexedDB' is deprecated
#4891 CSV Import ignores "Replace table data with file" checkbox
#4892 Undefined variable: unique_conditions
#4894 Deleting without confirmation
#4896 Non-styled error page when following results link

I also engaged in implementing new features. 
MariaDB website offers a service to analyze the output of 'Explain' queries. So, as requested in rfe #1413, phpMyAdmin now allows to post the output of 'Explain' queries to this service and get a better understanding. The new link is shown when you click on 'Explain SQL' link is clicked. I also added multi submit operations to the routines, triggers and events pages. With this the user is able to export and delete muple rte items.

Feature requests implemented
#1413 Explain analyzer
UI improvements to the `Processes' page
Multi submits for RTE pages
Use CodeMirror editor in query

Feature requests investigated
#548  Cross-tablulation/pivot table
#1451 HTML5 input tag enhancements

I investigated a quite old rfe #548 which requested for a pivot table functionality in phpMyAdmin. I found a couple of interesting third party pivot table libraries that operate on JavaScript level which can be integrated with phpMyAdmin. However, these libraries would not be able to handle large datasets and break the purpose of a pivot table. Moreover, since there are quite a lot of applications that does this work now a days we thought this is out of scope for phpMyAdmin.

Friday, May 1, 2015

phpMyAdmin work during thirtieth week

The highlight of this week was the coding style improvements I undertook. During the last upgrade to the CheckStyle rules, there were couple of new rules added and these had increased the number of style violations. Moreover, day to day coding had introduced new violations and the violation count was 800+. I spent pretty much two days fixing these issue and the following graph shows the improvements to the code.

I also worked on improving the Designer during the week. While working on this I found a number of issues with the designer and went on to report them and eventually fix them. The list of bugs fixed during the week consists mostly of these bugs. Following bugs were fixed/investigated during the week.

Bugs fixed
#4878 Column list of central columns is not cleared
#4879 Exit full screen in Designer does not change the button text
#4880 Designer icons missing when using original theme
#4881 jQuery dialogs in Designer are not displayed in full screen
#4883 Search function breaks when searching for certain combinations of backslashes and slashes
Fix resize icon in Designer
Fix inconsistent icons

Bugs investigated
#4872 Drop table doesn't remove the table name from navigation bar
#4874 Username like john_smith is split to two names in dropdown list

I also worked on a couple of feature requests during the week. One of them was on supporting MariaDB virtual columns. However this was postponed as our current parser was unable to recognize virtual column syntax and this was vital for extracting column details. This will hopefully be implemented during the summer when one of the GSoC students attend to the parser. See

With the implementation of feature request #1380, the SQL editor support parametrized queries. Now you can simply copy paste queries from your code and bind parameters before query execution. Additionally, towards the end of the week I went on to improve the original theme. The jQuery dialogs in original theme always looked alien to me and with the latest style changes they are in better harmony.

Feature requests implemented
#1380 Support for Parameters with raw SQL
Improve table maintenance page
jQuery-ui style updates for original theme

Feature requests investigated
#1517 Support for virtual/persistent columns
#1628 need "display binary as hex/string" option in Settings UI
#1633 User Preferences reset should clear the value in pma__userconfig

Monday, April 27, 2015

phpMyAdmin work during twenty eighth and twenty ninth weeks

Here I am combining the work done during two week into a single blog post. Since GSoC rush was somewhat over I started attending to bugs again. However, I was on leave on 16th April to celebrate Sinhala new year.

Following are the bugs attended during the two weeks.

Bugs fixed
#4207 json_encode error , because strftime return string is not utf8 in Windows 8.1 Chinese version
#4794 Server error viewing table content
#4849 Functions accessed from navigation do not load on ajax dialog
#4850 Relation view on 1920
#4851 PHP errors in login dialogue
#4853 Relation view between 1600 and 1780 px
#4859 Don't scroll (to bottom) when editing multiple rows
#4862 Misaligned Inline edit field
#4866 Limit column dragging in index edit dialog
#4869 Drop column action not asking to confirm
#4870 Inconsistency in 'Ignore' checkbox in insert page
$meta->decimals is not available for mysql extension
Fix issues related to number of decimal places in time

Bugs investigated
#3270 Revoking privileges when you lack 'ALL PRIVILEGES' yourself
#3481 Designer relations in IE 8
#3588 X-WebKit-CSP Header breaks Safari 5.1
#4510 QBE generates wrong query
#4795 Query builder: missing joint for the intermediary table
#4854 "Error: Token mismatch" when using multiple servers in parallel
#4856 Error with PMA_DisplayResults->getTable()
#4858 issues with SQL autocomplete
#4871 Error on creating table

Similar to earlier weeks, I also attended to a set of feature requests. Among feature requests implemented, notables ones are the transformation for IPv6 addresses and support for CHECKSUM TABLE operation. Transformation for IPv6 was implemented as both output and input transformation.

I also worked on schema import from mysql workbench output files. Work on this is still underway.

Feature requests implemented
#433  Import/export of meta data (relations, MIME, etc.)
#1639 Add grouping to stored procedures in the navigation tree
#1655 Support IPv6 browser transformation
#1656 Edit vs Change
#1661 Support checksum table
Input transformation - ip to binary
Icon for columns with indexes / identify keys in structure snapshots
Option groups for 'With selected' dropdown in database structure page
Set maximum length for fields based on mysql name sizes

Feature requests investigated
#862  Group dbs/tables by regexp
#913  Import schema from Mysql Workbench
#1657 Single-line vs multi-line edit fields
#1659 Display the CREATE TABLE statement like HeidiSQL

Moreover, I did a couple of code improvements.

Coding improvements
Properly identify types in doc comments

Friday, April 10, 2015

phpMyAdmin work during twenty seventh week

During the week I attended both bug fixes as well as feature requests. To the latter part of the week I also attended some coding style improvements.

Among the bugs that were fixed, fixing output buffering was interesting. Since, I wasn't very familiar with the output buffering used in phpMyAdmin this was a good learning experience for me as well. Here, the issues was to use output buffering for CSS and JS. I modified the PMA_OutputBuffering class to accommodate output buffering for CSS, static and dynamic JS.

Here are the list of bugs fixed and investigated during the week.

Bugs fixed
#4829 Create procedure via SQL Editor not more possible
#4833 CSS and Javascript are not compressed
#4841 Status page: Mislukte pogingen per uur value is incorrect
#4848 Trigger sql with delimiters maxes out cpu resources
MIME Transformation link fixed

Bugs investigated
#4757 Error: Token mismatch
#4787 If mysql server default timezone is not set(by default), Phpmyadmin export wrong timestamp and timezone combination
#4847 Some query take very long time

The ability to export metadata was implemented as requested in  RFE #1632. These metadata are the data in configuration storage related to databases or tables being exported. With this one would be able to do a complete export and see the full state reinstated. Additionally the ability to copy multiple rows were implemented. 

The feature requests for the week were

Feature requests implemented
#1632 Importing and exporting pMA meta-data
#1643 No SQL query for loading data
#1646 Metro theme design update
#1650 Support a default page in designer
#1651 Allow copying mutiple rows
#1653 New data validation feature and datetime type

Feature requests investigated
#1645 MIME Transformation Imagelink and link - repairs and idea
#1648 Metro theme - table background style
#1654 After login session expires, restore navigation pane

Previously the designer loaded the first designer page for the database. Now it looks for page by the name of the database to load as default and falls back to old behavior in the absence of such a page.

Coding style improvements
No longer use global variables in schema export plugins

Sunday, April 5, 2015

phpMyAdmin work during twenty sixth week

During this week I was back to bug fixing. This is mainly because the GSoC application deadline has passed and the pull request rush from potential GSoC students have declined. So I had a look at the bug tracker and did some cleaning up and fixing. Here are the bugs fixed during the week.

Bugs fixed
#3292 Incoherent backup generated
#4067 Import Resume at breakpoint failure
#4754 pMA DB not detected properly
#4821 Timed-out import fails to restart when file represented
#4825 Datepicker missing when changing number of rows on Insert page
#4828 JavaScript is loaded in wrong order
#4831 Recaptcha API v2
#4832 Sorting distinct values result loses links
#4834 Do not attach token to css requests to improve caching
#4835 PMA_hideShowConnection not called after submit_num_fields
#4836 server warning after moving from console to Direct clicks

Apparently, allowing users to resubmit import files when import fails due to timeout has been broken for some time. Now that it is fixed user is presented a link to click when the import hits timeout and this link takes the user to import interface to resubmit the file with parameters carrying the details of where to restart the import from.

Additionally following bugs were investigated.

Bugs investigated
#3689 Variable 'character_set_client' can't be set
#4827 TEXT formatting doesn't work after editing
#4826 Two inline edit windows
#4829 Create procedure via SQL Editor not more possible 

Feature requests received relatively less attention during this week. I started working on supporting .xz compression. I did most of the work and a pull request for the same is was submitted. However, I had a hard time installing and configuring xz compression im my environment and wasted almost half a day trying. So I have to get someone else's help to test my PR.

Feature requests implemented
#1621 Add support for xz compression
#1635 Have ZeroConf create phpmyadmin DB if possible

Feature requests investigated
#862  Group dbs/tables by regexp
#1633 User Preferences reset should clear the value in pma__userconfig

Wednesday, April 1, 2015

phpMyAdmin work during twenty fifth week

During the week I attended to a mix of feature requests and bug fixes. Following are the feature requests implemented and investigated.

Feature requests implemented
#354  PDF schema sort options
#933  Manage multiple variable in bookmarked query
#947  Show edit/delete also when there is calculated column
#1619 Show databases as list instead of as dropdown when no database is selected

Feature requests investigated
#942 Table flush for NDB

With rfe #933, phpMyAdmin now support multiple variables in bookmarked queries. The placeholders should be in the format [VARIABLEN] where N is the index of the variable. For backward compatibility [VARIABLE] is considered  equal to [VARIABLE1] for backward compatibility.

Another long awaited feature was the ability to edit/delete columns when there is a calculated column. Earlier even though a primary or a unique key was present in the results set, the presence of a column with a function applied removed the ability to delete, edit and inline edit the row. Now this is supported and inline editing is not allowed for the function column.

Additionally following bugs were fixed during the week.

Bugs fixed
#4781 "Requery" bookmark from console does not work
#4805 Inline edit broken when using functions in query
#4814 MySQL 5.7.6 and Databases
#4815 Infinite calls to index.php
#4819 Request URI too large
Use 'server' parameter in console to work in multi server environments
Missing tooltip in monitor
Missing sort icons in monitor

Additionally, I took a couple of hours to fix some of the Scrutinizer error reported.

Code improvements
Fix code style errors reported by Scrutinizer

Wednesday, March 25, 2015

phpMyAdmin work during twenty fourth week

The highlight of the week was updating metro theme to be compatible with upcoming phpMyAdmin version 4.4. The decision to have an alternative theme was made at this months online team meeting and metro theme was selected for this upgrade since most people preferred it and it happened to be color blind friendly.

My approach to update the theme was to basically go through all the commits related to styling changes since 2013 (when metro theme was up to date). This was to make sure that no layout styling goes unnoticed. However, this was quite time consuming. I also went on to style some of the jQuery dialogs, so they are in harmony with the rest of the application. All the commits related to the theme upgrade can be found at

Even though metro theme had its sprite generated most of its original icons were missing. So I decomposed the sprite image to get the individual icons. However, when regenerating sprites with all the images a part of sprites looked washed out. I am attending to this issue right now.

During the latter part of the week I also attended to some bugs. Here are the bugs that were fixed.

Bugs fixed
#4802 Changelog page is not working
#4804 Undefined Index after export schema
#4806 Unable to work with two different databases in two tabs
#4810 Broken find and replace
#4812 Issues with index dialog while creating a table
Fix missing title for MySQL documentation

Moreover, following feature request related to specifying indexes while creating table was implemented. Meantime I went on to clean up the code related to this feature.

Feature requests implemented
#1626 Display/edit index name

Tuesday, March 17, 2015

phpMyAdmin work during the twenty second and twenty third weeks

I was on leave on the first three days of the twenty second week. So here I am combining the work done on the rest of the twenty second week and twenty third week into a single blog post. 

During the two week I attended to bugs, new features, unit testing as well as to general coding improvements. Following are the bugs fixed during the period.

Bugs fixed
#4758 Firefox with auth_type to http with multiple server doesn't work anymore
#4779 PMA_Util::parseEnumSetValues fails on enums with UTF-8 values
#4789 Views aren't dropped when copying a database
#4790 DROP TABLE/VIEW IF EXISTS are not tracked
#4791 Zoom search: js error
Compatibility with central columns of version 4.4

Bug #4789  was figured out while attending to a feature request related to tracking and bug #4758 arose from another fix from infamous 'Token mismatch' problem.

Following are the feature requests I worked on during the period. Pagination for GIS visualization was necessary as visualizing all the data from the table made the browser unresponsive when there were lot of data.

Feature requests investigated
#900 Add one option to disable SQL_CALC_FOUND_ROWS
#1300 tracking changes of store proc, triggers, events

Feature requests implemented
#1306 add lock tables, disable keys options
Pagination for GIS visualization

During the period I attended to a number of improvements in the central columns page. I changed how the 'extra' column is handled and now it stores value as a comma separated value which is readily compatible with data from older version. I also rewrote most of the unit test related to central columns and attended to fix UI inconsistencies I detected on the page.

Unit testing
Rewrite unit tests related to central columns

Code improvements
Improve `extra` value handling in central columns
UI improvements to central columns page
Being able to use multiple servers at the same time when using cookie auth
Metro theme upgrade to be compatible with 4.4 

While looking into a feature request regarding the ability to use multiple servers simultaneously I figure out we need to have initialization vectors per server and added it. This was later ported to QA_4_4 branch. At the online team meeting it was decided to update metro theme to be compatible with the upcoming version 4.4 and I started working on that. I am continuing this work to the next week.

Friday, February 27, 2015

phpMyAdmin work during the twenty first week

Continuing from the previous week I focused more on feature requests. However this did not prevent me from fixing couple of bugs. Most of these bugs were noticed while I was doing something in phpMyAdmin and fixed them immediately. So following are the bugs fixed during the week.

Bugs fixed
#4760 Cannot re-import settings from local storage
#4767 Drizzle: undefined index in
#4777 Some images are missing in Designer for original theme
#4778 SQL error when database list is sorted by additional columns
#4780 Notice when timestamp column does not have default value

From the feature requests implemented rfe #501 regarding the SSL grant option when creating users was due for a long time. Now you can require that the user connect with SSL or specifically X509 or even more specifically with other options. 

Feature requests implemented
#501  Support for SSL GRANT option
#1207 Export users associated with a specific schema/database
#1327 Hide 'Add user' link if user does not have privileges
#1441 Add regexp match when using AllowArbitraryServer
Change tracking activation status from db level tracking page
More default transformations for pmadb

Feature requests investigated
#1182 Use Hex/WKT for Geometry Export columns

Meanwhile, I also worked on some JS coding style improvements.

Code improvements
JS code style improvements

Sunday, February 22, 2015

phpMyAdmin work during twentieth week

Unfortunately the twentieth week was started with ill health. I was not feeling during the weekend, but started work on Monday since I felt little better. However, I was down with flu again and did not work on Tuesday and Wednesday. So, twentieth was a 3 working day week.

During the week I attempted a mix of bug fixes and feature requests. One of the reported bugs was about exporting being limited by the number of tables and this was due to the new feature to allow aliases for db/table/columns. This feature was using empty parameters even when no aliases were used. I reported and fixed bug #4769 which was related to the same functionality. 

Bugs fixed
#4763 Database export with more than 512 tables fails
#4769 Previously set column aliases are destroyed if returned to the same table
Properly align export alias jQuery dialog
Fix persisting column visibility to permanent storage

Bugs investigated
#3481 Designer relations in IE 8

I noticed that there were two feature requests about editors for JSON and HTML and realized that these could be implemented as input transformations. I used CodeMirror editor by adding required JSON and XML modes to implement the features. Since SQL mode was already available I implemented SQL editor as a input transformation as well.

Feature requests implemented
#685  Editor for HTML content
#1275 Comfortable editing of serialize()'d data (Implemented for JSON)
#1481 Need Support Time/DateTime/TimeStamp dynamic columns
CodeMirror based SQL editor as an input transformation

I also made a couple of UI improvements to the view level pages making them more constistent with table level pages.

Code improvements
Make UI more consistent for views

Friday, February 20, 2015

phpMyAdmin work during the nineteenth week

During the week I continued to focus on feature requests. I went onto clean up the feature request tracker by implementing, marking implemented and duplicate ones and even rejecting the ones that did not make much sense. Further, as per Marc's suggestion, a set of feature requests chosen by me was discussed at the monthly IRC to decide on their faith. Following are the list of feature requests implemented and investigated during the week.

Feature requests implemented:
#937  Relations with views like with tables
#1208 Linking from information_schema
#1235 Relation view: move to main "Structure" page
#1241 Browse Field -> Search
#1549 Reset auto-increment when exporting structure
Ability to disable foreign key check when emptying tables

Feature requests investigated:
#448  FK relation popup DHTML window based on multiple fields
#620  (Relations) Display multiple fields for relations
#947  Show edit/delete also when there is calculated column
#1509 Metro theme update to work with 4.1.8
#1526 Make export sql more friendly to side-by-side comparison
#1599 UNIQUE/PRIMARY key index for a partitioned table

Bug fixing did not receive priority this week since a set of keen potential GSoC students were looking into bugs. However, whenever I came across a bug I fixed them. That is why the following fixed bugs do not have bug numbers :)

Bugs fixed:
Remove extra column heading in view structure page
Add missing confirmation when deleting tracking report entries
Add missing confirmation when deleting central columns

Bugs investigated:
#4758 Firefox with auth_type to http with multiple server doesn't work anymore

A couple of weeks back I worked on improving both db and table level tracking pages. However, I still felt that those pages were not in par with other pages and went onto do a number of UI improvements to them. These included sortable tables, adding missing icons, adhering to various UI configuration etc. More UI improvements were done to the central columns page as well.

Code improvements:
UI improvements to the db, table tracking pages and central columns page
Fixing bugs reported by Scrutinizer

Tuesday, February 10, 2015

phpMyAdmin work during the eighteenth week

Eighteenth week saw most of my time spent on implementing feature requests. Marc also suggested I do the same as potential GSoC students were looking into bugs. Similar to the last week I started going through the feature request tracker giving priority to older ones. Some of the requests were out of date either because they had been implemented already or did not make sense for the current version. Following are the lists of feature requests implemented and investigated.

Feature requests implemented
#954  Allow SALT in ENCRYPT function
#1074 Renaming of colums referenced as foreign keys in InnoDBs
#1174 Comment removed from query -> no comment in db function/proc
#1179 Speed up slow triggers by using EVENT_OBJECT_SCHEMA
#1260 Setting LoginCookieValidity > session.gc_maxlifetime

Feature requests investigated
#1070 db_structure.php : column for table creation and update date
#1126 Allow SQL query textarea growable / resizable
#1129 Allow designer to show other Databases
#1253 Show per table privileges

Meanwhile, I also attended to a set of bugs.

Bugs fixed
#4592 Editing columns (tbl_structure.php) is incredibly slow
#4706 Schema export doesn't handle dots in db/table name
#4745 Tracking does not handle views properly
#4748 Column name center-aligned instead of left-aligned in Relations
#4750 Disable renaming referenced columns

Bugs investigated
#4742 CSV export of query result fails with name problem

Since most of the application use JSON heavily, I wanted to add a transformation to display JSON content for some time and during the week I had time to implement it.

Code improvements or refactoring
New transformation for JSON content stored in databases

Note: I was on leave on Tuesday, 3rd February.

Thursday, February 5, 2015

phpMyAdmin work during the seventeenth week

During this week I spent more time on feature requests compared to other weeks. Since there are a large number of feature requests most of which are relatively old, I started by going though the older ones. Some of them were quite old that they did not make sense in the current context. However, I found a couple of quite interesting ones which were missing in phpMyAdmin and went on to implement them. Following are the feature requests implemented.

Feature requests implemented:
#719  More details in PDF relation view
#767  USING BTREE support for HEAP/MEMORY tables
#801  Built-in transformations and relations
#1096 Cannot enter connection for federated engine table

While attempting #767 I improved the current interface for editing indexes by adding more options which are supported by newer version of MySQL.

I also engaged in usual bug fixing and following are the bugs fixed and bugs investigated.

Bugs fixed
#4729 Display original field when using "Relational display column" option and "Choose column to display" is empty
#4730 Notice while browsing tables when phpmyadmin pma database exists, but not all the tables
#4734 Default values for binary fields do not support binary values
#4735 Floating menu bar appears on top of jQuery dialogs
#4736 Changing display options breaks query highlighting
#4738 Header lose align when scrolling in Firefox v35
#4739 Make index editor work without the Ajax dialog
#4741 In ./libraries/Advisor.class.php#184 vsprintf(): Too few arguments

Bugs investigated
#4732 Some databases not showing
#4733 config parameter 'only_db' ignored

Friday, January 23, 2015

phpMyAdmin work during the fifteenth and sixteenth weeks

Since I had to spend some time on a couple of submissions for part-time M.Sc. that I am following, I took leave on 15th, 16th and 19th, 20th Jan 2015. So I am combining the work done on 6 days over fifteenth and sixteenth weeks here. 

Results display direction was deprecated for a long time due to the additional complexity it brought to the code and we hoped to remove the feature a couple of years back. However, its removal never took place and during the first half I focused on doing that. The related code was quite mingled with the rest and had to take a lot of caution not to break the normal query results displaying.

Code improvements and cleanup
Remove display direction which was deprecated for some time

Usual bug fixing was continued during the two weeks and following are the bugs fixed during the period.

Bugs fixed
#4699 Navigation panel should not hide icons based on 'TableNavigationLinksMode'
           Properly implement 'TableNavigationLinksMode' configuration
#4703 Unsaved schema page exported as pdf.pdf
#4705 Table structure: adding primary key doesn't refresh page
           Reload navigation after adding indexes
#4707 Call to undefined method PMA_Schema_PDF::dieSchema()
#4702 URL is non RFC-2396 compatible in get_scripts.js.php
#4721 Undefined property: stdClass::$version
#4719 'only_db' not working
#4716 Collapse all in navigation panel is sometimes broken
#4700 Error text: Internal Server Error
#4724 Cannot navigate in filtered table list
#4717 Database navigation menu broken when resolution/screen is changing
#4727 Collation column missing in database list when DisableIS is true

Moreover, following bug were investigated during the six days.

Bugs investigated
#4704 DisableIS enabled, only shows information_schema db
#4693 phpMyAdmin sometimes hangs after login
#4701 session_expired URL loop on session expiry via ajax
#4709 Cannot browse table if sorting column is renamed
#1437 Configure Text/Icons/Both separately for tabs and in-table edits

Monday, January 12, 2015

phpMyAdmin work during the fourteenth week

Fourteenth week of phpMyAdmin work drew my attention to both bug fixing as well as feature request implementations. 

Since the bug rush had slowed down a bit I had the chance to look into feature requests. At the beginning of the week I went though the feature requests tracker and identified a set of rfe s the made sense and implemented some of the during the week. So following are the new features that were added during this week.

Feature requests implemented
#347   Allow table with transformed column anywhere in FROM clause
#1450 Improve handling of missing function in ImportXml
#1525 Generate keys one per line, like foreign key constraints
#1590 Recaptcha API v2
#1580 Individual Zeroconf PMA tables support

I enjoyed fixing a very old rfe, #347, which I wanted to see in phpMyAdmin for some time. Implementing rfe #1580 Individual Zeroconf PMA tables support was motivated by the recent work I did in the same area. I also enjoyed upgrading the reCaptcha feature to its new API.

Routine bug fixing was also carried out during the week and following are the list of bugs that were implemented and investigated.

Bugs fixed
#4685 Call to a member function isUserType() on a non-object
#4686 Select elements flicker and selects something else
#4687 Designer breaks without configuration storage
#4688 File permissions in archive
#4691 Do not include console when no server is selected

Bugs investigated
#4510 QBE generates wrong query
#4646 Version Check Broken

Wednesday, January 7, 2015

phpMyAdmin work during the thirteenth week

During this week I attended to a mix of feature requests as well as usual bug fixes. First few days of the week was mostly spent on implementing new feature requests. One of them were regarding the facility to format SQL and I tried implementing it with CodeMirror. CodeMirro did not have formatting rules for SQL and I added a set of simple rules for SQL. However, CodeMirror developers have discontinued developing/supporting the formatting module.

Feature requests
#1582 SQL formatter (proposed)
#1567 Sever Variables Table UI Improvements
#1572 User prefs: Diff-friendly JSON for config

Second half of the week was dedicated to fixing bugs related to phpMyAdmin configuration storage. It started with a fix for ZeroConf functionality, however the fix went on to be quite big (more of an implementation than a fix), taking pretty much two days. I noticed a number of shortcomings in the configuration storage while fixing this bug and I attended to those bugs as well.

Bug fixes
#4675 phpMyAdmin should be able to work without 'examples' DIR
#4676 Auto-configuration issues
#4677 Advanced feature checker does not check for favorite tables feature
#4678 Some of the data stored in configuration storage are not deleted upon db or table delete
#4679 Setup does not allow providing a name for favorites table
#4680 Number of favorite table are not configurable in setup
#4681 'Central columns table' field in setup does not have a description
#4683 Relational data is not properly updated on table rename