~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/ctype-simple.cc

  • Committer: Lee Bieber
  • Date: 2010-11-08 00:56:57 UTC
  • mfrom: (1911.1.4 build)
  • Revision ID: kalebral@gmail.com-20101108005657-tvx0sxjyx29ldrh7
Merge Stewart - Fix bug 616466: auto_increment and PBMS problem - adds test case for this, can no longer reproduce the problem
Merge Stewart - fix bug 621755: blitzdb dictionary not updated after alter table
Merge Stewart - fix bug 668880: remove use of exit in archive storage engine
Merge Gustaf - replace macros functions

Show diffs side-by-side

added added

removed removed

Lines of Context:
679
679
**       1 if matched with wildcard
680
680
*/
681
681
 
 
682
inline static int likeconv(const charset_info_st *cs, const char c) 
 
683
{
682
684
#ifdef LIKE_CMP_TOUPPER
683
 
#define likeconv(s,A) (unsigned char) my_toupper(s,A)
 
685
  return (unsigned char) my_toupper(cs, c);
684
686
#else
685
 
#define likeconv(s,A) (unsigned char) (s)->sort_order[(unsigned char) (A)]
686
 
#endif
687
 
 
688
 
#define INC_PTR(cs,A,B) (A)++
689
 
 
 
687
  return cs->sort_order[(unsigned char)c];
 
688
#endif    
 
689
}
 
690
 
 
691
 
 
692
inline static const char* inc_ptr(const charset_info_st *cs, const char *str, const char *str_end)
 
693
{
 
694
  // (Strange this macro have been used. If str_end would actually
 
695
  // have been used it would have made sense. /Gustaf)
 
696
  (void)cs;
 
697
  (void)str_end;
 
698
  return str++; 
 
699
}
690
700
 
691
701
int my_wildcmp_8bit(const CHARSET_INFO * const cs,
692
702
                    const char *str,const char *str_end,
714
724
      {
715
725
        if (str == str_end)                     /* Skip one char if possible */
716
726
          return(result);
717
 
        INC_PTR(cs,str,str_end);
 
727
        inc_ptr(cs,str,str_end);
718
728
      } while (++wildstr < wildend && *wildstr == w_one);
719
729
      if (wildstr == wildend)
720
730
        break;
733
743
        {
734
744
          if (str == str_end)
735
745
            return(-1);
736
 
          INC_PTR(cs,str,str_end);
 
746
          inc_ptr(cs,str,str_end);
737
747
          continue;
738
748
        }
739
749
        break;                                  /* Not a wild character */
746
756
      if ((cmp= *wildstr) == escape && wildstr+1 != wildend)
747
757
        cmp= *++wildstr;
748
758
 
749
 
      INC_PTR(cs,wildstr,wildend);      /* This is compared trough cmp */
 
759
      inc_ptr(cs,wildstr,wildend);      /* This is compared trough cmp */
750
760
      cmp=likeconv(cs,cmp);
751
761
      do
752
762
      {
976
986
 
977
987
#define PLANE_SIZE      0x100
978
988
#define PLANE_NUM       0x100
979
 
#define PLANE_NUMBER(x) (((x)>>8) % PLANE_NUM)
 
989
inline static int plane_number(uint16_t x)
 
990
{
 
991
  return ((x >> 8) % PLANE_NUM);
 
992
}
980
993
 
981
994
static int pcmp(const void * f, const void * s)
982
995
{
1010
1023
  for (i=0; i< 0x100; i++)
1011
1024
  {
1012
1025
    uint16_t wc=cs->tab_to_uni[i];
1013
 
    int pl= PLANE_NUMBER(wc);
 
1026
    int pl= plane_number(wc);
1014
1027
 
1015
1028
    if (wc || !i)
1016
1029
    {