MySQL 8.3.0
Source Code Documentation
my_sys.h
Go to the documentation of this file.
1/* Copyright (c) 2000, 2023, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is also distributed with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have included with MySQL.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License, version 2.0, for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22
23#ifndef _my_sys_h
24#define _my_sys_h
25
26/**
27 @defgroup MYSYS Mysys - low level utilities for MySQL
28 @ingroup Runtime_Environment
29 @{
30 @file include/my_sys.h Common header for many mysys elements.
31 @note Many mysys implementation files now have their own header file.
32*/
33
34#include "my_config.h"
35
36#ifdef HAVE_ALLOCA_H
37#include <alloca.h>
38#endif
39#include <limits.h>
40#ifdef _WIN32
41#include <malloc.h>
42#endif
43#ifdef HAVE_UNISTD_H
44#include <unistd.h>
45#endif
46#include <stdarg.h>
47#include <stdio.h>
48#ifdef HAVE_SYS_SELECT_H
49#include <sys/select.h>
50#endif
51#include <sys/types.h>
52#include <time.h>
53
54#include <atomic> // error_handler_hook
55#include <cstring>
56
57#include "my_compiler.h"
58#include "my_compress.h"
59#include "my_inttypes.h"
60#include "mysql/my_loglevel.h"
61
62/* HAVE_PSI_*_INTERFACE */
63#include "my_psi_config.h" /* IWYU pragma: keep */
64
65#include "my_sharedlib.h"
74#include "sql/stream_cipher.h"
75#include "string_with_len.h"
76
78
79struct CHARSET_INFO;
81
100struct MEM_ROOT;
101
102#define MY_INIT(name) \
103 { \
104 my_progname = name; \
105 my_init(); \
106 }
107
108/**
109 Max length of an error message generated by mysys utilities.
110 Some mysys functions produce error messages. These mostly go
111 to stderr.
112 This constant defines the size of the buffer used to format
113 the message. It should be kept in sync with MYSQL_ERRMSG_SIZE,
114 since sometimes mysys errors are stored in the server diagnostics
115 area, and we would like to avoid unexpected truncation.
116*/
117#define MYSYS_ERRMSG_SIZE (512)
118#define MYSYS_STRERROR_SIZE (128)
119
120#define MY_FILE_ERROR ((size_t)-1)
121
122/* General bitmaps for my_func's */
123// 1 used to be MY_FFNF which has been removed
124#define MY_FNABP 2 /* Fatal if not all bytes read/written */
125#define MY_NABP 4 /* Error if not all bytes read/written */
126#define MY_FAE 8 /* Fatal if any error */
127#define MY_WME 16 /* Write message on error */
128#define MY_WAIT_IF_FULL 32 /* Wait and try again if disk full error */
129#define MY_IGNORE_BADFD 32 /* my_sync: ignore 'bad descriptor' errors */
130#define MY_REPORT_WAITING_IF_FULL 64 /* my_write: set status as waiting */
131#define MY_FULL_IO 512 /* For my_read - loop intil I/O is complete */
132#define MY_DONT_CHECK_FILESIZE 128 /* Option to init_io_cache() */
133#define MY_LINK_WARNING 32 /* my_redel() gives warning if links */
134#define MY_COPYTIME 64 /* my_redel() copies time */
135#define MY_DELETE_OLD 256 /* my_create_with_symlink() */
136#define MY_RESOLVE_LINK 128 /* my_realpath(); Only resolve links */
137#define MY_HOLD_ORIGINAL_MODES 128 /* my_copy() holds to file modes */
138#define MY_SEEK_NOT_DONE 32 /* my_lock may have to do a seek */
139#define MY_DONT_WAIT 64 /* my_lock() don't wait if can't lock */
140#define MY_ZEROFILL 32 /* my_malloc(), fill array with zero */
141#define MY_ALLOW_ZERO_PTR 64 /* my_realloc() ; zero ptr -> malloc */
142#define MY_FREE_ON_ERROR 128 /* my_realloc() ; Free old ptr on error */
143#define MY_HOLD_ON_ERROR 256 /* my_realloc() ; Return old ptr on error */
144#define MY_DONT_OVERWRITE_FILE 1024 /* my_copy: Don't overwrite file */
145#define MY_SYNC 4096 /* my_copy(): sync dst file */
146
147#define MYF_RW MYF(MY_WME + MY_NABP) /* For my_read & my_write */
148
149#define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */
150#define MY_GIVE_INFO 2 /* Give time info about process*/
151#define MY_DONT_FREE_DBUG 4 /* Do not call DBUG_END() in my_end() */
152
153/* Flags for my_error() */
154#define ME_BELL 4 /* DEPRECATED: Ring bell then printing message */
155#define ME_ERRORLOG 64 /* Write the error message to error log */
156#define ME_FATALERROR 1024 /* Fatal statement error */
157
158/* Bits in last argument to fn_format */
159#define MY_REPLACE_DIR 1 /* replace dir in name with 'dir' */
160#define MY_REPLACE_EXT 2 /* replace extension with 'ext' */
161#define MY_UNPACK_FILENAME 4 /* Unpack name (~ -> home) */
162/* 8 Unused. Previously used for MY_PACK_FILENAME. */
163#define MY_RESOLVE_SYMLINKS 16 /* Resolve all symbolic links */
164#define MY_RETURN_REAL_PATH 32 /* return full path for file */
165#define MY_SAFE_PATH 64 /* Return NULL if too long path */
166#define MY_RELATIVE_PATH 128 /* name is relative to 'dir' */
167#define MY_APPEND_EXT 256 /* add 'ext' as additional extension*/
168
169/* My seek flags */
170#define MY_SEEK_SET 0
171#define MY_SEEK_CUR 1
172#define MY_SEEK_END 2
173
174/* Some constants */
175#define MY_WAIT_FOR_USER_TO_FIX_PANIC 60 /* in seconds */
176#define MY_WAIT_GIVE_USER_A_MESSAGE 10 /* Every 10 times of prev */
177#define MIN_COMPRESS_LENGTH 50 /* Don't compress small bl. */
178#define DFLT_INIT_HITS 3
179
180/* Internal error numbers (for assembler functions) */
181#define MY_ERRNO_EDOM 33
182#define MY_ERRNO_ERANGE 34
183
184/* defines when allocating data */
185extern void *my_multi_malloc(PSI_memory_key key, myf flags, ...);
186
187/*
188 Switch to my_malloc() if the memory block to be allocated is bigger than
189 max_alloca_sz.
190*/
192#define my_safe_alloca(size, max_alloca_sz) \
193 ((size <= max_alloca_sz) ? my_alloca(size) \
194 : my_malloc(key_memory_max_alloca, size, MYF(0)))
195#define my_safe_afree(ptr, size, max_alloca_sz) \
196 if (size > max_alloca_sz) my_free(ptr)
197
198#if defined(ENABLED_DEBUG_SYNC)
199using DebugSyncCallbackFp = void (*)(const char *, size_t);
200extern DebugSyncCallbackFp debug_sync_C_callback_ptr;
201
202#define DEBUG_SYNC_C(_sync_point_name_) \
203 do { \
204 if (debug_sync_C_callback_ptr != NULL) \
205 (*debug_sync_C_callback_ptr)(STRING_WITH_LEN(_sync_point_name_)); \
206 } while (0)
207#define DEBUG_SYNC_C_IF_THD(thd, _sync_point_name_) \
208 do { \
209 if (debug_sync_C_callback_ptr != NULL && thd) \
210 (*debug_sync_C_callback_ptr)(STRING_WITH_LEN(_sync_point_name_)); \
211 } while (0)
212#else
213#define DEBUG_SYNC_C(_sync_point_name_)
214#define DEBUG_SYNC_C_IF_THD(thd, _sync_point_name_)
215#endif /* defined(ENABLED_DEBUG_SYNC) */
216
217#ifdef HAVE_LINUX_LARGE_PAGES
218extern uint my_get_large_page_size(void);
219#else
220#define my_get_large_page_size() (0)
221#endif /* HAVE_LINUX_LARGE_PAGES */
222
223#define my_alloca(SZ) alloca((size_t)(SZ))
224
225extern char *home_dir; /* Home directory for user */
226extern const char *my_progname; /* program-name (printed in errors) */
227
228using ErrorHandlerFunctionPointer = void (*)(uint, const char *, myf);
229extern std::atomic<ErrorHandlerFunctionPointer> error_handler_hook;
230extern void (*local_message_hook)(enum loglevel ll, uint ecode, va_list args);
231
233
234/*
235 Hooks for reporting execution stage information. The server implementation
236 of these will also set THD::current_cond/current_mutex.
237 By having hooks, we avoid direct dependencies on server code.
238*/
239extern void (*enter_cond_hook)(void *opaque_thd, mysql_cond_t *cond,
240 mysql_mutex_t *mutex,
241 const PSI_stage_info *stage,
242 PSI_stage_info *old_stage,
243 const char *src_function, const char *src_file,
244 int src_line);
245
246extern void (*exit_cond_hook)(void *opaque_thd, const PSI_stage_info *stage,
247 const char *src_function, const char *src_file,
248 int src_line);
249
250extern void (*enter_stage_hook)(void *opaque_thd,
251 const PSI_stage_info *new_stage,
252 PSI_stage_info *old_stage,
253 const char *src_function, const char *src_file,
254 int src_line);
255
256/*
257 Hook for setting THD waiting_for_disk_space flag.
258*/
259extern void (*set_waiting_for_disk_space_hook)(void *opaque_thd, bool waiting);
260/*
261 Hook for checking if the thread has been killed.
262*/
263extern int (*is_killed_hook)(const void *opaque_thd);
264
265/* charsets */
266#define MY_ALL_CHARSETS_SIZE 2048
270
271/* statistics */
272extern ulong my_tmp_file_created;
273extern ulong my_file_opened;
274extern ulong my_stream_opened;
275extern ulong my_file_total_opened;
276extern bool my_init_done;
277
278extern MYSQL_PLUGIN_IMPORT int my_umask; /* Default creation mask */
279extern int my_umask_dir;
280
283
284extern const char *charsets_dir;
285
290 SEQ_READ_APPEND /* sequential read or append */,
295
297 FLUSH_KEEP, /* flush block and keep it in the cache */
298 FLUSH_RELEASE, /* flush block and remove it from the cache */
299 FLUSH_IGNORE_CHANGED, /* remove block from the cache */
300 /*
301 As my_disable_flush_pagecache_blocks is always 0, the following option
302 is strictly equivalent to FLUSH_KEEP
303 */
306
308 uchar *buffer{nullptr};
313};
314
315struct MY_TMPDIR {
316 char **list{nullptr};
317 uint cur{0}, max{0};
319};
320
322 char *str;
324};
325
326struct IO_CACHE;
327typedef int (*IO_CACHE_CALLBACK)(IO_CACHE *);
328
330 mysql_mutex_t mutex; /* To sync on reads into buffer. */
331 mysql_cond_t cond; /* To wait for signals. */
332 mysql_cond_t cond_writer; /* For a synchronized writer. */
333 /* Offset in file corresponding to the first byte of buffer. */
335 /* If a synchronized write cache is the source of the data. */
337 uchar *buffer; /* The read buffer. */
338 uchar *read_end; /* Behind last valid byte of buffer. */
339 int running_threads; /* threads not in lock. */
340 int total_threads; /* threads sharing the cache. */
341 int error; /* Last error. */
342};
343
344struct IO_CACHE /* Used when caching files */
345{
346 /* Offset in file corresponding to the first byte of uchar* buffer. */
348 /*
349 The offset of end of file for READ_CACHE and WRITE_CACHE.
350 For SEQ_READ_APPEND it the maximum of the actual end of file and
351 the position represented by read_end.
352 */
354 /* Points to current read position in the buffer */
355 uchar *read_pos{nullptr};
356 /* the non-inclusive boundary in the buffer for the currently valid read */
357 uchar *read_end{nullptr};
358 uchar *buffer{nullptr}; /* The read buffer */
359 /* Used in ASYNC_IO */
361
362 /* Only used in WRITE caches and in SEQ_READ_APPEND to buffer writes */
364 /*
365 Only used in SEQ_READ_APPEND, and points to the current read position
366 in the write buffer. Note that reads in SEQ_READ_APPEND caches can
367 happen from both read buffer (uchar* buffer) and write buffer
368 (uchar* write_buffer).
369 */
371 /* Points to current write position in the write buffer */
372 uchar *write_pos{nullptr};
373 /* The non-inclusive boundary of the valid write area */
374 uchar *write_end{nullptr};
375
376 /*
377 Current_pos and current_end are convenience variables used by
378 my_b_tell() and other routines that need to know the current offset
379 current_pos points to &write_pos, and current_end to &write_end in a
380 WRITE_CACHE, and &read_pos and &read_end respectively otherwise
381 */
382 uchar **current_pos{nullptr}, **current_end{nullptr};
383
384 /*
385 The lock is for append buffer used in SEQ_READ_APPEND cache
386 need mutex copying from append buffer to read buffer.
387 */
389 /*
390 The following is used when several threads are reading the
391 same file in parallel. They are synchronized on disk
392 accesses reading the cached part of the file asynchronously.
393 It should be set to NULL to disable the feature. Only
394 READ_CACHE mode is supported.
395 */
397
398 /*
399 A caller will use my_b_read() macro to read from the cache
400 if the data is already in cache, it will be simply copied with
401 memcpy() and internal variables will be accordinging updated with
402 no functions invoked. However, if the data is not fully in the cache,
403 my_b_read() will call read_function to fetch the data. read_function
404 must never be invoked directly.
405 */
406 int (*read_function)(IO_CACHE *, uchar *, size_t){nullptr};
407 /*
408 Same idea as in the case of read_function, except my_b_write() needs to
409 be replaced with my_b_append() for a SEQ_READ_APPEND cache
410 */
411 int (*write_function)(IO_CACHE *, const uchar *, size_t){nullptr};
412 /*
413 Specifies the type of the cache. Depending on the type of the cache
414 certain operations might not be available and yield unpredictable
415 results. Details to be documented later
416 */
418 /*
419 Callbacks when the actual read I/O happens. These were added and
420 are currently used for binary logging of LOAD DATA INFILE - when a
421 block is read from the file, we create a block create/append event, and
422 when IO_CACHE is closed, we create an end event. These functions could,
423 of course be used for other things
424 */
428 /*
429 Counts the number of times, when we were forced to use disk. We use it to
430 increase the binlog_cache_disk_use and binlog_stmt_cache_disk_use status
431 variables.
432 */
433 ulong disk_writes{0};
434 void *arg{nullptr}; /* for use by pre/post_read */
435 char *file_name{nullptr}; /* if used with 'open_cached_file' */
436 char *dir{nullptr}, *prefix{nullptr};
437 File file{-1}; /* file descriptor */
438 PSI_file_key file_key{PSI_NOT_INSTRUMENTED}; /* instrumented file key */
439
440 /*
441 seek_not_done is set by my_b_seek() to inform the upcoming read/write
442 operation that a seek needs to be performed prior to the actual I/O
443 error is 0 if the cache operation was successful, -1 if there was a
444 "hard" error, and the actual number of I/O-ed bytes if the read/write was
445 partial.
446 */
447 bool seek_not_done{false};
448 int error{0};
449 /* buffer_length is memory size allocated for buffer or write_buffer */
450 size_t buffer_length{0};
451 /* read_length is the same as buffer_length except when we use async io */
452 size_t read_length{0};
453 myf myflags{0}; /* Flags used to my_read/my_write */
454 /*
455 alloced_buffer is 1 if the buffer was allocated by init_io_cache() and
456 0 if it was supplied by the user.
457 Currently READ_NET is the only one that will use a buffer allocated
458 somewhere else
459 */
460 bool alloced_buffer{false};
461 // This is an encryptor for encrypting the temporary file of the IO cache.
463 // This is a decryptor for decrypting the temporary file of the IO cache.
465 // Synchronize flushed buffer with disk.
466 bool disk_sync{false};
467 // Delay in milliseconds after disk synchronization of the flushed buffer.
468 // Requires disk_sync = true.
470};
471
472typedef int (*qsort2_cmp)(const void *, const void *, const void *);
473
474/*
475 Subset of struct stat fields filled by stat/lstat/fstat that uniquely
476 identify a file
477*/
479 dev_t st_dev;
480 ino_t st_ino;
481};
482
483typedef void (*my_error_reporter)(enum loglevel level, uint ecode, ...);
484typedef void (*my_error_vreporter)(enum loglevel level, uint ecode, va_list);
485
487
488/* defines for mf_iocache */
490
491/* Test if buffer is inited */
492inline void my_b_clear(IO_CACHE *info) { info->buffer = nullptr; }
493
494inline bool my_b_inited(const IO_CACHE *info) {
495 return info->buffer != nullptr;
496}
497
498constexpr int my_b_EOF = INT_MIN;
499
500inline int my_b_read(IO_CACHE *info, uchar *buffer, size_t count) {
501 assert(info->type != WRITE_CACHE);
502 if (info->read_pos + count <= info->read_end) {
503 memcpy(buffer, info->read_pos, count);
504 info->read_pos += count;
505 return 0;
506 }
507 return (*info->read_function)(info, buffer, count);
508}
509
510inline int my_b_write(IO_CACHE *info, const uchar *buffer, size_t count) {
511 assert(info->type != READ_CACHE);
512 if (info->write_pos + count <= info->write_end) {
513 memcpy(info->write_pos, buffer, count);
514 info->write_pos += count;
515 return 0;
516 }
517 return (*info->write_function)(info, buffer, count);
518}
519
520extern int _my_b_get(IO_CACHE *info);
521
522inline int my_b_get(IO_CACHE *info) {
523 if (info->read_pos != info->read_end) {
524 info->read_pos++;
525 return info->read_pos[-1];
526 }
527 return _my_b_get(info);
528}
529
531 return info->pos_in_file + *info->current_pos - info->request_pos;
532}
533
535 return info->request_pos;
536}
537
539 return info->read_end - my_b_get_buffer_start(info);
540}
541
543 return info->pos_in_file;
544}
545
546/* tell write offset in the SEQ_APPEND cache */
547int my_b_copy_to_file(IO_CACHE *cache, FILE *file);
548
549inline size_t my_b_bytes_in_cache(const IO_CACHE *info) {
550 return *info->current_end - *info->current_pos;
551}
552
553/*
554 How much overhead does malloc have. The code often allocates
555 something like 1024-MALLOC_OVERHEAD bytes
556*/
557#define MALLOC_OVERHEAD 8
558
559/* Typical record cache */
560#define RECORD_CACHE_SIZE (uint)(64 * 1024 - MALLOC_OVERHEAD)
561
562/** struct for once_alloc (block) */
563struct USED_MEM {
564 USED_MEM *next; /**< Next block in use */
565 unsigned int left; /**< memory left in block */
566 unsigned int size; /**< size of block */
567};
568
569/* Prototypes for mysys and my_func functions */
570
571extern int my_copy(const char *from, const char *to, myf MyFlags);
572extern int my_delete(const char *name, myf MyFlags);
573extern int my_getwd(char *buf, size_t size, myf MyFlags);
574extern int my_setwd(const char *dir, myf MyFlags);
575extern void *my_once_alloc(size_t Size, myf MyFlags);
576extern void my_once_free(void);
577extern char *my_once_strdup(const char *src, myf myflags);
578extern void *my_once_memdup(const void *src, size_t len, myf myflags);
579extern File my_open(const char *filename, int Flags, myf MyFlags);
580
581extern File my_create(const char *FileName, int CreateFlags, int AccessFlags,
582 myf MyFlags);
583extern int my_close(File fd, myf MyFlags);
584extern int my_mkdir(const char *dir, int Flags, myf MyFlags);
585extern int my_readlink(char *to, const char *filename, myf MyFlags);
586extern int my_is_symlink(const char *filename, ST_FILE_ID *file_id);
587extern int my_realpath(char *to, const char *filename, myf MyFlags);
588extern int my_is_same_file(File file, const ST_FILE_ID *file_id);
589extern File my_create_with_symlink(const char *linkname, const char *filename,
590 int createflags, int access_flags,
591 myf MyFlags);
592extern int my_delete_with_symlink(const char *name, myf MyFlags);
593extern int my_rename_with_symlink(const char *from, const char *to,
594 myf MyFlags);
595#ifndef _WIN32
596extern int my_symlink(const char *content, const char *linkname, myf MyFlags);
597#endif
598extern size_t my_read(File Filedes, uchar *Buffer, size_t Count, myf MyFlags);
599extern size_t my_pread(File Filedes, uchar *Buffer, size_t Count,
600 my_off_t offset, myf MyFlags);
601extern int my_rename(const char *from, const char *to, myf MyFlags);
602extern my_off_t my_seek(File fd, my_off_t pos, int whence, myf MyFlags);
603extern my_off_t my_tell(File fd, myf MyFlags);
604extern size_t my_write(File Filedes, const uchar *Buffer, size_t Count,
605 myf MyFlags);
606extern size_t my_pwrite(File Filedes, const uchar *Buffer, size_t Count,
607 my_off_t offset, myf MyFlags);
608extern size_t my_fread(FILE *stream, uchar *Buffer, size_t Count, myf MyFlags);
609extern size_t my_fwrite(FILE *stream, const uchar *Buffer, size_t Count,
610 myf MyFlags);
611extern my_off_t my_fseek(FILE *stream, my_off_t pos, int whence);
612extern my_off_t my_ftell(FILE *stream);
613
614/* implemented in my_syslog.c */
615
616// Maximum size of message that will be logged.
617#define MAX_SYSLOG_MESSAGE_SIZE 1024
618
619/* Platform-independent SysLog support */
621
622extern int my_openlog(const char *eventSourceName, int option, int facility);
623extern int my_closelog();
624extern int my_syslog(const CHARSET_INFO *cs, enum loglevel level,
625 const char *msg);
626
627#ifdef _WIN32
628extern int my_access(const char *path, int amode);
629#else
630#define my_access access
631#endif
632
633extern int check_if_legal_filename(const char *path);
634extern int check_if_legal_tablename(const char *path);
635
636#ifdef _WIN32
637extern bool is_filename_allowed(const char *name, size_t length,
638 bool allow_current_dir);
639#else /* _WIN32 */
640#define is_filename_allowed(name, length, allow_cwd) (true)
641#endif /* _WIN32 */
642
643#ifdef _WIN32
644extern int nt_share_delete(const char *name, myf MyFlags);
645#define my_delete_allow_opened(fname, flags) nt_share_delete((fname), (flags))
646#else
647#define my_delete_allow_opened(fname, flags) my_delete((fname), (flags))
648#endif
649
650#ifdef _WIN32
651/* Windows-only functions (CRT equivalents)*/
652extern HANDLE my_get_osfhandle(File fd);
653extern void my_osmaperr(unsigned long last_error);
654#endif
655
656extern const char *get_global_errmsg(int nr);
657extern void wait_for_free_space(const char *filename, int errors);
658extern FILE *my_fopen(const char *filename, int Flags, myf MyFlags);
659extern FILE *my_fdopen(File fd, const char *filename, int Flags, myf MyFlags);
660extern FILE *my_freopen(const char *filename, const char *mode, FILE *stream);
661extern int my_fclose(FILE *stream, myf MyFlags);
662extern File my_fileno(FILE *stream);
663extern int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags);
664extern int my_fallocator(File fd, my_off_t newlength, int filler, myf MyFlags);
665extern void thr_set_sync_wait_callback(void (*before_sync)(void),
666 void (*after_sync)(void));
667extern int my_sync(File fd, myf my_flags);
668extern char *my_strerror(char *buf, size_t len, int errnum);
669extern const char *my_get_err_msg(int nr);
670extern void my_error(int nr, myf MyFlags, ...);
671extern void my_printf_error(uint my_err, const char *format, myf MyFlags, ...)
672 MY_ATTRIBUTE((format(printf, 2, 4)));
673extern void my_printv_error(uint error, const char *format, myf MyFlags,
674 va_list ap) MY_ATTRIBUTE((format(printf, 2, 0)));
675extern int my_error_register(const char *(*get_errmsg)(int), int first,
676 int last);
677extern bool my_error_unregister(int first, int last);
678extern void my_message(uint my_err, const char *str, myf MyFlags);
679extern void my_message_stderr(uint my_err, const char *str, myf MyFlags);
680void my_message_local_stderr(enum loglevel, uint ecode, va_list args);
681extern void my_message_local(enum loglevel ll, uint ecode, ...);
682
683/**
684 Convenience wrapper for OS error messages which report
685 errno/my_errno with %d followed by strerror as %s, as the last
686 conversions in the error message.
687
688 The OS error message (my_errno) is formatted in a stack buffer and
689 the errno value and a pointer to the buffer is added to the end of
690 the parameter pack passed to my_error().
691
692 @param errno_val errno/my_errno number.
693 @param ppck parameter pack of additional arguments to pass to my_error().
694 */
695template <class... Ts>
696inline void MyOsError(int errno_val, Ts... ppck) {
697 char errbuf[MYSYS_STRERROR_SIZE];
698 my_error(ppck..., errno_val, my_strerror(errbuf, sizeof(errbuf), errno_val));
699}
700
701extern bool my_init(void);
702extern void my_end(int infoflag);
703extern const char *my_filename(File fd);
704extern MY_MODE get_file_perm(ulong perm_flags);
705extern bool my_chmod(const char *filename, ulong perm_flags, myf my_flags);
706
707extern bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist);
708extern char *my_tmpdir(MY_TMPDIR *tmpdir);
709extern void free_tmpdir(MY_TMPDIR *tmpdir);
710
711extern size_t dirname_part(char *to, const char *name, size_t *to_res_length);
712extern size_t dirname_length(const char *name);
713#define base_name(A) (A + dirname_length(A))
714extern int test_if_hard_path(const char *dir_name);
715extern bool has_path(const char *name);
716extern char *convert_dirname(char *to, const char *from, const char *from_end);
717extern void to_unix_path(char *name);
718extern char *fn_ext(char *name);
719extern const char *fn_ext(const char *name);
720extern char *fn_same(char *toname, const char *name, int flag);
721extern char *fn_format(char *to, const char *name, const char *dir,
722 const char *form, uint flag);
723extern size_t strlength(const char *str);
724extern size_t normalize_dirname(char *to, const char *from);
725extern size_t unpack_dirname(char *to, const char *from);
726extern size_t cleanup_dirname(char *to, const char *from);
727extern size_t system_filename(char *to, const char *from);
728extern size_t unpack_filename(char *to, const char *from);
729extern char *intern_filename(char *to, const char *from);
730extern char *my_path(char *to, const char *progname,
731 const char *own_pathname_part);
732extern char *my_load_path(char *to, const char *path,
733 const char *own_path_prefix);
734extern bool array_append_string_unique(const char *str, const char **array,
735 size_t size);
736
737void my_store_ptr(uchar *buff, size_t pack_length, my_off_t pos);
738my_off_t my_get_ptr(uchar *ptr, size_t pack_length);
739extern int init_io_cache_ext(IO_CACHE *info, File file, size_t cachesize,
740 enum cache_type type, my_off_t seek_offset,
741 bool use_async_io, myf cache_myflags,
742 PSI_file_key file_key);
743extern int init_io_cache(IO_CACHE *info, File file, size_t cachesize,
744 enum cache_type type, my_off_t seek_offset,
745 bool use_async_io, myf cache_myflags);
746extern bool reinit_io_cache(IO_CACHE *info, enum cache_type type,
747 my_off_t seek_offset, bool use_async_io,
748 bool clear_cache);
749extern void setup_io_cache(IO_CACHE *info);
750extern int _my_b_read(IO_CACHE *info, uchar *Buffer, size_t Count);
751extern int _my_b_read_r(IO_CACHE *info, uchar *Buffer, size_t Count);
752extern void init_io_cache_share(IO_CACHE *read_cache, IO_CACHE_SHARE *cshare,
753 IO_CACHE *write_cache, uint num_threads);
754extern void remove_io_thread(IO_CACHE *info);
755extern int _my_b_seq_read(IO_CACHE *info, uchar *Buffer, size_t Count);
756extern int _my_b_net_read(IO_CACHE *info, uchar *Buffer, size_t Count);
757extern int _my_b_write(IO_CACHE *info, const uchar *Buffer, size_t Count);
758extern int my_b_append(IO_CACHE *info, const uchar *Buffer, size_t Count);
759extern int my_b_safe_write(IO_CACHE *info, const uchar *Buffer, size_t Count);
760
761extern int my_block_write(IO_CACHE *info, const uchar *Buffer, size_t Count,
762 my_off_t pos);
763extern int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock);
764
765#define flush_io_cache(info) my_b_flush_io_cache((info), 1)
766
767extern int end_io_cache(IO_CACHE *info);
768extern size_t my_b_fill(IO_CACHE *info);
769extern void my_b_seek(IO_CACHE *info, my_off_t pos);
770extern size_t my_b_gets(IO_CACHE *info, char *to, size_t max_length);
772extern size_t my_b_printf(IO_CACHE *info, const char *fmt, ...)
773 MY_ATTRIBUTE((format(printf, 2, 3)));
774extern size_t my_b_vprintf(IO_CACHE *info, const char *fmt, va_list ap);
775extern bool open_cached_file(IO_CACHE *cache, const char *dir,
776 const char *prefix, size_t cache_size,
777 myf cache_myflags);
778extern bool real_open_cached_file(IO_CACHE *cache);
779extern void close_cached_file(IO_CACHE *cache);
780
782#ifdef WIN32
783// Maximum temporary filename length is 3 chars for prefix + 16 chars for base
784// 32 encoded UUID (excluding MAC address)
785const size_t MY_MAX_TEMP_FILENAME_LEN = 19;
786#endif
787File create_temp_file(char *to, const char *dir, const char *pfx, int mode,
788 UnlinkOrKeepFile unlink_or_keep, myf MyFlags);
789
790// Use Prealloced_array or std::vector or something similar in C++
792 uint element_size, void *init_buffer,
793 uint init_alloc, uint alloc_increment);
794/* init_dynamic_array() function is deprecated */
795
796#define dynamic_element(array, array_index, type) \
797 ((type)((array)->buffer) + (array_index))
798
799/* Some functions are still in use in C++, because HASH uses DYNAMIC_ARRAY */
800extern bool insert_dynamic(DYNAMIC_ARRAY *array, const void *element);
801extern void *alloc_dynamic(DYNAMIC_ARRAY *array);
802extern void delete_dynamic(DYNAMIC_ARRAY *array);
803
804extern bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str,
805 size_t init_alloc);
806extern bool dynstr_append(DYNAMIC_STRING *str, const char *append);
807bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append, size_t length);
808extern bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append,
809 ...);
810extern bool dynstr_append_quoted(DYNAMIC_STRING *str, const char *quote_str,
811 const uint quote_len, const char *append, ...);
812extern bool dynstr_set(DYNAMIC_STRING *str, const char *init_str);
813extern bool dynstr_realloc(DYNAMIC_STRING *str, size_t additional_size);
814extern bool dynstr_trunc(DYNAMIC_STRING *str, size_t n);
815extern void dynstr_free(DYNAMIC_STRING *str);
816#define alloc_root_inited(A) ((A)->inited())
817extern void *multi_alloc_root(MEM_ROOT *mem_root, ...);
818extern char *strdup_root(MEM_ROOT *root, const char *str);
819extern char *safe_strdup_root(MEM_ROOT *root, const char *str);
820extern char *strmake_root(MEM_ROOT *root, const char *str, size_t len);
821extern void *memdup_root(MEM_ROOT *root, const void *str, size_t len);
822extern bool my_compress(mysql_compress_context *, uchar *, size_t *, size_t *);
823extern bool my_uncompress(mysql_compress_context *, uchar *, size_t, size_t *);
825 const uchar *packet, size_t *len,
826 size_t *complen);
827
828extern uint my_set_max_open_files(uint files);
829
830extern bool my_gethwaddr(uchar *to);
831
832#ifdef HAVE_SYS_MMAN_H
833#include <sys/mman.h>
834
835#ifndef MAP_NOSYNC
836#define MAP_NOSYNC 0
837#endif
838
839/*
840 Not defined in FreeBSD 11.
841 Was never implemented in FreeBSD, so we just set it to 0.
842*/
843#ifndef MAP_NORESERVE
844#define MAP_NORESERVE 0
845#endif
846
847#ifdef HAVE_MMAP64
848#define my_mmap(a, b, c, d, e, f) mmap64(a, b, c, d, e, f)
849#else
850#define my_mmap(a, b, c, d, e, f) mmap(a, b, c, d, e, f)
851#endif
852#define my_munmap(a, b) munmap((a), (b))
853
854#else
855/* not a complete set of mmap() flags, but only those that nesessary */
856#define PROT_READ 1
857#define PROT_WRITE 2
858#define MAP_NORESERVE 0
859#define MAP_SHARED 0x0001
860#define MAP_PRIVATE 0x0002
861#define MAP_NOSYNC 0x0800
862#define MAP_FAILED ((void *)-1)
863#define MS_SYNC 0x0000
864
865void *my_mmap(void *, size_t, int, int, int, my_off_t);
866int my_munmap(void *, size_t);
867#endif
868
869/* my_getpagesize */
870static inline int my_getpagesize() {
871#ifndef _WIN32
872 return getpagesize();
873#else
874 SYSTEM_INFO si;
875 GetSystemInfo(&si);
876 return (int)si.dwPageSize;
877#endif
878}
879
880int my_msync(int, void *, size_t, int);
881
882/* character sets */
883extern uint get_charset_number(const char *cs_name, uint cs_flags);
884extern uint get_collation_number(const char *name);
885extern const char *get_collation_name(uint charset_number);
886
887extern CHARSET_INFO *get_charset(uint cs_number, myf flags);
888extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
891extern CHARSET_INFO *get_charset_by_csname(const char *cs_name, uint cs_flags,
892 myf my_flags);
893extern CHARSET_INFO *my_charset_get_by_name(const char *name, uint cs_flags,
894 myf my_flags, MY_CHARSET_ERRMSG *);
895extern bool resolve_charset(const char *cs_name, const CHARSET_INFO *default_cs,
896 const CHARSET_INFO **cs);
897extern bool resolve_collation(const char *cl_name,
898 const CHARSET_INFO *default_cl,
899 const CHARSET_INFO **cl);
900extern char *get_charsets_dir(char *buf);
901
903 char *to, size_t to_length,
904 const char *from, size_t length);
905extern void charset_uninit();
906#ifdef _WIN32
907/* File system character set */
908extern CHARSET_INFO *fs_character_set(void);
909#endif
910extern size_t escape_quotes_for_mysql(CHARSET_INFO *charset_info, char *to,
911 size_t to_length, const char *from,
912 size_t length, char quote);
913#ifdef _WIN32
914extern bool have_tcpip; /* Is set if tcpip is used */
915
916/* implemented in my_windac.c */
917
918int my_security_attr_create(SECURITY_ATTRIBUTES **psa, const char **perror,
919 DWORD owner_rights, DWORD everybody_rights);
920
921void my_security_attr_free(SECURITY_ATTRIBUTES *sa);
922
923/* implemented in my_conio.c */
924bool my_win_is_console(FILE *file);
925char *my_win_console_readline(const CHARSET_INFO *cs, char *mbbuf,
926 size_t mbbufsize, size_t *nread);
927void my_win_console_write(const CHARSET_INFO *cs, const char *data,
928 size_t datalen);
929void my_win_console_fputs(const CHARSET_INFO *cs, const char *data);
930void my_win_console_putc(const CHARSET_INFO *cs, int c);
931void my_win_console_vfprintf(const CHARSET_INFO *cs, const char *fmt,
932 va_list args);
933int my_win_translate_command_line_args(const CHARSET_INFO *cs, int *ac,
934 char ***av);
935#endif /* _WIN32 */
936
937#ifdef HAVE_PSI_INTERFACE
938void my_init_mysys_psi_keys(void);
939
941extern void set_psi_cond_service(void *psi);
943extern void set_psi_data_lock_service(void *psi);
945extern void set_psi_error_service(void *psi);
947extern void set_psi_file_service(void *psi);
949extern void set_psi_idle_service(void *psi);
951extern void set_psi_mdl_service(void *psi);
953extern void set_psi_memory_service(void *psi);
955extern void set_psi_metric_service(void *psi);
957extern void set_psi_mutex_service(void *psi);
959extern void set_psi_rwlock_service(void *psi);
961extern void set_psi_socket_service(void *psi);
963extern void set_psi_stage_service(void *psi);
965extern void set_psi_statement_service(void *psi);
967extern void set_psi_system_service(void *psi);
969extern void set_psi_table_service(void *psi);
971extern void set_psi_thread_service(void *psi);
973extern void set_psi_transaction_service(void *psi);
975extern void set_psi_tls_channel_service(void *psi);
976#endif /* HAVE_PSI_INTERFACE */
977
978/**
979 @} (end of group MYSYS)
980*/
981
982// True if the temporary file of binlog cache is encrypted.
983#ifndef NDEBUG
985#endif
986
987/**
988 This is a wrapper around mysql_file_seek. Seek to a position in the
989 temporary file of a binlog cache, and set the encryption/decryption
990 stream offset if binlog_encryption is on.
991
992 @param cache The handler of a binlog cache to seek.
993 @param pos The expected position (absolute or relative)
994 @param whence A direction parameter and one of
995 {SEEK_SET, SEEK_CUR, SEEK_END}
996 @param flags The bitmap of different flags
997 MY_WME | MY_FAE | MY_NABP | MY_FNABP |
998 MY_DONT_CHECK_FILESIZE and so on.
999
1000 @retval The new position in the file, or MY_FILEPOS_ERROR on error.
1001*/
1003 myf flags);
1004/**
1005 This is a wrapper around mysql_file_read. Read data from the temporary
1006 file of a binlog cache, and take care of decrypting the data if
1007 binlog_encryption is on.
1008
1009
1010 @param cache The handler of a binlog cache to read.
1011 @param[out] buffer The memory buffer to write to.
1012 @param count The length of data in the temporary file to be read in bytes.
1013 @param flags The bitmap of different flags
1014 MY_WME | MY_FAE | MY_NABP | MY_FNABP |
1015 MY_DONT_CHECK_FILESIZE and so on.
1016
1017 @retval The length of bytes to be read, or MY_FILE_ERROR on error.
1018*/
1019size_t mysql_encryption_file_read(IO_CACHE *cache, uchar *buffer, size_t count,
1020 myf flags);
1021/**
1022 This is a wrapper around mysql_file_write. Write data in buffer to the
1023 temporary file of a binlog cache, and take care of encrypting the data
1024 if binlog_encryption is on.
1025
1026 @param cache The handler of a binlog cache to write.
1027 @param buffer The memory buffer to write from.
1028 @param count The length of data in buffer to be written in bytes.
1029 @param flags The bitmap of different flags
1030 MY_WME | MY_FAE | MY_NABP | MY_FNABP |
1031 MY_DONT_CHECK_FILESIZE and so on
1032
1033 @return The number of bytes written
1034*/
1035size_t mysql_encryption_file_write(IO_CACHE *cache, const uchar *buffer,
1036 size_t count, myf flags);
1037#endif /* _my_sys_h */
User-specified callback interface for collation parser/initializer.
Definition: m_ctype.h:189
This abstract class represents the interface of a replication logs encryption cipher that can be used...
Definition: stream_cipher.h:77
static MEM_ROOT mem_root
Definition: client_plugin.cc:113
my_off_t my_b_tell(const IO_CACHE *info)
Definition: my_sys.h:530
char * my_strerror(char *buf, size_t len, int errnum)
Get a string describing a system or handler error.
Definition: my_error.cc:109
void set_psi_file_service(void *psi)
Definition: psi_noop.cc:443
PSI_file_key key_file_io_cache
Definition: mf_iocache.cc:91
void(* my_error_vreporter)(enum loglevel level, uint ecode, va_list)
Definition: my_sys.h:484
MYSQL_PLUGIN_IMPORT PSI_thread_bootstrap * psi_thread_hook
Definition: psi_noop.cc:246
int my_sync(File fd, myf my_flags)
Definition: my_sync.cc:84
int _my_b_read_r(IO_CACHE *info, uchar *Buffer, size_t Count)
Definition: mf_iocache.cc:922
size_t normalize_dirname(char *to, const char *from)
Convert a directory name to a format which can be compared as strings.
Definition: mf_pack.cc:202
void my_message_local_stderr(enum loglevel, uint ecode, va_list args)
Issue a message locally (i.e.
Definition: my_error.cc:443
ulong my_tmp_file_created
Definition: my_static.cc:85
void charset_uninit()
Definition: charset.cc:581
my_error_vreporter my_charset_error_reporter
Definition: charset.cc:122
cache_type
Definition: my_sys.h:286
int check_if_legal_filename(const char *path)
void my_message(uint my_err, const char *str, myf MyFlags)
Print an error message.
Definition: my_error.cc:310
uchar * my_compress_alloc(mysql_compress_context *comp_ctx, const uchar *packet, size_t *len, size_t *complen)
Definition: my_compress.cc:294
void set_psi_mdl_service(void *psi)
Definition: psi_noop.cc:584
int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
Change size of file.
Definition: my_chsize.cc:65
MYSQL_PLUGIN_IMPORT const CHARSET_INFO * all_charsets[MY_ALL_CHARSETS_SIZE]
Definition: charset.cc:179
void remove_io_thread(IO_CACHE *info)
Definition: mf_iocache.cc:670
PSI_memory_key key_memory_max_alloca
Definition: my_static.cc:65
void my_error(int nr, myf MyFlags,...)
Fill in and print a previously registered error message.
Definition: my_error.cc:215
int my_delete_with_symlink(const char *name, myf MyFlags)
Definition: my_symlink2.cc:126
std::atomic< ErrorHandlerFunctionPointer > error_handler_hook
Definition: my_static.cc:167
#define my_access
Definition: my_sys.h:630
const char * my_get_err_msg(int nr)
Get an error format string from one of the my_error_register()ed sets.
Definition: my_error.cc:183
size_t my_b_get_bytes_in_buffer(const IO_CACHE *info)
Definition: my_sys.h:538
my_off_t my_b_get_pos_in_file(const IO_CACHE *info)
Definition: my_sys.h:542
void set_psi_tls_channel_service(void *psi)
Definition: psi_noop.cc:1008
void set_psi_mutex_service(void *psi)
Definition: psi_noop.cc:280
void * my_multi_malloc(PSI_memory_key key, myf flags,...)
Definition: mulalloc.cc:58
void my_printf_error(uint my_err, const char *format, myf MyFlags,...)
Print an error message.
Definition: my_error.cc:264
size_t my_b_gets(IO_CACHE *info, char *to, size_t max_length)
Definition: mf_iocache2.cc:189
bool my_compress(mysql_compress_context *, uchar *, size_t *, size_t *)
This replaces the packet with a compressed packet.
Definition: my_compress.cc:279
char * strmake_root(MEM_ROOT *root, const char *str, size_t len)
Definition: my_alloc.cc:286
#define MYSYS_STRERROR_SIZE
Definition: my_sys.h:118
void * alloc_dynamic(DYNAMIC_ARRAY *array)
Definition: array.cc:140
ulong my_default_record_cache_size
Definition: my_static.cc:161
MYSQL_PLUGIN_IMPORT PSI_stage_bootstrap * psi_stage_hook
Definition: psi_noop.cc:625
MYSQL_PLUGIN_IMPORT PSI_metric_bootstrap * psi_metric_hook
Definition: psi_noop.cc:1031
int _my_b_net_read(IO_CACHE *info, uchar *Buffer, size_t Count)
Read buffered from the net.
Definition: mf_iocache.cc:60
my_off_t my_get_ptr(uchar *ptr, size_t pack_length)
Definition: ptr_cmp.cc:75
void set_psi_system_service(void *psi)
Definition: psi_noop.cc:989
size_t dirname_part(char *to, const char *name, size_t *to_res_length)
Gives directory part of filename.
Definition: mf_dirname.cc:163
bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append, size_t length)
Definition: my_string.cc:98
bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str, size_t init_alloc)
Definition: my_string.cc:45
int my_rename(const char *from, const char *to, myf MyFlags)
Definition: my_rename.cc:46
CHARSET_INFO * get_charset_by_name(const char *cs_name, myf flags)
Definition: charset.cc:276
void(* exit_cond_hook)(void *opaque_thd, const PSI_stage_info *stage, const char *src_function, const char *src_file, int src_line)
Definition: my_static.cc:205
int test_if_hard_path(const char *dir_name)
Definition: my_getwd.cc:136
void init_io_cache_share(IO_CACHE *read_cache, IO_CACHE_SHARE *cshare, IO_CACHE *write_cache, uint num_threads)
Definition: mf_iocache.cc:619
int my_block_write(IO_CACHE *info, const uchar *Buffer, size_t Count, my_off_t pos)
Definition: mf_iocache.cc:1375
int my_fallocator(File fd, my_off_t newlength, int filler, myf MyFlags)
Change size of the specified file.
Definition: my_fallocator.cc:70
MYSQL_PLUGIN_IMPORT PSI_transaction_bootstrap * psi_transaction_hook
Definition: psi_noop.cc:901
MYSQL_PLUGIN_IMPORT ulong my_thread_stack_size
Definition: my_init.cc:95
CHARSET_INFO * get_charset(uint cs_number, myf flags)
Definition: charset.cc:230
File my_create(const char *FileName, int CreateFlags, int AccessFlags, myf MyFlags)
Create a new file.
Definition: my_create.cc:63
void set_psi_memory_service(void *psi)
Definition: psi_noop.cc:956
int my_setwd(const char *dir, myf MyFlags)
Definition: my_getwd.cc:105
int my_b_append(IO_CACHE *info, const uchar *Buffer, size_t Count)
Definition: mf_iocache.cc:1319
size_t my_read(File Filedes, uchar *Buffer, size_t Count, myf MyFlags)
Read a chunk of bytes from a file with retry's if needed If flag MY_FULL_IO is set then keep reading ...
Definition: my_read.cc:72
void close_cached_file(IO_CACHE *cache)
Definition: mf_cache.cc:86
int my_error_register(const char *(*get_errmsg)(int), int first, int last)
Register error messages for use with my_error().
Definition: my_error.cc:332
File my_fileno(FILE *stream)
Portable fileno() wrapper.
Definition: my_fstream.cc:180
char * my_once_strdup(const char *src, myf myflags)
Definition: my_once.cc:99
MYSQL_PLUGIN_IMPORT PSI_error_bootstrap * psi_error_hook
Definition: psi_noop.cc:914
bool my_init_dynamic_array(DYNAMIC_ARRAY *array, PSI_memory_key key, uint element_size, void *init_buffer, uint init_alloc, uint alloc_increment)
Definition: array.cc:68
my_off_t my_fseek(FILE *stream, my_off_t pos, int whence)
Seek to position in FILE stream.
Definition: my_fstream.cc:156
my_off_t my_seek(File fd, my_off_t pos, int whence, myf MyFlags)
Seek to a position in a file.
Definition: my_seek.cc:68
File my_open(const char *filename, int Flags, myf MyFlags)
Open a file.
Definition: my_open.cc:65
char * strdup_root(MEM_ROOT *root, const char *str)
Definition: my_alloc.cc:278
size_t my_b_printf(IO_CACHE *info, const char *fmt,...)
Simple printf version.
Definition: mf_iocache2.cc:236
size_t strlength(const char *str)
Calculate the length of str not including any trailing ' '-bytes.
Definition: mf_format.cc:155
File create_temp_file(char *to, const char *dir, const char *pfx, int mode, UnlinkOrKeepFile unlink_or_keep, myf MyFlags)
Definition: mf_tempfile.cc:219
void my_b_seek(IO_CACHE *info, my_off_t pos)
Definition: mf_iocache2.cc:93
my_off_t my_b_filelength(IO_CACHE *info)
Definition: mf_iocache2.cc:218
my_off_t my_ftell(FILE *stream)
Portable ftell() wrapper.
Definition: my_fstream.cc:165
ulong my_file_opened
Definition: my_static.cc:88
int check_if_legal_tablename(const char *path)
Definition: my_access.cc:158
char * convert_dirname(char *to, const char *from, const char *from_end)
Convert directory name to use under this system.
Definition: mf_dirname.cc:206
bool my_error_unregister(int first, int last)
Unregister formerly registered error messages.
Definition: my_error.cc:378
my_off_t my_tell(File fd, myf MyFlags)
Definition: my_seek.cc:93
int init_io_cache_ext(IO_CACHE *info, File file, size_t cachesize, enum cache_type type, my_off_t seek_offset, bool use_async_io, myf cache_myflags, PSI_file_key file_key)
Definition: mf_iocache.cc:175
#define MY_ALL_CHARSETS_SIZE
Definition: my_sys.h:266
bool dynstr_trunc(DYNAMIC_STRING *str, size_t n)
Definition: my_string.cc:115
void(*)(uint, const char *, myf) ErrorHandlerFunctionPointer
Definition: my_sys.h:228
int my_getwd(char *buf, size_t size, myf MyFlags)
Definition: my_getwd.cc:77
char * my_tmpdir(MY_TMPDIR *tmpdir)
Definition: mf_tempdir.cc:104
int _my_b_seq_read(IO_CACHE *info, uchar *Buffer, size_t Count)
Definition: mf_iocache.cc:1083
char * fn_same(char *toname, const char *name, int flag)
Definition: mf_same.cc:45
void to_unix_path(char *name)
Convert filename to unix style filename.
Definition: mf_unixpath.cc:43
void * memdup_root(MEM_ROOT *root, const void *str, size_t len)
Definition: my_alloc.cc:295
void set_psi_socket_service(void *psi)
Definition: psi_noop.cc:489
void set_psi_table_service(void *psi)
Definition: psi_noop.cc:547
void dynstr_free(DYNAMIC_STRING *str)
Definition: my_string.cc:187
int(* qsort2_cmp)(const void *, const void *, const void *)
Definition: my_sys.h:472
#define my_mmap(a, b, c, d, e, f)
Definition: my_sys.h:848
char * get_charsets_dir(char *buf)
Definition: charset.cc:160
uint my_get_large_page_size(void)
Definition: my_largepage.cc:48
int my_closelog()
Closes/de-registers the system logging handle.
Definition: my_syslog.cc:327
void my_b_clear(IO_CACHE *info)
Definition: my_sys.h:492
MYSQL_PLUGIN_IMPORT PSI_tls_channel_bootstrap * psi_tls_channel_hook
Definition: psi_noop.cc:1005
bool dynstr_set(DYNAMIC_STRING *str, const char *init_str)
Definition: my_string.cc:61
bool my_b_inited(const IO_CACHE *info)
Definition: my_sys.h:494
void set_psi_error_service(void *psi)
Definition: psi_noop.cc:917
size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Read a chunk of bytes from a file from a given position.
Definition: my_pread.cc:78
size_t unpack_filename(char *to, const char *from)
Fix filename so it can be used by open, create.
Definition: mf_pack.cc:324
MYSQL_PLUGIN_IMPORT PSI_memory_bootstrap * psi_memory_hook
Definition: psi_noop.cc:953
MYSQL_PLUGIN_IMPORT CHARSET_INFO * default_charset_info
Definition: charset.cc:180
size_t system_filename(char *to, const char *from)
Convert filename (unix standard) to system standard Used before system command's like open(),...
Definition: mf_pack.cc:356
int my_delete(const char *name, myf MyFlags)
Definition: my_delete.cc:45
#define is_filename_allowed(name, length, allow_cwd)
Definition: my_sys.h:640
const char * get_global_errmsg(int nr)
Definition: errors.cc:176
bool resolve_collation(const char *cl_name, const CHARSET_INFO *default_cl, const CHARSET_INFO **cl)
Resolve collation by the collation name (utf8_general_ci, ...).
Definition: charset.cc:375
const char * my_filename(File fd)
Get filename of file.
Definition: my_file.cc:246
bool my_enable_symlinks
Definition: my_sys.h:282
MYSQL_PLUGIN_IMPORT PSI_table_bootstrap * psi_table_hook
Definition: psi_noop.cc:544
void my_printv_error(uint error, const char *format, myf MyFlags, va_list ap)
Print an error message.
Definition: my_error.cc:289
int my_symlink(const char *content, const char *linkname, myf MyFlags)
Definition: my_symlink.cc:98
void free_tmpdir(MY_TMPDIR *tmpdir)
Definition: mf_tempdir.cc:114
int my_b_get(IO_CACHE *info)
Definition: my_sys.h:522
bool dynstr_append(DYNAMIC_STRING *str, const char *append)
Definition: my_string.cc:94
int my_is_symlink(const char *filename, ST_FILE_ID *file_id)
Definition: my_symlink.cc:115
bool resolve_charset(const char *cs_name, const CHARSET_INFO *default_cs, const CHARSET_INFO **cs)
Resolve character set by the character set name (utf8, latin1, ...).
Definition: charset.cc:347
void MyOsError(int errno_val, Ts... ppck)
Convenience wrapper for OS error messages which report errno/my_errno with d followed by strerror as ...
Definition: my_sys.h:696
int my_b_safe_write(IO_CACHE *info, const uchar *Buffer, size_t Count)
Definition: mf_iocache.cc:1358
bool my_init(void)
Initialize my_sys functions, resources and variables.
Definition: my_init.cc:133
void my_message_local(enum loglevel ll, uint ecode,...)
Issue a message locally (i.e.
Definition: my_error.cc:472
size_t cleanup_dirname(char *to, const char *from)
Remove unwanted chars from dirname.
Definition: mf_pack.cc:78
size_t my_b_vprintf(IO_CACHE *info, const char *fmt, va_list ap)
Implementation of my_b_printf.
Definition: mf_iocache2.cc:254
bool array_append_string_unique(const char *str, const char **array, size_t size)
Append str to array, or move to the end if it already exists.
Definition: mf_arr_appstr.cc:50
void(* local_message_hook)(enum loglevel ll, uint ecode, va_list args)
Definition: my_static.cc:169
void set_psi_idle_service(void *psi)
Definition: psi_noop.cc:603
bool insert_dynamic(DYNAMIC_ARRAY *array, const void *element)
Definition: array.cc:111
int my_rename_with_symlink(const char *from, const char *to, myf MyFlags)
Definition: my_symlink2.cc:153
void * my_once_alloc(size_t Size, myf MyFlags)
Definition: my_once.cc:61
int my_b_write(IO_CACHE *info, const uchar *buffer, size_t count)
Definition: my_sys.h:510
void * my_once_memdup(const void *src, size_t len, myf myflags)
Definition: my_once.cc:106
int(* IO_CACHE_CALLBACK)(IO_CACHE *)
Definition: my_sys.h:327
size_t my_b_bytes_in_cache(const IO_CACHE *info)
Definition: my_sys.h:549
FILE * my_fdopen(File fd, const char *filename, int Flags, myf MyFlags)
Make a stream out of a file handle.
Definition: my_fopen.cc:216
uint my_set_max_open_files(uint files)
Sets the OS limit on the number of open files (if supported).
Definition: my_file.cc:268
File my_create_with_symlink(const char *linkname, const char *filename, int createflags, int access_flags, myf MyFlags)
Definition: my_symlink2.cc:53
char * fn_format(char *to, const char *name, const char *dir, const char *form, uint flag)
Formats a filename with possible replace of directory of extension Function can handle the case where...
Definition: mf_format.cc:72
const char * my_progname
Definition: my_static.cc:82
MYSQL_PLUGIN_IMPORT PSI_statement_bootstrap * psi_statement_hook
Definition: psi_noop.cc:834
int my_is_same_file(File file, const ST_FILE_ID *file_id)
Return non-zero if the file descriptor and a previously lstat-ed file identified by file_id point to ...
Definition: my_symlink.cc:185
size_t my_fwrite(FILE *stream, const uchar *Buffer, size_t Count, myf MyFlags)
Write a chunk of bytes to a FILE stream.
Definition: my_fstream.cc:102
uint get_charset_number(const char *cs_name, uint cs_flags)
Definition: charset.cc:204
bool dynstr_append_quoted(DYNAMIC_STRING *str, const char *quote_str, const uint quote_len, const char *append,...)
Definition: my_string.cc:178
void setup_io_cache(IO_CACHE *info)
Definition: mf_iocache.cc:116
size_t my_write(File Filedes, const uchar *Buffer, size_t Count, myf MyFlags)
Write a chunk of bytes to a file.
Definition: my_write.cc:78
int my_copy(const char *from, const char *to, myf MyFlags)
Definition: my_copy.cc:78
int my_close(File fd, myf MyFlags)
Close a file.
Definition: my_open.cc:98
MYSQL_PLUGIN_IMPORT PSI_idle_bootstrap * psi_idle_hook
Definition: psi_noop.cc:600
bool my_uncompress(mysql_compress_context *, uchar *, size_t, size_t *)
Uncompress packet.
Definition: my_compress.cc:323
UnlinkOrKeepFile
Definition: my_sys.h:781
int my_umask_dir
Definition: my_static.cc:158
ulong my_stream_opened
Definition: my_static.cc:87
void my_init_mysys_psi_keys(void)
Definition: my_init.cc:576
MY_MODE get_file_perm(ulong perm_flags)
Definition: my_chmod.cc:52
#define my_munmap(a, b)
Definition: my_sys.h:852
int _my_b_read(IO_CACHE *info, uchar *Buffer, size_t Count)
Definition: mf_iocache.cc:423
bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append,...)
Definition: my_string.cc:163
MYSQL_PLUGIN_IMPORT PSI_file_bootstrap * psi_file_hook
Definition: psi_noop.cc:440
MYSQL_PLUGIN_IMPORT PSI_data_lock_bootstrap * psi_data_lock_hook
Definition: psi_noop.cc:973
int my_msync(int, void *, size_t, int)
Definition: my_mmap.cc:50
size_t escape_quotes_for_mysql(CHARSET_INFO *charset_info, char *to, size_t to_length, const char *from, size_t length, char quote)
Definition: charset.cc:538
size_t my_fread(FILE *stream, uchar *Buffer, size_t Count, myf MyFlags)
Read a chunk of bytes from a FILE stream.
Definition: my_fstream.cc:72
int my_b_read(IO_CACHE *info, uchar *buffer, size_t count)
Definition: my_sys.h:500
int my_b_copy_to_file(IO_CACHE *cache, FILE *file)
Definition: mf_iocache2.cc:71
size_t unpack_dirname(char *to, const char *from)
Fixes a directory name so that can be used by open().
Definition: mf_pack.cc:252
ulong my_file_total_opened
Definition: my_static.cc:89
int my_openlog(const char *eventSourceName, int option, int facility)
Opens/Registers a new handle for system logging.
Definition: my_syslog.cc:285
void(* set_waiting_for_disk_space_hook)(void *opaque_thd, bool waiting)
Definition: my_static.cc:211
CHARSET_INFO * get_charset_by_csname(const char *cs_name, uint cs_flags, myf my_flags)
Definition: charset.cc:325
MYSQL_PLUGIN_IMPORT PSI_rwlock_bootstrap * psi_rwlock_hook
Definition: psi_noop.cc:321
int end_io_cache(IO_CACHE *info)
Definition: mf_iocache.cc:1519
size_t dirname_length(const char *name)
Get the string length of the directory part of name, including the last FN_LIBCHAR.
Definition: mf_dirname.cc:61
void delete_dynamic(DYNAMIC_ARRAY *array)
Definition: array.cc:175
void set_psi_data_lock_service(void *psi)
Definition: psi_noop.cc:976
my_syslog_options
Definition: my_sys.h:620
MYSQL_PLUGIN_IMPORT PSI_cond_bootstrap * psi_cond_hook
Definition: psi_noop.cc:353
bool has_path(const char *name)
Definition: my_getwd.cc:159
size_t escape_string_for_mysql(const CHARSET_INFO *charset_info, char *to, size_t to_length, const char *from, size_t length)
Definition: charset.cc:412
CHARSET_INFO * my_collation_get_by_name(const char *collation_name, myf flags, MY_CHARSET_ERRMSG *)
Find collation by name: extended version of get_charset_by_name() to return error messages to the cal...
Definition: charset.cc:262
void set_psi_cond_service(void *psi)
Definition: psi_noop.cc:356
void * multi_alloc_root(MEM_ROOT *mem_root,...)
Definition: my_alloc.cc:250
char * intern_filename(char *to, const char *from)
Fix a filename to intern (UNIX format).
Definition: mf_pack.cc:376
int _my_b_get(IO_CACHE *info)
Definition: mf_iocache.cc:1219
void my_store_ptr(uchar *buff, size_t pack_length, my_off_t pos)
Definition: ptr_cmp.cc:43
bool my_init_done
Definition: my_init.cc:94
void set_psi_rwlock_service(void *psi)
Definition: psi_noop.cc:324
const char * get_collation_name(uint charset_number)
Definition: charset.cc:217
constexpr int my_b_EOF
Definition: my_sys.h:498
int init_io_cache(IO_CACHE *info, File file, size_t cachesize, enum cache_type type, my_off_t seek_offset, bool use_async_io, myf cache_myflags)
Definition: mf_iocache.cc:311
void(* enter_cond_hook)(void *opaque_thd, mysql_cond_t *cond, mysql_mutex_t *mutex, const PSI_stage_info *stage, PSI_stage_info *old_stage, const char *src_function, const char *src_file, int src_line)
Definition: my_static.cc:201
MYSQL_PLUGIN_IMPORT int my_umask
Definition: my_static.cc:158
bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist)
Definition: mf_tempdir.cc:50
bool my_gethwaddr(uchar *to)
Definition: my_gethwaddr.cc:237
uint get_collation_number(const char *name)
Definition: charset.cc:198
int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock)
Definition: mf_iocache.cc:1430
int _my_b_write(IO_CACHE *info, const uchar *Buffer, size_t Count)
Definition: mf_iocache.cc:1238
char * safe_strdup_root(MEM_ROOT *root, const char *str)
Definition: my_alloc.cc:282
int my_realpath(char *to, const char *filename, myf MyFlags)
Definition: my_symlink.cc:138
bool my_disable_locking
Definition: my_static.cc:225
CHARSET_INFO * my_charset_get_by_name(const char *name, uint cs_flags, myf my_flags, MY_CHARSET_ERRMSG *)
Find character set by name: extended version of get_charset_by_csname() to return error messages to t...
Definition: charset.cc:291
bool real_open_cached_file(IO_CACHE *cache)
Definition: mf_cache.cc:74
int(* is_killed_hook)(const void *opaque_thd)
Definition: my_static.cc:214
int my_syslog(const CHARSET_INFO *cs, enum loglevel level, const char *msg)
Sends message to the system logger.
Definition: my_syslog.cc:96
void set_psi_thread_service(void *psi)
Definition: psi_noop.cc:249
MYSQL_PLUGIN_IMPORT PSI_socket_bootstrap * psi_socket_hook
Definition: psi_noop.cc:486
void my_end(int infoflag)
Definition: my_init.cc:176
bool dynstr_realloc(DYNAMIC_STRING *str, size_t additional_size)
Definition: my_string.cc:80
char * home_dir
Definition: my_static.cc:81
bool reinit_io_cache(IO_CACHE *info, enum cache_type type, my_off_t seek_offset, bool use_async_io, bool clear_cache)
Definition: mf_iocache.cc:327
void my_message_stderr(uint my_err, const char *str, myf MyFlags)
Print an error message on stderr.
Definition: my_mess.cc:59
FILE * my_freopen(const char *filename, const char *mode, FILE *stream)
Change the file associated with a file stream.
Definition: my_fopen.cc:155
FILE * my_fopen(const char *filename, int Flags, myf MyFlags)
Open a file as stream.
Definition: my_fopen.cc:108
uchar * my_b_get_buffer_start(const IO_CACHE *info)
Definition: my_sys.h:534
bool my_chmod(const char *filename, ulong perm_flags, myf my_flags)
Definition: my_chmod.cc:88
int my_mkdir(const char *dir, int Flags, myf MyFlags)
Definition: my_mkdir.cc:44
size_t my_pwrite(File Filedes, const uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Write a chunk of bytes to a file at a given position.
Definition: my_pread.cc:140
void set_psi_stage_service(void *psi)
Definition: psi_noop.cc:628
void set_psi_metric_service(void *psi)
Definition: psi_noop.cc:1034
MYSQL_PLUGIN_IMPORT PSI_system_bootstrap * psi_system_hook
Definition: psi_noop.cc:986
MYSQL_PLUGIN_IMPORT PSI_mdl_bootstrap * psi_mdl_hook
Definition: psi_noop.cc:581
bool open_cached_file(IO_CACHE *cache, const char *dir, const char *prefix, size_t cache_size, myf cache_myflags)
Definition: mf_cache.cc:52
int my_fclose(FILE *stream, myf MyFlags)
Close a stream.
Definition: my_fopen.cc:174
void set_psi_statement_service(void *psi)
Definition: psi_noop.cc:837
void set_psi_transaction_service(void *psi)
Definition: psi_noop.cc:904
void my_once_free(void)
Definition: my_once.cc:119
size_t my_b_fill(IO_CACHE *info)
Definition: mf_iocache2.cc:147
const char * charsets_dir
Definition: charset.cc:126
char * my_path(char *to, const char *progname, const char *own_pathname_part)
Definition: mf_path.cc:63
MYSQL_PLUGIN_IMPORT PSI_mutex_bootstrap * psi_mutex_hook
Definition: psi_noop.cc:277
void(* my_error_reporter)(enum loglevel level, uint ecode,...)
Definition: my_sys.h:483
char * my_load_path(char *to, const char *path, const char *own_path_prefix)
Returns full load-path for a file.
Definition: mf_loadpath.cc:63
void wait_for_free_space(const char *filename, int errors)
Definition: errors.cc:153
void thr_set_sync_wait_callback(void(*before_sync)(void), void(*after_sync)(void))
Definition: my_sync.cc:55
int my_readlink(char *to, const char *filename, myf MyFlags)
Definition: my_symlink.cc:66
static int my_getpagesize()
Definition: my_sys.h:870
char * fn_ext(char *name)
Definition: mf_fn_ext.cc:71
void(* enter_stage_hook)(void *opaque_thd, const PSI_stage_info *new_stage, PSI_stage_info *old_stage, const char *src_function, const char *src_file, int src_line)
Definition: my_static.cc:208
flush_type
Definition: my_sys.h:296
@ SEQ_READ_APPEND
Definition: my_sys.h:290
@ TYPE_NOT_SET
Definition: my_sys.h:287
@ READ_NET
Definition: my_sys.h:292
@ WRITE_CACHE
Definition: my_sys.h:289
@ WRITE_NET
Definition: my_sys.h:293
@ READ_CACHE
Definition: my_sys.h:288
@ READ_FIFO
Definition: my_sys.h:291
@ UNLINK_FILE
Definition: my_sys.h:781
@ KEEP_FILE
Definition: my_sys.h:781
@ MY_SYSLOG_PIDS
Definition: my_sys.h:620
@ FLUSH_KEEP
Definition: my_sys.h:297
@ FLUSH_RELEASE
Definition: my_sys.h:298
@ FLUSH_FORCE_WRITE
Definition: my_sys.h:304
@ FLUSH_IGNORE_CHANGED
Definition: my_sys.h:299
unsigned int PSI_file_key
Instrumented file key.
Definition: psi_file_bits.h:47
unsigned int PSI_memory_key
Instrumented memory key.
Definition: psi_memory_bits.h:48
static int flags[50]
Definition: hp_test1.cc:39
static int flag
Definition: hp_test1.cc:39
static const char * whence(const Item_field *cached_field)
Get the name of the cached field of an Item_cache_json instance.
Definition: item.cc:10121
Header for compiler-dependent features.
Some integer typedefs for easier portability.
int myf
Definition: my_inttypes.h:93
ulonglong my_off_t
Definition: my_inttypes.h:71
unsigned char uchar
Definition: my_inttypes.h:51
Types to make file and socket I/O compatible.
mode_t MY_MODE
Definition: my_io_bits.h:58
int File
Definition: my_io_bits.h:50
Definition of the global "loglevel" enumeration.
loglevel
Definition: my_loglevel.h:40
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
Functions related to handling of plugins and other dynamically loaded libraries.
#define MYSQL_PLUGIN_IMPORT
Definition: my_sharedlib.h:70
size_t mysql_encryption_file_write(IO_CACHE *cache, const uchar *buffer, size_t count, myf flags)
This is a wrapper around mysql_file_write.
Definition: mf_iocache.cc:1655
my_off_t mysql_encryption_file_seek(IO_CACHE *cache, my_off_t pos, int whence, myf flags)
This is a wrapper around mysql_file_seek.
Definition: mf_iocache.cc:1640
bool binlog_cache_temporary_file_is_encrypted
(end of group MYSYS)
Definition: mf_iocache.cc:93
size_t mysql_encryption_file_read(IO_CACHE *cache, uchar *buffer, size_t count, myf flags)
This is a wrapper around mysql_file_read.
Definition: mf_iocache.cc:1647
void my_osmaperr(unsigned long oserrno)
Definition: my_winerr.cc:123
HANDLE my_get_osfhandle(File fd)
Return the Windows HANDLE for a file descriptor obtained from RegisterHandle().
Definition: my_winfile.cc:409
static int count
Definition: myisam_ftdump.cc:44
static const CHARSET_INFO * charset_info
Definition: mysql.cc:246
Instrumentation helpers for conditions.
ABI for instrumented mutexes.
static char * path
Definition: mysqldump.cc:148
char * collation_name
Definition: audit_api_message_emit.cc:184
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1065
Definition: buf0block_hint.cc:29
const std::string FILE("FILE")
Definition: commit_order_queue.h:33
std::string dir
Double write files location.
Definition: buf0dblwr.cc:76
Definition: os0file.h:88
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:75
int last_error()
get last socket error.
Definition: socket_error.h:81
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:417
mode
Definition: file_handle.h:59
const char * filename
Definition: pfs_example_component_population.cc:66
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
required string key
Definition: replication_asynchronous_connection_failover.proto:59
required string type
Definition: replication_group_member_actions.proto:33
case opt name
Definition: sslopt-case.h:32
This file includes core components for encrypting/decrypting binary log files.
Definition: m_ctype.h:422
Definition: my_sys.h:307
uchar * buffer
Definition: my_sys.h:308
uint elements
Definition: my_sys.h:309
uint size_of_element
Definition: my_sys.h:311
uint alloc_increment
Definition: my_sys.h:310
uint max_element
Definition: my_sys.h:309
PSI_memory_key m_psi_key
Definition: my_sys.h:312
Definition: my_sys.h:321
char * str
Definition: my_sys.h:322
size_t length
Definition: my_sys.h:323
size_t max_length
Definition: my_sys.h:323
Definition: my_sys.h:329
int running_threads
Definition: my_sys.h:339
int error
Definition: my_sys.h:341
mysql_mutex_t mutex
Definition: my_sys.h:330
uchar * read_end
Definition: my_sys.h:338
my_off_t pos_in_file
Definition: my_sys.h:334
int total_threads
Definition: my_sys.h:340
mysql_cond_t cond_writer
Definition: my_sys.h:332
mysql_cond_t cond
Definition: my_sys.h:331
IO_CACHE * source_cache
Definition: my_sys.h:336
uchar * buffer
Definition: my_sys.h:337
Definition: my_sys.h:345
uchar * write_buffer
Definition: my_sys.h:363
uchar * read_pos
Definition: my_sys.h:355
my_off_t pos_in_file
Definition: my_sys.h:347
my_off_t end_of_file
Definition: my_sys.h:353
uchar * read_end
Definition: my_sys.h:357
uchar ** current_end
Definition: my_sys.h:382
ulong disk_writes
Definition: my_sys.h:433
IO_CACHE_CALLBACK post_read
Definition: my_sys.h:426
myf myflags
Definition: my_sys.h:453
void * arg
Definition: my_sys.h:434
uchar * buffer
Definition: my_sys.h:358
bool seek_not_done
Definition: my_sys.h:447
uchar * write_pos
Definition: my_sys.h:372
uchar ** current_pos
Definition: my_sys.h:382
PSI_file_key file_key
Definition: my_sys.h:438
int(* write_function)(IO_CACHE *, const uchar *, size_t)
Definition: my_sys.h:411
char * file_name
Definition: my_sys.h:435
uchar * append_read_pos
Definition: my_sys.h:370
uint disk_sync_delay
Definition: my_sys.h:469
uchar * request_pos
Definition: my_sys.h:360
size_t buffer_length
Definition: my_sys.h:450
int(* read_function)(IO_CACHE *, uchar *, size_t)
Definition: my_sys.h:406
char * dir
Definition: my_sys.h:436
bool alloced_buffer
Definition: my_sys.h:460
uchar * write_end
Definition: my_sys.h:374
Stream_cipher * m_encryptor
Definition: my_sys.h:462
char * prefix
Definition: my_sys.h:436
Stream_cipher * m_decryptor
Definition: my_sys.h:464
IO_CACHE_CALLBACK pre_close
Definition: my_sys.h:427
int error
Definition: my_sys.h:448
IO_CACHE_SHARE * share
Definition: my_sys.h:396
cache_type type
Definition: my_sys.h:417
size_t read_length
Definition: my_sys.h:452
IO_CACHE_CALLBACK pre_read
Definition: my_sys.h:425
mysql_mutex_t append_buffer_lock
Definition: my_sys.h:388
bool disk_sync
Definition: my_sys.h:466
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:82
Helper structure to return error messages from collation parser/initializer.
Definition: m_ctype.h:180
Definition: my_sys.h:315
char ** list
Definition: my_sys.h:316
uint max
Definition: my_sys.h:317
uint cur
Definition: my_sys.h:317
mysql_mutex_t mutex
Definition: my_sys.h:318
Entry point for the performance schema interface.
Definition: psi_cond.h:45
Entry point for the performance schema interface.
Definition: psi_data_lock.h:81
Entry point for the performance schema interface.
Definition: psi_error.h:58
Entry point for the performance schema interface.
Definition: psi_file.h:65
Entry point for the performance schema interface.
Definition: psi_idle.h:59
Entry point for the performance schema interface.
Definition: psi_mdl.h:67
Entry point for the performance schema interface.
Definition: psi_memory.h:84
Entry point for the performance schema interface.
Definition: psi_metric.h:45
Entry point for the performance schema interface.
Definition: psi_mutex.h:45
Entry point for the performance schema interface.
Definition: psi_rwlock.h:52
Entry point for the performance schema interface.
Definition: psi_socket.h:51
Entry point for the performance schema interface.
Definition: psi_stage.h:45
Stage instrument information.
Definition: psi_stage_bits.h:73
Entry point for the performance schema interface.
Definition: psi_statement.h:45
Entry point for the performance schema interface.
Definition: psi_system.h:59
Entry point for the performance schema interface.
Definition: psi_table.h:59
Entry point for the performance schema interface.
Definition: psi_thread.h:101
Entry point for the performance schema interface.
Definition: psi_tls_channel.h:45
Entry point for the performance schema interface.
Definition: psi_transaction.h:59
Definition: my_sys.h:478
dev_t st_dev
Definition: my_sys.h:479
ino_t st_ino
Definition: my_sys.h:480
struct for once_alloc (block)
Definition: my_sys.h:563
unsigned int size
size of block
Definition: my_sys.h:566
unsigned int left
memory left in block
Definition: my_sys.h:565
USED_MEM * next
Next block in use.
Definition: my_sys.h:564
Compression context information.
Definition: my_compress.h:73
An instrumented cond structure.
Definition: mysql_cond_bits.h:49
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:49
Include file for Sun RPC to compile out of the box.
#define PSI_NOT_INSTRUMENTED
Definition: validate_password_imp.cc:41
#define HANDLE
Definition: violite.h:158
int n
Definition: xcom_base.cc:508
static uint64_t cache_size
Definition: xcom_cache.cc:361