From 68f40f8f88cf5db067ef6c255c8eee47017b68e0 Mon Sep 17 00:00:00 2001 From: Vage Ogannisian Date: Sat, 25 May 2024 17:25:54 +0000 Subject: [PATCH] fixes --- src/Interpreters/executeQuery.cpp | 16 ++++++++++++---- src/Interpreters/executeQuery.h | 1 - src/Server/HTTPHandler.cpp | 12 +++++++----- src/Server/HTTPHandler.h | 2 +- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/Interpreters/executeQuery.cpp b/src/Interpreters/executeQuery.cpp index 8a246aff6c88..42119c5007e7 100644 --- a/src/Interpreters/executeQuery.cpp +++ b/src/Interpreters/executeQuery.cpp @@ -103,7 +103,6 @@ namespace ErrorCodes extern const int LOGICAL_ERROR; extern const int NOT_IMPLEMENTED; extern const int QUERY_WAS_CANCELLED; - extern const int INCORRECT_DATA; extern const int SYNTAX_ERROR; extern const int SUPPORT_IS_DISABLED; extern const int INCORRECT_QUERY; @@ -966,7 +965,7 @@ executeQueryImpl(QueryData & query_data, ContextMutablePtr context, QueryFlags f { if (can_use_query_cache && settings.enable_reads_from_query_cache) { - QueryCache::Key key(ast, context->getUserID(), context->getCurrentRoles()); + QueryCache::Key key(ast, context->getCurrentDatabase(), context->getUserID(), context->getCurrentRoles()); QueryCache::Reader reader = query_cache->createReader(key); if (reader.hasCacheEntryForKey()) { @@ -1088,7 +1087,7 @@ executeQueryImpl(QueryData & query_data, ContextMutablePtr context, QueryFlags f && (!ast_contains_system_tables || system_table_handling == QueryCacheSystemTableHandling::Save)) { QueryCache::Key key( - ast, res.pipeline.getHeader(), + ast, context->getCurrentDatabase(), res.pipeline.getHeader(), context->getUserID(), context->getCurrentRoles(), settings.query_cache_share_between_users, std::chrono::system_clock::now() + std::chrono::seconds(settings.query_cache_ttl), @@ -1259,7 +1258,16 @@ QueryData::QueryData(ReadBuffer & istr, ContextMutablePtr context, QueryFlags fl const char * begin; const char * end; - istr.nextIfAtEnd(); + try + { + istr.nextIfAtEnd(); + } + catch (...) + { + /// If buffer contains invalid data and we failed to decompress, we still want to have some information about the query in the log. + logQuery("", context, /* internal = */ false, QueryProcessingStage::Complete); + throw; + } const auto max_query_size = getMaxQuerySize(context, flags); diff --git a/src/Interpreters/executeQuery.h b/src/Interpreters/executeQuery.h index 0292682a2bb1..4a025fb37d25 100644 --- a/src/Interpreters/executeQuery.h +++ b/src/Interpreters/executeQuery.h @@ -1,6 +1,5 @@ #pragma once -#include "Parsers/IAST_fwd.h" #include #include #include diff --git a/src/Server/HTTPHandler.cpp b/src/Server/HTTPHandler.cpp index 3f81d8302a81..7afa1455bd3c 100644 --- a/src/Server/HTTPHandler.cpp +++ b/src/Server/HTTPHandler.cpp @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include @@ -39,6 +39,8 @@ #include #include +#include "config.h" + #include #include #include @@ -786,11 +788,11 @@ void HTTPHandler::processQuery( /// The data can also be compressed using incompatible internal algorithm. This is indicated by /// 'decompress' query parameter. std::unique_ptr in_post_maybe_compressed; - bool in_post_compressed = false; + bool is_in_post_compressed = false; if (params.getParsed("decompress", false)) { in_post_maybe_compressed = std::make_unique(*in_post); - in_post_compressed = true; + is_in_post_compressed = true; } else in_post_maybe_compressed = std::move(in_post); @@ -890,7 +892,7 @@ void HTTPHandler::processQuery( /// If 'http_native_compression_disable_checksumming_on_decompress' setting is turned on, /// checksums of client data compressed with internal algorithm are not checked. - if (in_post_compressed && settings.http_native_compression_disable_checksumming_on_decompress) + if (is_in_post_compressed && settings.http_native_compression_disable_checksumming_on_decompress) static_cast(*in_post_maybe_compressed).disableChecksumming(); /// Add CORS header if 'add_http_cors_header' setting is turned on send * in Access-Control-Allow-Origin @@ -1177,7 +1179,7 @@ void HTTPHandler::handleRequest(HTTPServerRequest & request, HTTPServerResponse client_trace_context, context->getSettingsRef(), context->getOpenTelemetrySpanLog()); - thread_trace_context->root_span.kind = OpenTelemetry::SERVER; + thread_trace_context->root_span.kind = OpenTelemetry::SpanKind::SERVER; thread_trace_context->root_span.addAttribute("clickhouse.uri", request.getURI()); response.setContentType("text/plain; charset=UTF-8"); diff --git a/src/Server/HTTPHandler.h b/src/Server/HTTPHandler.h index fa457966f3b7..1d7ba7c1b1b9 100644 --- a/src/Server/HTTPHandler.h +++ b/src/Server/HTTPHandler.h @@ -167,7 +167,7 @@ class HTTPHandler : public HTTPRequestHandler class DynamicQueryHandler : public HTTPHandler { -protected: +private: std::string param_name; public: explicit DynamicQueryHandler(IServer & server_, const std::string & param_name_ = "query", const std::optional& content_type_override_ = std::nullopt);