DROP TABLE IF EXISTS subcolumns; CREATE TABLE subcolumns ( t Tuple ( a Array(Nullable(UInt32)), u UInt32, s Nullable(String) ), arr Array(Nullable(String)), arr2 Array(Array(Nullable(String))), lc LowCardinality(String), nested Nested(col1 String, col2 Nullable(UInt32)) ) ENGINE = MergeTree order by tuple() SETTINGS min_bytes_for_wide_part = '10M'; INSERT INTO subcolumns VALUES (([1, NULL], 2, 'a'), ['foo', NULL, 'bar'], [['123'], ['456', '789']], 'qqqq', ['zzz', 'xxx'], [42, 43]); SELECT * FROM subcolumns; SELECT t.a, t.u, t.s, nested.col1, nested.col2, lc FROM subcolumns; SELECT t.a.size0, t.a.null, t.u, t.s, t.s.null FROM subcolumns; SELECT sumArray(arr.null), sum(arr.size0) FROM subcolumns; SELECT arr2, arr2.size0, arr2.size1, arr2.null FROM subcolumns; -- SELECT nested.col1, nested.col2, nested.col1.size0, nested.col2.size0, nested.col2.null FROM subcolumns; DROP TABLE IF EXISTS subcolumns; CREATE TABLE subcolumns ( t Tuple ( a Array(Nullable(UInt32)), u UInt32, s Nullable(String) ), arr Array(Nullable(String)), arr2 Array(Array(Nullable(String))), lc LowCardinality(String), nested Nested(col1 String, col2 Nullable(UInt32)) ) ENGINE = MergeTree order by tuple() SETTINGS min_bytes_for_wide_part = 0; INSERT INTO subcolumns VALUES (([1, NULL], 2, 'a'), ['foo', NULL, 'bar'], [['123'], ['456', '789']], 'qqqq', ['zzz', 'xxx'], [42, 43]); SELECT * FROM subcolumns; SELECT t.a, t.u, t.s, nested.col1, nested.col2, lc FROM subcolumns; SELECT t.a.size0, t.a.null, t.u, t.s, t.s.null FROM subcolumns; SELECT sumArray(arr.null), sum(arr.size0) FROM subcolumns; SELECT arr2, arr2.size0, arr2.size1, arr2.null FROM subcolumns; -- SELECT nested.col1, nested.col2, nested.size0, nested.size0, nested.col2.null FROM subcolumns;