mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge bk-internal:/home/bk/mysql-5.0
into mysql.com:/home/jimw/my/mysql-5.0-clean sql/item_strfunc.cc: Auto merged
This commit is contained in:
@ -927,7 +927,17 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
|
||||
#ifndef set_timespec
|
||||
#ifdef HAVE_TIMESPEC_TS_SEC
|
||||
#define set_timespec(ABSTIME,SEC) { (ABSTIME).ts_sec=time(0) + (time_t) (SEC); (ABSTIME).ts_nsec=0; }
|
||||
#define set_timespec(ABSTIME,SEC) \
|
||||
{ \
|
||||
(ABSTIME).ts_sec=time(0) + (time_t) (SEC); \
|
||||
(ABSTIME).ts_nsec=0; \
|
||||
}
|
||||
#define set_timespec_nsec(ABSTIME,NSEC) \
|
||||
{\
|
||||
ulonglong now= my_getsystime(); \
|
||||
(ABSTIME).ts_sec= (now / ULL(10000000)) + (NSEC / ULL(1000000000)); \
|
||||
(ABSTIME).ts_nsec= (now % ULL(10000000)) * 100 + (NSEC % ULL(1000000000)); \
|
||||
}
|
||||
#else
|
||||
#define set_timespec(ABSTIME,SEC) \
|
||||
{\
|
||||
@ -936,6 +946,12 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
(ABSTIME).tv_sec=tv.tv_sec+(time_t) (SEC);\
|
||||
(ABSTIME).tv_nsec=tv.tv_usec*1000;\
|
||||
}
|
||||
#define set_timespec_nsec(ABSTIME,NSEC) \
|
||||
{\
|
||||
ulonglong now= my_getsystime(); \
|
||||
(ABSTIME).tv_sec= (now / ULL(10000000)) + (NSEC / ULL(1000000000)); \
|
||||
(ABSTIME).tv_nsec= (now % ULL(10000000)) * 100 + (NSEC % ULL(1000000000)); \
|
||||
}
|
||||
#endif /* HAVE_TIMESPEC_TS_SEC */
|
||||
#endif /* set_timespec */
|
||||
|
||||
|
@ -2756,14 +2756,3 @@ DROP TABLE t1,t2;
|
||||
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
||||
x'10' + 0 X'10' + 0 b'10' + 0 B'10' + 0
|
||||
16 16 2 2
|
||||
CREATE TABLE BUG_12595(a varchar(100));
|
||||
INSERT INTO BUG_12595 VALUES ('hakan%'), ('hakank'), ("ha%an");
|
||||
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan*%' ESCAPE '*';
|
||||
a
|
||||
hakan%
|
||||
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan**%' ESCAPE '**';
|
||||
ERROR HY000: Incorrect arguments to ESCAPE
|
||||
SELECT * FROM BUG_12595 WHERE a LIKE 'ha%%an' ESCAPE '%';
|
||||
a
|
||||
ha%an
|
||||
DROP TABLE BUG_12595;
|
||||
|
@ -2348,14 +2348,3 @@ DROP TABLE t1,t2;
|
||||
#
|
||||
|
||||
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
||||
|
||||
#
|
||||
# BUG #12595
|
||||
#
|
||||
CREATE TABLE BUG_12595(a varchar(100));
|
||||
INSERT INTO BUG_12595 VALUES ('hakan%'), ('hakank'), ("ha%an");
|
||||
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan*%' ESCAPE '*';
|
||||
-- error 1210
|
||||
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan**%' ESCAPE '**';
|
||||
SELECT * FROM BUG_12595 WHERE a LIKE 'ha%%an' ESCAPE '%';
|
||||
DROP TABLE BUG_12595;
|
||||
|
@ -2792,12 +2792,6 @@ bool Item_func_like::fix_fields(THD *thd, Item **ref)
|
||||
{
|
||||
/* If we are on execution stage */
|
||||
String *escape_str= escape_item->val_str(&tmp_value1);
|
||||
/* ESCAPE must be 1 char in length.*/
|
||||
if (escape_str && escape_str->numchars() != 1)
|
||||
{
|
||||
my_error(ER_WRONG_ARGUMENTS,MYF(0),"ESCAPE");
|
||||
return TRUE;
|
||||
}
|
||||
escape= escape_str ? *(escape_str->ptr()) : '\\';
|
||||
|
||||
/*
|
||||
|
@ -3266,10 +3266,36 @@ void Item_func_benchmark::print(String *str)
|
||||
|
||||
longlong Item_func_sleep::val_int()
|
||||
{
|
||||
THD *thd= current_thd;
|
||||
struct timespec abstime;
|
||||
pthread_cond_t cond;
|
||||
int error;
|
||||
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
|
||||
double time= args[0]->val_real();
|
||||
my_sleep((ulong)time*1000000L);
|
||||
return 0;
|
||||
set_timespec_nsec(abstime, (ulonglong)(time * ULL(1000000000)));
|
||||
|
||||
pthread_cond_init(&cond, NULL);
|
||||
pthread_mutex_lock(&LOCK_user_locks);
|
||||
|
||||
thd->mysys_var->current_mutex= &LOCK_user_locks;
|
||||
thd->mysys_var->current_cond= &cond;
|
||||
|
||||
while (!thd->killed &&
|
||||
(error= pthread_cond_timedwait(&cond, &LOCK_user_locks,
|
||||
&abstime)) != ETIMEDOUT &&
|
||||
error != EINVAL) ;
|
||||
|
||||
pthread_mutex_lock(&thd->mysys_var->mutex);
|
||||
thd->mysys_var->current_mutex= 0;
|
||||
thd->mysys_var->current_cond= 0;
|
||||
pthread_mutex_unlock(&thd->mysys_var->mutex);
|
||||
|
||||
pthread_mutex_unlock(&LOCK_user_locks);
|
||||
pthread_cond_destroy(&cond);
|
||||
|
||||
return (error == ETIMEDOUT) ? 0 : 1;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user