On Sat, Jul 5, 2014 at 4:26 PM, Marc Delisle <marc@infomarc.info> wrote:
Le 2014-07-04 17:41, Isaac Bennetch a écrit :
>
>
> On 7/2/14, 9:05 AM, Marc Delisle wrote:
>> Le 2014-07-02 08:50, Isaac Bennetch a écrit :
>>>
>>>
>>> On 7/2/14, 8:31 AM, Marc Delisle wrote:
>>>> Le 2014-07-01 09:26, Chirayu Chiripal a écrit :
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Jul 1, 2014 at 6:43 PM, Marc Delisle <marc@infomarc.info
>>>>> <mailto:marc@infomarc.info>> wrote:
>>>>>
>>>>>     Le 2014-07-01 08:43, Chirayu Chiripal a écrit :
>
> ...
>
>>>>>
>>>>>
>>>>> Well, to separate the input & output transformations I would be moving
>>>>> current transformation plugins into a new output sub-directory (as
>>>>> mentioned in my blog), which would also break the backward
>>>>> compatibility. Also as 2 new columns are being added to pma__column_info
>>>>> which would also require users to upgrade their tables for
>>>>> transformations to work. So, I think its time to remove that backward
>>>>> compatibilty hack.
>>>>
>>>> Fine with me, but please confirm with your mentor.
>>>
>>> It's fine with me as well. I wonder if we might easily provide a way to
>>> automatically update (for instance detect the missing columns and prompt
>>> the user to automatically upgrade to the new structure, or detect the
>>> .inc.php in pma__column_info and automatically replace the data in the
>>> column with .class.php), but I'm not immediately sure whether such check
>>> is really necessary. Such checks shouldn't require much overhead to
>>> test, but add complexity.
>>>
>>> Ideally, we could force the user to run once a script (such as
>>> upgrade.php) when first installing/upgrading, but I haven't yet thought
>>> of a good way to run it on first install and never again (mainly since
>>> we can't depend on being able to write to the phpMyAdmin Configuration
>>> Storage or file system in every installation).
>>>
>>> Any thoughts about this from the rest of the team?
>>
>> I had a look at we did for another similar case.
>>
>> In libraries/relation.lib.php, PMA_getRelationsParamDiagnostic(), we do
>> some verifications, then display this if needed: "Please see the
>> documentation on how to update your column_comments table."
>>
>> Have a look in doc/config.rst, searching for "to update your PRE-2.5.0",
>> to see the explanation for updating
>
>
> This is not bad, but -- remember that I haven't actually tried to code
> what I'm about to describe so I could be wrong -- it seems it wouldn't
> be much more work from this to actually update the table structure for
> the user. If in PMA_getRelationsParamDiagnostic() we can detect when the
> table structure is outdated and display a message, can't we just as
> easily run the query to update the table? We can't just automatically
> add a table (because the table has to be added to config.inc.php) or
> create the entire database (because we don't know the username and
> password the user wishes to use), but it seems the update could be done
> without needing to involve the user. Remember, many users don't like to
> read the documentation, so the more we can do without involving them,
> the better the user experience will be.
>
> Now, whether people agree with me and whether it actually make sense to
> do that are two other matters, but hopefully at least my statement makes
> some sense.
>
> Regards,
> ~isaac

Indeed it makes sense to update the table structure for the users.

Hello,
I have added auto detection and upgrade logic for pma__column_info table. What I did is that, I created one upgrade_column_info_4_3_0+.sql file under examples directory for the manual/auto upgrade. In PMA_checkRelationsParam(), if pma__column_info table is present then we check whether it has input transformations columns or not. If they are present then there is no need to upgrade otherwise we try to silently upgrade the table for user by executing the upgrade_column_info_4_3_0+.sql file. The overhead will be of 1 query which is executed once per login for checking columns.

The feature seems complete except few documentation work which will be added soon. Meanwhile, you can review the work here: https://github.com/D-storm/phpmyadmin/tree/FR-637


--
Marc Delisle | phpMyAdmin


--
Regards,
Chirayu Chiripal
phpMyAdmin Intern - Google Summer of Code 2014
https://chirayuchiripal.wordpress.com/