77#include < contrib/libs/lz4/lz4hc.h>
88
99#include < ydb/library/yql/utils/yql_panic.h>
10+ #include < ydb/library/yql/utils/exceptions.h>
11+ #include < ydb/library/yql/core/issue/protos/issue_id.pb.h>
1012#include " output_queue_impl.h"
1113
1214namespace NYql {
@@ -53,7 +55,7 @@ EStreamType CheckMagic(const void* data) {
5355
5456EStreamType CheckMagic (NDB::ReadBuffer& input) {
5557 char data[4u ];
56- YQL_ENSURE (input.read (data, sizeof (data)) == sizeof (data), " Buffer too small." );
58+ YQL_ENSURE_CODELINE (input.read (data, sizeof (data)) == sizeof (data), TIssuesIds::KIKIMR_BAD_REQUEST , " Buffer too small." );
5759 return CheckMagic (data);
5860}
5961
@@ -62,7 +64,7 @@ EStreamType CheckMagic(NDB::ReadBuffer& input) {
6264TReadBuffer::TReadBuffer (NDB::ReadBuffer& source)
6365 : NDB::ReadBuffer(nullptr , 0ULL ), Source(source), StreamType(CheckMagic(Source)), Pos(0ULL ), Remaining(0ULL )
6466{
65- YQL_ENSURE (StreamType != EStreamType::Unknown, " Wrong magic." );
67+ YQL_ENSURE_CODELINE (StreamType != EStreamType::Unknown, TIssuesIds::KIKIMR_BAD_REQUEST , " Wrong magic." );
6668 if (StreamType == EStreamType::Frame) {
6769 const auto errorCode = LZ4F_createDecompressionContext (&Ctx, LZ4F_VERSION);
6870 YQL_ENSURE (!LZ4F_isError (errorCode), " Can't create LZ4F context resource: " << LZ4F_getErrorName (errorCode));
@@ -75,7 +77,7 @@ TReadBuffer::TReadBuffer(NDB::ReadBuffer& source)
7577 WriteLE32 (InBuffer.data (), Lz4ioMagicNumber);
7678
7779 NextToLoad = LZ4F_decompress_usingDict (Ctx, OutBuffer.data (), &outSize, InBuffer.data (), &inSize, nullptr , 0ULL , nullptr );
78- YQL_ENSURE (!LZ4F_isError (NextToLoad), " Header error: " << LZ4F_getErrorName (NextToLoad));
80+ YQL_ENSURE_CODELINE (!LZ4F_isError (NextToLoad), TIssuesIds::KIKIMR_BAD_REQUEST , " Header error: " << LZ4F_getErrorName (NextToLoad));
7981 }
8082}
8183
@@ -120,7 +122,7 @@ size_t TReadBuffer::DecompressFrame() {
120122 if (Pos >= Remaining) {
121123 for (auto toRead = NextToLoad; toRead > 0U ;) {
122124 const auto sizeCheck = Source.read (InBuffer.data () + NextToLoad - toRead, toRead);
123- YQL_ENSURE (sizeCheck > 0U && sizeCheck <= toRead, " Cannot access compressed block." );
125+ YQL_ENSURE_CODELINE (sizeCheck > 0U && sizeCheck <= toRead, TIssuesIds::KIKIMR_BAD_REQUEST , " Cannot access compressed block." );
124126 toRead -= sizeCheck;
125127 }
126128
@@ -132,7 +134,7 @@ size_t TReadBuffer::DecompressFrame() {
132134 while (Pos < Remaining || (decodedBytes == OutBuffer.size ())) {
133135 decodedBytes = OutBuffer.size ();
134136 NextToLoad = LZ4F_decompress_usingDict (Ctx, OutBuffer.data (), &decodedBytes, InBuffer.data () + Pos, &Remaining, nullptr , 0ULL , nullptr );
135- YQL_ENSURE (!LZ4F_isError (NextToLoad), " Decompression error: " << LZ4F_getErrorName (NextToLoad));
137+ YQL_ENSURE_CODELINE (!LZ4F_isError (NextToLoad), TIssuesIds::KIKIMR_BAD_REQUEST , " Decompression error: " << LZ4F_getErrorName (NextToLoad));
136138 Pos += Remaining;
137139
138140 if (decodedBytes)
@@ -153,21 +155,21 @@ size_t TReadBuffer::DecompressLegacy() {
153155 unsigned int blockSize = 0U ;
154156
155157 if (const auto sizeCheck = Source.read (InBuffer.data (), 4U )) {
156- YQL_ENSURE (sizeCheck == 4U , " Cannot access block size." );
158+ YQL_ENSURE_CODELINE (sizeCheck == 4U , TIssuesIds::KIKIMR_BAD_REQUEST , " Cannot access block size." );
157159 blockSize = ReadLE32 (InBuffer.data ());
158- YQL_ENSURE (blockSize <= LZ4_COMPRESSBOUND (LegacyBlockSize), " Block size out of bounds." );
160+ YQL_ENSURE_CODELINE (blockSize <= LZ4_COMPRESSBOUND (LegacyBlockSize), TIssuesIds::KIKIMR_BAD_REQUEST , " Block size out of bounds." );
159161 } else
160162 return 0ULL ;
161163
162164 for (auto toRead = blockSize; toRead > 0U ;) {
163165 const auto sizeCheck = Source.read (InBuffer.data () + blockSize - toRead, toRead);
164- YQL_ENSURE (sizeCheck > 0U && sizeCheck <= toRead, " Cannot access compressed block." );
166+ YQL_ENSURE_CODELINE (sizeCheck > 0U && sizeCheck <= toRead, TIssuesIds::KIKIMR_BAD_REQUEST , " Cannot access compressed block." );
165167 toRead -= sizeCheck;
166168 }
167169
168170 const auto decodeSize = LZ4_decompress_safe (InBuffer.data (), OutBuffer.data (), (int )blockSize, LegacyBlockSize);
169171
170- YQL_ENSURE (decodeSize >= 0 , " Corrupted input detected." );
172+ YQL_ENSURE_CODELINE (decodeSize >= 0 , TIssuesIds::KIKIMR_BAD_REQUEST , " Corrupted input detected." );
171173 return size_t (decodeSize);
172174}
173175
0 commit comments