[MDEV-15969] System versioning and FEDERATED don't work well together: DML and discovery fail Created: 2018-04-22 Updated: 2022-10-19 Resolved: 2018-05-17 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - Federated, Versioned Tables |
| Affects Version/s: | 10.3 |
| Fix Version/s: | 10.3.7 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Aleksey Midenkov |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||
| Description |
|
As analysis for Discovery:
DML:
|
| Comments |
| Comment by Sergei Golubchik [ 2018-04-22 ] | ||||||
|
There are two issues here:
| ||||||
| Comment by Aleksey Midenkov [ 2018-04-27 ] | ||||||
|
UPDATE and DELETE don't work too. | ||||||
| Comment by Sergei Golubchik [ 2018-04-27 ] | ||||||
|
Forget invisible fields for now, it's a separate issue. Let's say a table is created with all fields specified explicitly:
What works and what doesn't work with this table? | ||||||
| Comment by Aleksey Midenkov [ 2018-04-27 ] | ||||||
|
The issue is not with invisible fields (that's not a big deal). UPDATE and DELETE don't work correctly because versioning is applied twice: on client and server side (see my last comment). If we are talking about support for federated tables everything in DDL and DML must be tested as well (I guess nothing will work for free). SELECT doesn't work because SYSTEM_TIME clause as well as on_expr conditions are not passed from client to server. | ||||||
| Comment by Sergei Golubchik [ 2018-04-30 ] | ||||||
|
I don't quite understand. Why would be versioning applied twice? TABLE_SHARE::init_from_sql_statement_string does not allow WITH SYSTEM VERSIONING, so first federated should not put it into CREATE TABLE otherwise discovery won't even work. And when federated won't do that, there won't be any double-versioning. |