[MDEV-8135] Support primary keys on virtual columns Created: 2015-05-11  Updated: 2016-10-07  Resolved: 2015-11-05

Status: Closed
Project: MariaDB Server
Component/s: Virtual Columns
Fix Version/s: N/A

Type: Task Priority: Minor
Reporter: Artur Formella Assignee: Unassigned
Resolution: Duplicate Votes: 0
Labels: persistent, primary_key, virtual_columns

Issue Links:
Duplicate
is duplicated by MDEV-5590 Primary key cannot be defined upon pe... Open

 Description   

From the manual I can find out that:

There are two types of virtual , or computed, columns: PERSISTENT, which are stored in the table, and VIRTUAL, which are generated when the table is queried.

Why PERSISTENT column is Computed when it is stored in the table?

DROP TABLE IF EXISTS `raw__categories`;
create table `raw__categories` (
`id` BINARY(32) as (md5(CONCAT_WS('~',`ID_CATEGORY`,`ID_LANG`))) PERSISTENT,
`ID_CATEGORY` varchar(29) NOT NULL,
`ID_LANG` varchar(2) NOT NULL,
`NAME` varchar(40) NOT NULL,
PRIMARY KEY(`id`)
)
engine=InnoDB CHARSET=utf8;

I have an error:
#1903 - Primary key cannot be defined upon a computed column

It would be very useful to set up an ID algorithm using DDL



 Comments   
Comment by Elena Stepanova [ 2015-05-11 ]

Why PERSISTENT column is Computed when it is stored in the table?

Because it is computed; as per the general definition, "its value automatically calculated using a deterministic expression, in particular from the values of other fields in the table".
The difference is when it's calculated – upon storing or upon retrieval.

The fact that primary keys are not supported is also explicitly documented here: https://mariadb.com/kb/en/mariadb/virtual-computed-columns/.

If you wish, we can treat this report as a feature request.

Comment by Artur Formella [ 2015-05-12 ]

If you wish, we can treat this report as a feature request.

Yes, It would be great.

Thank you.

Comment by Sergei Golubchik [ 2015-11-05 ]

Duplicate of MDEV-5590

Generated at Thu Feb 08 07:24:54 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.