Commit d487e5a9 authored by monty@donna.mysql.com's avatar monty@donna.mysql.com
Browse files

Use new bitmap interface

Patches for Armstrong
Removed warnings when using REPAIR TABLE .. EXTENDED
parent cc9f24bc
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -41096,6 +41096,8 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
@itemize @bullet
@item
Changed output format of @code{SHOW OPEN TABLES}.
@item
Allow @code{SELECT expression LIMIT ...}.
@item
Added @code{IDENTITY} as a synonym for @code{AUTO_INCREMENT} (like SyBase).
@@ -41175,6 +41177,8 @@ not yet 100 % confident in this code.
@appendixsubsec Changes in release 3.23.33
@itemize bullet
@item
Removed warnings when running @code{REPAIR TABLE .. EXTENDED}.
@item
Fixed core-dump bug when using @code{GROUP BY} on an alias, where
the alias was the same as an existing column name.
@item
+3 −3
Original line number Diff line number Diff line
@@ -879,9 +879,9 @@ then
	  MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
          if expr "$CC" : ".*gcc.*"
          then
            with_named_thread="-pthread -lnsl"
            with_named_thread="-pthread -lsocket -lnsl"
          else
            with_named_thread="-Kthread -lnsl"
            with_named_thread="-Kthread -lsocket -lnsl"
          fi
          if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
          then
@@ -923,7 +923,7 @@ then
    if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so
    then
      MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK
      with_named_thread="-Kthread -lnsl"
      with_named_thread="-Kthread -lsocket -lnsl"
      if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null
      then
        AC_DEFINE(HAVE_UNIXWARE7_THREADS)
+23 −1
Original line number Diff line number Diff line
@@ -811,6 +811,28 @@ typedef union {
#else
#define float4get(V,M)   memcpy_fixed((byte*) &V,(byte*) (M),sizeof(float))
#define float4store(V,M) memcpy_fixed((byte*) V,(byte*) (&M),sizeof(float))

#if (__FLOAT_WORD_ORDER == __BIG_ENDIAN)
#define doublestore(T,V)    { *(T)= ((byte *) &V)[4];\
                              *((T)+1)=(char) ((byte *) &V)[5];\
                              *((T)+2)=(char) ((byte *) &V)[6];\
                              *((T)+3)=(char) ((byte *) &V)[7];\
                              *((T)+4)=(char) ((byte *) &V)[0];\
                              *((T)+5)=(char) ((byte *) &V)[1];\
                              *((T)+6)=(char) ((byte *) &V)[2];\
                              *((T)+7)=(char) ((byte *) &V)[3]; }
#define doubleget(V,M) { double def_temp;\
                              ((byte*) &def_temp)[0]=(M)[4];\
                              ((byte*) &def_temp)[1]=(M)[5];\
                              ((byte*) &def_temp)[2]=(M)[6];\
                              ((byte*) &def_temp)[3]=(M)[7];\
                              ((byte*) &def_temp)[4]=(M)[0];\
                              ((byte*) &def_temp)[5]=(M)[1];\
                              ((byte*) &def_temp)[6]=(M)[2];\
                              ((byte*) &def_temp)[7]=(M)[3];\
			      (V) = def_temp; }
#endif /* __FLOAT_WORD_ORDER */

#define float8get(V,M)   doubleget((V),(M))
#define float8store(V,M) doublestore((V),(M))
#endif /* WORDS_BIGENDIAN */
@@ -863,7 +885,7 @@ typedef union {
#ifndef doubleget
#define doubleget(V,M)	 memcpy_fixed((byte*) &V,(byte*) (M),sizeof(double))
#define doublestore(T,V) memcpy_fixed((byte*) (T),(byte*) &V,sizeof(double))
#endif
#endif /* doubleget */
#define longlongget(V,M) memcpy_fixed((byte*) &V,(byte*) (M),sizeof(ulonglong))
#define longlongstore(T,V) memcpy_fixed((byte*) (T),(byte*) &V,sizeof(ulonglong))

+18 −7
Original line number Diff line number Diff line
@@ -18,18 +18,29 @@
#ifndef _my_bitmap_h_
#define _my_bitmap_h_

#define MY_BIT_NONE ~(uint)0
#include <my_pthread.h>

#define MY_BIT_NONE (~(uint) 0)

typedef struct st_bitmap
{
  uchar *bitmap;
  uint bitmap_size;
#ifdef THREAD
  pthread_mutex_t mutex;
#endif
} BITMAP;

#ifdef	__cplusplus
extern "C" {
#endif

  extern void bitmap_set_bit(uchar *bitmap, uint bitmap_size, uint bitmap_bit);
  extern uint bitmap_set_next(uchar *bitmap, uint bitmap_size);
  extern void bitmap_clear_bit(uchar *bitmap,uint bitmap_size,uint bitmap_bit);

  extern my_bool bitmap_init(BITMAP *bitmap, uint bitmap_size);
  extern void bitmap_free(BITMAP *bitmap);
  extern void bitmap_set_bit(BITMAP *bitmap, uint bitmap_bit);
  extern uint bitmap_set_next(BITMAP *bitmap);
  extern void bitmap_clear_bit(BITMAP *bitmap, uint bitmap_bit);
#ifdef	__cplusplus
}
#endif

#endif
#endif /* _my_bitmap_h_ */
+24 −1
Original line number Diff line number Diff line
@@ -167,6 +167,28 @@
			      ((byte*) &def_temp)[3]=(M)[0];\
			      (V)=def_temp; }

#if (__FLOAT_WORD_ORDER == __BIG_ENDIAN)
#define mi_float8store(T,V) { *(T)= ((byte *) &V)[3];\
			      *((T)+1)=(char) ((byte *) &V)[2];\
			      *((T)+2)=(char) ((byte *) &V)[1];\
			      *((T)+3)=(char) ((byte *) &V)[0];\
			      *((T)+4)=(char) ((byte *) &V)[7];\
			      *((T)+5)=(char) ((byte *) &V)[6];\
			      *((T)+6)=(char) ((byte *) &V)[5];\
			      *((T)+7)=(char) ((byte *) &V)[4];}

#define mi_float8get(V,M)   { double def_temp;\
			      ((byte*) &def_temp)[0]=(M)[3];\
			      ((byte*) &def_temp)[1]=(M)[2];\
			      ((byte*) &def_temp)[2]=(M)[1];\
			      ((byte*) &def_temp)[3]=(M)[0];\
			      ((byte*) &def_temp)[4]=(M)[7];\
			      ((byte*) &def_temp)[5]=(M)[6];\
			      ((byte*) &def_temp)[6]=(M)[5];\
			      ((byte*) &def_temp)[7]=(M)[4];\
			      (V)=def_temp; }

#else
#define mi_float8store(T,V) { *(T)= ((byte *) &V)[7];\
			      *((T)+1)=(char) ((byte *) &V)[6];\
			      *((T)+2)=(char) ((byte *) &V)[5];\
@@ -186,7 +208,8 @@
			      ((byte*) &def_temp)[6]=(M)[1];\
			      ((byte*) &def_temp)[7]=(M)[0];\
			      (V)=def_temp; }
#endif
#endif /* __FLOAT_WORD_ORDER */
#endif /* WORDS_BIGENDIAN */

/* Fix to avoid warnings when sizeof(ha_rows) == sizeof(long) */

Loading