{"event_time_microseconds",std::make_shared<DataTypeDateTime64>(6),"Query starting time with microseconds precision."},
{"query_start_time",std::make_shared<DataTypeDateTime>(),"Start time of query execution."},
{"query_start_time_microseconds",std::make_shared<DataTypeDateTime64>(6),"Start time of query execution with microsecond precision."},
{"query_duration_ms",std::make_shared<DataTypeUInt64>(),"Duration of query execution in milliseconds."},
{"read_rows",std::make_shared<DataTypeUInt64>(),"Total number of rows read from all tables and table functions participated in query. It includes usual subqueries, subqueries for IN and JOIN. For distributed queries read_rows includes the total number of rows read at all replicas. Each replica sends it’s read_rows value, and the server-initiator of the query summarizes all received and local values. The cache volumes do not affect this value."},
{"read_bytes",std::make_shared<DataTypeUInt64>(),"Total number of bytes read from all tables and table functions participated in query. It includes usual subqueries, subqueries for IN and JOIN. For distributed queries read_bytes includes the total number of rows read at all replicas. Each replica sends it’s read_bytes value, and the server-initiator of the query summarizes all received and local values. The cache volumes do not affect this value."},
{"written_rows",std::make_shared<DataTypeUInt64>(),"For INSERT queries, the number of written rows. For other queries, the column value is 0."},
{"written_bytes",std::make_shared<DataTypeUInt64>(),"For INSERT queries, the number of written bytes (uncompressed). For other queries, the column value is 0."},
{"result_rows",std::make_shared<DataTypeUInt64>(),"Number of rows in a result of the SELECT query, or a number of rows in the INSERT query."},
{"result_bytes",std::make_shared<DataTypeUInt64>(),"RAM volume in bytes used to store a query result."},
{"memory_usage",std::make_shared<DataTypeUInt64>(),"Memory consumption by the query."},
{"current_database",low_cardinality_string,"Name of the current database."},
{"stack_trace",std::make_shared<DataTypeString>(),"Stack trace. An empty string, if the query was completed successfully."},
{"is_initial_query",std::make_shared<DataTypeUInt8>(),"Query type. Possible values: 1 — query was initiated by the client, 0 — query was initiated by another query as part of distributed query execution."},
{"user",low_cardinality_string,"Name of the user who initiated the current query."},
{"query_id",std::make_shared<DataTypeString>(),"ID of the query."},
{"address",DataTypeFactory::instance().get("IPv6"),"IP address that was used to make the query."},
{"port",std::make_shared<DataTypeUInt16>(),"The client port that was used to make the query."},
{"initial_user",low_cardinality_string,"Name of the user who ran the initial query (for distributed query execution)."},
{"initial_query_id",std::make_shared<DataTypeString>(),"ID of the initial query (for distributed query execution)."},
{"initial_address",DataTypeFactory::instance().get("IPv6"),"IP address that the parent query was launched from."},
{"initial_port",std::make_shared<DataTypeUInt16>(),"The client port that was used to make the parent query."},
{"initial_query_start_time",std::make_shared<DataTypeDateTime>(),"Initial query starting time (for distributed query execution)."},
{"initial_query_start_time_microseconds",std::make_shared<DataTypeDateTime64>(6),"Initial query starting time with microseconds precision (for distributed query execution)."},
{"interface",std::make_shared<DataTypeUInt8>(),"Interface that the query was initiated from. Possible values: 1 — TCP, 2 — HTTP."},
{"is_secure",std::make_shared<DataTypeUInt8>(),"The flag whether a query was executed over a secure interface"},
{"os_user",low_cardinality_string,"Operating system username who runs clickhouse-client."},
{"client_hostname",low_cardinality_string,"Hostname of the client machine where the clickhouse-client or another TCP client is run."},
{"client_name",low_cardinality_string,"The clickhouse-client or another TCP client name."},
{"client_revision",std::make_shared<DataTypeUInt32>(),"Revision of the clickhouse-client or another TCP client."},
{"client_version_major",std::make_shared<DataTypeUInt32>(),"Major version of the clickhouse-client or another TCP client."},
{"client_version_minor",std::make_shared<DataTypeUInt32>(),"Minor version of the clickhouse-client or another TCP client."},
{"client_version_patch",std::make_shared<DataTypeUInt32>(),"Patch component of the clickhouse-client or another TCP client version."},
{"http_method",std::make_shared<DataTypeUInt8>(),"HTTP method that initiated the query. Possible values: 0 — The query was launched from the TCP interface, 1 — GET method was used, 2 — POST method was used."},
{"http_user_agent",low_cardinality_string,"HTTP header UserAgent passed in the HTTP query."},
{"http_referer",std::make_shared<DataTypeString>(),"HTTP header Referer passed in the HTTP query (contains an absolute or partial address of the page making the query)."},
{"forwarded_for",std::make_shared<DataTypeString>(),"HTTP header X-Forwarded-For passed in the HTTP query."},
{"quota_key",std::make_shared<DataTypeString>(),"The quota key specified in the quotas setting (see keyed)."},
{"distributed_depth",std::make_shared<DataTypeUInt64>(),"How many times a query was forwarded between servers."},
{"log_comment",std::make_shared<DataTypeString>(),"Log comment. It can be set to arbitrary string no longer than max_query_size. An empty string if it is not defined."},
{"thread_ids",std::make_shared<DataTypeArray>(std::make_shared<DataTypeUInt64>()),"Thread ids that are participating in query execution. These threads may not have run simultaneously."},
{"peak_threads_usage",std::make_shared<DataTypeUInt64>(),"Maximum count of simultaneous threads executing the query."},
{"ProfileEvents",std::make_shared<DataTypeMap>(low_cardinality_string,std::make_shared<DataTypeUInt64>()),"ProfileEvents that measure different metrics. The description of them could be found in the table system.events"},
{"Settings",std::make_shared<DataTypeMap>(low_cardinality_string,low_cardinality_string),"Settings that were changed when the client ran the query. To enable logging changes to settings, set the log_query_settings parameter to 1."},
{"used_aggregate_functions",array_low_cardinality_string,"Canonical names of aggregate functions, which were used during query execution."},
{"used_aggregate_function_combinators",array_low_cardinality_string,"Canonical names of aggregate functions combinators, which were used during query execution."},
{"used_database_engines",array_low_cardinality_string,"Canonical names of database engines, which were used during query execution."},
{"used_data_type_families",array_low_cardinality_string,"Canonical names of data type families, which were used during query execution."},
{"used_dictionaries",array_low_cardinality_string,"Canonical names of dictionaries, which were used during query execution."},
{"used_formats",array_low_cardinality_string,"Canonical names of formats, which were used during query execution."},
{"used_functions",array_low_cardinality_string,"Canonical names of functions, which were used during query execution."},
{"used_storages",array_low_cardinality_string,"Canonical names of storages, which were used during query execution."},
{"used_table_functions",array_low_cardinality_string,"Canonical names of table functions, which were used during query execution."},
{"query_cache_usage",std::move(query_cache_usage_datatype),"Usage of the query cache during query execution. Values: 'Unknown' = Status unknown, 'None' = The query result was neither written into nor read from the query cache, 'Write' = The query result was written into the query cache, 'Read' = The query result was read from the query cache."},