text: -- Tags: no-parallel
  
  DROP DATABASE IF EXISTS 01785_db;
  CREATE DATABASE 01785_db;
  
  DROP TABLE IF EXISTS 01785_db.simple_key_source_table;
  CREATE TABLE 01785_db.simple_key_source_table
  (
      id UInt64,
      value String
  ) ENGINE = TinyLog();
  
  INSERT INTO 01785_db.simple_key_source_table VALUES (1, 'First');
  INSERT INTO 01785_db.simple_key_source_table VALUES (1, 'First');
  
  DROP DICTIONARY IF EXISTS 01785_db.simple_key_flat_dictionary;
  CREATE DICTIONARY 01785_db.simple_key_flat_dictionary
  (
      id UInt64,
      value String
  )
  PRIMARY KEY id
  SOURCE(CLICKHOUSE(HOST 'localhost' PORT tcpPort() DB '01785_db' TABLE 'simple_key_source_table'))
  LAYOUT(FLAT())
  LIFETIME(MIN 0 MAX 1000);
  
  SELECT * FROM 01785_db.simple_key_flat_dictionary;
  SELECT name, database, element_count FROM system.dictionaries WHERE database = '01785_db' AND name = 'simple_key_flat_dictionary';
  
  DROP DICTIONARY 01785_db.simple_key_flat_dictionary;
  
  CREATE DICTIONARY 01785_db.simple_key_hashed_dictionary
  (
      id UInt64,
      value String
  )
  PRIMARY KEY id
  SOURCE(CLICKHOUSE(HOST 'localhost' PORT tcpPort() DB '01785_db' TABLE 'simple_key_source_table'))
  LAYOUT(HASHED())
  LIFETIME(MIN 0 MAX 1000);
  
  SELECT * FROM 01785_db.simple_key_hashed_dictionary;
  SELECT name, database, element_count FROM system.dictionaries WHERE database = '01785_db' AND name = 'simple_key_hashed_dictionary';
  
  DROP DICTIONARY 01785_db.simple_key_hashed_dictionary;
  
  CREATE DICTIONARY 01785_db.simple_key_cache_dictionary
  (
      id UInt64,
      value String
  )
  PRIMARY KEY id
  SOURCE(CLICKHOUSE(HOST 'localhost' PORT tcpPort() DB '01785_db' TABLE 'simple_key_source_table'))
  LAYOUT(CACHE(SIZE_IN_CELLS 100000))
  LIFETIME(MIN 0 MAX 1000);
  
  SELECT toUInt64(1) as key, dictGet('01785_db.simple_key_cache_dictionary', 'value', key);
  SELECT name, database, element_count FROM system.dictionaries WHERE database = '01785_db' AND name = 'simple_key_cache_dictionary';
  
  DROP DICTIONARY 01785_db.simple_key_cache_dictionary;
  
  DROP TABLE 01785_db.simple_key_source_table;
  
  DROP TABLE IF EXISTS 01785_db.complex_key_source_table;
  CREATE TABLE 01785_db.complex_key_source_table
  (
      id UInt64,
      id_key String,
      value String
  ) ENGINE = TinyLog();
  
  INSERT INTO 01785_db.complex_key_source_table VALUES (1, 'FirstKey', 'First');
  INSERT INTO 01785_db.complex_key_source_table VALUES (1, 'FirstKey', 'First');
  
  CREATE DICTIONARY 01785_db.complex_key_hashed_dictionary
  (
      id UInt64,
      id_key String,
      value String
  )
  PRIMARY KEY id, id_key
  SOURCE(CLICKHOUSE(HOST 'localhost' PORT tcpPort() DB '01785_db' TABLE 'complex_key_source_table'))
  LAYOUT(COMPLEX_KEY_HASHED())
  LIFETIME(MIN 0 MAX 1000);
  
  SELECT * FROM 01785_db.complex_key_hashed_dictionary;
  SELECT name, database, element_count FROM system.dictionaries WHERE database = '01785_db' AND name = 'complex_key_hashed_dictionary';
  
  DROP DICTIONARY 01785_db.complex_key_hashed_dictionary;
  
  DROP TABLE 01785_db.complex_key_source_table;
  
  DROP DATABASE 01785_db;
  