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 https://github.com/madhuracj/metro

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 mysql_charsets.inc.php
#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
#1192 ON DUPLICATE KEY UPDATE for loading CSV
#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