1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

feat(TNS): change ORDER BY out-of-memory error message. Replaced bad_alloc with IDBExcept in TNS.

This commit is contained in:
drrtuy
2025-04-18 20:03:09 +00:00
committed by Leonid Fedorov
parent 25fd400288
commit e9973c46e4
2 changed files with 40 additions and 0 deletions

View File

@ -574,6 +574,13 @@ void TupleAnnexStep::executeNoOrderByWithDistinct()
dataVec.pop_back(); dataVec.pop_back();
} }
} }
catch (const std::bad_alloc&)
{
auto errorCode = ERR_TNS_DISTINCT_IS_TOO_BIG;
auto newException = IDBExcept(errorCode);
handleException(std::make_exception_ptr(newException), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
"TupleAnnexStep::executeNoOrderByWithDistinct()");
}
catch (...) catch (...)
{ {
handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL, handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
@ -676,6 +683,13 @@ void TupleAnnexStep::executeWithOrderBy()
} }
} }
} }
catch (const std::bad_alloc&)
{
auto errorCode = fOrderBy->getErrorCode();
auto newException = IDBExcept(errorCode);
handleException(std::make_exception_ptr(newException), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
"TupleAnnexStep::executeWithOrderBy()");
}
catch (...) catch (...)
{ {
handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL, handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
@ -747,6 +761,13 @@ void TupleAnnexStep::finalizeParallelOrderByDistinct()
} }
} }
} }
catch (const std::bad_alloc&)
{
auto errorCode = fOrderBy->getErrorCode();
auto newException = IDBExcept(errorCode);
handleException(std::make_exception_ptr(newException), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
"TupleAnnexStep::finalizeParallelOrderByDistinct()");
}
catch (...) catch (...)
{ {
handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL, handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
@ -939,6 +960,13 @@ void TupleAnnexStep::finalizeParallelOrderBy()
} }
} }
} }
catch (const std::bad_alloc&)
{
auto errorCode = fOrderBy->getErrorCode();
auto newException = IDBExcept(errorCode);
handleException(std::make_exception_ptr(newException), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
"TupleAnnexStep::finalizeParallelOrderBy()");
}
catch (...) catch (...)
{ {
handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL, handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
@ -1147,6 +1175,13 @@ void TupleAnnexStep::executeParallelOrderBy(uint64_t id)
dlOffset++; dlOffset++;
} }
} }
catch (const std::bad_alloc&)
{
auto errorCode = fOrderBy->getErrorCode();
auto newException = IDBExcept(errorCode);
handleException(std::make_exception_ptr(newException), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
"TupleAnnexStep::executeParallelOrderBy()");
}
catch (...) catch (...)
{ {
handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL, handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,

View File

@ -432,6 +432,11 @@ class IdbOrderBy : public IdbCompare
{ {
return *fOrderByQueue; return *fOrderByQueue;
} }
uint64_t getErrorCode() const
{
return fErrorCode;
}
void returnAllRGDataMemory2RM() void returnAllRGDataMemory2RM()
{ {
while (!fOrderByQueue->empty()) while (!fOrderByQueue->empty())