mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 09:32:06 +00:00
dbms: Server: HTTP handler: made GET readonly; fixed error in SET query [#CONV-2944].
This commit is contained in:
parent
743108b25e
commit
fb0f651db4
@ -76,7 +76,7 @@ private:
|
||||
Context * global_context; /// Глобальный контекст или NULL, если его нет. (Возможно, равен this.)
|
||||
|
||||
public:
|
||||
Context() : shared(new ContextShared) {}
|
||||
Context() : shared(new ContextShared), session_context(NULL), global_context(NULL) {}
|
||||
|
||||
String getPath() const;
|
||||
void setPath(const String & path);
|
||||
|
@ -40,11 +40,12 @@ struct HTMLForm : public Poco::Net::HTMLForm
|
||||
};
|
||||
|
||||
|
||||
void HTTPHandler::processQuery(Poco::Net::NameValueCollection & params, Poco::Net::HTTPServerResponse & response, std::istream & istr)
|
||||
void HTTPHandler::processQuery(Poco::Net::NameValueCollection & params, Poco::Net::HTTPServerResponse & response, std::istream & istr, bool readonly)
|
||||
{
|
||||
BlockInputStreamPtr query_plan;
|
||||
|
||||
/** Часть запроса может быть передана в параметре query, а часть - POST-ом.
|
||||
/** Часть запроса может быть передана в параметре query, а часть - POST-ом
|
||||
* (точнее - в теле запроса, а метод не обязательно должен быть POST).
|
||||
* В таком случае, считается, что запрос - параметр query, затем перевод строки, а затем - данные POST-а.
|
||||
*/
|
||||
std::string query_param = params.get("query", "");
|
||||
@ -89,6 +90,9 @@ void HTTPHandler::processQuery(Poco::Net::NameValueCollection & params, Poco::Ne
|
||||
if (params.has("database"))
|
||||
context.setCurrentDatabase(params.get("database"));
|
||||
|
||||
if (readonly)
|
||||
new_settings.limits.readonly = true;
|
||||
|
||||
context.setSettings(new_settings);
|
||||
|
||||
Stopwatch watch;
|
||||
@ -137,7 +141,8 @@ void HTTPHandler::handleRequest(Poco::Net::HTTPServerRequest & request, Poco::Ne
|
||||
|
||||
HTMLForm params(request);
|
||||
std::istream & istr = request.stream();
|
||||
processQuery(params, response, istr);
|
||||
bool readonly = request.getMethod() == Poco::Net::HTTPServerRequest::HTTP_GET;
|
||||
processQuery(params, response, istr, readonly);
|
||||
|
||||
LOG_INFO(log, "Done processing query");
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ private:
|
||||
|
||||
Logger * log;
|
||||
|
||||
void processQuery(Poco::Net::NameValueCollection & params, Poco::Net::HTTPServerResponse & response, std::istream & istr);
|
||||
void processQuery(Poco::Net::NameValueCollection & params, Poco::Net::HTTPServerResponse & response, std::istream & istr, bool readonly);
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user