@@ -40,7 +40,8 @@ namespace joblist
4040const uint64_t LimitedOrderBy::fMaxUncommited = 102400 ; // 100KiB - make it configurable?
4141
4242// LimitedOrderBy class implementation
43- LimitedOrderBy::LimitedOrderBy () : fStart (0 ), fCount (-1 ), fUncommitedMemory (0 )
43+ LimitedOrderBy::LimitedOrderBy (ResourceManager* rm)
44+ : DiskBasedTopNOrderBy(rm), fStart (0 ), fCount (-1 ), fUncommitedMemory (0 )
4445{
4546 fRule .fIdbCompare = this ;
4647}
@@ -109,13 +110,12 @@ void LimitedOrderBy::processRow(const rowgroup::Row& row)
109110 if (fCount == 0 )
110111 return ;
111112
112- std::cout << " LimitedOrderBy::processRow row " << row.toString () << std::endl;
113- std::cout << " LimitedOrderBy::processRow fStart " << fStart << " fCount " << fCount << std::endl;
113+ std::cout << " LimitedOrderBy::processRow row " << row.toString () << std::endl;
114+ std::cout << " LimitedOrderBy::processRow fStart " << fStart << " fCount " << fCount << std::endl;
114115 auto & orderedRowsQueue = getQueue ();
115116 // if the row count is less than the limit
116117 if (orderedRowsQueue.size () < fStart + fCount )
117118 {
118-
119119 copyRow (row, &fRow0 );
120120 OrderByRow newRow (fRow0 , fRule );
121121 orderedRowsQueue.push (newRow);
@@ -163,7 +163,7 @@ void LimitedOrderBy::processRow(const rowgroup::Row& row)
163163 OrderByRow swapRow = orderedRowsQueue.top ();
164164 row1.setData (swapRow.fData );
165165 std::cout << " LimitedOrderBy::processRow row2swap " << row1.toString () << std::endl;
166- std::cout <<" LimitedOrderBy::processRow new row 4 swaping " << row.toString () << std::endl;
166+ std::cout << " LimitedOrderBy::processRow new row 4 swaping " << row.toString () << std::endl;
167167
168168 copyRow (row, &row1);
169169
@@ -178,7 +178,6 @@ void LimitedOrderBy::processRow(const rowgroup::Row& row)
178178 }
179179}
180180
181-
182181void LimitedOrderBy::processRow_ (const rowgroup::Row& row)
183182{
184183 // check if this is a distinct row
@@ -189,13 +188,12 @@ void LimitedOrderBy::processRow_(const rowgroup::Row& row)
189188 if (fCount == 0 )
190189 return ;
191190
192-
193191 // TODO copy rules or replace ptrs to real instances in CompareRules
194192 // auto invertedRule = fRule;
195193 // invertedRule.revertRules();
196194
197- std::cout << " LimitedOrderBy::processRow row " << row.toString () << std::endl;
198- std::cout << " LimitedOrderBy::processRow fStart " << fStart << " fCount " << fCount << std::endl;
195+ std::cout << " LimitedOrderBy::processRow row " << row.toString () << std::endl;
196+ std::cout << " LimitedOrderBy::processRow fStart " << fStart << " fCount " << fCount << std::endl;
199197 auto & orderedRowsQueue = getQueue ();
200198 // if the row count is less than the limit
201199 if (orderedRowsQueue.size () < fStart + fCount )
@@ -247,7 +245,7 @@ void LimitedOrderBy::processRow_(const rowgroup::Row& row)
247245 OrderByRow swapRow = orderedRowsQueue.top ();
248246 row1.setData (swapRow.fData );
249247 std::cout << " LimitedOrderBy::processRow row2swap " << row1.toString () << std::endl;
250- std::cout <<" LimitedOrderBy::processRow new row 4 swaping " << row.toString () << std::endl;
248+ std::cout << " LimitedOrderBy::processRow new row 4 swaping " << row.toString () << std::endl;
251249
252250 copyRow (row, &row1);
253251
@@ -268,8 +266,8 @@ void LimitedOrderBy::processRow_(const rowgroup::Row& row)
268266
269267// // Skip OFFSET
270268// uint64_t sqlOffset = fStart;
271- // std::cout << "brandNewFinalize offset " << sqlOffset << " orderedRowsQueue.size() " << orderedRowsQueue.size() << std::endl;
272- // while (sqlOffset > 0 && !orderedRowsQueue.empty())
269+ // std::cout << "brandNewFinalize offset " << sqlOffset << " orderedRowsQueue.size() " <<
270+ // orderedRowsQueue.size() << std::endl; while (sqlOffset > 0 && !orderedRowsQueue.empty())
273271// {
274272// auto r = orderedRowsQueue.top();
275273// row1.setData(r.fData);
@@ -283,7 +281,7 @@ void LimitedOrderBy::brandNewFinalize()
283281{
284282 if (!isDiskBased ())
285283 {
286- return finalize ();
284+ return finalize ();
287285 }
288286
289287 // if disk-based
@@ -391,11 +389,9 @@ void LimitedOrderBy::brandNewFinalize()
391389
392390 fDataQueue = tempQueue;
393391 }
394-
395-
396392}
397393
398- /*
394+ /*
399395 * The f() copies top element from an ordered queue into a row group. It
400396 * does this backwards to syncronise sorting orientation with the server.
401397 * The top row from the queue goes last into the returned set.
@@ -525,7 +521,8 @@ bool LimitedOrderBy::getNextRGData(RGData& data)
525521 // and the current sorted queue size.
526522 uint64_t rowsToRetrieve = std::min (fCount - fRowsReturned , fRowsPerRG );
527523 uint64_t rowsToRetrieveFromQueue = std::min (rowsToRetrieve, orderedRowsQueue.size ());
528- std::cout << " getNextRGData rowsToRetrieve " << rowsToRetrieve << " orderedRowsQueue.size() " << orderedRowsQueue.size () << std::endl;
524+ std::cout << " getNextRGData rowsToRetrieve " << rowsToRetrieve << " orderedRowsQueue.size() "
525+ << orderedRowsQueue.size () << std::endl;
529526 std::cout << " getNextRGData rowsToRetrieveFromQueue " << rowsToRetrieveFromQueue << std::endl;
530527 for (; rowsToRetrieveFromQueue > thisRGRowNumber; ++thisRGRowNumber)
531528 {
0 commit comments