mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Fix that -integer works as in 4.0
acinclude.m4: Fix for RedHat9 and openssl sql/item_func.cc: Indentation changes Fix that -integer works as in 4.0
This commit is contained in:
parent
46a2d8a2f6
commit
553daa5e40
2 changed files with 67 additions and 18 deletions
15
acinclude.m4
15
acinclude.m4
|
@ -746,7 +746,7 @@ AC_DEFUN(MYSQL_FIND_OPENSSL, [
|
|||
/usr/include/ssl /opt/ssl/include /opt/openssl/include \
|
||||
/usr/local/ssl/include /usr/local/include ; do
|
||||
if test -f $d/openssl/ssl.h ; then
|
||||
OPENSSL_INCLUDE=$d
|
||||
OPENSSL_INCLUDE=-I$d
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -757,6 +757,15 @@ AC_DEFUN(MYSQL_FIND_OPENSSL, [
|
|||
fi
|
||||
done
|
||||
|
||||
# On RedHat 9 we need kerberos to compile openssl
|
||||
for d in /usr/kerberos/include
|
||||
do
|
||||
if test -f $d/krb5.h ; then
|
||||
OPENSSL_INCLUDE="$OPENSSL_INCLUDE -I$d"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INCLUDE" ; then
|
||||
echo "Could not find an installation of OpenSSL"
|
||||
if test -n "$OPENSSL_LIB" ; then
|
||||
|
@ -789,9 +798,9 @@ AC_MSG_CHECKING(for OpenSSL)
|
|||
openssl_libs="-L$OPENSSL_LIB -lssl -lcrypto"
|
||||
# Don't set openssl_includes to /usr/include as this gives us a lot of
|
||||
# compiler warnings when using gcc 3.x
|
||||
if test "$OPENSSL_INCLUDE" != "/usr/include"
|
||||
if test "$OPENSSL_INCLUDE" != "-I/usr/include"
|
||||
then
|
||||
openssl_includes="-I$OPENSSL_INCLUDE"
|
||||
openssl_includes="$OPENSSL_INCLUDE"
|
||||
fi
|
||||
AC_DEFINE(HAVE_OPENSSL)
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#endif
|
||||
|
||||
#include "mysql_priv.h"
|
||||
#include "slave.h" // for wait_for_master_pos
|
||||
#include "slave.h" // for wait_for_master_pos
|
||||
#include <m_ctype.h>
|
||||
#include <hash.h>
|
||||
#include <time.h>
|
||||
|
@ -31,7 +31,9 @@
|
|||
#include <zlib.h>
|
||||
#endif
|
||||
|
||||
static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, const char *fname)
|
||||
|
||||
static void my_coll_agg_error(DTCollation &c1, DTCollation &c2,
|
||||
const char *fname)
|
||||
{
|
||||
my_error(ER_CANT_AGGREGATE_2COLLATIONS,MYF(0),
|
||||
c1.collation->name,c1.derivation_name(),
|
||||
|
@ -39,6 +41,7 @@ static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, const char *fnam
|
|||
fname);
|
||||
}
|
||||
|
||||
|
||||
static void my_coll_agg_error(DTCollation &c1,
|
||||
DTCollation &c2,
|
||||
DTCollation &c3,
|
||||
|
@ -51,11 +54,12 @@ static void my_coll_agg_error(DTCollation &c1,
|
|||
fname);
|
||||
}
|
||||
|
||||
static void my_coll_agg_error(Item** args, uint ac, const char *fname)
|
||||
|
||||
static void my_coll_agg_error(Item** args, uint count, const char *fname)
|
||||
{
|
||||
if (2 == ac)
|
||||
if (count == 2)
|
||||
my_coll_agg_error(args[0]->collation, args[1]->collation, fname);
|
||||
else if (3 == ac)
|
||||
else if (count == 3)
|
||||
my_coll_agg_error(args[0]->collation,
|
||||
args[1]->collation,
|
||||
args[2]->collation,
|
||||
|
@ -64,30 +68,32 @@ static void my_coll_agg_error(Item** args, uint ac, const char *fname)
|
|||
my_error(ER_CANT_AGGREGATE_NCOLLATIONS,MYF(0),fname);
|
||||
}
|
||||
|
||||
bool Item_func::agg_arg_collations(DTCollation &c, Item **av, uint ac)
|
||||
|
||||
bool Item_func::agg_arg_collations(DTCollation &c, Item **av, uint count)
|
||||
{
|
||||
uint i;
|
||||
c.set(av[0]->collation);
|
||||
for (i= 1; i < ac; i++)
|
||||
for (i= 1; i < count; i++)
|
||||
{
|
||||
if (c.aggregate(av[i]->collation))
|
||||
{
|
||||
my_coll_agg_error(av, ac, func_name());
|
||||
my_coll_agg_error(av, count, func_name());
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
bool Item_func::agg_arg_collations_for_comparison(DTCollation &c,
|
||||
Item **av, uint ac)
|
||||
Item **av, uint count)
|
||||
{
|
||||
if (agg_arg_collations(c, av, ac))
|
||||
if (agg_arg_collations(c, av, count))
|
||||
return TRUE;
|
||||
|
||||
if (c.derivation == DERIVATION_NONE)
|
||||
{
|
||||
my_coll_agg_error(av, ac, func_name());
|
||||
my_coll_agg_error(av, count, func_name());
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -102,6 +108,7 @@ eval_const_cond(COND *cond)
|
|||
return ((Item_func*) cond)->val_int() ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
|
||||
void Item_func::set_arguments(List<Item> &list)
|
||||
{
|
||||
allowed_arg_cols= 1;
|
||||
|
@ -586,6 +593,7 @@ double Item_func_neg::val()
|
|||
return -value;
|
||||
}
|
||||
|
||||
|
||||
longlong Item_func_neg::val_int()
|
||||
{
|
||||
longlong value=args[0]->val_int();
|
||||
|
@ -593,14 +601,32 @@ longlong Item_func_neg::val_int()
|
|||
return -value;
|
||||
}
|
||||
|
||||
|
||||
void Item_func_neg::fix_length_and_dec()
|
||||
{
|
||||
decimals=args[0]->decimals;
|
||||
max_length=args[0]->max_length;
|
||||
hybrid_type= args[0]->result_type() == INT_RESULT && !args[0]->unsigned_flag ?
|
||||
INT_RESULT : REAL_RESULT;
|
||||
hybrid_type= REAL_RESULT;
|
||||
if (args[0]->result_type() == INT_RESULT)
|
||||
{
|
||||
/*
|
||||
If this is in integer context keep the context as integer
|
||||
(This is how multiplication and other integer functions works)
|
||||
|
||||
We must however do a special case in the case where the argument
|
||||
is a unsigned bigint constant as in this case the only safe
|
||||
number to convert in integer context is 9223372036854775808.
|
||||
(This is needed because the lex parser doesn't anymore handle
|
||||
signed integers)
|
||||
*/
|
||||
if (args[0]->type() != INT_ITEM ||
|
||||
((ulonglong) ((Item_uint*) args[0])->value <=
|
||||
(ulonglong) LONGLONG_MIN))
|
||||
hybrid_type= INT_RESULT;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
double Item_func_abs::val()
|
||||
{
|
||||
double value=args[0]->val();
|
||||
|
@ -608,6 +634,7 @@ double Item_func_abs::val()
|
|||
return fabs(value);
|
||||
}
|
||||
|
||||
|
||||
longlong Item_func_abs::val_int()
|
||||
{
|
||||
longlong value=args[0]->val_int();
|
||||
|
@ -615,13 +642,20 @@ longlong Item_func_abs::val_int()
|
|||
return value >= 0 ? value : -value;
|
||||
}
|
||||
|
||||
|
||||
void Item_func_abs::fix_length_and_dec()
|
||||
{
|
||||
decimals=args[0]->decimals;
|
||||
max_length=args[0]->max_length;
|
||||
hybrid_type= args[0]->result_type() == INT_RESULT ? INT_RESULT : REAL_RESULT;
|
||||
hybrid_type= REAL_RESULT;
|
||||
if (args[0]->result_type() == INT_RESULT)
|
||||
{
|
||||
hybrid_type= INT_RESULT;
|
||||
unsigned_flag= 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Gateway to natural LOG function */
|
||||
double Item_func_ln::val()
|
||||
{
|
||||
|
@ -1051,6 +1085,7 @@ longlong Item_func_crc32::val_int()
|
|||
return (longlong) crc32(0L, (Bytef*)res->ptr(), res->length());
|
||||
}
|
||||
|
||||
|
||||
longlong Item_func_uncompressed_length::val_int()
|
||||
{
|
||||
String *res= args[0]->val_str(&value);
|
||||
|
@ -1063,9 +1098,9 @@ longlong Item_func_uncompressed_length::val_int()
|
|||
if (res->is_empty()) return 0;
|
||||
return uint4korr(res->c_ptr()) & 0x3FFFFFFF;
|
||||
}
|
||||
|
||||
#endif /* HAVE_COMPRESS */
|
||||
|
||||
|
||||
longlong Item_func_length::val_int()
|
||||
{
|
||||
String *res=args[0]->val_str(&value);
|
||||
|
@ -1078,6 +1113,7 @@ longlong Item_func_length::val_int()
|
|||
return (longlong) res->length();
|
||||
}
|
||||
|
||||
|
||||
longlong Item_func_char_length::val_int()
|
||||
{
|
||||
String *res=args[0]->val_str(&value);
|
||||
|
@ -1090,6 +1126,7 @@ longlong Item_func_char_length::val_int()
|
|||
return (longlong) res->numchars();
|
||||
}
|
||||
|
||||
|
||||
longlong Item_func_coercibility::val_int()
|
||||
{
|
||||
if (args[0]->null_value)
|
||||
|
@ -1101,12 +1138,14 @@ longlong Item_func_coercibility::val_int()
|
|||
return (longlong) args[0]->derivation();
|
||||
}
|
||||
|
||||
|
||||
void Item_func_locate::fix_length_and_dec()
|
||||
{
|
||||
maybe_null=0; max_length=11;
|
||||
agg_arg_collations_for_comparison(cmp_collation, args, 2);
|
||||
}
|
||||
|
||||
|
||||
longlong Item_func_locate::val_int()
|
||||
{
|
||||
String *a=args[0]->val_str(&value1);
|
||||
|
@ -1207,6 +1246,7 @@ longlong Item_func_field::val_int()
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void Item_func_field::fix_length_and_dec()
|
||||
{
|
||||
maybe_null=0; max_length=3;
|
||||
|
|
Loading…
Add table
Reference in a new issue