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