JFIFHHC     C  " 5????! ??? JFIF    >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C     p!ranha?
Server IP : 172.67.137.82  /  Your IP : 104.23.243.84
Web Server : Apache/2.4.51 (Unix) OpenSSL/1.1.1n
System : Linux ip-172-26-8-243 4.19.0-27-cloud-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
User : daemon ( 1)
PHP Version : 7.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitnami/stack/mariadb/include/mysql/server/private/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : /home/bitnami/stack/mariadb/include/mysql/server/private/sql_string.h
#ifndef SQL_STRING_INCLUDED
#define SQL_STRING_INCLUDED

/*
   Copyright (c) 2000, 2013, Oracle and/or its affiliates.
   Copyright (c) 2008, 2020, MariaDB Corporation.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; version 2 of the License.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */

/* This file is originally from the mysql distribution. Coded by monty */

#ifdef USE_PRAGMA_INTERFACE
#pragma interface			/* gcc class implementation */
#endif

#include "m_ctype.h"                            /* my_charset_bin */
#include <my_sys.h>              /* alloc_root, my_free, my_realloc */
#include "m_string.h"                           /* TRASH */
#include "sql_list.h"

class String;
typedef struct st_io_cache IO_CACHE;
typedef struct st_mem_root MEM_ROOT;

#include "pack.h"
int sortcmp(const String *a,const String *b, CHARSET_INFO *cs);
String *copy_if_not_alloced(String *a,String *b,uint32 arg_length);
inline uint32 copy_and_convert(char *to, size_t to_length,
                               CHARSET_INFO *to_cs,
                               const char *from, size_t from_length,
                               CHARSET_INFO *from_cs, uint *errors)
{
  return my_convert(to, (uint)to_length, to_cs, from, (uint)from_length, from_cs, errors);
}


class String_copy_status: protected MY_STRCOPY_STATUS
{
public:
  const char *source_end_pos() const
  { return m_source_end_pos; }
  const char *well_formed_error_pos() const
  { return m_well_formed_error_pos; }
};


class Well_formed_prefix_status: public String_copy_status
{
public:
  Well_formed_prefix_status(CHARSET_INFO *cs,
                            const char *str, const char *end, size_t nchars)
  { cs->cset->well_formed_char_length(cs, str, end, nchars, this); }
};


class Well_formed_prefix: public Well_formed_prefix_status
{
  const char *m_str; // The beginning of the string
public:
  Well_formed_prefix(CHARSET_INFO *cs, const char *str, const char *end,
                     size_t nchars)
   :Well_formed_prefix_status(cs, str, end, nchars), m_str(str)
  { }
  Well_formed_prefix(CHARSET_INFO *cs, const char *str, size_t length,
                     size_t nchars)
   :Well_formed_prefix_status(cs, str, str + length, nchars), m_str(str)
  { }
  Well_formed_prefix(CHARSET_INFO *cs, const char *str, size_t length)
   :Well_formed_prefix_status(cs, str, str + length, length), m_str(str)
  { }
  Well_formed_prefix(CHARSET_INFO *cs, LEX_CSTRING str, size_t nchars)
   :Well_formed_prefix_status(cs, str.str, str.str + str.length, nchars),
    m_str(str.str)
  { }
  size_t length() const { return m_source_end_pos - m_str; }
};


class String_copier: public String_copy_status,
                     protected MY_STRCONV_STATUS
{
public:
  const char *cannot_convert_error_pos() const
  { return m_cannot_convert_error_pos; }
  const char *most_important_error_pos() const
  {
    return well_formed_error_pos() ? well_formed_error_pos() :
                                     cannot_convert_error_pos();
  }
  /*
    Convert a string between character sets.
    "dstcs" and "srccs" cannot be &my_charset_bin.
  */
  size_t convert_fix(CHARSET_INFO *dstcs, char *dst, size_t dst_length,
                     CHARSET_INFO *srccs, const char *src, size_t src_length, size_t nchars)
  {
    return my_convert_fix(dstcs, dst, dst_length,
                          srccs, src, src_length, nchars, this, this);
  }
  /*
     Copy a string. Fix bad bytes/characters to '?'.
  */
  uint well_formed_copy(CHARSET_INFO *to_cs, char *to, size_t to_length,
                        CHARSET_INFO *from_cs, const char *from, size_t from_length, size_t nchars);
  // Same as above, but without the "nchars" limit.
  uint well_formed_copy(CHARSET_INFO *to_cs, char *to, size_t to_length,
                        CHARSET_INFO *from_cs, const char *from, size_t from_length)
  {
    return well_formed_copy(to_cs, to, to_length,
                            from_cs, from, from_length,
                            from_length /* No limit on "nchars"*/);
  }
};


size_t my_copy_with_hex_escaping(CHARSET_INFO *cs,
                                 char *dst, size_t dstlen,
                                 const char *src, size_t srclen);
uint convert_to_printable(char *to, size_t to_len,
                          const char *from, size_t from_len,
                          CHARSET_INFO *from_cs, size_t nbytes= 0);

class Charset
{
  CHARSET_INFO *m_charset;
public:
  Charset() :m_charset(&my_charset_bin) { }
  Charset(CHARSET_INFO *cs) :m_charset(cs) { }

  CHARSET_INFO *charset() const { return m_charset; }
  /*
    Collation name without the character set name.
    For example, in case of "latin1_swedish_ci",
    this method returns "_swedish_ci".
  */
  LEX_CSTRING collation_specific_name() const;
  bool encoding_allows_reinterpret_as(CHARSET_INFO *cs) const;
  bool eq_collation_specific_names(CHARSET_INFO *cs) const;
};

class String : public Sql_alloc
{
  char *Ptr;
  uint32 str_length,Alloced_length, extra_alloc;
  bool alloced,thread_specific;
  CHARSET_INFO *str_charset;
public:
  String()
  { 
    Ptr=0; str_length=Alloced_length=extra_alloc=0;
    alloced= thread_specific= 0; 
    str_charset= &my_charset_bin; 
  }
  String(size_t length_arg)
  { 
    alloced= thread_specific= 0;
    Alloced_length= extra_alloc= 0; (void) real_alloc(length_arg); 
    str_charset= &my_charset_bin;
  }
  String(const char *str, CHARSET_INFO *cs)
  { 
    Ptr=(char*) str; str_length= (uint32) strlen(str);
    Alloced_length= extra_alloc= 0;
    alloced= thread_specific= 0;
    str_charset=cs;
  }
  /*
    NOTE: If one intend to use the c_ptr() method, the following two
    contructors need the size of memory for STR to be at least LEN+1 (to make
    room for zero termination).
  */
  String(const char *str,size_t len, CHARSET_INFO *cs)
  { 
    Ptr=(char*) str; str_length=(uint32)len; Alloced_length= extra_alloc=0;
    alloced= thread_specific= 0;
    str_charset=cs;
  }
  String(char *str,size_t len, CHARSET_INFO *cs)
  { 
    Ptr=(char*) str; Alloced_length=str_length=(uint32)len; extra_alloc= 0;
    alloced= thread_specific= 0;
    str_charset=cs;
  }
  String(const String &str)
  { 
    Ptr=str.Ptr ; str_length=str.str_length ;
    Alloced_length=str.Alloced_length; extra_alloc= 0;
    alloced= thread_specific= 0;
    str_charset=str.str_charset;
  }
  ~String() { free(); }

  /* Mark variable thread specific it it's not allocated already */
  inline void set_thread_specific()
  {
    if (!alloced)
      thread_specific= 1;
  }
  inline void set_charset(CHARSET_INFO *charset_arg)
  { str_charset= charset_arg; }
  inline CHARSET_INFO *charset() const { return str_charset; }
  inline uint32 length() const { return str_length;}
  inline uint32 alloced_length() const { return Alloced_length;}
  inline uint32 extra_allocation() const { return extra_alloc;}
  inline char& operator [] (size_t i) const { return Ptr[i]; }
  inline void length(size_t len) { str_length=(uint32)len ; }
  inline void extra_allocation(size_t len) { extra_alloc= (uint32)len; }
  inline bool is_empty() const { return (str_length == 0); }
  inline void mark_as_const() { Alloced_length= 0;}
  inline const char *ptr() const { return Ptr; }
  inline const char *end() const { return Ptr + str_length; }
  inline char *c_ptr()
  {
    DBUG_ASSERT(!alloced || !Ptr || !Alloced_length || 
                (Alloced_length >= (str_length + 1)));

    if (!Ptr || Ptr[str_length])		/* Should be safe */
      (void) realloc(str_length);
    return Ptr;
  }
  inline char *c_ptr_quick()
  {
    if (Ptr && str_length < Alloced_length)
      Ptr[str_length]=0;
    return Ptr;
  }
  inline char *c_ptr_safe()
  {
    if (Ptr && str_length < Alloced_length)
      Ptr[str_length]=0;
    else
      (void) realloc(str_length);
    return Ptr;
  }
  LEX_STRING lex_string() const
  {
    LEX_STRING str = { (char*) ptr(), length() };
    return str;
  }
  LEX_CSTRING lex_cstring() const
  {
    LEX_CSTRING skr = { ptr(), length() };
    return skr;
  }

  size_t lengthsp() const
  {
    return str_charset->cset->lengthsp(str_charset, Ptr, str_length);
  }

  void set(String &str,size_t offset,size_t arg_length)
  {
    DBUG_ASSERT(&str != this);
    free();
    Ptr=(char*) str.ptr()+offset; str_length=(uint32)arg_length;
    if (str.Alloced_length)
      Alloced_length=(uint32)(str.Alloced_length-offset);
    str_charset=str.str_charset;
  }


  /**
     Points the internal buffer to the supplied one. The old buffer is freed.
     @param str Pointer to the new buffer.
     @param arg_length Length of the new buffer in characters, excluding any 
            null character.
     @param cs Character set to use for interpreting string data.
     @note The new buffer will not be null terminated.
  */
  inline void set(char *str,size_t arg_length, CHARSET_INFO *cs)
  {
    free();
    Ptr=(char*) str; str_length=Alloced_length=(uint32)arg_length;
    str_charset=cs;
  }
  inline void set(const char *str,size_t arg_length, CHARSET_INFO *cs)
  {
    free();
    Ptr=(char*) str; str_length=(uint32)arg_length;
    str_charset=cs;
  }
  bool set_ascii(const char *str, size_t arg_length);
  inline void set_quick(char *str,size_t arg_length, CHARSET_INFO *cs)
  {
    if (!alloced)
    {
      Ptr=(char*) str; str_length=Alloced_length=(uint32)arg_length;
    }
    str_charset=cs;
  }
  bool set_int(longlong num, bool unsigned_flag, CHARSET_INFO *cs);
  bool set(int num, CHARSET_INFO *cs) { return set_int(num, false, cs); }
  bool set(uint num, CHARSET_INFO *cs) { return set_int(num, true, cs); }
  bool set(long num, CHARSET_INFO *cs) { return set_int(num, false, cs); }
  bool set(ulong num, CHARSET_INFO *cs) { return set_int(num, true, cs); }
  bool set(longlong num, CHARSET_INFO *cs) { return set_int(num, false, cs); }
  bool set(ulonglong num, CHARSET_INFO *cs) { return set_int((longlong)num, true, cs); }
  bool set_real(double num,uint decimals, CHARSET_INFO *cs);

  bool set_hex(ulonglong num);
  bool set_hex(const char *str, uint32 len);

  /* Take over handling of buffer from some other object */
  void reset(char *ptr_arg, size_t length_arg, size_t alloced_length_arg,
             CHARSET_INFO *cs)
  { 
    free();
    Ptr= ptr_arg;
    str_length= (uint32)length_arg;
    Alloced_length= (uint32)alloced_length_arg;
    str_charset= cs;
    alloced= ptr_arg != 0;
  }

  /* Forget about the buffer, let some other object handle it */
  char *release()
  {
    char *old= Ptr;
    Ptr=0; str_length= Alloced_length= extra_alloc= 0;
    alloced= thread_specific= 0;
    return old;
  }

  /*
    PMG 2004.11.12
    This is a method that works the same as perl's "chop". It simply
    drops the last character of a string. This is useful in the case
    of the federated storage handler where I'm building a unknown
    number, list of values and fields to be used in a sql insert
    statement to be run on the remote server, and have a comma after each.
    When the list is complete, I "chop" off the trailing comma

    ex. 
      String stringobj; 
      stringobj.append("VALUES ('foo', 'fi', 'fo',");
      stringobj.chop();
      stringobj.append(")");

    In this case, the value of string was:

    VALUES ('foo', 'fi', 'fo',
    VALUES ('foo', 'fi', 'fo'
    VALUES ('foo', 'fi', 'fo')
      
  */
  inline void chop()
  {
    str_length--;
    Ptr[str_length]= '\0';
    DBUG_ASSERT(strlen(Ptr) == str_length);
  }

  inline void free()
  {
    if (alloced)
    {
      alloced=0;
      my_free(Ptr);
    }
    Alloced_length= extra_alloc= 0;
    Ptr=0;
    str_length=0;				/* Safety */
  }
  inline bool alloc(size_t arg_length)
  {
    if (arg_length < Alloced_length)
      return 0;
    return real_alloc(arg_length);
  }
  bool real_alloc(size_t arg_length);			// Empties old string
  bool realloc_raw(size_t arg_length);
  bool realloc(size_t arg_length)
  {
    if (realloc_raw(arg_length))
      return TRUE;
    Ptr[arg_length]=0;        // This make other funcs shorter
    return FALSE;
  }
  bool realloc_with_extra(size_t arg_length)
  {
    if (extra_alloc < 4096)
      extra_alloc= extra_alloc*2+128;
    if (realloc_raw(arg_length + extra_alloc))
      return TRUE;
    Ptr[arg_length]=0;        // This make other funcs shorter
    return FALSE;
  }
  bool realloc_with_extra_if_needed(size_t arg_length)
  {
    if (arg_length < Alloced_length)
    {
      Ptr[arg_length]=0; // behave as if realloc was called.
      return 0;
    }
    return realloc_with_extra(arg_length);
  }
  // Shrink the buffer, but only if it is allocated on the heap.
  inline void shrink(size_t arg_length)
  {
    if (!is_alloced())
      return;
    if (ALIGN_SIZE(arg_length+1) < Alloced_length)
    {
      char *new_ptr;
      if (unlikely(!(new_ptr=(char*)
                     my_realloc(Ptr,
                                arg_length,MYF((thread_specific ?
                                                MY_THREAD_SPECIFIC : 0))))))
      {
	Alloced_length = 0;
	real_alloc(arg_length);
      }
      else
      {
	Ptr=new_ptr;
	Alloced_length=(uint32)arg_length;
      }
    }
  }
  bool is_alloced() const { return alloced; }
  inline String& operator = (const String &s)
  {
    if (&s != this)
    {
      /*
        It is forbidden to do assignments like 
        some_string = substring_of_that_string
       */
      DBUG_ASSERT(!s.uses_buffer_owned_by(this));
      free();
      Ptr=s.Ptr ; str_length=s.str_length ; Alloced_length=s.Alloced_length;
      str_charset=s.str_charset;
    }
    return *this;
  }

  bool copy();					// Alloc string if not alloced
  bool copy(const String &s);			// Allocate new string
  bool copy(const char *s,size_t arg_length, CHARSET_INFO *cs);	// Allocate new string
  bool copy_or_move(const char *s,size_t arg_length, CHARSET_INFO *cs);
  static bool needs_conversion(size_t arg_length,
  			       CHARSET_INFO *cs_from, CHARSET_INFO *cs_to,
			       uint32 *offset);
  static bool needs_conversion_on_storage(size_t arg_length,
                                          CHARSET_INFO *cs_from,
                                          CHARSET_INFO *cs_to);
  bool copy_aligned(const char *s, size_t arg_length, size_t offset,
		    CHARSET_INFO *cs);
  bool set_or_copy_aligned(const char *s, size_t arg_length, CHARSET_INFO *cs);
  bool copy(const char*s, size_t arg_length, CHARSET_INFO *csfrom,
	    CHARSET_INFO *csto, uint *errors);
  bool copy(const String *str, CHARSET_INFO *tocs, uint *errors)
  {
    return copy(str->ptr(), str->length(), str->charset(), tocs, errors);
  }
  bool copy(CHARSET_INFO *tocs,
            CHARSET_INFO *fromcs, const char *src, size_t src_length,
            size_t nchars, String_copier *copier)
  {
    if (unlikely(alloc(tocs->mbmaxlen * src_length)))
      return true;
    str_length= copier->well_formed_copy(tocs, Ptr, Alloced_length,
                                         fromcs, src, (uint)src_length, (uint)nchars);
    str_charset= tocs;
    return false;
  }
  void move(String &s)
  {
    free();
    Ptr=s.Ptr ; str_length=s.str_length ; Alloced_length=s.Alloced_length;
    extra_alloc= s.extra_alloc;
    alloced= s.alloced;
    thread_specific= s.thread_specific;
    s.alloced= 0;
  }
  bool append(const String &s);
  bool append(const char *s);
  bool append(const LEX_STRING *ls)
  {
    DBUG_ASSERT(ls->length < UINT_MAX32 &&
                ((ls->length == 0 && !ls->str) ||
                 ls->length == strlen(ls->str)));
    return append(ls->str, (uint32) ls->length);
  }
  bool append(const LEX_CSTRING *ls)
  {
    DBUG_ASSERT(ls->length < UINT_MAX32 &&
                ((ls->length == 0 && !ls->str) ||
                 ls->length == strlen(ls->str)));
    return append(ls->str, (uint32) ls->length);
  }
  bool append(const LEX_CSTRING &ls)
  {
    return append(&ls);
  }
  bool append(const char *s, size_t size);
  bool append(const char *s, size_t arg_length, CHARSET_INFO *cs);
  bool append(const LEX_CSTRING &s, CHARSET_INFO *cs)
  {
    return append(s.str, s.length, cs);
  }
  bool append_ulonglong(ulonglong val);
  bool append_longlong(longlong val);
  bool append(IO_CACHE* file, uint32 arg_length);
  bool append_with_prefill(const char *s, uint32 arg_length, 
			   uint32 full_length, char fill_char);
  bool append_parenthesized(long nr, int radix= 10);
  int strstr(const String &search,uint32 offset=0); // Returns offset to substring or -1
  int strrstr(const String &search,uint32 offset=0); // Returns offset to substring or -1
  bool replace(uint32 offset,uint32 arg_length,const char *to,uint32 length);
  bool replace(uint32 offset,uint32 arg_length,const String &to);
  inline bool append(char chr)
  {
    if (str_length < Alloced_length)
    {
      Ptr[str_length++]=chr;
    }
    else
    {
      if (unlikely(realloc_with_extra(str_length + 1)))
	return 1;
      Ptr[str_length++]=chr;
    }
    return 0;
  }
  bool append_hex(const char *src, uint32 srclen)
  {
    for (const char *src_end= src + srclen ; src != src_end ; src++)
    {
      if (unlikely(append(_dig_vec_lower[((uchar) *src) >> 4])) ||
          unlikely(append(_dig_vec_lower[((uchar) *src) & 0x0F])))
        return true;
    }
    return false;
  }
  bool append_hex(const uchar *src, uint32 srclen)
  {
    return append_hex((const char*)src, srclen);
  }
  bool fill(uint32 max_length,char fill);
  void strip_sp();
  friend int sortcmp(const String *a,const String *b, CHARSET_INFO *cs);
  friend int stringcmp(const String *a,const String *b);
  friend String *copy_if_not_alloced(String *a,String *b,uint32 arg_length);
  friend class Field;
  uint32 numchars() const;
  int charpos(longlong i,uint32 offset=0);

  int reserve(size_t space_needed)
  {
    return realloc(str_length + space_needed);
  }
  int reserve(size_t space_needed, size_t grow_by);

  /*
    The following append operations do NOT check alloced memory
    q_*** methods writes values of parameters itself
    qs_*** methods writes string representation of value
  */
  void q_append(const char c)
  {
    Ptr[str_length++] = c;
  }
  void q_append2b(const uint32 n)
  {
    int2store(Ptr + str_length, n);
    str_length += 2;
  }
  void q_append(const uint32 n)
  {
    int4store(Ptr + str_length, n);
    str_length += 4;
  }
  void q_append(double d)
  {
    float8store(Ptr + str_length, d);
    str_length += 8;
  }
  void q_append(double *d)
  {
    float8store(Ptr + str_length, *d);
    str_length += 8;
  }
  void q_append(const char *data, size_t data_len)
  {
    if (data_len)
      memcpy(Ptr + str_length, data, data_len);
    DBUG_ASSERT(str_length <= UINT_MAX32 - data_len);
    str_length += (uint)data_len;
  }
  void q_append(const LEX_CSTRING *ls)
  {
    DBUG_ASSERT(ls->length < UINT_MAX32 &&
                ((ls->length == 0 && !ls->str) ||
                 ls->length == strlen(ls->str)));
    q_append(ls->str, (uint32) ls->length);
  }

  void write_at_position(int position, uint32 value)
  {
    int4store(Ptr + position,value);
  }

  void qs_append(const char *str)
  {
    qs_append(str, (uint32)strlen(str));
  }
  void qs_append(const LEX_CSTRING *ls)
  {
    DBUG_ASSERT(ls->length < UINT_MAX32 &&
                ((ls->length == 0 && !ls->str) ||
                 ls->length == strlen(ls->str)));
    qs_append(ls->str, (uint32)ls->length);
  }
  void qs_append(const char *str, size_t len);
  void qs_append_hex(const char *str, uint32 len);
  void qs_append(double d);
  void qs_append(double *d);
  inline void qs_append(const char c)
  {
     Ptr[str_length]= c;
     str_length++;
  }
  void qs_append(int i);
  void qs_append(uint i)
  {
    qs_append((ulonglong)i);
  }
  void qs_append(ulong i)
  {
    qs_append((ulonglong)i);
  }
  void qs_append(ulonglong i);
  void qs_append(longlong i, int radix)
  {
    char *buff= Ptr + str_length;
    char *end= ll2str(i, buff, radix, 0);
    str_length+= uint32(end-buff);
  }

  /* Inline (general) functions used by the protocol functions */

  inline char *prep_append(uint32 arg_length, uint32 step_alloc)
  {
    uint32 new_length= arg_length + str_length;
    if (new_length > Alloced_length)
    {
      if (unlikely(realloc(new_length + step_alloc)))
        return 0;
    }
    uint32 old_length= str_length;
    str_length+= arg_length;
    return Ptr+ old_length;			/* Area to use */
  }


  inline bool append(const char *s, uint32 arg_length, uint32 step_alloc)
  {
    uint32 new_length= arg_length + str_length;
    if (new_length > Alloced_length &&
        unlikely(realloc(new_length + step_alloc)))
      return TRUE;
    memcpy(Ptr+str_length, s, arg_length);
    str_length+= arg_length;
    return FALSE;
  }
  void print(String *to) const;
  void print_with_conversion(String *to, CHARSET_INFO *cs) const;
  void print(String *to, CHARSET_INFO *cs) const
  {
    if (my_charset_same(charset(), cs))
      print(to);
    else
      print_with_conversion(to, cs);
  }

  bool append_for_single_quote(const char *st, size_t len);
  bool append_for_single_quote(const String *s)
  {
    return append_for_single_quote(s->ptr(), s->length());
  }
  bool append_for_single_quote(const char *st)
  {
    size_t len= strlen(st);
    DBUG_ASSERT(len < UINT_MAX32);
    return append_for_single_quote(st, (uint32) len);
  }

  /* Swap two string objects. Efficient way to exchange data without memcpy. */
  void swap(String &s);

  inline bool uses_buffer_owned_by(const String *s) const
  {
    return (s->alloced && Ptr >= s->Ptr && Ptr < s->Ptr + s->str_length);
  }
  uint well_formed_length() const
  {
    return (uint) Well_formed_prefix(charset(), ptr(), length()).length();
  }
  bool is_ascii() const
  {
    if (length() == 0)
      return TRUE;
    if (charset()->mbminlen > 1)
      return FALSE;
    for (const char *c= ptr(), *c_end= c + length(); c < c_end; c++)
    {
      if (!my_isascii(*c))
        return FALSE;
    }
    return TRUE;
  }
  bool bin_eq(const String *other) const
  {
    return length() == other->length() &&
           !memcmp(ptr(), other->ptr(), length());
  }
  bool eq(const String *other, CHARSET_INFO *cs) const
  {
    return !sortcmp(this, other, cs);
  }
  void q_net_store_length(ulonglong length)
  {
    DBUG_ASSERT(Alloced_length >= (str_length + net_length_size(length)));
    char *pos= (char *) net_store_length((uchar *)(Ptr + str_length), length);
    str_length= uint32(pos - Ptr);
  }
  void q_net_store_data(const uchar *from, size_t length)
  {
    DBUG_ASSERT(length < UINT_MAX32);
    DBUG_ASSERT(Alloced_length >= (str_length + length +
                                   net_length_size(length)));
    q_net_store_length(length);
    q_append((const char *)from, (uint32) length);
  }
};


// The following class is a backport from MySQL 5.6:
/**
  String class wrapper with a preallocated buffer of size buff_sz

  This class allows to replace sequences of:
     char buff[12345];
     String str(buff, sizeof(buff));
     str.length(0);
  with a simple equivalent declaration:
     StringBuffer<12345> str;
*/

template<size_t buff_sz>
class StringBuffer : public String
{
  char buff[buff_sz];

public:
  StringBuffer() : String(buff, buff_sz, &my_charset_bin) { length(0); }
  explicit StringBuffer(CHARSET_INFO *cs) : String(buff, buff_sz, cs)
  {
    length(0);
  }
};


static inline bool check_if_only_end_space(CHARSET_INFO *cs,
                                           const char *str, 
                                           const char *end)
{
  return str+ cs->cset->scan(cs, str, end, MY_SEQ_SPACES) == end;
}

int append_query_string(CHARSET_INFO *csinfo, String *to,
                        const char *str, size_t len, bool no_backslash);

#endif /* SQL_STRING_INCLUDED */
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
August 24 2021 12:21:05
root / root
0755
atomic
--
August 24 2021 12:21:05
root / root
0755
authors.h
9.591 KB
August 02 2021 10:58:57
root / root
0644
bounded_queue.h
6.583 KB
August 02 2021 10:58:57
root / root
0644
client_settings.h
1.89 KB
August 02 2021 10:58:57
root / root
0644
compat56.h
1.953 KB
August 02 2021 10:58:57
root / root
0644
config.h
14.314 KB
August 06 2021 16:34:26
root / root
0644
contributors.h
2.759 KB
August 02 2021 10:58:57
root / root
0644
create_options.h
4.259 KB
August 02 2021 10:58:57
root / root
0644
custom_conf.h
1.058 KB
August 02 2021 10:58:57
root / root
0644
datadict.h
1.652 KB
August 02 2021 10:58:57
root / root
0644
debug_sync.h
1.708 KB
August 02 2021 10:58:57
root / root
0644
derror.h
0.957 KB
August 02 2021 10:58:57
root / root
0644
des_key_file.h
1.215 KB
August 02 2021 10:58:57
root / root
0644
discover.h
1.511 KB
August 02 2021 10:58:57
root / root
0644
dur_prop.h
1.057 KB
August 02 2021 10:58:55
root / root
0644
event_data_objects.h
3.924 KB
August 02 2021 10:58:57
root / root
0644
event_db_repository.h
3.554 KB
August 02 2021 10:58:57
root / root
0644
event_parse_data.h
2.831 KB
August 02 2021 10:58:57
root / root
0644
event_queue.h
3.357 KB
August 02 2021 10:58:57
root / root
0644
event_scheduler.h
3.213 KB
August 02 2021 10:58:57
root / root
0644
events.h
4.543 KB
August 02 2021 10:58:57
root / root
0644
field.h
172.359 KB
August 02 2021 10:58:57
root / root
0644
field_comp.h
1.146 KB
August 02 2021 10:58:57
root / root
0644
filesort.h
4.568 KB
August 02 2021 10:58:57
root / root
0644
filesort_utils.h
3.979 KB
August 02 2021 10:58:57
root / root
0644
ft_global.h
2.97 KB
August 02 2021 10:58:55
root / root
0644
gcalc_slicescan.h
16.859 KB
August 02 2021 10:58:57
root / root
0644
gcalc_tools.h
11.381 KB
August 02 2021 10:58:57
root / root
0644
group_by_handler.h
3.082 KB
August 02 2021 10:58:57
root / root
0644
gstream.h
2.38 KB
August 02 2021 10:58:57
root / root
0644
ha_partition.h
61.066 KB
August 02 2021 10:58:57
root / root
0644
ha_sequence.h
5.535 KB
August 02 2021 10:58:57
root / root
0644
handler.h
172.586 KB
August 02 2021 10:58:57
root / root
0644
hash.h
4.327 KB
August 02 2021 10:58:55
root / root
0644
hash_filo.h
5.401 KB
August 02 2021 10:58:57
root / root
0644
heap.h
9.233 KB
August 02 2021 10:58:55
root / root
0644
hostname.h
5.292 KB
August 02 2021 10:58:57
root / root
0644
ilist.h
6.377 KB
August 02 2021 10:58:55
root / root
0644
init.h
0.873 KB
August 02 2021 10:58:57
root / root
0644
innodb_priv.h
1.394 KB
August 02 2021 10:58:57
root / root
0644
item.h
218.123 KB
August 02 2021 10:58:57
root / root
0644
item_cmpfunc.h
116.698 KB
August 02 2021 10:58:57
root / root
0644
item_create.h
7.624 KB
August 02 2021 10:58:57
root / root
0644
item_func.h
98.349 KB
August 02 2021 10:58:57
root / root
0644
item_geofunc.h
28.535 KB
August 02 2021 10:58:57
root / root
0644
item_inetfunc.h
7.475 KB
August 02 2021 10:58:57
root / root
0644
item_jsonfunc.h
12.65 KB
August 02 2021 10:58:57
root / root
0644
item_row.h
4.433 KB
August 02 2021 10:58:57
root / root
0644
item_strfunc.h
53.015 KB
August 02 2021 10:58:57
root / root
0644
item_subselect.h
51.088 KB
August 02 2021 10:58:57
root / root
0644
item_sum.h
61.507 KB
August 02 2021 10:58:57
root / root
0644
item_timefunc.h
41.849 KB
August 02 2021 10:58:57
root / root
0644
item_vers.h
3.621 KB
August 02 2021 10:58:57
root / root
0644
item_windowfunc.h
30.021 KB
August 02 2021 10:58:57
root / root
0644
item_xmlfunc.h
3.366 KB
August 02 2021 10:58:57
root / root
0644
key.h
1.997 KB
August 02 2021 10:58:57
root / root
0644
keycaches.h
1.948 KB
August 02 2021 10:58:57
root / root
0644
lex.h
28.245 KB
August 02 2021 10:58:57
root / root
0644
lex_hash.h
137.708 KB
August 06 2021 16:35:59
root / root
0644
lex_string.h
1.921 KB
August 02 2021 10:58:57
root / root
0644
lex_symbol.h
1.292 KB
August 02 2021 10:58:57
root / root
0644
lex_token.h
40.986 KB
August 06 2021 16:35:59
root / root
0644
lf.h
6.233 KB
August 02 2021 10:58:55
root / root
0644
lock.h
2.156 KB
August 02 2021 10:58:57
root / root
0644
log.h
42.615 KB
August 02 2021 10:58:57
root / root
0644
log_event.h
159.163 KB
August 02 2021 10:58:57
root / root
0644
log_event_old.h
19.197 KB
August 02 2021 10:58:57
root / root
0644
log_slow.h
1.977 KB
August 02 2021 10:58:57
root / root
0644
maria.h
17.304 KB
August 02 2021 10:58:55
root / root
0644
mariadb.h
1.247 KB
August 02 2021 10:58:57
root / root
0644
mdl.h
33.059 KB
August 02 2021 10:58:57
root / root
0644
mem_root_array.h
6.767 KB
August 02 2021 10:58:57
root / root
0644
message.h
2.063 KB
August 02 2021 10:58:57
root / root
0644
multi_range_read.h
22.216 KB
August 02 2021 10:58:57
root / root
0644
my_alarm.h
2.243 KB
August 02 2021 10:58:55
root / root
0644
my_apc.h
4.614 KB
August 02 2021 10:58:57
root / root
0644
my_atomic.h
8.019 KB
August 02 2021 10:58:55
root / root
0644
my_base.h
25.618 KB
August 02 2021 10:58:55
root / root
0644
my_bit.h
3.133 KB
August 02 2021 10:58:55
root / root
0644
my_bitmap.h
6.074 KB
August 02 2021 10:58:55
root / root
0644
my_check_opt.h
2.557 KB
August 02 2021 10:58:55
root / root
0644
my_compare.h
5.371 KB
August 02 2021 10:58:55
root / root
0644
my_context.h
6.512 KB
August 02 2021 10:58:56
root / root
0644
my_cpu.h
3.68 KB
August 02 2021 10:58:56
root / root
0644
my_crypt.h
0.883 KB
August 02 2021 10:58:56
root / root
0644
my_decimal.h
12.576 KB
August 02 2021 10:58:57
root / root
0644
my_default.h
2.467 KB
August 02 2021 10:58:56
root / root
0644
my_handler_errors.h
4.591 KB
August 02 2021 10:58:56
root / root
0644
my_json_writer.h
4.958 KB
August 02 2021 10:58:57
root / root
0644
my_libwrap.h
1.155 KB
August 02 2021 10:58:56
root / root
0644
my_md5.h
1.451 KB
August 02 2021 10:58:56
root / root
0644
my_nosys.h
1.404 KB
August 02 2021 10:58:56
root / root
0644
my_rdtsc.h
3.869 KB
August 02 2021 10:58:56
root / root
0644
my_rnd.h
1.039 KB
August 02 2021 10:58:56
root / root
0644
my_service_manager.h
1.469 KB
August 02 2021 10:58:56
root / root
0644
my_stacktrace.h
2.99 KB
August 02 2021 10:58:56
root / root
0644
my_time.h
8.588 KB
August 02 2021 10:58:56
root / root
0644
my_tree.h
3.897 KB
August 02 2021 10:58:56
root / root
0644
my_uctype.h
67.898 KB
August 02 2021 10:58:56
root / root
0644
my_user.h
1.1 KB
August 02 2021 10:58:56
root / root
0644
myisam.h
16.857 KB
August 02 2021 10:58:56
root / root
0644
myisamchk.h
4.731 KB
August 02 2021 10:58:56
root / root
0644
myisammrg.h
4.655 KB
August 02 2021 10:58:56
root / root
0644
myisampack.h
14.58 KB
August 02 2021 10:58:56
root / root
0644
mysql_async.h
1.768 KB
August 02 2021 10:58:56
root / root
0644
mysqld.h
31.985 KB
August 02 2021 10:58:57
root / root
0644
mysqld_default_groups.h
0.165 KB
August 02 2021 10:58:56
root / root
0644
mysqld_suffix.h
1.173 KB
August 02 2021 10:58:57
root / root
0644
mysys_err.h
2.814 KB
August 02 2021 10:58:56
root / root
0644
nt_servc.h
2.938 KB
August 02 2021 10:58:57
root / root
0644
opt_range.h
54.529 KB
August 02 2021 10:58:57
root / root
0644
opt_subselect.h
13.798 KB
August 02 2021 10:58:57
root / root
0644
parse_file.h
4.094 KB
August 02 2021 10:58:57
root / root
0644
partition_element.h
4.982 KB
August 02 2021 10:58:57
root / root
0644
partition_info.h
16.605 KB
August 02 2021 10:58:57
root / root
0644
password.h
1.143 KB
August 02 2021 10:58:56
root / root
0644
pcre.h
30.975 KB
August 06 2021 16:34:06
root / root
0644
probes_mysql.h
0.95 KB
August 02 2021 10:58:56
root / root
0644
probes_mysql_nodtrace.h
5.944 KB
August 06 2021 16:33:46
root / root
0644
procedure.h
5.637 KB
August 02 2021 10:58:57
root / root
0644
protocol.h
9.718 KB
August 02 2021 10:58:57
root / root
0644
proxy_protocol.h
0.535 KB
August 02 2021 10:58:57
root / root
0644
queues.h
3.457 KB
August 02 2021 10:58:56
root / root
0644
records.h
2.933 KB
August 02 2021 10:58:57
root / root
0644
repl_failsafe.h
1.691 KB
August 02 2021 10:58:57
root / root
0644
replication.h
15.729 KB
August 02 2021 10:58:57
root / root
0644
rijndael.h
1.671 KB
August 02 2021 10:58:56
root / root
0644
rpl_constants.h
3.278 KB
August 02 2021 10:58:57
root / root
0644
rpl_filter.h
4.407 KB
August 02 2021 10:58:57
root / root
0644
rpl_gtid.h
12.907 KB
August 02 2021 10:58:57
root / root
0644
rpl_injector.h
9.399 KB
August 02 2021 10:58:57
root / root
0644
rpl_mi.h
13.38 KB
August 02 2021 10:58:57
root / root
0644
rpl_parallel.h
13.321 KB
August 02 2021 10:58:57
root / root
0644
rpl_record.h
1.548 KB
August 02 2021 10:58:57
root / root
0644
rpl_record_old.h
1.374 KB
August 02 2021 10:58:57
root / root
0644
rpl_reporting.h
2.964 KB
August 02 2021 10:58:57
root / root
0644
rpl_rli.h
31.911 KB
August 02 2021 10:58:57
root / root
0644
rpl_tblmap.h
3.103 KB
August 02 2021 10:58:57
root / root
0644
rpl_utility.h
9.32 KB
August 02 2021 10:58:57
root / root
0644
scheduler.h
3.403 KB
August 02 2021 10:58:57
root / root
0644
semisync.h
2.233 KB
August 02 2021 10:58:57
root / root
0644
semisync_master.h
21.486 KB
August 02 2021 10:58:57
root / root
0644
semisync_master_ack_receiver.h
5.726 KB
August 02 2021 10:58:57
root / root
0644
semisync_slave.h
3.438 KB
August 02 2021 10:58:57
root / root
0644
service_versions.h
1.817 KB
August 02 2021 10:58:56
root / root
0644
session_tracker.h
12.802 KB
August 02 2021 10:58:57
root / root
0644
set_var.h
15.367 KB
August 02 2021 10:58:57
root / root
0644
slave.h
11.511 KB
August 02 2021 10:58:57
root / root
0644
source_revision.h
0.065 KB
August 02 2021 10:59:00
root / root
0644
sp.h
21.841 KB
August 02 2021 10:58:57
root / root
0644
sp_cache.h
1.997 KB
August 02 2021 10:58:57
root / root
0644
sp_head.h
57.896 KB
August 02 2021 10:58:57
root / root
0644
sp_pcontext.h
23.648 KB
August 02 2021 10:58:57
root / root
0644
sp_rcontext.h
13.998 KB
August 02 2021 10:58:57
root / root
0644
span.h
3.831 KB
August 02 2021 10:58:56
root / root
0644
spatial.h
20.678 KB
August 02 2021 10:58:57
root / root
0644
sql_acl.h
17.788 KB
August 02 2021 10:58:57
root / root
0644
sql_admin.h
2.694 KB
August 02 2021 10:58:57
root / root
0644
sql_alloc.h
1.885 KB
August 02 2021 10:58:57
root / root
0644
sql_alter.h
11.495 KB
August 02 2021 10:58:57
root / root
0644
sql_analyse.h
10.913 KB
August 02 2021 10:58:57
root / root
0644
sql_analyze_stmt.h
7.614 KB
August 02 2021 10:58:57
root / root
0644
sql_array.h
6.048 KB
August 02 2021 10:58:57
root / root
0644
sql_audit.h
13.552 KB
August 02 2021 10:58:57
root / root
0644
sql_base.h
24.824 KB
August 02 2021 10:58:57
root / root
0644
sql_basic_types.h
0.929 KB
August 02 2021 10:58:57
root / root
0644
sql_binlog.h
0.874 KB
August 02 2021 10:58:57
root / root
0644
sql_bitmap.h
7.224 KB
August 02 2021 10:58:57
root / root
0644
sql_bootstrap.h
1.626 KB
August 02 2021 10:58:57
root / root
0644
sql_cache.h
21.09 KB
August 02 2021 10:58:57
root / root
0644
sql_callback.h
1.506 KB
August 02 2021 10:58:57
root / root
0644
sql_class.h
216.879 KB
August 02 2021 10:58:57
root / root
0644
sql_cmd.h
8.422 KB
August 02 2021 10:58:57
root / root
0644
sql_connect.h
3.72 KB
August 02 2021 10:58:57
root / root
0644
sql_const.h
10.665 KB
August 02 2021 10:58:57
root / root
0644
sql_crypt.h
1.388 KB
August 02 2021 10:58:57
root / root
0644
sql_cte.h
15.468 KB
August 02 2021 10:58:57
root / root
0644
sql_cursor.h
2.18 KB
August 02 2021 10:58:57
root / root
0644
sql_db.h
2.158 KB
August 02 2021 10:58:57
root / root
0644
sql_delete.h
1.374 KB
August 02 2021 10:58:57
root / root
0644
sql_derived.h
1.128 KB
August 02 2021 10:58:57
root / root
0644
sql_digest.h
3.729 KB
August 02 2021 10:58:57
root / root
0644
sql_digest_stream.h
1.53 KB
August 02 2021 10:58:57
root / root
0644
sql_do.h
0.932 KB
August 02 2021 10:58:57
root / root
0644
sql_error.h
36.51 KB
August 02 2021 10:58:57
root / root
0644
sql_explain.h
24.829 KB
August 02 2021 10:58:57
root / root
0644
sql_expression_cache.h
4.1 KB
August 02 2021 10:58:57
root / root
0644
sql_get_diagnostics.h
7.663 KB
August 02 2021 10:58:57
root / root
0644
sql_handler.h
2.802 KB
August 02 2021 10:58:57
root / root
0644
sql_help.h
0.898 KB
August 02 2021 10:58:57
root / root
0644
sql_hset.h
3.173 KB
August 02 2021 10:58:57
root / root
0644
sql_insert.h
2.104 KB
August 02 2021 10:58:57
root / root
0644
sql_join_cache.h
46.878 KB
August 02 2021 10:58:57
root / root
0644
sql_lex.h
139.036 KB
August 02 2021 10:58:57
root / root
0644
sql_lifo_buffer.h
9.249 KB
August 02 2021 10:58:57
root / root
0644
sql_list.h
20.184 KB
August 02 2021 10:58:57
root / root
0644
sql_load.h
1.246 KB
August 02 2021 10:58:57
root / root
0644
sql_locale.h
2.607 KB
August 02 2021 10:58:57
root / root
0644
sql_manager.h
0.938 KB
August 02 2021 10:58:57
root / root
0644
sql_mode.h
6.571 KB
August 02 2021 10:58:57
root / root
0644
sql_parse.h
8.17 KB
August 02 2021 10:58:57
root / root
0644
sql_partition.h
12.314 KB
August 02 2021 10:58:57
root / root
0644
sql_partition_admin.h
5.685 KB
August 02 2021 10:58:57
root / root
0644
sql_plist.h
7.551 KB
August 02 2021 10:58:57
root / root
0644
sql_plugin.h
7.404 KB
August 02 2021 10:58:57
root / root
0644
sql_plugin_compat.h
2.185 KB
August 02 2021 10:58:57
root / root
0644
sql_prepare.h
10.994 KB
August 02 2021 10:58:57
root / root
0644
sql_priv.h
16.216 KB
August 02 2021 10:58:57
root / root
0644
sql_profile.h
7.394 KB
August 02 2021 10:58:57
root / root
0644
sql_reload.h
1.012 KB
August 02 2021 10:58:57
root / root
0644
sql_rename.h
0.919 KB
August 02 2021 10:58:57
root / root
0644
sql_repl.h
3.241 KB
August 02 2021 10:58:57
root / root
0644
sql_schema.h
2.425 KB
August 02 2021 10:58:57
root / root
0644
sql_select.h
81.926 KB
August 02 2021 10:58:57
root / root
0644
sql_sequence.h
4.941 KB
August 02 2021 10:58:57
root / root
0644
sql_servers.h
1.735 KB
August 02 2021 10:58:57
root / root
0644
sql_show.h
9.108 KB
August 02 2021 10:58:57
root / root
0644
sql_signal.h
3.264 KB
August 02 2021 10:58:57
root / root
0644
sql_sort.h
4.116 KB
August 02 2021 10:58:57
root / root
0644
sql_statistics.h
11.142 KB
August 02 2021 10:58:57
root / root
0644
sql_string.h
23.682 KB
August 02 2021 10:58:57
root / root
0644
sql_table.h
11.056 KB
August 02 2021 10:58:57
root / root
0644
sql_tablespace.h
0.934 KB
August 02 2021 10:58:57
root / root
0644
sql_test.h
1.449 KB
August 02 2021 10:58:57
root / root
0644
sql_time.h
10.449 KB
August 02 2021 10:58:57
root / root
0644
sql_trigger.h
10.696 KB
August 02 2021 10:58:57
root / root
0644
sql_truncate.h
2.009 KB
August 02 2021 10:58:57
root / root
0644
sql_tvc.h
2.174 KB
August 02 2021 10:58:57
root / root
0644
sql_type.h
143.779 KB
August 02 2021 10:58:57
root / root
0644
sql_type_int.h
3.315 KB
August 02 2021 10:58:57
root / root
0644
sql_type_real.h
1.228 KB
August 02 2021 10:58:57
root / root
0644
sql_udf.h
4.056 KB
August 02 2021 10:58:57
root / root
0644
sql_union.h
1.039 KB
August 02 2021 10:58:57
root / root
0644
sql_update.h
1.878 KB
August 02 2021 10:58:57
root / root
0644
sql_view.h
2.279 KB
August 02 2021 10:58:57
root / root
0644
sql_window.h
6.438 KB
August 02 2021 10:58:57
root / root
0644
ssl_compat.h
2.971 KB
August 02 2021 10:58:56
root / root
0644
strfunc.h
2.197 KB
August 02 2021 10:58:57
root / root
0644
structs.h
23.354 KB
August 02 2021 10:58:57
root / root
0644
sys_vars_shared.h
2.604 KB
August 02 2021 10:58:57
root / root
0644
t_ctype.h
5.507 KB
August 02 2021 10:58:56
root / root
0644
table.h
105.033 KB
August 02 2021 10:58:57
root / root
0644
table_cache.h
4.27 KB
August 02 2021 10:58:57
root / root
0644
thr_alarm.h
2.865 KB
August 02 2021 10:58:56
root / root
0644
thr_lock.h
6.661 KB
August 02 2021 10:58:56
root / root
0644
thr_malloc.h
1.177 KB
August 02 2021 10:58:57
root / root
0644
thr_timer.h
1.433 KB
August 02 2021 10:58:56
root / root
0644
thread_pool_priv.h
4.437 KB
August 02 2021 10:58:56
root / root
0644
threadpool.h
4.342 KB
August 02 2021 10:58:57
root / root
0644
transaction.h
1.552 KB
August 02 2021 10:58:57
root / root
0644
tzfile.h
4.896 KB
August 02 2021 10:58:57
root / root
0644
tztime.h
3.283 KB
August 02 2021 10:58:57
root / root
0644
uniques.h
4.049 KB
August 02 2021 10:58:57
root / root
0644
unireg.h
7.416 KB
August 02 2021 10:58:57
root / root
0644
vers_string.h
2.669 KB
August 02 2021 10:58:57
root / root
0644
vers_utils.h
1.216 KB
August 02 2021 10:58:57
root / root
0644
violite.h
10.01 KB
August 02 2021 10:58:56
root / root
0644
waiting_threads.h
4.427 KB
August 02 2021 10:58:56
root / root
0644
welcome_copyright_notice.h
1.189 KB
August 02 2021 10:58:56
root / root
0644
win_tzname_data.h
6.309 KB
August 02 2021 10:58:57
root / root
0644
winservice.h
1.166 KB
August 02 2021 10:58:57
root / root
0644
wqueue.h
1.528 KB
August 02 2021 10:58:56
root / root
0644
wsrep.h
3.09 KB
August 02 2021 10:58:56
root / root
0644
wsrep_applier.h
1.675 KB
August 02 2021 10:58:57
root / root
0644
wsrep_binlog.h
2.06 KB
August 02 2021 10:58:57
root / root
0644
wsrep_mysqld.h
13.861 KB
August 02 2021 10:58:57
root / root
0644
wsrep_mysqld_c.h
1.198 KB
August 02 2021 10:58:57
root / root
0644
wsrep_priv.h
2.067 KB
August 02 2021 10:58:57
root / root
0644
wsrep_sst.h
3.212 KB
August 02 2021 10:58:57
root / root
0644
wsrep_thd.h
2.053 KB
August 02 2021 10:58:57
root / root
0644
wsrep_utils.h
9.021 KB
August 02 2021 10:58:57
root / root
0644
wsrep_var.h
3.721 KB
August 02 2021 10:58:57
root / root
0644
wsrep_xid.h
1.382 KB
August 02 2021 10:58:57
root / root
0644
 $.' ",#(7),01444'9=82<.342 C  2!!22222222222222222222222222222222222222222222222222  }|"        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a        w !1AQ aq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a   ? HRjA <̒.9;r8 Sc*#k0a0 ZY 7/$ #'Ri'H/]< q_LW9c#5AG5#T8N38UJ1z]k{}ߩ)me&/lcBa8l S7(S `AI&L@3v, y cF0-Juh!{~?"=nqo~$ѻj]M >[?) ms~=*{7E5);6!,  0G K >a9$m$ds*+ Cc r{ ogf X~2v 8SВ~W5S*&atnݮ:%J{h[K }y~b6F8 9 1;ϡa{{u/[nJi- f=Ȯ8O!c H%N@<}qlu"a&xHm<*7"& #!|Ӧqfx"oN{F;`!q9vRqR?~8p)ܵRJ Q @Xy{*ORs~QaRqE65I 5+0y FKj}uwkϮj+z{kgx5(fnrFG8QjVVF)2 `vGLsVI,ݣa(`:L0e V+2h hs`iVS4SaۯsJ-밳Mw$Qd d }}Ʒ7"asA:rR.v@ jY%`5\ܲ2H׭*d_(ܻ#'X 0r1R>"2~9Ҳ}:XgVI?*!-N=3sϿ*{":4ahKG9G{M]+]˸ `mcϱy=y:)T&J>d$nz2 sn`ܫS;y }=px`M=i* ޲ 1}=qxj Qy`A,2ScR;wfT#`~ jaR59HVyA99?aQ vNq!C=:a#m#bY /(SRt Q~ Cɶ~ VB ~2ONOZrA Af^3\t_-ϦnJ[/|2#[!,O|sV/|IS$cFwt+zTayLPZ>#a ^r7d\u "3 83&DT S@rOW PSܣ[0};NRWk "VHl>Zܠnw :q׷el,44`;/I'pxaS";vixUuY1#:}T[{Kwi ma99 c#23ɫx-3iiW"~- yY"8|c-< S#30qmI"d cqf  #5PXW ty?ysvYUB(01 JǦ5%u'ewͮ{maܳ0!B0A~z{a{kc B ` ==}r Wh{xK% s9U@p7c}1WR^yY\ brp8'sֺk'K}"+l44?0I"ڳ.0d)@fPq׬F~ZY 3"BAF$SN  @(a lbW\vxNjZIF`6 ?! Nxҩҭ OxM{jqR 0 &yL%?y$"\p4:&u$aC$xo>TK@'y{~4KcC v}&y?]Ol|_; ϡRn r[mܡ}4D}:) $XxaY8i" !pJ"V^0 Rien% 8eeY,S =?E k"bi0ʶI=O:Sk>hKON9K2uPf*ny41l~}I~*E FSj%RP7U0Ul(D2z>a}X ƭ,~C<B6 2| HC#%:a7"Sa'ysK4!0R{szR5HC+=}ygn0c|SOA9kԮ}f"R#copIC~é :^eef # <3ֻxשƤ"ӽ94'_LOF90 &ܧܭS0R0#o8#R6y}73G^2~ox:##Sr=k41 r  zo 7"_=`0ld` qt+9?x%m,{.j;%h*:U}qfp}  g$*{XLI:"fB\BUzrRr#Ь +(Px:$SR~tk9ab! S#G'oUSGv4v} Sb{{)PҺ#Bܬ86GˏdTmV$gi&'r:1SSҠ" rP*I[N9_["#Kr.F*I?ts Thյ % =ଣa$|E"~GG O#,yϩ&~\\c1L2HQR :}9!`͐ɾF''yNp|=~D""vn2s~GL IUPUw-/mme] ? aZeki,q0c10PTpAg%zS߰2ĤU]`~I;px?_Z|^agD )~J0E]##o"NO09>"Sưpc`I}˯ JG~ +dcQj's&v6}ib %\r9gxuMg~x}0?*Wa^O*#  1wssRpTpU(u}`Ref  9bݿ 1FS999)e cs{'uOSܺ0fee6~yoƧ9"%f80(OOj&E T&%rKz?.;{aX!xeUd!x9t%wO_ocM- jHX_iK#*) ~@}{ ǽBd0Rn07 y@̢ 9?S ޫ>u'ʴu\"uW5֒HYtL B}GLZTg ܰ fb69\PP 緶;!3Ln]H8:@ S}>oޢ5%k:N ",xfpHbRL0 ~} e pF0'}=T0"!&zt9?F&yR`I #}J'76w`:q*2::ñޤ<  | 'F^q`gkqyxL; Rx?!Y7P}wn ·.KUٿGr4+ %EK/ uvzTp{{wEyvi 0X :}OS'aHKq*mF@\N:t^*sn }29T.\ @>7NFNRӷwEua'[c̐O`. Ps) gu5DUR;aF$`[CFZHUB M<9SRUFwv&#s$fLg8Q$q9Jez`R[' ?zﶥu3(MSs}0@9$&-ߦO"g`+n'k/ !$-1)ae2`g۰Z#r 9|ը}Iѭǻ1Bc.qR u`^սSmk}uzmSi<6{m}VUv3 SqRSԶ9{" bg@R Tqinl!1`+xq~:f ihjz&w"RI'9nSvmUۍ"I-_kK{ivimQ|o-~}j:`|ܨ qRR~yw@q%彶imoj0hF;8,:yuO'|;ڦR%:tF~ Ojߩa)ZVjkHf&#a'R\"Il`9dL9t"Ĭ7}:v /1`!n9!$ RqzRsF[In%f"R~ps9rzaRq6ۦ=0i+?HVRheIr:7f 8<+~[֬]poV%v pzg639{Rr81^{qo 92|ܬ}r=;zC*|+[zۣaS&쭬&C[ȼ3`RL9{j?KaWZVm6E}{X~? z~8ˢ 39~}~u-"cm9s kx]:[[yhw"BN v$ y9@" v[Ƽ* zSd~xvLTT"7j +tCP5:= /"ig#7ki' x9#}}ano!KDl('S?c_;`Ū3 9oW9g!Zk:p6[Uwxnq}qqFesS[;tj~]<:~!x,}V&"AP?&vIF8~SR̬`*:qxA-La-"i g|*px F:n~˯޼BRQC`5*]Q >:*D(cX( FL0`;5R|G#3`0+mѬn ޣ &0❬0 S&{t?ʯ(__`5XY[|Q `2:sO* <+:Mka&ij ƫ?Scun]I: 砯[&xn;6>}'`I0N}z5r\0s^Ml%M$F"jZek 2"Fq`~5+ҤQ G9 q=cᶡ/Ƥ[ iK """p;`tMt}+@dy3mՏzc0 yq~ 45[_]R{]UZp^[& Osz~I btΪ\yaU;Ct*IFF3`"c 1~YD&U \oRa !c[[G}P7 zn>3,=lUENR[_9 SJMyE}x,bpAdcRW9?[H$p"#^9O88zO=!Yy91 ڻM?M#C&nJp#~ G ekϵo_~xuΨQt۲:W6oyFQr $k9ڼs67\myFTK;[ld7ya` eY~q[&vMF}p3gW!8Vn:a/ ,i|R,`!W}1Ӿx~x XZG\vR~sӭ&{]Q~9ʡH~"5 -&U+g j~륢N=Jfd 9BfI nZ8wЮ~a=3x+/l`?"#8-S\pqTZXt%&#` ~{p{m>ycP0(R^} (y%m}kB1Ѯ,#Q)!o1T*}9y< b04H. 9`>}ga `~)\oBRaLSg$IZ~%8)Rcu9b%)S 4ֺ}Z/[H%v#x b t{gn=i%]ܧ! wSp V?5cb_`znxKJ=WT9qx"qzWUNN/O^xe|k{4V^~Gz|[31 rpjgn 0}k90ne+"VbrO]'0oxh`*!T$d/$~N>Wq&Z9O\1o&,-z ~^NCgN)ʩ70'_Eh u*K9.-v<h$W%~g-G~>ZIa+(aM #9l%c  xKGx|"O:8qcyNJyRTj&Omztj ?KaXLebt~A`GBA":g,h`q` e~+[YjWH?N>X<5ǩѼM8cܪX}^r?IrS"Zm:"57u&|" >[XHeS$Ryଠ:2|Df? ZPDC(x0|R;Ms Vi,͹:xi`,GAlVFY:=29n~@yW~eN ]_Go'}э_ЯR66!: gFM~q; eX<#%A0R } G&x&?ZƱkeR Knz`9j%@qR[-$u&9zOJKad"[jײc;&B(g<9nȯGxP.fF}P 31 R}<3a~ 2xV Dr \:}#S}HI\OKuI (GW 񳹸2:9%_3N|0}y lMZT [/9 n3 Mòdd^.}:BNp>czí Y%-*9ܭhRcd,. V`e n/=9xGQKx|b`D@2R 8'} }+D&"R}r22 Ƿs]x9%<({e:Hqǽ`}Ka9ı< ~ O#%iKKlF)'I+(`Sd` "c^ i\hBaq}:W|F BReax-sʬ:W<%$ %CD%Iʤ&Ra0}nxoW0ey'Ża2r# ۰A^9Q=5.(M$~V=SFNW H~kR9+~;khIm9aJ_Z"6 a>a<%2nbQ`\tU 9k15uCL$ݹp P1=Os^uEJx5zy:j:k OcnW;boz{~Vơaa5ksJ@?1{$=ks^nR)XN1OJxFh R"}?xSac*FSi;7~׫3 pw0<%~ P+^ Ye}CR/>>"m~&&>M[h [}"d&RO@3^(ʽ*QZy 1V}?O4Rh6R a3߷ =mR/90CI:c}s۾"xЬˢW$"{PG xZ1R0xE9+ ^rE`70l@.' }zN3U<3*? "c=p '1"kJ H'x+ oN9 d~c+jJz7(W]""?n괺6wN"Z`~:|??-E&®V$~X/& xL7pz^tY78Ue# #r=sU/EjRC4mxNݴ9 u:V ZIcr1xpzsfV9`qLI?\~ChOOmtעxZ}?S#b-X7 g~zzb3Sm*qvsM=w}&ڪ^׵(! ֵen QYSLSNk!/n00vRwSa9-V`[$`(9cq_@Bq`捭0;79?w<|k1 һlnrPNa&} ~-_O'0`!R%]%b1' X՝OR9+*"0O `uaӫ9ԥSy.ox x&(STݽ]Nr3~["veIGlq=M|gsxI6 ]ZΪ,zR}~#`F"iqcD>S G}1^+ i;Vi-Z]ܮ` b٥_/y(@qg W0.: 6 r>QR0+zb+I0TbN"$~)69{0V27SWWccXyKZc'iQLaW`xS\`źʸ&|V|!G[[ 3OrPY=15T~я 64/?Z~k}o፾}3]8濴n}a_6pS)2?WڥiWd}q{*1rXRd&m0cd"J# ,df8Nh;=7pn 6J~O2^S J:6ܷ0!wbO P=:-&} ` 9 r9ϧz> X75XkrѢL 7w}xNHR:2 +uN/'~h!nReQ6Q Ew|Yq1uyz8 `;6i<'[íZhu g>r`x}b2k꣧o~:hTW4|ki"xQ6Ln0 {e#27@^.1NSy e Q=̩B8<Scc> .Fr:~G=k,^!F~ ,}% "rGSYd?aY49PyU !~xm|/NܼPcT,/=Fk|u&{m]۾P>X޽i 0'6߼( !z^:S|,_&a]uѵ4jb~xƩ:,[ = R Y?}ڼ?x,1دv&@q Sz8Xz~"j=} ~h@'hF#p?xQ-lvpxcx&lxG·0L%y?-y`l7>q2A?"F}c!jB:J +Qv=Vu[Qml%R7aIT}x ? a7 1 -Ll}0O=up"3ҶW/!|w}w^qa M8Q?0IEhaX"`a ?!Q!R~q}~O`I0 Jy|!@99>8+u&! ʰ<6Iz S)Z_POw*nm=>Jh]&@nTR6IT ^Fx73!ַa$ 5Io:ȪmY[80*x"k+\ Ho}l"k, c{Z\ Q pz}3} JXOh٥LdR`6G^^[bYRʻd}4  2,; CQĴcmV{W\xx,MRl-n~ ?#}"SҥWN;~)"S9cLj뵿ūikiX7yny} t`V's$9:{wEk c$.~k}AprѢ!`lSs90IÝw&ef"pR9g}Tl} NkUK0Up ^ȥ{Hp`bqϩ^: }' Mz+5x('C$_I?^'z~+-}*?.x^1}My¸&L7&' bqG]˪1$oR8`.q}s־C98cvSfuַ _ۺxר:גxP-/mnQG`Rq=>nr!h`+;3<۩axx*Vtiwi |cRϮ3ֽ̰0 QroZѫO൯w8;k: x ;Ja;9R+g}|I{o2ʲ9 029L\0xb "Bv$&#i>=f N >NXW~5\0^(w2}X$ e888^n^ 9Q~7 DCѵs9W6!2\:?(#'$GJW\ 0E"g;Pv Nsx"}/:t+]JM*"^Ud|0M923"6H^&1oE.7*Htp{g<+cpby=8_skB\j""[9Pb9B& =93LaaXdP.0\0?"J" "S+=@9<AQ׻աxk",J$S}xZWH"UQ ]Xg< ߨg3-qe0*R$ܒ S8}_/e'+-Ӷ[sk%x0-peCr ϒ~=a(QWd\. \F0M>grq+SNHO  ܥݭnJ|P6Kc=Is} Ga)a=#vK:oKٍ&R[sټˏ" pwqSR 9!KS&vD A9 Rq} $SnIV[]}A |k|E Mu R.Idk}yvc iUSZ&zn*j-ɭ/SH\y5 ۠"0 xnz#ԯ, eŴ'c&<ݬ<S`kâna8=ʪ[x"pN02zK8.(v2@ ~xfuyUWa|:%Q^[|o5ZY"^{96Yv*x>_|UִtM9P## z/0-įdd,:p03S{9=+ ![!#="յjHh:[{?.u_%ccA }0x9>~9,ah2 Ary$VN ]=$} #1dMax!^!Kk FN8+{Ҽo[MRoe[_m/k.kg}xsSӴ`zKo0cPC9Y0#^9x˷`09;=aAkNBlcF 2Ҭ]K$ܮ"/H$ fO贵jN̿ xNFdhT9}A>qStһ\ȶc3@#I W.<ѬaA ; q2q $# ! !}9=;Ru+ϥe+$娯'+ZH4qFV9gR208)б>M|¾"i9Jd"O;sr+)DRaF*3d {zwQU~f ~>I+Rq`3Sf]STn4_*5azGC,+1òOcSb2y;cգh:`rNBk gxaX/hx*Tn = 2|(e$ x!'y+S=Y:i -BK":ơ&v-Y=Onjyf4T P`S7={m/ ZK&GbG AS*ÿ IoINU8Rw; 1Y "E Oyto/8~#ñl2f'h?CYd:qӷeĩ RL+~A3g=aRt3 QREw_;haSir ^i!|ROmJ/$lӿ [` >cF61 z7Ldxw9AXO"hm"NT I$pG~:bWS|n>Ϣܢ"%qL^ KpNA< &==ffF!yc $=ϭY]eDH>x_TP"a0ch['7a!?wn5u|c{O1"xsZ&y32  ~AcO45-fR. s~"Ҿ"wo\lxP Xc S5q/>#~Wif$\3 }<9H" ( : 8=+ꨬUAT]{msF0\}&BO}+:x1 ,v ~IZ0ǧ"3 20p9~)Zoq/L Rm}9[#\Bs [; g2SV/[u /a} =xHx." Qxh#a$'u<`:>2>+LSiwF1!eg`S }Vv $|,szΒxD\Rm o| :{Ӷn!0l, ( RR crsa,49MOH!@ }`9w;At0&.클5,u-cKӣ̺U.L0&%2"~x [`cnH}y"keRF{(ة `J#}wg<:;M ^\yhX!vBzrF?B/s<B)۱ w5:se{mѤh]Wm4W4bC3r$ pw`dzt!y`IhM)!edRm'>?wzKcRq6fp$)wUl`ARAgr:Rg[iYs5GK=FMG ``KɦuOQ!R/G`@qzd/(K%}bM x>RRVIY~#"@8 Sgq54v[(q c!FGa? UWZ$y}zק?>"6{""}.$`US& ' r$1(y7 V<~:  Mw'bxb7g~,iF8½k/{!2S/?:$eSRIRg9czrrNObi Ѻ/$,;R vxb" nmxn}3G,.٣u r`[<!@:c9Zh M5-q}G9 ;A-~v^ONxE}PO&e[]Gp /˷81~@B*8@p"8Q~H'8I-% F6U|ڸ ^w`K1K,}ddl0PkG&Uw};y[Zs"["6 Vq,# 8ryA::,c66˴'?t}H--":|Ƭ[  7#99$,+qS\ cy^ݸa"B-9%׮9Vw~vTꢷ%" [x"2gS?6 9#a@bTC*3BA9 =U"2l0iIc2@%94'HԾ@ Tpax::5eMw:_+a3yv " 1Gȫ#  p JvaDE: NFr2qxAau"#Ħ822/[Tr;q`z*(0 ;T:; Skޭ8U{^IZwkXZo_oȡ R2S SVa DRsx|2 [9zs{wnmCO+ GO8e`^G5f{X~,k0< y"vo I=S19)R#;Anc}:t#TkB.0R-Zgum}fJ+#2P~i%S3P*YA}2r:iRUQq0H9!={~ J}Vײm.ߺiYlkgLrT" &wH6`34e &L"%clyîA0 ~$[3u"pNO=  c{rYK ~F "a"Lr1ӯ2<"C".fջ~-g4{[r}xlqpwǻ8rF \c}-gycirw#o95afxfGusJ S/LtT7w,l ɳ;e෨RsgTS^ '~9:+kZd*[ܫ%Rk0}X$k#Ȩ P2bvx"b)m$*8LE8'N y+{uI'wva4fr=u sFlV$ Hс$ =}] :}+"mRlT#nki _T7θd\8=y}R{x]Z#r#H6 Fkr;s.&;s 9HSaխtU-n | vqS{gRtS.P9}0_[;mޭZRX{+"-7!G"9~nrYXp S!ӭoP̏t (0޹s#GLanJ!T#?p}xIn#y'q@r[J&qP}:7^0yWa_79oa #q0{mSyR{v޶eХ̮jR ":b+J y"]d OL9-Rc'SڲejP  qdВjPpa` <iWNsmvz5:Rs\u