- Portability fixes for HP compiler on HPUX11 (backport from 4.0 tree)
- sql_analyse.cc: Fixed bug in decimal handling
This commit is contained in:
parent
b9d8e52145
commit
1935183975
@ -893,6 +893,12 @@ case $SYSTEM_TYPE in
|
|||||||
echo "Using --with-named-thread=-lpthread"
|
echo "Using --with-named-thread=-lpthread"
|
||||||
with_named_thread="-lpthread"
|
with_named_thread="-lpthread"
|
||||||
fi
|
fi
|
||||||
|
# Fixes for HPUX 11.0 compiler
|
||||||
|
if test "$ac_cv_prog_gcc" = "no"
|
||||||
|
then
|
||||||
|
CFLAGS="$CFLAGS +DD64 -DHAVE_BROKEN_INLINE"
|
||||||
|
CXXFLAGS="$CXXFLAGS +DD64 +O2"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
*rhapsody*)
|
*rhapsody*)
|
||||||
if test "$ac_cv_prog_gcc" = "yes"
|
if test "$ac_cv_prog_gcc" = "yes"
|
||||||
|
@ -92,7 +92,7 @@ void make_scrambled_password(char *to,const char *password)
|
|||||||
sprintf(to,"%08lx%08lx",hash_res[0],hash_res[1]);
|
sprintf(to,"%08lx%08lx",hash_res[0],hash_res[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint char_val(char X)
|
static inline unsigned int char_val(char X)
|
||||||
{
|
{
|
||||||
return (uint) (X >= '0' && X <= '9' ? X-'0' :
|
return (uint) (X >= '0' && X <= '9' ? X-'0' :
|
||||||
X >= 'A' && X <= 'Z' ? X-'A'+10 :
|
X >= 'A' && X <= 'Z' ? X-'A'+10 :
|
||||||
|
15
mysys/hash.c
15
mysys/hash.c
@ -83,7 +83,12 @@ void hash_free(HASH *hash)
|
|||||||
|
|
||||||
/* some helper functions */
|
/* some helper functions */
|
||||||
|
|
||||||
inline byte*
|
/*
|
||||||
|
This function is char* instead of byte* as HPUX11 compiler can't
|
||||||
|
handle inline functions that are not defined as native types
|
||||||
|
*/
|
||||||
|
|
||||||
|
inline char*
|
||||||
hash_key(HASH *hash,const byte *record,uint *length,my_bool first)
|
hash_key(HASH *hash,const byte *record,uint *length,my_bool first)
|
||||||
{
|
{
|
||||||
if (hash->get_key)
|
if (hash->get_key)
|
||||||
@ -104,7 +109,7 @@ static uint hash_rec_mask(HASH *hash,HASH_LINK *pos,uint buffmax,
|
|||||||
uint maxlength)
|
uint maxlength)
|
||||||
{
|
{
|
||||||
uint length;
|
uint length;
|
||||||
byte *key=hash_key(hash,pos->data,&length,0);
|
byte *key= (byte*) hash_key(hash,pos->data,&length,0);
|
||||||
return hash_mask((*hash->calc_hashnr)(key,length),buffmax,maxlength);
|
return hash_mask((*hash->calc_hashnr)(key,length),buffmax,maxlength);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,10 +188,10 @@ uint calc_hashnr_caseup(const byte *key, uint len)
|
|||||||
#ifndef __SUNPRO_C /* SUNPRO can't handle this */
|
#ifndef __SUNPRO_C /* SUNPRO can't handle this */
|
||||||
inline
|
inline
|
||||||
#endif
|
#endif
|
||||||
uint rec_hashnr(HASH *hash,const byte *record)
|
unsigned int rec_hashnr(HASH *hash,const byte *record)
|
||||||
{
|
{
|
||||||
uint length;
|
uint length;
|
||||||
byte *key=hash_key(hash,record,&length,0);
|
byte *key= (byte*) hash_key(hash,record,&length,0);
|
||||||
return (*hash->calc_hashnr)(key,length);
|
return (*hash->calc_hashnr)(key,length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,7 +278,7 @@ static void movelink(HASH_LINK *array,uint find,uint next_link,uint newlink)
|
|||||||
static int hashcmp(HASH *hash,HASH_LINK *pos,const byte *key,uint length)
|
static int hashcmp(HASH *hash,HASH_LINK *pos,const byte *key,uint length)
|
||||||
{
|
{
|
||||||
uint rec_keylength;
|
uint rec_keylength;
|
||||||
byte *rec_key=hash_key(hash,pos->data,&rec_keylength,1);
|
byte *rec_key= (byte*) hash_key(hash,pos->data,&rec_keylength,1);
|
||||||
return (length && length != rec_keylength) ||
|
return (length && length != rec_keylength) ||
|
||||||
(hash->flags & HASH_CASE_INSENSITIVE ?
|
(hash->flags & HASH_CASE_INSENSITIVE ?
|
||||||
my_casecmp(rec_key,key,rec_keylength) :
|
my_casecmp(rec_key,key,rec_keylength) :
|
||||||
|
@ -61,7 +61,7 @@ USED_MEM* my_once_root_block=0; /* pointer to first block */
|
|||||||
uint my_once_extra=ONCE_ALLOC_INIT; /* Memory to alloc / block */
|
uint my_once_extra=ONCE_ALLOC_INIT; /* Memory to alloc / block */
|
||||||
|
|
||||||
/* from my_tempnam */
|
/* from my_tempnam */
|
||||||
#ifndef HAVE_TEMPNAM
|
#if !defined(HAVE_TEMPNAM) || defined(HPUX11)
|
||||||
int _my_tempnam_used=0;
|
int _my_tempnam_used=0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ extern const char *soundex_map;
|
|||||||
extern USED_MEM* my_once_root_block;
|
extern USED_MEM* my_once_root_block;
|
||||||
extern uint my_once_extra;
|
extern uint my_once_extra;
|
||||||
|
|
||||||
#ifndef HAVE_TEMPNAM
|
#if !defined(HAVE_TEMPNAM) || defined(HPUX11)
|
||||||
extern int _my_tempnam_used;
|
extern int _my_tempnam_used;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -24,6 +24,12 @@
|
|||||||
|
|
||||||
#include "mysys_priv.h"
|
#include "mysys_priv.h"
|
||||||
#include <m_string.h>
|
#include <m_string.h>
|
||||||
|
|
||||||
|
/* HPUX 11.0 doesn't allow us to change the environ pointer */
|
||||||
|
#ifdef HPUX11
|
||||||
|
#undef HAVE_TEMPNAM
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "my_static.h"
|
#include "my_static.h"
|
||||||
#include "mysys_err.h"
|
#include "mysys_err.h"
|
||||||
|
|
||||||
|
@ -641,7 +641,7 @@ bool analyse::end_of_records()
|
|||||||
case FIELD_TYPE_DECIMAL:
|
case FIELD_TYPE_DECIMAL:
|
||||||
ans.append("DECIMAL", 7);
|
ans.append("DECIMAL", 7);
|
||||||
// if item is FIELD_ITEM, it _must_be_ Field_num in this case
|
// if item is FIELD_ITEM, it _must_be_ Field_num in this case
|
||||||
if (((Field_num*) (*f)->item)->zerofill)
|
if (((Field_num*) ((Item_field*) (*f)->item)->field)->zerofill)
|
||||||
ans.append(" ZEROFILL");
|
ans.append(" ZEROFILL");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user