24#ifndef PFS_BUFFER_CONTAINER_H
25#define PFS_BUFFER_CONTAINER_H
51class PFS_opaque_container_page;
52class PFS_opaque_container;
62template <
class T,
class U,
class V>
65template <
class T,
int PFS_PAGE_SIZE,
int PFS_PAGE_COUNT,
class U,
class V>
74template <
class T,
class U,
class V>
77template <
class T,
int PFS_PAGE_SIZE,
int PFS_PAGE_COUNT,
class U,
class V>
80template <
class B,
int COUNT>
83template <
class B,
int COUNT>
102 monotonic_max = monotonic +
m_max;
104 if (
unlikely(monotonic >= monotonic_max)) {
112 monotonic_max =
m_max;
115 while (monotonic < monotonic_max) {
116 index = monotonic %
m_max;
119 if (
pfs->m_lock.free_to_dirty(dirty_state)) {
130 pfs->m_lock.allocated_to_free();
155 array->
m_ptr =
nullptr;
159 if (array->
m_max > 0) {
162 if (array->
m_ptr ==
nullptr) {
171 assert(array->
m_max > 0);
174 array->
m_ptr =
nullptr;
181template <
class T,
class U = PFS_buffer_default_array<T>,
182 class V = PFS_buffer_default_allocator<T>>
199 m_array.m_monotonic.m_size_t = 0;
243 assert(index <=
m_max);
251 while (
pfs < pfs_last) {
252 if (
pfs->m_lock.is_populated()) {
263 while (
pfs < pfs_last) {
273 while (
pfs < pfs_last) {
274 if (
pfs->m_lock.is_populated()) {
285 while (
pfs < pfs_last) {
292 assert(index <
m_max);
295 if (
pfs->m_lock.is_populated()) {
303 if (index >=
m_max) {
317 if ((
pfs <= unsafe) && (unsafe < pfs_last)) {
331 assert(index <=
m_max);
337 while (
pfs < pfs_last) {
338 if (
pfs->m_lock.is_populated()) {
339 uint found =
pfs - pfs_first;
340 *found_index = found;
356template <
class T,
int PFS_PAGE_SIZE,
int PFS_PAGE_COUNT,
387 static const size_t MAX_SIZE = PFS_PAGE_SIZE * PFS_PAGE_COUNT;
399 m_max = PFS_PAGE_COUNT * PFS_PAGE_SIZE;
406 for (i = 0; i < PFS_PAGE_COUNT; i++) {
413 }
else if (max_size > 0) {
414 if (max_size % PFS_PAGE_SIZE == 0) {
450 for (i = 0; i < PFS_PAGE_COUNT; i++) {
452 if (
page !=
nullptr) {
467 size_t result = page_count * PFS_PAGE_SIZE;
488 size_t monotonic_max;
489 size_t current_page_count;
498 if (current_page_count != 0) {
500 monotonic_max = monotonic + current_page_count;
502 if (
unlikely(monotonic >= monotonic_max)) {
510 monotonic_max = current_page_count;
513 while (monotonic < monotonic_max) {
518 index = monotonic % current_page_count;
523 if (array !=
nullptr) {
524 pfs = array->allocate(dirty_state);
525 if (
pfs !=
nullptr) {
527 pfs->m_page =
reinterpret_cast<PFS_opaque_container_page *
>(array);
559 array =
m_pages[current_page_count].load();
561 if (array ==
nullptr) {
595 array =
m_pages[current_page_count].load();
597 if (array ==
nullptr) {
614 array->m_container =
reinterpret_cast<PFS_opaque_container *
>(
this);
617 m_pages[current_page_count].store(array);
630 assert(array !=
nullptr);
631 pfs = array->allocate(dirty_state);
632 if (
pfs !=
nullptr) {
634 pfs->m_page =
reinterpret_cast<PFS_opaque_container_page *
>(array);
638 current_page_count++;
648 PFS_opaque_container_page *opaque_page = safe_pfs->m_page;
652 safe_pfs->m_lock.dirty_to_free(dirty_state);
655 page->m_full =
false;
663 PFS_opaque_container_page *opaque_page = safe_pfs->m_page;
667 safe_pfs->m_lock.allocated_to_free();
670 page->m_full =
false;
678 PFS_opaque_container_page *opaque_page = safe_pfs->m_page;
682 safe_pfs->m_lock.allocated_to_free();
685 page->m_full =
false;
688 PFS_opaque_container *opaque_container =
page->m_container;
702 assert(index <=
m_max);
713 for (i = 0; i < PFS_PAGE_COUNT; i++) {
715 if (
page !=
nullptr) {
717 pfs_last =
page->get_last();
719 while (
pfs < pfs_last) {
720 if (
pfs->m_lock.is_populated()) {
735 for (i = 0; i < PFS_PAGE_COUNT; i++) {
737 if (
page !=
nullptr) {
739 pfs_last =
page->get_last();
741 while (
pfs < pfs_last) {
755 for (i = 0; i < PFS_PAGE_COUNT; i++) {
757 if (
page !=
nullptr) {
759 pfs_last =
page->get_last();
761 while (
pfs < pfs_last) {
762 if (
pfs->m_lock.is_populated()) {
777 for (i = 0; i < PFS_PAGE_COUNT; i++) {
781 pfs_last =
page->get_last();
783 while (
pfs < pfs_last) {
792 assert(index <
m_max);
794 uint index_1 = index / PFS_PAGE_SIZE;
796 if (
page !=
nullptr) {
797 uint index_2 = index % PFS_PAGE_SIZE;
799 if (index_2 >=
page->m_max) {
805 if (
pfs->m_lock.is_populated()) {
814 if (index >=
m_max) {
819 uint index_1 = index / PFS_PAGE_SIZE;
822 if (
page ==
nullptr) {
827 uint index_2 = index % PFS_PAGE_SIZE;
829 if (index_2 >=
page->m_max) {
837 if (
pfs->m_lock.is_populated()) {
851 for (i = 0; i < PFS_PAGE_COUNT; i++) {
853 if (
page !=
nullptr) {
855 pfs_last =
page->get_last();
857 if ((
pfs <= unsafe) && (unsafe < pfs_last)) {
874 return PFS_PAGE_SIZE;
881 assert(index <=
m_max);
883 uint index_1 = index / PFS_PAGE_SIZE;
884 uint index_2 = index % PFS_PAGE_SIZE;
890 while (index_1 < PFS_PAGE_COUNT) {
893 if (
page ==
nullptr) {
894 index =
static_cast<uint
>(
m_max);
898 pfs_first =
page->get_first();
899 pfs = pfs_first + index_2;
900 pfs_last =
page->get_last();
902 while (
pfs < pfs_last) {
903 if (
pfs->m_lock.is_populated()) {
905 index_1 * PFS_PAGE_SIZE +
static_cast<uint
>(
pfs - pfs_first);
906 *found_index = found;
917 index =
static_cast<uint
>(
m_max);
928 std::atomic<array_type *>
m_pages[PFS_PAGE_COUNT];
933template <
class T,
class U,
class V>
958template <
class T,
int page_size,
int page_count,
class U,
class V>
991template <
class B,
int PFS_PARTITION_COUNT>
1006 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1012 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1020 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1027 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1035 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1047 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1057 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1065 assert(partition < PFS_PARTITION_COUNT);
1079 B::static_deallocate(safe_pfs);
1085 uint partition_index;
1087 unpack_index(user_index, &partition_index, &sub_index);
1092 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1098 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1104 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1110 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1116 uint partition_index;
1118 unpack_index(user_index, &partition_index, &sub_index);
1120 if (partition_index >= PFS_PARTITION_COUNT) {
1128 uint partition_index;
1130 unpack_index(user_index, &partition_index, &sub_index);
1132 if (partition_index >= PFS_PARTITION_COUNT) {
1144 for (
int i = 0; i < PFS_PARTITION_COUNT; i++) {
1146 if (safe !=
nullptr) {
1157 static_assert(PFS_PARTITION_COUNT <= (1 << 8),
"2^8 = 256 partitions max.");
1159 "2^24 = 16777216 max per partitioned buffer.");
1161 *user_index = (partition_index << 24) + sub_index;
1166 *partition_index = user_index >> 24;
1167 *sub_index = user_index & 0x00FFFFFF;
1171 uint *found_partition, uint *found_sub_index) {
1173 assert(partition_index < PFS_PARTITION_COUNT);
1175 while (partition_index < PFS_PARTITION_COUNT) {
1178 record = sub_iterator.scan_next(found_sub_index);
1180 *found_partition = partition_index;
1181 sub_index = *found_sub_index + 1;
1189 *found_partition = PFS_PARTITION_COUNT;
1190 *found_sub_index = 0;
1198template <
class B,
int PFS_PARTITION_COUNT>
1202 PFS_PARTITION_COUNT>;
1209 uint unused_partition;
1210 uint unused_sub_index;
1216 uint found_partition;
1217 uint found_sub_index;
1228 uint partition, uint sub_index)
Definition: pfs_buffer_container.h:1380
void free_array(PFS_account_array *array)
Definition: pfs_buffer_container.cc:235
int alloc_array(PFS_account_array *array)
Definition: pfs_buffer_container.cc:102
Definition: pfs_buffer_container.h:1370
PFS_stage_stat * m_instr_class_stages_array
Definition: pfs_buffer_container.h:1373
PFS_memory_shared_stat * m_instr_class_memory_array
Definition: pfs_buffer_container.h:1377
PFS_error_stat * m_instr_class_errors_array
Definition: pfs_buffer_container.h:1376
PFS_single_stat * m_instr_class_waits_array
Definition: pfs_buffer_container.h:1372
PFS_transaction_stat * m_instr_class_transactions_array
Definition: pfs_buffer_container.h:1375
PFS_statement_stat * m_instr_class_statements_array
Definition: pfs_buffer_container.h:1374
Definition: pfs_buffer_container.h:57
Definition: pfs_buffer_container.h:183
PFS_buffer_processor< T > processor_type
Definition: pfs_buffer_container.h:192
void apply(function_type fct)
Definition: pfs_buffer_container.h:247
void cleanup()
Definition: pfs_buffer_container.h:219
size_t get_memory() const
Definition: pfs_buffer_container.h:225
size_t get_row_count() const
Definition: pfs_buffer_container.h:221
size_t m_max
Definition: pfs_buffer_container.h:351
value_type * get(uint index)
Definition: pfs_buffer_container.h:291
size_t get_row_size() const
Definition: pfs_buffer_container.h:223
U array_type
Definition: pfs_buffer_container.h:188
int init(size_t max_size)
Definition: pfs_buffer_container.h:205
void apply(processor_type &proc)
Definition: pfs_buffer_container.h:269
value_type * get(uint index, bool *has_more)
Definition: pfs_buffer_container.h:302
PFS_buffer_const_iterator< T > const_iterator_type
Definition: pfs_buffer_container.h:190
void apply_all(function_type fct)
Definition: pfs_buffer_container.h:259
void(* function_type)(value_type *)
Definition: pfs_buffer_container.h:193
iterator_type iterate()
Definition: pfs_buffer_container.h:240
ulong m_lost
Definition: pfs_buffer_container.h:327
value_type * allocate(pfs_dirty_state *dirty_state)
Definition: pfs_buffer_container.h:227
void apply_all(processor_type &proc)
Definition: pfs_buffer_container.h:281
value_type * sanitize(value_type *unsafe)
Definition: pfs_buffer_container.h:312
V allocator_type
Definition: pfs_buffer_container.h:189
PFS_buffer_container(allocator_type *allocator)
Definition: pfs_buffer_container.h:195
PFS_buffer_iterator< T, U, V > iterator_type
Definition: pfs_buffer_container.h:191
void deallocate(value_type *pfs)
Definition: pfs_buffer_container.h:238
iterator_type iterate(uint index)
Definition: pfs_buffer_container.h:242
friend class PFS_buffer_iterator< T, U, V >
Definition: pfs_buffer_container.h:185
value_type * scan_next(uint &index, uint *found_index)
Definition: pfs_buffer_container.h:330
allocator_type * m_allocator
Definition: pfs_buffer_container.h:353
array_type m_array
Definition: pfs_buffer_container.h:352
T value_type
Definition: pfs_buffer_container.h:187
Definition: pfs_buffer_container.h:147
PFS_buffer_default_array< T > array_type
Definition: pfs_buffer_container.h:149
PFS_buffer_default_allocator(PFS_builtin_memory_class *klass)
Definition: pfs_buffer_container.h:151
int alloc_array(array_type *array)
Definition: pfs_buffer_container.h:154
void free_array(array_type *array)
Definition: pfs_buffer_container.h:170
PFS_builtin_memory_class * m_builtin_class
Definition: pfs_buffer_container.h:178
Definition: pfs_buffer_container.h:87
bool m_full
Definition: pfs_buffer_container.h:138
T * get_last()
Definition: pfs_buffer_container.h:136
size_t m_max
Definition: pfs_buffer_container.h:141
PFS_cacheline_atomic_size_t m_monotonic
Definition: pfs_buffer_container.h:139
T * m_ptr
Definition: pfs_buffer_container.h:140
value_type * allocate(pfs_dirty_state *dirty_state)
Definition: pfs_buffer_container.h:91
T value_type
Definition: pfs_buffer_container.h:89
T * get_first()
Definition: pfs_buffer_container.h:134
PFS_opaque_container * m_container
Container.
Definition: pfs_buffer_container.h:143
void deallocate(value_type *pfs)
Definition: pfs_buffer_container.h:129
Definition: pfs_buffer_container.h:934
T value_type
Definition: pfs_buffer_container.h:937
PFS_buffer_container< T, U, V > container_type
Definition: pfs_buffer_container.h:938
container_type * m_container
Definition: pfs_buffer_container.h:954
value_type * scan_next()
Definition: pfs_buffer_container.h:941
value_type * scan_next(uint *found_index)
Definition: pfs_buffer_container.h:946
PFS_buffer_iterator(container_type *container, uint index)
Definition: pfs_buffer_container.h:951
uint m_index
Definition: pfs_buffer_container.h:955
Definition: pfs_buffer_container.h:985
virtual void operator()(T *element)=0
virtual ~PFS_buffer_processor()=default
Definition: pfs_buffer_container.h:359
void(* function_type)(value_type *)
Definition: pfs_buffer_container.h:385
static const size_t MAX_SIZE
Definition: pfs_buffer_container.h:387
int init(long max_size)
Definition: pfs_buffer_container.h:394
size_t get_row_size() const
Definition: pfs_buffer_container.h:476
friend class PFS_buffer_scalable_iterator< T, PFS_PAGE_SIZE, PFS_PAGE_COUNT, U, V >
Definition: pfs_buffer_container.h:362
void apply(processor_type &proc)
Definition: pfs_buffer_container.h:749
bool m_initialized
Definition: pfs_buffer_container.h:921
void apply_all(function_type fct)
Definition: pfs_buffer_container.h:729
void apply_all(processor_type &proc)
Definition: pfs_buffer_container.h:771
void dirty_to_free(pfs_dirty_state *dirty_state, value_type *safe_pfs)
Definition: pfs_buffer_container.h:646
PFS_buffer_scalable_container< T, PFS_PAGE_SIZE, PFS_PAGE_COUNT, U, V > container_type
This container type.
Definition: pfs_buffer_container.h:380
size_t m_max_page_count
Definition: pfs_buffer_container.h:926
value_type * sanitize(value_type *unsafe)
Definition: pfs_buffer_container.h:844
PFS_buffer_scalable_iterator< T, PFS_PAGE_SIZE, PFS_PAGE_COUNT, U, V > iterator_type
Definition: pfs_buffer_container.h:383
value_type * allocate(pfs_dirty_state *dirty_state)
Definition: pfs_buffer_container.h:480
native_mutex_t m_critical_section
Definition: pfs_buffer_container.h:930
PFS_cacheline_atomic_size_t m_max_page_index
Definition: pfs_buffer_container.h:925
size_t get_memory()
Definition: pfs_buffer_container.h:478
iterator_type iterate()
Definition: pfs_buffer_container.h:696
uint get_page_logical_size(uint page_index)
Definition: pfs_buffer_container.h:872
void apply(function_type fct)
Definition: pfs_buffer_container.h:707
iterator_type iterate(uint index)
Definition: pfs_buffer_container.h:701
V allocator_type
Definition: pfs_buffer_container.h:377
size_t m_last_page_size
Definition: pfs_buffer_container.h:927
U array_type
Type of pages in the buffer.
Definition: pfs_buffer_container.h:376
PFS_buffer_processor< T > processor_type
Definition: pfs_buffer_container.h:384
value_type * get(uint index, bool *has_more)
Definition: pfs_buffer_container.h:813
PFS_cacheline_atomic_size_t m_monotonic
Definition: pfs_buffer_container.h:924
void cleanup()
Definition: pfs_buffer_container.h:440
size_t get_row_count()
Definition: pfs_buffer_container.h:465
PFS_buffer_const_iterator< T > const_iterator_type
Definition: pfs_buffer_container.h:381
allocator_type * m_allocator
Definition: pfs_buffer_container.h:929
size_t m_max
Definition: pfs_buffer_container.h:923
value_type * get(uint index)
Definition: pfs_buffer_container.h:791
static void static_deallocate(value_type *safe_pfs)
Definition: pfs_buffer_container.h:676
T value_type
Type of elements in the buffer.
Definition: pfs_buffer_container.h:370
PFS_buffer_scalable_container(allocator_type *allocator)
Definition: pfs_buffer_container.h:389
value_type * scan_next(uint &index, uint *found_index)
Definition: pfs_buffer_container.h:880
void deallocate(value_type *safe_pfs)
Definition: pfs_buffer_container.h:661
bool m_full
Definition: pfs_buffer_container.h:922
ulong m_lost
Definition: pfs_buffer_container.h:869
std::atomic< array_type * > m_pages[PFS_PAGE_COUNT]
Definition: pfs_buffer_container.h:928
Definition: pfs_buffer_container.h:959
T value_type
Definition: pfs_buffer_container.h:962
uint m_index
Definition: pfs_buffer_container.h:981
value_type * scan_next(uint *found_index)
Definition: pfs_buffer_container.h:972
value_type * scan_next()
Definition: pfs_buffer_container.h:967
PFS_buffer_scalable_container< T, page_size, page_count, U, V > container_type
Definition: pfs_buffer_container.h:964
PFS_buffer_scalable_iterator(container_type *container, uint index)
Definition: pfs_buffer_container.h:977
container_type * m_container
Definition: pfs_buffer_container.h:980
Definition: pfs_buffer_container.h:1408
int alloc_array(PFS_host_array *array)
Definition: pfs_buffer_container.cc:285
void free_array(PFS_host_array *array)
Definition: pfs_buffer_container.cc:418
Definition: pfs_buffer_container.h:1398
PFS_transaction_stat * m_instr_class_transactions_array
Definition: pfs_buffer_container.h:1403
PFS_memory_shared_stat * m_instr_class_memory_array
Definition: pfs_buffer_container.h:1405
PFS_error_stat * m_instr_class_errors_array
Definition: pfs_buffer_container.h:1404
PFS_single_stat * m_instr_class_waits_array
Definition: pfs_buffer_container.h:1400
PFS_stage_stat * m_instr_class_stages_array
Definition: pfs_buffer_container.h:1401
PFS_statement_stat * m_instr_class_statements_array
Definition: pfs_buffer_container.h:1402
Definition: pfs_buffer_container.h:992
B::function_type function_type
Definition: pfs_buffer_container.h:1002
value_type * get(uint user_index, bool *has_more)
Definition: pfs_buffer_container.h:1127
B::allocator_type allocator_type
Definition: pfs_buffer_container.h:997
void apply(processor_type &proc)
Definition: pfs_buffer_container.h:1103
void apply(function_type fct)
Definition: pfs_buffer_container.h:1091
B * m_partitions[PFS_PARTITION_COUNT]
Definition: pfs_buffer_container.h:1195
value_type * scan_next(uint &partition_index, uint &sub_index, uint *found_partition, uint *found_sub_index)
Definition: pfs_buffer_container.h:1170
iterator_type iterate()
Definition: pfs_buffer_container.h:1082
PFS_partitioned_buffer_scalable_iterator< B, PFS_PARTITION_COUNT > iterator_type
Definition: pfs_buffer_container.h:999
size_t get_row_count() const
Definition: pfs_buffer_container.h:1032
void apply_all(function_type fct)
Definition: pfs_buffer_container.h:1097
value_type * sanitize(value_type *unsafe)
Definition: pfs_buffer_container.h:1141
B::value_type value_type
Definition: pfs_buffer_container.h:996
static void unpack_index(uint user_index, uint *partition_index, uint *sub_index)
Definition: pfs_buffer_container.h:1164
PFS_partitioned_buffer_scalable_container(allocator_type *allocator)
Definition: pfs_buffer_container.h:1004
void deallocate(value_type *safe_pfs)
Definition: pfs_buffer_container.h:1070
int init(long max_size)
Definition: pfs_buffer_container.h:1017
~PFS_partitioned_buffer_scalable_container()
Definition: pfs_buffer_container.h:1011
B::iterator_type sub_iterator_type
Definition: pfs_buffer_container.h:1000
size_t get_memory() const
Definition: pfs_buffer_container.h:1044
iterator_type iterate(uint user_index)
Definition: pfs_buffer_container.h:1084
size_t get_row_size() const
Definition: pfs_buffer_container.h:1042
B::processor_type processor_type
Definition: pfs_buffer_container.h:1001
void apply_all(processor_type &proc)
Definition: pfs_buffer_container.h:1109
value_type * get(uint user_index)
Definition: pfs_buffer_container.h:1115
value_type * allocate(pfs_dirty_state *dirty_state, uint partition)
Definition: pfs_buffer_container.h:1064
void cleanup()
Definition: pfs_buffer_container.h:1026
long get_lost_counter()
Definition: pfs_buffer_container.h:1054
static void pack_index(uint partition_index, uint sub_index, uint *user_index)
Definition: pfs_buffer_container.h:1155
Definition: pfs_buffer_container.h:1199
uint m_sub_index
Definition: pfs_buffer_container.h:1235
PFS_partitioned_buffer_scalable_container< B, PFS_PARTITION_COUNT > container_type
Definition: pfs_buffer_container.h:1206
container_type * m_container
Definition: pfs_buffer_container.h:1233
B::value_type value_type
Definition: pfs_buffer_container.h:1204
value_type * scan_next(uint *found_user_index)
Definition: pfs_buffer_container.h:1215
value_type * scan_next()
Definition: pfs_buffer_container.h:1208
PFS_partitioned_buffer_scalable_iterator(container_type *container, uint partition, uint sub_index)
Definition: pfs_buffer_container.h:1227
uint m_partition
Definition: pfs_buffer_container.h:1234
Definition: pfs_buffer_container.h:1447
void free_array(PFS_thread_array *array)
Definition: pfs_buffer_container.cc:766
int alloc_array(PFS_thread_array *array)
Definition: pfs_buffer_container.cc:467
Definition: pfs_buffer_container.h:1425
PFS_statement_stat * m_instr_class_statements_array
Definition: pfs_buffer_container.h:1429
PFS_single_stat * m_instr_class_waits_array
Definition: pfs_buffer_container.h:1427
PFS_error_stat * m_instr_class_errors_array
Definition: pfs_buffer_container.h:1431
PFS_events_statements * m_statements_stack_array
Definition: pfs_buffer_container.h:1437
PFS_events_statements * m_statements_history_array
Definition: pfs_buffer_container.h:1436
PFS_stage_stat * m_instr_class_stages_array
Definition: pfs_buffer_container.h:1428
unsigned char * m_current_stmts_digest_token_array
Definition: pfs_buffer_container.h:1443
PFS_events_stages * m_stages_history_array
Definition: pfs_buffer_container.h:1435
char * m_current_stmts_text_array
Definition: pfs_buffer_container.h:1441
PFS_memory_safe_stat * m_instr_class_memory_array
Definition: pfs_buffer_container.h:1432
unsigned char * m_history_stmts_digest_token_array
Definition: pfs_buffer_container.h:1444
PFS_transaction_stat * m_instr_class_transactions_array
Definition: pfs_buffer_container.h:1430
char * m_session_connect_attrs_array
Definition: pfs_buffer_container.h:1439
PFS_events_waits * m_waits_history_array
Definition: pfs_buffer_container.h:1434
PFS_events_transactions * m_transactions_history_array
Definition: pfs_buffer_container.h:1438
char * m_history_stmts_text_array
Definition: pfs_buffer_container.h:1442
Definition: pfs_buffer_container.h:1474
void free_array(PFS_user_array *array)
Definition: pfs_buffer_container.cc:1013
int alloc_array(PFS_user_array *array)
Definition: pfs_buffer_container.cc:880
Definition: pfs_buffer_container.h:1464
PFS_statement_stat * m_instr_class_statements_array
Definition: pfs_buffer_container.h:1468
PFS_transaction_stat * m_instr_class_transactions_array
Definition: pfs_buffer_container.h:1469
PFS_stage_stat * m_instr_class_stages_array
Definition: pfs_buffer_container.h:1467
PFS_single_stat * m_instr_class_waits_array
Definition: pfs_buffer_container.h:1466
PFS_error_stat * m_instr_class_errors_array
Definition: pfs_buffer_container.h:1470
PFS_memory_shared_stat * m_instr_class_memory_array
Definition: pfs_buffer_container.h:1471
int page
Definition: ctype-mb.cc:1234
#define MY_ZEROFILL
Definition: my_sys.h:141
constexpr bool unlikely(bool expr)
Definition: my_compiler.h:58
Some integer typedefs for easier portability.
intptr_t intptr
Definition: my_inttypes.h:70
#define MYF(v)
Definition: my_inttypes.h:97
static int record
Definition: mysqltest.cc:195
uint16_t value_type
Definition: vt100.h:184
Definition: atomics_array.h:39
const ulint MAX_SIZE
The maximum size possible for an LOB.
Definition: lob0lob.h:84
Performance schema account (declarations).
PFS_file_container global_file_container
PFS_buffer_scalable_container< PFS_mutex, 1024, 1024 > PFS_mutex_basic_container
Definition: pfs_buffer_container.h:1240
PFS_host_container global_host_container
PFS_buffer_scalable_container< PFS_socket, 256, 256 > PFS_socket_container
Definition: pfs_buffer_container.h:1278
PFS_thread_container global_thread_container
PFS_table_share_index_container global_table_share_index_container
PFS_cond_container::iterator_type PFS_cond_iterator
Definition: pfs_buffer_container.h:1264
PFS_buffer_scalable_container< PFS_table, 1024, 1024 > PFS_table_container
Definition: pfs_buffer_container.h:1314
PFS_file_container::iterator_type PFS_file_iterator
Definition: pfs_buffer_container.h:1273
PFS_user_container::iterator_type PFS_user_iterator
Definition: pfs_buffer_container.h:1488
PFS_mutex_container::iterator_type PFS_mutex_iterator
Definition: pfs_buffer_container.h:1247
PFS_prepared_stmt_container::iterator_type PFS_prepared_stmt_iterator
Definition: pfs_buffer_container.h:1367
PFS_buffer_scalable_container< PFS_table_share, 4 *1024, 4 *1024 > PFS_table_share_container
Definition: pfs_buffer_container.h:1323
PFS_setup_object_container::iterator_type PFS_setup_object_iterator
Definition: pfs_buffer_container.h:1309
PFS_cond_container global_cond_container
PFS_buffer_scalable_container< PFS_prepared_stmt, 1024, 1024 > PFS_prepared_stmt_container
Definition: pfs_buffer_container.h:1363
PFS_buffer_scalable_container< PFS_table_share_lock, 4 *1024, 4 *1024 > PFS_table_share_lock_container
Definition: pfs_buffer_container.h:1343
PFS_socket_container::iterator_type PFS_socket_iterator
Definition: pfs_buffer_container.h:1282
PFS_table_share_container global_table_share_container
PFS_rwlock_container::iterator_type PFS_rwlock_iterator
Definition: pfs_buffer_container.h:1256
PFS_program_container global_program_container
PFS_buffer_scalable_container< PFS_thread, 256, 256, PFS_thread_array, PFS_thread_allocator > PFS_thread_container
Definition: pfs_buffer_container.h:1456
PFS_host_container::iterator_type PFS_host_iterator
Definition: pfs_buffer_container.h:1422
PFS_socket_container global_socket_container
PFS_partitioned_buffer_scalable_container< PFS_mutex_basic_container, PFS_MUTEX_PARTITIONS > PFS_mutex_container
Definition: pfs_buffer_container.h:1243
PFS_table_share_lock_container::iterator_type PFS_table_share_lock_iterator
Definition: pfs_buffer_container.h:1349
PFS_buffer_scalable_container< PFS_program, 1024, 1024 > PFS_program_container
Definition: pfs_buffer_container.h:1354
PFS_account_container::iterator_type PFS_account_iterator
Definition: pfs_buffer_container.h:1395
PFS_buffer_scalable_container< PFS_file, 4 *1024, 4 *1024 > PFS_file_container
Definition: pfs_buffer_container.h:1269
PFS_setup_object_container global_setup_object_container
PFS_table_share_index_container::iterator_type PFS_table_share_index_iterator
Definition: pfs_buffer_container.h:1338
PFS_mdl_container global_mdl_container
PFS_buffer_scalable_container< PFS_setup_actor, 128, 1024 > PFS_setup_actor_container
Definition: pfs_buffer_container.h:1296
PFS_rwlock_container global_rwlock_container
PFS_thread_container::iterator_type PFS_thread_iterator
Definition: pfs_buffer_container.h:1461
PFS_mdl_container::iterator_type PFS_mdl_iterator
Definition: pfs_buffer_container.h:1291
PFS_table_share_lock_container global_table_share_lock_container
PFS_table_container global_table_container
PFS_table_container::iterator_type PFS_table_iterator
Definition: pfs_buffer_container.h:1318
PFS_buffer_scalable_container< PFS_host, 128, 128, PFS_host_array, PFS_host_allocator > PFS_host_container
Definition: pfs_buffer_container.h:1417
PFS_account_container global_account_container
PFS_buffer_scalable_container< PFS_cond, 256, 256 > PFS_cond_container
Definition: pfs_buffer_container.h:1260
PFS_setup_actor_container::iterator_type PFS_setup_actor_iterator
Definition: pfs_buffer_container.h:1300
PFS_program_container::iterator_type PFS_program_iterator
Definition: pfs_buffer_container.h:1358
PFS_prepared_stmt_container global_prepared_stmt_container
PFS_buffer_scalable_container< PFS_user, 128, 128, PFS_user_array, PFS_user_allocator > PFS_user_container
Definition: pfs_buffer_container.h:1483
PFS_buffer_scalable_container< PFS_table_share_index, 8 *1024, 8 *1024 > PFS_table_share_index_container
Definition: pfs_buffer_container.h:1332
PFS_buffer_scalable_container< PFS_setup_object, 128, 1024 > PFS_setup_object_container
Definition: pfs_buffer_container.h:1305
PFS_table_share_container::iterator_type PFS_table_share_iterator
Definition: pfs_buffer_container.h:1327
PFS_setup_actor_container global_setup_actor_container
PFS_mutex_container global_mutex_container
PFS_buffer_scalable_container< PFS_metadata_lock, 1024, 1024 > PFS_mdl_container
Definition: pfs_buffer_container.h:1287
PFS_buffer_scalable_container< PFS_rwlock, 1024, 1024 > PFS_rwlock_container
Definition: pfs_buffer_container.h:1252
PFS_user_container global_user_container
PFS_buffer_scalable_container< PFS_account, 128, 128, PFS_account_array, PFS_account_allocator > PFS_account_container
Definition: pfs_buffer_container.h:1389
PFS_builtin_memory_class builtin_memory_scalable_buffer
Definition: pfs_builtin_memory.cc:128
Performance schema instruments metadata (declarations).
#define PFS_MALLOC_ARRAY(k, n, s, T, f)
Helper, to allocate an array of structures.
Definition: pfs_global.h:135
#define PFS_FREE_ARRAY(k, n, s, p)
Helper, to free an array of structures.
Definition: pfs_global.h:152
Performance schema host (declarations).
Performance schema instruments (declarations).
Performance schema internal locks (declarations).
Stored Program data structures (declarations).
Stored Program data structures (declarations).
Performance schema setup actors (declarations).
Performance schema setup object (declarations).
Performance schema user (declarations).
struct result result
Definition: result.h:34
static const LEX_CSTRING pfs
Definition: sql_show_processlist.cc:66
Per account statistics.
Definition: pfs_account.h:67
Definition: pfs_builtin_memory.h:39
void count_alloc(size_t size)
Definition: pfs_builtin_memory.h:43
void count_free(size_t size)
Definition: pfs_builtin_memory.h:45
An atomic size_t variable, guaranteed to be alone in a CPU cache line.
Definition: pfs_global.h:99
std::atomic< size_t > m_size_t
Definition: pfs_global.h:100
Statistics for all server errors.
Definition: pfs_stat.h:557
A stage record.
Definition: pfs_events_stages.h:45
A statement record.
Definition: pfs_events_statements.h:47
A transaction record.
Definition: pfs_events_transactions.h:86
A wait event record.
Definition: pfs_events_waits.h:69
Per host statistics.
Definition: pfs_host.h:64
Memory statistics.
Definition: pfs_stat.h:913
Definition: pfs_stat.h:937
Single statistic.
Definition: pfs_stat.h:52
Statistics for stage usage.
Definition: pfs_stat.h:323
Statistics for statement usage.
Definition: pfs_stat.h:376
Instrumented thread implementation.
Definition: pfs_instr.h:375
Statistics for transaction usage.
Definition: pfs_stat.h:459
Per user statistics.
Definition: pfs_user.h:63
Definition: pfs_lock.h:77
static int native_mutex_unlock(native_mutex_t *mutex)
Definition: thr_mutex.h:115
static int native_mutex_destroy(native_mutex_t *mutex)
Definition: thr_mutex.h:124
static int native_mutex_lock(native_mutex_t *mutex)
Definition: thr_mutex.h:90
static int native_mutex_init(native_mutex_t *mutex, const native_mutexattr_t *attr)
Definition: thr_mutex.h:79
pthread_mutex_t native_mutex_t
Definition: thr_mutex_bits.h:55
#define NULL
Definition: types.h:55