You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Jane Chan (Jira)" <ji...@apache.org> on 2022/04/20 07:43:00 UTC
[jira] [Created] (FLINK-27316) Prevent users from changing bucket number
Jane Chan created FLINK-27316:
---------------------------------
Summary: Prevent users from changing bucket number
Key: FLINK-27316
URL: https://issues.apache.org/jira/browse/FLINK-27316
Project: Flink
Issue Type: Sub-task
Components: Table Store
Affects Versions: table-store-0.1.0
Reporter: Jane Chan
Fix For: table-store-0.1.0
Before we support this feature, we should throw a meaningful exception to prevent data corruption which is caused by
{code:sql}
ALTER TABLE ... SET ('bucket' = '...');
ALTER TABLE ... RESET ('bucket');{code}
h3. How to reproduce
{code:sql}
-- Suppose we defined a managed table like
CREATE TABLE IF NOT EXISTS managed_table (
f0 INT,
f1 STRING) WITH (
'path' = '...'
'bucket' = '3');
-- then write some data
INSERT INTO managed_table
VALUES (1, 'Sense and Sensibility),
(2, 'Pride and Prejudice),
(3, 'Emma'),
(4, 'Mansfield Park'),
(5, 'Northanger Abbey'),
(6, 'The Mad Woman in the Attic'),
(7, 'Little Woman');
-- change bucket number
ALTER TABLE managed_table SET ('bucket' = '5');
-- write some data again
INSERT INTO managed_table
VALUES (1, 'Sense and Sensibility'),
(2, 'Pride and Prejudice'),
(3, 'Emma'),
(4, 'Mansfield Park'),
(5, 'Northanger Abbey'),
(6, 'The Mad Woman in the Attic'),
(7, 'Little Woman'),
(8, 'Jane Eyre');
-- change bucket number again
ALTER TABLE managed_table SET ('bucket' = '1')
-- then write some record with '-D' as changelog mode
-- E.g. changelogRow("-D", 7, "Little Woman"), changelogRow("-D", 2, "Pride and Prejudice"), changelogRow("-D", 3, "Emma"), changelogRow("-D", 4, "Mansfield Park"), changelogRow("-D", 5, "Northanger Abbey"), changelogRow("-D", 6, "The Mad Woman in the Attic"), changelogRow("-D", 8, "Jane Eyre"), changelogRow("-D", 1, "Sense and Sensibility"), changelogRow("-D", 1, "Sense and Sensibility") CREATE TABLE helper_source (
f0 INT,
f1 STRING) WITH (
'connector' = 'values',
'data-id' = '${register-id}',
'bounded' = 'false',
'changelog-mode' = 'I,UA,UB,D'
);
INSERT INTO managed_table SELECT * FROM helper_source;
-- then read the snapshot
SELECT * FROM managed_table
{code}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)