← Back to team overview

maria-developers team mailing list archive

Re: Virtual columns and 'mysqldump' (and similar)

 

There are updates in the bug report (http://bugs.mysql.com/bug.php?id=79148).
Those who are interested in the subject should read it.

Unfortunately Oracle chose a client-side and not server-side solution to
this problem. As a consequence 'mysqldumps' from Oracle/MySQL will restore
in MariaDB, but not vice versa. And dumps generated by (probably) all other
clients than mysqldump will now fail to restore on Oracle/MySQL if table
has virtual columns.

I also would be surprised if replication between a MySQL and MariaDB server
is not affected in some scenarios.

This is at least what I can understand.

-- Peter

On Fri, Nov 6, 2015 at 1:41 PM, Peter Laursen <peter_laursen@xxxxxxxxxx>
wrote:

> Further research:
>
>
>
> It *does not work* with the .msi package for Windows:
>
>
> select version();
> -- 10.1.8-MariaDB
>
> CREATE TABLE `t1_virtual_uk` (
>   `f1` int(11) DEFAULT NULL,
>   `gc` int(11) AS (f1 + 1) VIRTUAL
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
>
> insert into `t1_virtual_uk` values (1,2);
> -- Error Code: 1906 The value specified for computed column 'gc' in table
> 't1_virtual_uk' ignored
>
> select * from `test`.`t1_virtual_uk`;
> -- empty set
>
>
> It *does work* on Windows using the .zip package (simply starting server
> with"mysqld --port = xxxx"), however.
>
>
> So the problem seems to be a packaging issue with the .msi. Some old/wrong
> code seems to go in there.
>
>
> -- Peter
>
> On Fri, Nov 6, 2015 at 12:21 PM, Peter Laursen <peter_laursen@xxxxxxxxxx>
> wrote:
>
>> Correction .. there is no error (except for my copy-paste error). This is
>> perfect and exactly as I think it should be.
>>
>>
>>
>> SELECT VERSION(); -- 10.1.8-MariaDB
>>
>> CREATE DATABASE vctest;
>> USE vctest;
>>
>> CREATE TABLE `t1`(
>>   `id` INT NOT NULL,
>>   `id3` INT AS ( id*3 ) VIRTUAL
>> );
>>
>> INSERT INTO `t1` VALUES (1,3);
>>
>> SHOW WARNINGS;
>> -- 1906  The value specified for computed column 'id3' in table 't1'
>> ignored
>>
>> SELECT * FROM t1;
>> /*
>>     id     id3
>> ------  --------
>>      1         3
>> */
>>
>> On Fri, Nov 6, 2015 at 12:10 PM, Peter Laursen <peter_laursen@xxxxxxxxxx>
>> wrote:
>>
>>> yup .. this is good!
>>>
>>> SELECT VERSION(); -- 10.1.8-MariaDB
>>>
>>> CREATE DATABASE vctest;
>>> USE vctest;
>>>
>>> CREATE TABLE `t1`(
>>>   `id` INT NOT NULL,
>>>   `id3` INT AS ( id*3 ) VIRTUAL
>>> );
>>>
>>> INSERT INTO `t1` VALUES (1,3);
>>> -- retruns: Error Code: 1906 - The value specified for computed column
>>> 'id3' in table 't1' ignored
>>>
>>> SHOW WARNINGS;
>>> -- 1906  The value specified for computed column 'id3' in table 't1'
>>> ignored
>>>
>>> SELECT * FROM t1;
>>> /*
>>>     id     id3
>>> ------  --------
>>>      1         3
>>> */
>>>
>>> On Fri, Nov 6, 2015 at 11:52 AM, Ian Gilfillan <ian@xxxxxxxxxxx> wrote:
>>>
>>>> The insert statement returns a warning:
>>>>
>>>> INSERT INTO `test`.`t1` VALUES (1,3);
>>>> Query OK, 1 row affected, 1 warning (0.07 sec)
>>>>
>>>> Warning (Code 1906): The value specified for computed column 'id3' in
>>>> table 't1' ignored
>>>>
>>>>
>>>>
>>>> On 06/11/2015 08:09, Peter Laursen wrote:
>>>>
>>>> OK, I should have upgraded. But I am currently travelling an with a
>>>> small laptop only and an Internet connectivity not fit for downloads (call
>>>> it a bad excuse if you want! :-) )
>>>>
>>>> So it actually INSERTS. That is nice. But does it return an error or
>>>> warning or nothing? It should not be an error IMO as various clients would
>>>> 'abort on error' and flood its log with error messages.
>>>>
>>>> -- Peter
>>>>
>>>> On Fri, Nov 6, 2015 at 11:32 AM, Ian Gilfillan <ian@xxxxxxxxxxx> wrote:
>>>>
>>>>>
>>>>> 06/11/2015 07:51, Peter Laursen wrote:
>>>>>
>>>>>> I reported this bug report to Oracle:
>>>>>> <http://bugs.mysql.com/bug.php?id=79148>
>>>>>> http://bugs.mysql.com/bug.php?id=79148
>>>>>>
>>>>>> It is almost the same in MariaDB - but the error message is
>>>>>> different, see
>>>>>>
>>>>>> SELECT VERSION(); -- 10.1.2-MariaDB-log
>>>>>>
>>>>>> CREATE TABLE `vc_test`.`t1`(
>>>>>>   `id` INT NOT NULL,
>>>>>>   `id3` INT AS ( id*3 ) VIRTUAL
>>>>>> );
>>>>>>
>>>>>> INSERT INTO `vc_test`.`t1` VALUES (1,3);
>>>>>> -- retruns: Error Code: 1906 - The value specified for computed
>>>>>> column 'id3' in table 't1' ignored
>>>>>>
>>>>>> SELECT * FROM t1;
>>>>>> -- returns empty set
>>>>>>
>>>>>>
>>>>>> So here the error message is that "value is ignored" (not that it is
>>>>>> "not allowed").  It looks to me like somebody in MariaDB actually
>>>>>> identified the problem, but forgot to finish things.
>>>>>>
>>>>>> The statement should succeed (maybe raise a warning), and the
>>>>>> "specified value should be ignored" as the error message says, but what it
>>>>>> in reality is not.
>>>>>>
>>>>>> What say?
>>>>>>
>>>>>
>>>>> In 10.1.8, the above returns:
>>>>> SELECT * FROM t1;
>>>>> +----+------+
>>>>> | id | id3  |
>>>>> +----+------+
>>>>> |  1 |    3 |
>>>>> +----+------+
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~maria-developers
>>>> Post to     : maria-developers@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~maria-developers
>>>> More help   : https://help.launchpad.net/ListHelp
>>>>
>>>>
>>>
>>
>

Follow ups

References