mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 08:02:02 +00:00
Improvements based on review
This commit is contained in:
parent
7f7d082fb3
commit
072f64c800
@ -626,8 +626,10 @@ static std::tuple<ASTPtr, BlockIO> executeQueryImpl(
|
|||||||
if (!table_id.empty())
|
if (!table_id.empty())
|
||||||
context->setInsertionTable(table_id);
|
context->setInsertionTable(table_id);
|
||||||
|
|
||||||
if (context->getCurrentTransaction() && context->getSettingsRef().throw_on_unsupported_query_inside_transaction)
|
if (context->getCurrentTransaction() && settings.throw_on_unsupported_query_inside_transaction)
|
||||||
throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Async inserts inside transactions are not supported");
|
throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Async inserts inside transactions are not supported");
|
||||||
|
if (settings.implicit_transaction && settings.throw_on_unsupported_query_inside_transaction)
|
||||||
|
throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Async inserts with 'implicit_transaction' are not supported");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -636,6 +638,9 @@ static std::tuple<ASTPtr, BlockIO> executeQueryImpl(
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if (context->isGlobalContext())
|
||||||
|
throw Exception(ErrorCodes::LOGICAL_ERROR, "Global context cannot create transactions");
|
||||||
|
|
||||||
/// If there is no session (which is the default for the HTTP Handler), set up one just for this as it is necessary
|
/// If there is no session (which is the default for the HTTP Handler), set up one just for this as it is necessary
|
||||||
/// to control the transaction lifetime
|
/// to control the transaction lifetime
|
||||||
if (!context->hasSessionContext())
|
if (!context->hasSessionContext())
|
||||||
@ -972,8 +977,18 @@ static std::tuple<ASTPtr, BlockIO> executeQueryImpl(
|
|||||||
|
|
||||||
if (implicit_txn_control)
|
if (implicit_txn_control)
|
||||||
{
|
{
|
||||||
implicit_txn_control->executeCommit(context->getSessionContext());
|
try
|
||||||
implicit_txn_control.reset();
|
{
|
||||||
|
implicit_txn_control->executeCommit(context->getSessionContext());
|
||||||
|
implicit_txn_control.reset();
|
||||||
|
}
|
||||||
|
catch (const Exception &)
|
||||||
|
{
|
||||||
|
/// An exception might happen when trying to commit the transaction. For example we might get an immediate exception
|
||||||
|
/// because ZK is down and wait_changes_become_visible_after_commit_mode == WAIT_UNKNOWN
|
||||||
|
implicit_txn_control.reset();
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user