text: -- Tags: no-replicated-database
  -- Tag no-replicated-database: Unsupported type of ALTER query
  
  DROP TABLE IF EXISTS merge_tree_deduplication;
  
  CREATE TABLE merge_tree_deduplication
  (
      key UInt64,
      value String,
      part UInt8 DEFAULT 77
  )
  ENGINE=MergeTree()
  ORDER BY key
  PARTITION BY part
  SETTINGS non_replicated_deduplication_window=3;
  
  SYSTEM STOP MERGES merge_tree_deduplication;
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (1, '1');
  
  SELECT key, value FROM merge_tree_deduplication;
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (1, '1');
  
  SELECT key, value FROM merge_tree_deduplication;
  
  SELECT '===============';
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (2, '2');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (3, '3');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (4, '4');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (1, '1');
  
  SELECT key, value FROM merge_tree_deduplication ORDER BY key;
  
  SELECT '===============';
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (5, '5');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (6, '6');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (7, '7');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (5, '5');
  
  SELECT key, value FROM merge_tree_deduplication ORDER BY key;
  
  SELECT '===============';
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (8, '8');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (9, '9');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (10, '10');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (11, '11');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (12, '12');
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (10, '10');
  INSERT INTO merge_tree_deduplication (key, value) VALUES (11, '11');
  INSERT INTO merge_tree_deduplication (key, value) VALUES (12, '12');
  
  SELECT key, value FROM merge_tree_deduplication ORDER BY key;
  
  SELECT '===============';
  
  ALTER TABLE merge_tree_deduplication DROP PART '77_9_9_0'; -- some old part
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (10, '10');
  
  SELECT key, value FROM merge_tree_deduplication WHERE key = 10;
  
  ALTER TABLE merge_tree_deduplication DROP PART '77_13_13_0'; -- fresh part
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (12, '12');
  
  SELECT key, value FROM merge_tree_deduplication WHERE key = 12;
  
  DETACH TABLE merge_tree_deduplication;
  ATTACH TABLE merge_tree_deduplication;
  
  OPTIMIZE TABLE  merge_tree_deduplication FINAL;
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (11, '11'); -- deduplicated
  INSERT INTO merge_tree_deduplication (key, value) VALUES (12, '12'); -- deduplicated
  
  SELECT '===============';
  
  SELECT key, value FROM merge_tree_deduplication ORDER BY key;
  
  SELECT '===============';
  
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (11, '11', 88);
  
  ALTER TABLE merge_tree_deduplication DROP PARTITION 77;
  
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (11, '11', 88); --deduplicated
  
  INSERT INTO merge_tree_deduplication (key, value) VALUES (11, '11'); -- not deduplicated
  INSERT INTO merge_tree_deduplication (key, value) VALUES (12, '12'); -- not deduplicated
  
  SELECT part, key, value FROM merge_tree_deduplication ORDER BY key, part;
  
  -- Alters....
  
  ALTER TABLE merge_tree_deduplication MODIFY SETTING non_replicated_deduplication_window = 2;
  
  SELECT '===============';
  
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (1, '1', 33);
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (2, '2', 33);
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (3, '3', 33);
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (1, '1', 33);
  
  SELECT * FROM merge_tree_deduplication WHERE part = 33 ORDER BY key;
  
  SELECT '===============';
  
  ALTER TABLE merge_tree_deduplication MODIFY SETTING non_replicated_deduplication_window = 0;
  
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (1, '1', 33);
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (1, '1', 33);
  
  DETACH TABLE merge_tree_deduplication;
  ATTACH TABLE merge_tree_deduplication;
  
  SELECT * FROM merge_tree_deduplication WHERE part = 33 ORDER BY key;
  
  SELECT '===============';
  
  ALTER TABLE merge_tree_deduplication MODIFY SETTING non_replicated_deduplication_window = 3;
  
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (1, '1', 33);
  
  SELECT * FROM merge_tree_deduplication WHERE part = 33 ORDER BY key;
  
  SELECT '===============';
  
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (1, '1', 44);
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (2, '2', 44);
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (3, '3', 44);
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (1, '1', 44);
  
  INSERT INTO merge_tree_deduplication (key, value, part) VALUES (4, '4', 44);
  
  DETACH TABLE merge_tree_deduplication;
  ATTACH TABLE merge_tree_deduplication;
  
  SELECT * FROM merge_tree_deduplication WHERE part = 44 ORDER BY key;
  
  DROP TABLE IF EXISTS merge_tree_deduplication;
  
  SELECT '===============';
  
  DROP TABLE IF EXISTS merge_tree_no_deduplication;
  
  CREATE TABLE merge_tree_no_deduplication
  (
      key UInt64,
      value String
  )
  ENGINE=MergeTree()
  ORDER BY key;
  
  INSERT INTO merge_tree_no_deduplication (key, value) VALUES (1, '1');
  INSERT INTO merge_tree_no_deduplication (key, value) VALUES (1, '1');
  
  SELECT * FROM merge_tree_no_deduplication ORDER BY key;
  
  SELECT '===============';
  
  ALTER TABLE merge_tree_no_deduplication MODIFY SETTING non_replicated_deduplication_window = 3;
  
  INSERT INTO merge_tree_no_deduplication (key, value) VALUES (1, '1');
  INSERT INTO merge_tree_no_deduplication (key, value) VALUES (2, '2');
  INSERT INTO merge_tree_no_deduplication (key, value) VALUES (3, '3');
  
  DETACH TABLE merge_tree_no_deduplication;
  ATTACH TABLE merge_tree_no_deduplication;
  
  INSERT INTO merge_tree_no_deduplication (key, value) VALUES (1, '1');
  INSERT INTO merge_tree_no_deduplication (key, value) VALUES (4, '4');
  
  SELECT * FROM merge_tree_no_deduplication ORDER BY key;
  
  DROP TABLE IF EXISTS merge_tree_no_deduplication;
  