MySQL 9.1.0
Source Code Documentation
|
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) |
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.
|
inline |
std::pair< const char *, uint64_t > VarintParseSlow64 | ( | const char * | p, |
uint32_t | res32 | ||
) |
|
inline |
|
inline |