merge
This commit is contained in:
commit
76d6549972
@ -86,6 +86,40 @@ write_escaped_string(IO_CACHE *file, LEX_STRING *val_s)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ulonglong view_algo_to_frm(ulonglong val)
|
||||||
|
{
|
||||||
|
switch(val)
|
||||||
|
{
|
||||||
|
case VIEW_ALGORITHM_UNDEFINED:
|
||||||
|
return VIEW_ALGORITHM_UNDEFINED_FRM;
|
||||||
|
case VIEW_ALGORITHM_MERGE:
|
||||||
|
return VIEW_ALGORITHM_MERGE_FRM;
|
||||||
|
case VIEW_ALGORITHM_TMPTABLE:
|
||||||
|
return VIEW_ALGORITHM_TMPTABLE_FRM;
|
||||||
|
}
|
||||||
|
DBUG_ASSERT(0); /* Should never happen */
|
||||||
|
return VIEW_ALGORITHM_UNDEFINED;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ulonglong view_algo_from_frm(ulonglong val)
|
||||||
|
{
|
||||||
|
switch(val)
|
||||||
|
{
|
||||||
|
case VIEW_ALGORITHM_UNDEFINED_FRM:
|
||||||
|
return VIEW_ALGORITHM_UNDEFINED;
|
||||||
|
case VIEW_ALGORITHM_MERGE_FRM:
|
||||||
|
return VIEW_ALGORITHM_MERGE;
|
||||||
|
case VIEW_ALGORITHM_TMPTABLE_FRM:
|
||||||
|
return VIEW_ALGORITHM_TMPTABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Early versions of MariaDB 5.2/5.3 had identical in-memory and frm values
|
||||||
|
Return input value.
|
||||||
|
*/
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Write parameter value to IO_CACHE.
|
Write parameter value to IO_CACHE.
|
||||||
@ -124,8 +158,14 @@ write_parameter(IO_CACHE *file, uchar* base, File_option *parameter)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FILE_OPTIONS_ULONGLONG:
|
case FILE_OPTIONS_ULONGLONG:
|
||||||
|
case FILE_OPTIONS_VIEW_ALGO:
|
||||||
{
|
{
|
||||||
num.set(*((ulonglong *)(base + parameter->offset)), &my_charset_bin);
|
ulonglong val= *(ulonglong *)(base + parameter->offset);
|
||||||
|
|
||||||
|
if (parameter->type == FILE_OPTIONS_VIEW_ALGO)
|
||||||
|
val= view_algo_to_frm(val);
|
||||||
|
|
||||||
|
num.set(val, &my_charset_bin);
|
||||||
if (my_b_append(file, (const uchar *)num.ptr(), num.length()))
|
if (my_b_append(file, (const uchar *)num.ptr(), num.length()))
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
break;
|
break;
|
||||||
@ -766,6 +806,7 @@ File_parser::parse(uchar* base, MEM_ROOT *mem_root,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FILE_OPTIONS_ULONGLONG:
|
case FILE_OPTIONS_ULONGLONG:
|
||||||
|
case FILE_OPTIONS_VIEW_ALGO:
|
||||||
if (!(eol= strchr(ptr, '\n')))
|
if (!(eol= strchr(ptr, '\n')))
|
||||||
{
|
{
|
||||||
my_error(ER_FPARSER_ERROR_IN_PARAMETER, MYF(0),
|
my_error(ER_FPARSER_ERROR_IN_PARAMETER, MYF(0),
|
||||||
@ -774,8 +815,12 @@ File_parser::parse(uchar* base, MEM_ROOT *mem_root,
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
int not_used;
|
int not_used;
|
||||||
*((ulonglong*)(base + parameter->offset))=
|
ulonglong val= (ulonglong)my_strtoll10(ptr, 0, ¬_used);
|
||||||
my_strtoll10(ptr, 0, ¬_used);
|
|
||||||
|
if (parameter->type == FILE_OPTIONS_VIEW_ALGO)
|
||||||
|
val= view_algo_from_frm(val);
|
||||||
|
|
||||||
|
*((ulonglong*)(base + parameter->offset))= val;
|
||||||
}
|
}
|
||||||
ptr= eol+1;
|
ptr= eol+1;
|
||||||
break;
|
break;
|
||||||
|
@ -26,6 +26,7 @@ enum file_opt_type {
|
|||||||
FILE_OPTIONS_STRING, /**< String (LEX_STRING) */
|
FILE_OPTIONS_STRING, /**< String (LEX_STRING) */
|
||||||
FILE_OPTIONS_ESTRING, /**< Escaped string (LEX_STRING) */
|
FILE_OPTIONS_ESTRING, /**< Escaped string (LEX_STRING) */
|
||||||
FILE_OPTIONS_ULONGLONG, /**< ulonglong parameter (ulonglong) */
|
FILE_OPTIONS_ULONGLONG, /**< ulonglong parameter (ulonglong) */
|
||||||
|
FILE_OPTIONS_VIEW_ALGO, /**< Similar to longlong, but needs conversion */
|
||||||
FILE_OPTIONS_TIMESTAMP, /**< timestamp (LEX_STRING have to be
|
FILE_OPTIONS_TIMESTAMP, /**< timestamp (LEX_STRING have to be
|
||||||
allocated with length 20 (19+1) */
|
allocated with length 20 (19+1) */
|
||||||
FILE_OPTIONS_STRLIST, /**< list of escaped strings
|
FILE_OPTIONS_STRLIST, /**< list of escaped strings
|
||||||
|
@ -736,7 +736,7 @@ static File_option view_parameters[]=
|
|||||||
FILE_OPTIONS_ULONGLONG},
|
FILE_OPTIONS_ULONGLONG},
|
||||||
{{ C_STRING_WITH_LEN("algorithm")},
|
{{ C_STRING_WITH_LEN("algorithm")},
|
||||||
my_offsetof(TABLE_LIST, algorithm),
|
my_offsetof(TABLE_LIST, algorithm),
|
||||||
FILE_OPTIONS_ULONGLONG},
|
FILE_OPTIONS_VIEW_ALGO},
|
||||||
{{ C_STRING_WITH_LEN("definer_user")},
|
{{ C_STRING_WITH_LEN("definer_user")},
|
||||||
my_offsetof(TABLE_LIST, definer.user),
|
my_offsetof(TABLE_LIST, definer.user),
|
||||||
FILE_OPTIONS_STRING},
|
FILE_OPTIONS_STRING},
|
||||||
|
17
sql/table.h
17
sql/table.h
@ -1150,12 +1150,6 @@ typedef struct st_schema_table
|
|||||||
/*
|
/*
|
||||||
Types of derived tables. The ending part is a bitmap of phases that are
|
Types of derived tables. The ending part is a bitmap of phases that are
|
||||||
applicable to a derived table of the type.
|
applicable to a derived table of the type.
|
||||||
* /
|
|
||||||
#define VIEW_ALGORITHM_UNDEFINED 0
|
|
||||||
#define VIEW_ALGORITHM_MERGE 1 + DT_COMMON + DT_MERGE
|
|
||||||
#define DERIVED_ALGORITHM_MERGE 2 + DT_COMMON + DT_MERGE
|
|
||||||
#define VIEW_ALGORITHM_TMPTABLE 3 + DT_COMMON + DT_MATERIALIZE
|
|
||||||
#define DERIVED_ALGORITHM_MATERIALIZE 4 + DT_COMMON + DT_MATERIALIZE
|
|
||||||
*/
|
*/
|
||||||
#define DTYPE_ALGORITHM_UNDEFINED 0
|
#define DTYPE_ALGORITHM_UNDEFINED 0
|
||||||
#define DTYPE_VIEW 1
|
#define DTYPE_VIEW 1
|
||||||
@ -1188,7 +1182,16 @@ typedef struct st_schema_table
|
|||||||
|
|
||||||
#define VIEW_ALGORITHM_UNDEFINED 0
|
#define VIEW_ALGORITHM_UNDEFINED 0
|
||||||
#define VIEW_ALGORITHM_MERGE (DTYPE_VIEW | DTYPE_MERGE)
|
#define VIEW_ALGORITHM_MERGE (DTYPE_VIEW | DTYPE_MERGE)
|
||||||
#define VIEW_ALGORITHM_TMPTABLE (DTYPE_VIEW + DTYPE_MATERIALIZE )
|
#define VIEW_ALGORITHM_TMPTABLE (DTYPE_VIEW | DTYPE_MATERIALIZE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
View algorithm values as stored in the FRM. Values differ from in-memory
|
||||||
|
representation for backward compatibility.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define VIEW_ALGORITHM_UNDEFINED_FRM 0
|
||||||
|
#define VIEW_ALGORITHM_MERGE_FRM 1
|
||||||
|
#define VIEW_ALGORITHM_TMPTABLE_FRM 2
|
||||||
|
|
||||||
#define JOIN_TYPE_LEFT 1
|
#define JOIN_TYPE_LEFT 1
|
||||||
#define JOIN_TYPE_RIGHT 2
|
#define JOIN_TYPE_RIGHT 2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user