![]()  | 
  
    MySQL 8.4.7
    
   Source Code Documentation 
   | 
 
This class is used for storing unstructured optimizer trace text (as used by the Hypergraph optimizer). More...
#include <optimizer_trace.h>
Public Member Functions | |
| int_type | overflow (int_type ch) override | 
| Called by std::ostream if the current segment is full.  More... | |
| template<typename Sink > | |
| void | ForEach (Sink sink) const | 
| Apply 'sink' to each character in the trace text.  More... | |
| template<typename Sink > | |
| void | ForEachRemove (Sink sink) | 
| Apply 'sink' to each character in the trace text.  More... | |
| std::string | ToString () const | 
| Return a copy of the contents as a string.  More... | |
Static Public Attributes | |
| static constexpr size_t | kSegmentSize = 4096 | 
| The size of each consecutive buffer.  More... | |
Private Types | |
| using | Segment = std::array< char, kSegmentSize > | 
| A consecutive buffer.  More... | |
| using | DequeType = std::deque< Segment > | 
| The sequence of consecutive buffers.  More... | |
Private Attributes | |
| DequeType | m_segments | 
| The sequence of segments.  More... | |
This class is used for storing unstructured optimizer trace text (as used by the Hypergraph optimizer).
It is used as the std::streambuf object of an associated std::ostream (which writes the formatted text into a TraceBuffer object). The text is stored in a non-consecutive sequence of segments, where each segment has a chunk of consecutive memory. That way, the buffer can grow without having to copy the text into ever bigger buffers of consecutive memory.
      
  | 
  private | 
The sequence of consecutive buffers.
      
  | 
  private | 
A consecutive buffer.
      
  | 
  inline | 
Apply 'sink' to each character in the trace text.
      
  | 
  inline | 
Apply 'sink' to each character in the trace text.
Free each segment when its contents have been consumed.
      
  | 
  inlineoverride | 
Called by std::ostream if the current segment is full.
Allocate a new segment and put 'ch' at the beginning of it.
      
  | 
  inline | 
Return a copy of the contents as a string.
This may be expensive for large traces, and is only intended for unit tests.
      
  | 
  staticconstexpr | 
The size of each consecutive buffer.
      
  | 
  private | 
The sequence of segments.