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();
}
}
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 (...)
{
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 (...)
{
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 (...)
{
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 (...)
{
handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,
@ -1147,6 +1175,13 @@ void TupleAnnexStep::executeParallelOrderBy(uint64_t id)
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 (...)
{
handleException(std::current_exception(), logging::ERR_IN_PROCESS, logging::ERR_ALWAYS_CRITICAL,

View File

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