mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Cleanups to recent patches
Fix packet error when using wrong GRANT command
This commit is contained in:
@ -276,6 +276,7 @@ inline double ulonglong2double(ulonglong value)
|
||||
#define HAVE_ISAM /* We want to have support for ISAM in 4.0 */
|
||||
#define HAVE_QUERY_CACHE
|
||||
#define SPRINTF_RETURNS_INT
|
||||
#define HAVE_SETFILEPOINTER
|
||||
|
||||
#ifdef NOT_USED
|
||||
#define HAVE_SNPRINTF /* Gave link error */
|
||||
|
@ -108,3 +108,6 @@ flush privileges;
|
||||
drop table t1;
|
||||
GRANT FILE on mysqltest.* to mysqltest_1@localhost;
|
||||
Wrong usage of DB GRANT and GLOBAL PRIVILEGES
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
|
@ -72,5 +72,10 @@ delete from mysql.tables_priv where user='mysqltest_1';
|
||||
delete from mysql.columns_priv where user='mysqltest_1';
|
||||
flush privileges;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test some error conditions
|
||||
#
|
||||
--error 1221
|
||||
GRANT FILE on mysqltest.* to mysqltest_1@localhost;
|
||||
select 1; -- To test that the previous command didn't cause problems
|
||||
|
@ -30,7 +30,7 @@
|
||||
MyFlags Flags
|
||||
|
||||
DESCRIPTION
|
||||
my_chsize() truncates file if shorter, else fill with the filler character
|
||||
my_chsize() truncates file if shorter else fill with the filler character
|
||||
|
||||
RETURN VALUE
|
||||
0 Ok
|
||||
@ -38,73 +38,60 @@
|
||||
*/
|
||||
int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
|
||||
{
|
||||
my_off_t oldsize;
|
||||
char buff[IO_SIZE];
|
||||
DBUG_ENTER("my_chsize");
|
||||
DBUG_PRINT("my",("fd: %d length: %lu MyFlags: %d",fd,(ulong) newlength,
|
||||
MyFlags));
|
||||
/* if file is shorter, expand with null, else fill unused part with null */
|
||||
{
|
||||
my_off_t oldsize;
|
||||
char buff[IO_SIZE];
|
||||
|
||||
oldsize = my_seek(fd, 0L, MY_SEEK_END, MYF(MY_WME+MY_FAE));
|
||||
DBUG_PRINT("info",("old_size: %ld", (ulong) oldsize));
|
||||
|
||||
#ifdef __WIN__
|
||||
if (oldsize > newlength)
|
||||
#if defined(HAVE_SETFILEPOINTER)
|
||||
/* This is for the moment only true on windows */
|
||||
{
|
||||
LARGE_INTEGER new_length;
|
||||
HANDLE win_file;
|
||||
win_file= (HANDLE)_get_osfhandle(fd);
|
||||
HANDLE win_file= (HANDLE) _get_osfhandle(fd);
|
||||
new_length.QuadPart = newlength;
|
||||
if (SetFilePointerEx(win_file,new_length,NULL,FILE_BEGIN))
|
||||
{
|
||||
if (SetEndOfFile(win_file))
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
DBUG_PRINT("error",("errno: %d",errno));
|
||||
my_errno=errno;
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_CHSIZE,MYF(ME_BELL+ME_WAITTANG),errno);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
#elif defined(HAVE_CHSIZE)
|
||||
if (oldsize > newlength || filler == 0)
|
||||
{
|
||||
if (chsize(fd,(off_t) newlength))
|
||||
{
|
||||
DBUG_PRINT("error",("errno: %d",errno));
|
||||
my_errno=errno;
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_CHSIZE,MYF(ME_BELL+ME_WAITTANG),errno);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (filler == 0)
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
my_errno= errno;
|
||||
goto err;
|
||||
}
|
||||
#elif defined(HAVE_FTRUNCATE)
|
||||
if (oldsize > newlength)
|
||||
{
|
||||
if (ftruncate(fd, (off_t) newlength))
|
||||
{
|
||||
my_errno= errno;
|
||||
goto err;
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
#elif defined(HAVE_CHSIZE)
|
||||
{
|
||||
if (chsize(fd, (off_t) newlength))
|
||||
{
|
||||
my_errno=errno;
|
||||
DBUG_PRINT("error",("errno: %d",errno));
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_CHSIZE, MYF(ME_BELL+ME_WAITTANG), errno);
|
||||
DBUG_RETURN(1);
|
||||
goto err;
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
#else
|
||||
if (oldsize > newlength)
|
||||
{ /* Fill diff with null */
|
||||
{
|
||||
/*
|
||||
Fill space between requested length and true length with 'filler'
|
||||
We should never come here on any modern machine
|
||||
*/
|
||||
VOID(my_seek(fd, newlength, MY_SEEK_SET, MYF(MY_WME+MY_FAE)));
|
||||
swap(my_off_t, newlength, oldsize);
|
||||
}
|
||||
#endif
|
||||
/* Full file with 0 until it's as big as requested */
|
||||
|
||||
/* Full file with 'filler' until it's as big as requested */
|
||||
bfill(buff, IO_SIZE, filler);
|
||||
while (newlength-oldsize > IO_SIZE)
|
||||
{
|
||||
@ -115,12 +102,10 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
|
||||
if (my_write(fd,(byte*) buff,(uint) (newlength-oldsize),MYF(MY_NABP)))
|
||||
goto err;
|
||||
DBUG_RETURN(0);
|
||||
err:
|
||||
|
||||
err:
|
||||
DBUG_PRINT("error", ("errno: %d", errno));
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_CHSIZE,MYF(ME_BELL+ME_WAITTANG),my_errno);
|
||||
DBUG_PRINT("error",("errno: %d",my_errno));
|
||||
my_error(EE_CANT_CHSIZE, MYF(ME_BELL+ME_WAITTANG), my_errno);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
} /* my_chsize */
|
||||
|
||||
|
||||
|
@ -798,7 +798,8 @@ static SEL_TREE *get_mm_tree(PARAM *param,COND *cond)
|
||||
table_map ref_tables=cond->used_tables();
|
||||
if (cond->type() != Item::FUNC_ITEM)
|
||||
{ // Should be a field
|
||||
if (ref_tables & param->current_table)
|
||||
if ((ref_tables & param->current_table) ||
|
||||
(ref_tables & ~(param->prev_tables | param->read_tables)))
|
||||
DBUG_RETURN(0);
|
||||
DBUG_RETURN(new SEL_TREE(SEL_TREE::MAYBE));
|
||||
}
|
||||
|
@ -2370,7 +2370,7 @@ int mysql_grant (THD *thd, const char *db, List <LEX_USER> &list,
|
||||
else
|
||||
{
|
||||
net_printf(&thd->net,ER_WRONG_USAGE,"DB GRANT","GLOBAL PRIVILEGES");
|
||||
result= -1;
|
||||
result= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1490,11 +1490,15 @@ add_key_field(KEY_FIELD **key_fields,uint and_level,
|
||||
}
|
||||
}
|
||||
DBUG_ASSERT(num_values == 1);
|
||||
// DBUG_ASSERT(eq_func); /* QQ: Can I uncomment this ASSERT ? */
|
||||
/*
|
||||
For the moment eq_func is always true. This slot is reserved for future
|
||||
extensions where we want to remembers other things than just eq comparisons
|
||||
*/
|
||||
DBUG_ASSERT(eq_func);
|
||||
/* Store possible eq field */
|
||||
(*key_fields)->field=field;
|
||||
(*key_fields)->eq_func=eq_func;
|
||||
(*key_fields)->val=*value;
|
||||
(*key_fields)->val= *value;
|
||||
(*key_fields)->level=(*key_fields)->const_level=and_level;
|
||||
(*key_fields)->exists_optimize=exists_optimize;
|
||||
(*key_fields)++;
|
||||
@ -1582,6 +1586,8 @@ add_key_fields(JOIN_TAB *stat,KEY_FIELD **key_fields,uint *and_level,
|
||||
if (cond_func->arguments()[0]->type() == Item::FIELD_ITEM)
|
||||
{
|
||||
Item *tmp=new Item_null;
|
||||
if (!tmp) // Should never be true
|
||||
return;
|
||||
add_key_field(key_fields,*and_level,
|
||||
((Item_field*) (cond_func->arguments()[0]))->field,
|
||||
cond_func->functype() == Item_func::ISNULL_FUNC,
|
||||
|
Reference in New Issue
Block a user