MySQL 8.4.0
Source Code Documentation
immutable_string.h File Reference

ImmutableString defines a storage format for strings that is designed to be as compact as possible, while still being reasonably fast to decode. More...

#include <assert.h>
#include <stddef.h>
#include <stdint.h>
#include <limits>
#include <string_view>
#include "my_compiler.h"
#include <google/protobuf/io/coded_stream.h>
#include "template_utils.h"

Go to the source code of this file.

Classes

class  ImmutableStringWithLength
 The variant with length (ImmutableStringWithLength) stores the length as a Varint128 (similar to protobuf), immediately followed by the string itself. More...
 
class  LinkedImmutableString
 LinkedImmutableString is designed for storing rows (values) in hash join. More...
 
struct  LinkedImmutableString::Decoded
 

Functions

uint64_t ZigZagEncode64 (int64_t n)
 
int64_t ZigZagDecode64 (uint64_t n)
 
std::pair< const char *, uint64_t > VarintParseSlow64 (const char *p, uint32_t res32)
 
const char * VarintParse64 (const char *p, uint64_t *out)
 

Detailed Description

ImmutableString defines a storage format for strings that is designed to be as compact as possible, while still being reasonably fast to decode.

There are two variants; one with length, and one with a “next” pointer that can point to another string. As the name implies, both are designed to be immutable, i.e., they are not designed to be changed (especially not in length) after being encoded. See the individual classes for more details.

Function Documentation

◆ VarintParse64()

const char * VarintParse64 ( const char *  p,
uint64_t *  out 
)
inline

◆ VarintParseSlow64()

std::pair< const char *, uint64_t > VarintParseSlow64 ( const char *  p,
uint32_t  res32 
)

◆ ZigZagDecode64()

int64_t ZigZagDecode64 ( uint64_t  n)
inline

◆ ZigZagEncode64()

uint64_t ZigZagEncode64 ( int64_t  n)
inline