https://gh-api.clickhouse.tech/play?user=play#U0VMRUNUIHRvU3RhcnRPZk1vbnRoKGNyZWF0ZWRfYXQpIEFTIGRhdGUsIGNvdW50KCksIHVuaXEoYWN0b3JfbG9naW4pIEFTIHUsIGJhcih1LCAwLCAxMDAwLCAxMDApIEZST00gZ2l0aHViX2V2ZW50cyAKV0hFUkUgcmVwb19uYW1lIElOICgneWFuZGV4L0NsaWNrSG91c2UnLCAnQ2xpY2tIb3VzZS9DbGlja0hvdXNlJykgCiAgQU5EIGV2ZW50X3R5cGUgPSAnSXNzdWVDb21tZW50RXZlbnQnCiAgQU5EIGFjdG9yX2xvZ2luIE5PVCBMSUtFICdyb2JvdC0lJyBBTkQgYWN0b3JfbG9naW4gTk9UIExJS0UgJyVbYm90XScKR1JPVVAgQlkgZGF0ZSBPUkRFUiBCWSBkYXRl

```
SELECT toStartOfMonth(created_at) AS date, count(), uniq(actor_login) AS u, bar(u, 0, 1000, 100) FROM github_events 
WHERE repo_name IN ('yandex/ClickHouse', 'ClickHouse/ClickHouse') 
  AND event_type = 'IssueCommentEvent'
  AND actor_login NOT LIKE 'robot-%' AND actor_login NOT LIKE '%[bot]'
GROUP BY date ORDER BY date
```

```
Code: 44. DB::Exception: Cannot convert column ColumnLowCardinality to mask.: while executing 'FUNCTION and(notLike(actor_login, 'robot-%') :: 3, notLike(actor_login, '%[bot]') :: 1) -> and(notLike(actor_login, 'robot-%'), notLike(actor_login, '%[bot]')) UInt8 : 2': While executing MergeTreeThread. (ILLEGAL_COLUMN) (version 21.11.1.8052 (official build))
```
M(UInt64, max_subquery_depth, 100, "", 0) \
    M(UInt64, max_pipeline_depth, 1000, "", 0) \
    M(UInt64, max_ast_depth, 1000, "Maximum depth of query syntax tree. Checked after parsing.", 0) \
    M(UInt64, max_ast_elements, 50000, "Maximum size of query syntax tree in number of nodes. Checked after parsing.", 0) \
    M(UInt64, max_expanded_ast_elements, 500000, "Maximum size of query syntax tree in number of nodes after expansion of aliases and the asterisk.", 0) \
    \
    M(UInt64, readonly, 0, "0 - everything is allowed. 1 - only read requests. 2 - only read requests, as well as changing settings, except for the 'readonly' setting.", 0) \
    \
    M(UInt64, max_rows_in_set, 0, "Maximum size of the set (in number of elements) resulting from the execution of the IN section.", 0) \
    M(UInt64, max_bytes_in_set, 0, "Maximum size of the set (in bytes in memory) resulting from the execution of the IN section.", 0) \
    M(OverflowMode, set_overflow_mode, OverflowMode::THROW, "What to do when the limit is exceeded.", 0) \
    \
    M(UInt64, max_rows_in_join, 0, "Maximum size of the hash table for JOIN (in number of rows).", 0) \
    M(UInt64, max_bytes_in_join, 0, "Maximum size of the hash table for JOIN (in number of bytes in memory).", 0) \
    M(OverflowMode, join_overflow_mode, OverflowMode::THROW, "What to do when the limit is exceeded.", 0) \
    M(Bool, join_any_take_last_row, false, "When disabled (default) ANY JOIN will take the first found row for a key. When enabled, it will take the last row seen if there are multiple rows for the same key.", IMPORTANT) \
    M(JoinAlgorithm, join_algorithm, JoinAlgorithm::HASH, "Specify join algorithm: 'auto', 'hash', 'partial_merge', 'prefer_partial_merge'. 'auto' tries to change HashJoin to MergeJoin on the fly to avoid out of memory.", 0) \
    M(Bool, partial_merge_join_optimizations, true, "Enable optimizations in partial merge join", 0) \
    M(UInt64, default_max_bytes_in_join, 1000000000, "Maximum size of right-side table if limit is required but max_bytes_in_join is not set.", 0) \
    M(UInt64, partial_merge_join_left_table_buffer_bytes, 32000000, "If not 0 group left table blocks in bigger ones for left-side table in partial merge join. It uses up to 2x of specified memory per joining thread. In current version work only with 'partial_merge_join_optimizations = 1'.", 0) \
    M(UInt64, partial_merge_join_rows_in_right_blocks, 65536, "Split right-hand joining data in blocks of specified size. It's a portion of data indexed by min-max values and possibly unloaded on disk.", 0) \
    M(UInt64, join_on_disk_max_files_to_merge, 64, "For MergeJoin on disk set how much files it's allowed to sort simultaneously. Then this value bigger then more memory used and then less disk I/O needed. Minimum is 2.", 0) \
    M(String, temporary_files_codec, "LZ4", "Set compression codec for temporary files (sort and join on disk). I.e. LZ4, NONE.", 0) \
    \
    M(UInt64, max_rows_to_transfer, 0, "Maximum size (in rows) of the transmitted external table obtained when the GLOBAL IN/JOIN section is executed.", 0) \
    M(UInt64, max_bytes_to_transfer, 0, "Maximum size (in uncompressed bytes) of the transmitted external table obtained when the GLOBAL IN/JOIN section is executed.", 0) \
    M(OverflowMode, transfer_overflow_mode, OverflowMode::THROW, "What to do when the limit is exceeded.", 0) \
    \
    M(UInt64, max_rows_in_distinct, 0, "Maximum number of elements during execution of DISTINCT.", 0) \
    M(UInt64, max_bytes_in_distinct, 0, "Maximum total size of state (in uncompressed bytes) in memory for the execution of DISTINCT.", 0) \