Merge mronstrom@bk-internal.mysql.com:/home/bk/mysql-4.1
into c-4a09e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/bug12594
This commit is contained in:
commit
12ffe0da12
@ -764,3 +764,12 @@ select date(left(f1+0,8)) from t1 group by 1;
|
|||||||
date(left(f1+0,8))
|
date(left(f1+0,8))
|
||||||
2005-06-06
|
2005-06-06
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(f1 varchar(5) key);
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
select sql_buffer_result max(f1) is null from t1;
|
||||||
|
max(f1) is null
|
||||||
|
0
|
||||||
|
select sql_buffer_result max(f1)+1 from t1;
|
||||||
|
max(f1)+1
|
||||||
|
3
|
||||||
|
drop table t1;
|
||||||
|
@ -516,3 +516,16 @@ a b c count
|
|||||||
1 NULL NULL 2
|
1 NULL NULL 2
|
||||||
NULL NULL NULL 2
|
NULL NULL NULL 2
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a int(11) NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
SELECT * FROM (SELECT a, a + 1, COUNT(*) FROM t1 GROUP BY a WITH ROLLUP) t;
|
||||||
|
a a + 1 COUNT(*)
|
||||||
|
1 2 1
|
||||||
|
2 3 1
|
||||||
|
NULL NULL 2
|
||||||
|
SELECT * FROM (SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP) t;
|
||||||
|
a LENGTH(a) COUNT(*)
|
||||||
|
1 1 1
|
||||||
|
2 1 1
|
||||||
|
NULL NULL 2
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -470,12 +470,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 14 N 1 31 8
|
def Extra 253 255 14 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using filesort
|
||||||
SET @arg00=1 ;
|
SET @arg00=1 ;
|
||||||
@ -486,12 +486,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 5 Y 0 31 8
|
def type 253 10 5 Y 0 31 8
|
||||||
def possible_keys 252 4096 7 Y 0 31 8
|
def possible_keys 253 4096 7 Y 0 31 8
|
||||||
def key 253 64 7 Y 0 31 8
|
def key 253 64 7 Y 0 31 8
|
||||||
def key_len 8 3 1 Y 32928 0 63
|
def key_len 8 3 1 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 27 N 1 31 8
|
def Extra 253 255 27 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort
|
||||||
drop table if exists t2;
|
drop table if exists t2;
|
||||||
|
@ -1153,12 +1153,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
drop table if exists t2 ;
|
drop table if exists t2 ;
|
||||||
|
@ -1153,12 +1153,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
test_sequence
|
test_sequence
|
||||||
|
@ -1154,12 +1154,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
test_sequence
|
test_sequence
|
||||||
|
@ -1196,12 +1196,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
test_sequence
|
test_sequence
|
||||||
@ -4210,12 +4210,12 @@ def id 8 3 1 N 32929 0 63
|
|||||||
def select_type 253 19 6 N 1 31 8
|
def select_type 253 19 6 N 1 31 8
|
||||||
def table 253 64 2 Y 0 31 8
|
def table 253 64 2 Y 0 31 8
|
||||||
def type 253 10 3 Y 0 31 8
|
def type 253 10 3 Y 0 31 8
|
||||||
def possible_keys 252 4096 0 Y 0 31 8
|
def possible_keys 253 4096 0 Y 0 31 8
|
||||||
def key 253 64 0 Y 0 31 8
|
def key 253 64 0 Y 0 31 8
|
||||||
def key_len 8 3 0 Y 32928 0 63
|
def key_len 8 3 0 Y 32928 0 63
|
||||||
def ref 252 1024 0 Y 0 31 8
|
def ref 253 1024 0 Y 0 31 8
|
||||||
def rows 8 10 1 Y 32928 0 63
|
def rows 8 10 1 Y 32928 0 63
|
||||||
def Extra 252 255 0 N 1 31 8
|
def Extra 253 255 0 N 1 31 8
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
|
||||||
test_sequence
|
test_sequence
|
||||||
|
@ -600,4 +600,14 @@ insert into t1 values('2005-06-06');
|
|||||||
select date(left(f1+0,8)) from t1 group by 1;
|
select date(left(f1+0,8)) from t1 group by 1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#12695: Item_func_isnull::update_used_tables
|
||||||
|
# did not update const_item_cache
|
||||||
|
#
|
||||||
|
create table t1(f1 varchar(5) key);
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
select sql_buffer_result max(f1) is null from t1;
|
||||||
|
select sql_buffer_result max(f1)+1 from t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -250,4 +250,17 @@ SELECT a, b, a AS c, COUNT(*) AS count FROM t1 GROUP BY a, b, c WITH ROLLUP;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #11885: derived table specified by a subquery with
|
||||||
|
# ROLLUP over expressions on not nullable group by attributes
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int(11) NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
|
||||||
|
SELECT * FROM (SELECT a, a + 1, COUNT(*) FROM t1 GROUP BY a WITH ROLLUP) t;
|
||||||
|
SELECT * FROM (SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP) t;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -1973,14 +1973,7 @@ void Item::make_field(Send_field *tmp_field)
|
|||||||
|
|
||||||
void Item_empty_string::make_field(Send_field *tmp_field)
|
void Item_empty_string::make_field(Send_field *tmp_field)
|
||||||
{
|
{
|
||||||
enum_field_types type = FIELD_TYPE_VAR_STRING;
|
init_make_field(tmp_field,FIELD_TYPE_VAR_STRING);
|
||||||
if (max_length >= 16777216)
|
|
||||||
type = FIELD_TYPE_LONG_BLOB;
|
|
||||||
else if (max_length >= 65536)
|
|
||||||
type = FIELD_TYPE_MEDIUM_BLOB;
|
|
||||||
else if (max_length >= 256)
|
|
||||||
type = FIELD_TYPE_BLOB;
|
|
||||||
init_make_field(tmp_field, type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -826,7 +826,7 @@ public:
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
args[0]->update_used_tables();
|
args[0]->update_used_tables();
|
||||||
if (!(used_tables_cache=args[0]->used_tables()))
|
if ((const_item_cache= !(used_tables_cache= args[0]->used_tables())))
|
||||||
{
|
{
|
||||||
/* Remember if the value is always NULL or never NULL */
|
/* Remember if the value is always NULL or never NULL */
|
||||||
cached_value= (longlong) args[0]->is_null();
|
cached_value= (longlong) args[0]->is_null();
|
||||||
|
@ -9277,6 +9277,8 @@ void free_underlaid_joins(THD *thd, SELECT_LEX *select)
|
|||||||
The function replaces occurrences of group by fields in expr
|
The function replaces occurrences of group by fields in expr
|
||||||
by ref objects for these fields unless they are under aggregate
|
by ref objects for these fields unless they are under aggregate
|
||||||
functions.
|
functions.
|
||||||
|
The function also corrects value of the the maybe_null attribute
|
||||||
|
for the items of all subexpressions containing group by fields.
|
||||||
|
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
The function recursively traverses the tree of the expr expression,
|
The function recursively traverses the tree of the expr expression,
|
||||||
@ -9287,6 +9289,9 @@ void free_underlaid_joins(THD *thd, SELECT_LEX *select)
|
|||||||
This substitution is needed GROUP BY queries with ROLLUP if
|
This substitution is needed GROUP BY queries with ROLLUP if
|
||||||
SELECT list contains expressions over group by attributes.
|
SELECT list contains expressions over group by attributes.
|
||||||
|
|
||||||
|
TODO: Some functions are not null-preserving. For those functions
|
||||||
|
updating of the maybe_null attribute is an overkill.
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
SELECT a+1 FROM t1 GROUP BY a WITH ROLLUP
|
SELECT a+1 FROM t1 GROUP BY a WITH ROLLUP
|
||||||
SELECT SUM(a)+a FROM t1 GROUP BY a WITH ROLLUP
|
SELECT SUM(a)+a FROM t1 GROUP BY a WITH ROLLUP
|
||||||
@ -9307,6 +9312,7 @@ static bool change_group_ref(THD *thd, Item_func *expr, ORDER *group_list,
|
|||||||
arg != arg_end; arg++)
|
arg != arg_end; arg++)
|
||||||
{
|
{
|
||||||
Item *item= *arg;
|
Item *item= *arg;
|
||||||
|
bool arg_changed= FALSE;
|
||||||
if (item->type() == Item::FIELD_ITEM || item->type() == Item::REF_ITEM)
|
if (item->type() == Item::FIELD_ITEM || item->type() == Item::REF_ITEM)
|
||||||
{
|
{
|
||||||
ORDER *group_tmp;
|
ORDER *group_tmp;
|
||||||
@ -9318,15 +9324,20 @@ static bool change_group_ref(THD *thd, Item_func *expr, ORDER *group_list,
|
|||||||
if(!(new_item= new Item_ref(group_tmp->item, 0, item->name)))
|
if(!(new_item= new Item_ref(group_tmp->item, 0, item->name)))
|
||||||
return 1; // fatal_error is set
|
return 1; // fatal_error is set
|
||||||
thd->change_item_tree(arg, new_item);
|
thd->change_item_tree(arg, new_item);
|
||||||
*changed= TRUE;
|
arg_changed= TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (item->type() == Item::FUNC_ITEM)
|
else if (item->type() == Item::FUNC_ITEM)
|
||||||
{
|
{
|
||||||
if (change_group_ref(thd, (Item_func *) item, group_list, changed))
|
if (change_group_ref(thd, (Item_func *) item, group_list, &arg_changed))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
if (arg_changed)
|
||||||
|
{
|
||||||
|
expr->maybe_null= 1;
|
||||||
|
*changed= TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -9389,7 +9400,7 @@ bool JOIN::rollup_init()
|
|||||||
}
|
}
|
||||||
if (item->type() == Item::FUNC_ITEM)
|
if (item->type() == Item::FUNC_ITEM)
|
||||||
{
|
{
|
||||||
bool changed= 0;
|
bool changed= FALSE;
|
||||||
if (change_group_ref(thd, (Item_func *) item, group_list, &changed))
|
if (change_group_ref(thd, (Item_func *) item, group_list, &changed))
|
||||||
return 1;
|
return 1;
|
||||||
/*
|
/*
|
||||||
|
@ -638,33 +638,6 @@ int mysqld_extend_show_tables(THD *thd,const char *db,const char *wild)
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
returns the length of the longest type on the given table.
|
|
||||||
|
|
||||||
This is used so that show fields will return the data using the proper
|
|
||||||
lengths instead of forcing columns such as type to always return with a
|
|
||||||
given length.
|
|
||||||
*/
|
|
||||||
|
|
||||||
uint get_longest_type_in_table(TABLE *table, const char *wild)
|
|
||||||
{
|
|
||||||
Field **ptr,*field;
|
|
||||||
char tmp[MAX_FIELD_WIDTH];
|
|
||||||
uint max_len= 0;
|
|
||||||
|
|
||||||
for (ptr=table->field; (field= *ptr); ptr++)
|
|
||||||
{
|
|
||||||
if (!wild || !wild[0] ||
|
|
||||||
!wild_case_compare(system_charset_info, field->field_name,wild))
|
|
||||||
{
|
|
||||||
String type(tmp,sizeof(tmp), system_charset_info);
|
|
||||||
field->sql_type(type);
|
|
||||||
max_len= max(max_len, type.length());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return max_len;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
** List all columns in a table_list->real_name
|
** List all columns in a table_list->real_name
|
||||||
@ -694,14 +667,9 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
|
|||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
(void) get_table_grant(thd, table_list);
|
(void) get_table_grant(thd, table_list);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* we scan for the longest since long enum types can exceed 40 */
|
|
||||||
uint max_len = get_longest_type_in_table(table, wild);
|
|
||||||
|
|
||||||
List<Item> field_list;
|
List<Item> field_list;
|
||||||
field_list.push_back(new Item_empty_string("Field",NAME_LEN));
|
field_list.push_back(new Item_empty_string("Field",NAME_LEN));
|
||||||
field_list.push_back(new Item_empty_string("Type",
|
field_list.push_back(new Item_empty_string("Type", 40));
|
||||||
max_len > 40 ? max_len : 40));
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
field_list.push_back(new Item_empty_string("Collation",40));
|
field_list.push_back(new Item_empty_string("Collation",40));
|
||||||
field_list.push_back(new Item_empty_string("Null",1));
|
field_list.push_back(new Item_empty_string("Null",1));
|
||||||
|
@ -7182,7 +7182,7 @@ static void test_explain_bug()
|
|||||||
verify_prepare_field(result, 3, "type", "", MYSQL_TYPE_VAR_STRING,
|
verify_prepare_field(result, 3, "type", "", MYSQL_TYPE_VAR_STRING,
|
||||||
"", "", "", 10, 0);
|
"", "", "", 10, 0);
|
||||||
|
|
||||||
verify_prepare_field(result, 4, "possible_keys", "", MYSQL_TYPE_BLOB,
|
verify_prepare_field(result, 4, "possible_keys", "", MYSQL_TYPE_VAR_STRING,
|
||||||
"", "", "", NAME_LEN*64, 0);
|
"", "", "", NAME_LEN*64, 0);
|
||||||
|
|
||||||
verify_prepare_field(result, 5, "key", "", MYSQL_TYPE_VAR_STRING,
|
verify_prepare_field(result, 5, "key", "", MYSQL_TYPE_VAR_STRING,
|
||||||
@ -7195,13 +7195,13 @@ static void test_explain_bug()
|
|||||||
(mysql_get_server_version(mysql) <= 50000 ? 3 : 4096),
|
(mysql_get_server_version(mysql) <= 50000 ? 3 : 4096),
|
||||||
0);
|
0);
|
||||||
|
|
||||||
verify_prepare_field(result, 7, "ref", "", MYSQL_TYPE_BLOB,
|
verify_prepare_field(result, 7, "ref", "", MYSQL_TYPE_VAR_STRING,
|
||||||
"", "", "", NAME_LEN*16, 0);
|
"", "", "", NAME_LEN*16, 0);
|
||||||
|
|
||||||
verify_prepare_field(result, 8, "rows", "", MYSQL_TYPE_LONGLONG,
|
verify_prepare_field(result, 8, "rows", "", MYSQL_TYPE_LONGLONG,
|
||||||
"", "", "", 10, 0);
|
"", "", "", 10, 0);
|
||||||
|
|
||||||
verify_prepare_field(result, 9, "Extra", "", MYSQL_TYPE_BLOB,
|
verify_prepare_field(result, 9, "Extra", "", MYSQL_TYPE_VAR_STRING,
|
||||||
"", "", "", 255, 0);
|
"", "", "", 255, 0);
|
||||||
|
|
||||||
mysql_free_result(result);
|
mysql_free_result(result);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user