mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch '10.6' into 10.11
This commit is contained in:
@@ -714,7 +714,13 @@ SPIDER_DB_ROW *spider_db_mbase_result::current_row()
|
||||
DBUG_RETURN((SPIDER_DB_ROW *) row.clone());
|
||||
}
|
||||
|
||||
SPIDER_DB_ROW *spider_db_mbase_result::fetch_row()
|
||||
/*
|
||||
Fetch results from the data node and store them in a
|
||||
SPIDER_DB_ROW
|
||||
|
||||
@param skips A bitmap specifying which fields to skip storing
|
||||
*/
|
||||
SPIDER_DB_ROW *spider_db_mbase_result::fetch_row(MY_BITMAP *skips)
|
||||
{
|
||||
DBUG_ENTER("spider_db_mbase_result::fetch_row");
|
||||
DBUG_PRINT("info",("spider this=%p", this));
|
||||
@@ -730,7 +736,22 @@ SPIDER_DB_ROW *spider_db_mbase_result::fetch_row()
|
||||
DBUG_RETURN(NULL);
|
||||
}
|
||||
row.lengths = mysql_fetch_lengths(db_result);
|
||||
row.field_count = mysql_num_fields(db_result);
|
||||
if (skips != NULL)
|
||||
{
|
||||
uint i= 0;
|
||||
for (uint j= 0; j < mysql_num_fields(db_result); j++)
|
||||
{
|
||||
if (!bitmap_is_set(skips, j))
|
||||
{
|
||||
row.row[i]= row.row[j];
|
||||
row.lengths[i]= row.lengths[j];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
row.field_count= i;
|
||||
}
|
||||
else
|
||||
row.field_count = mysql_num_fields(db_result);
|
||||
row.row[row.field_count] = NULL;
|
||||
row.row_first = row.row;
|
||||
row.lengths_first = row.lengths;
|
||||
@@ -5414,11 +5435,12 @@ int spider_db_mbase_util::print_item_func(
|
||||
tmp_str.mem_calc();
|
||||
if (tmp_str.reserve(1))
|
||||
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
|
||||
tmp_ptr = tmp_str.c_ptr_quick();
|
||||
last_str = tmp_ptr = tmp_str.c_ptr_quick();
|
||||
DBUG_PRINT("info",("spider tmp_ptr = %s", tmp_ptr));
|
||||
while ((tmp_ptr2 = strstr(tmp_ptr, SPIDER_SQL_AS_BINARY_STR)))
|
||||
tmp_ptr = tmp_ptr2 + 1;
|
||||
last_str = tmp_ptr - 1;
|
||||
if (tmp_ptr != last_str)
|
||||
last_str = tmp_ptr - 1;
|
||||
last_str_length = strlen(last_str) - SPIDER_SQL_CLOSE_PAREN_LEN;
|
||||
break;
|
||||
} else if (!strncasecmp("cast_as_signed", func_name, func_name_length))
|
||||
@@ -5539,11 +5561,12 @@ int spider_db_mbase_util::print_item_func(
|
||||
tmp_str.mem_calc();
|
||||
if (tmp_str.reserve(1))
|
||||
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
|
||||
tmp_ptr = tmp_str.c_ptr_quick();
|
||||
last_str = tmp_ptr = tmp_str.c_ptr_quick();
|
||||
DBUG_PRINT("info",("spider tmp_ptr = %s", tmp_ptr));
|
||||
while ((tmp_ptr2 = strstr(tmp_ptr, SPIDER_SQL_AS_DECIMAL_STR)))
|
||||
tmp_ptr = tmp_ptr2 + 1;
|
||||
last_str = tmp_ptr - 1;
|
||||
if (tmp_ptr != last_str)
|
||||
last_str = tmp_ptr - 1;
|
||||
last_str_length = strlen(last_str) - SPIDER_SQL_CLOSE_PAREN_LEN;
|
||||
break;
|
||||
} else if (!strncasecmp("cast_as_datetime", func_name,
|
||||
@@ -5676,11 +5699,12 @@ int spider_db_mbase_util::print_item_func(
|
||||
tmp_str.mem_calc();
|
||||
if (tmp_str.reserve(1))
|
||||
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
|
||||
tmp_ptr = tmp_str.c_ptr_quick();
|
||||
last_str = tmp_ptr = tmp_str.c_ptr_quick();
|
||||
DBUG_PRINT("info",("spider tmp_ptr = %s", tmp_ptr));
|
||||
while ((tmp_ptr2 = strstr(tmp_ptr, SPIDER_SQL_AS_CHAR_STR)))
|
||||
while ((tmp_ptr2 = strstr(tmp_ptr, SPIDER_SQL_AS_STR)))
|
||||
tmp_ptr = tmp_ptr2 + 1;
|
||||
last_str = tmp_ptr - 1;
|
||||
if (tmp_ptr != last_str)
|
||||
last_str = tmp_ptr - 1;
|
||||
last_str_length = strlen(last_str) - SPIDER_SQL_CLOSE_PAREN_LEN;
|
||||
}
|
||||
break;
|
||||
@@ -13634,7 +13658,8 @@ int spider_mbase_handler::append_list_item_select_part(
|
||||
uint alias_length,
|
||||
bool use_fields,
|
||||
spider_fields *fields,
|
||||
ulong sql_type
|
||||
ulong sql_type,
|
||||
int n_aux
|
||||
) {
|
||||
int error_num;
|
||||
spider_string *str;
|
||||
@@ -13649,7 +13674,7 @@ int spider_mbase_handler::append_list_item_select_part(
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
error_num = append_list_item_select(select, str, alias, alias_length,
|
||||
use_fields, fields);
|
||||
use_fields, fields, n_aux);
|
||||
DBUG_RETURN(error_num);
|
||||
}
|
||||
|
||||
@@ -13659,38 +13684,29 @@ int spider_mbase_handler::append_list_item_select(
|
||||
const char *alias,
|
||||
uint alias_length,
|
||||
bool use_fields,
|
||||
spider_fields *fields
|
||||
spider_fields *fields,
|
||||
int n_aux
|
||||
) {
|
||||
int error_num;
|
||||
uint32 length, begin;
|
||||
List_iterator_fast<Item> it(*select);
|
||||
Item *item;
|
||||
Field *field;
|
||||
const char *item_name;
|
||||
DBUG_ENTER("spider_mbase_handler::append_list_item_select");
|
||||
DBUG_PRINT("info",("spider this=%p", this));
|
||||
begin = str->length();
|
||||
while ((item = it++))
|
||||
{
|
||||
if (item->const_item())
|
||||
{
|
||||
DBUG_PRINT("info",("spider const item"));
|
||||
fields->get_next_field_ptr();
|
||||
if (n_aux-- > 0)
|
||||
continue;
|
||||
}
|
||||
if ((error_num = spider_db_print_item_type(item, NULL, spider, str,
|
||||
alias, alias_length, dbton_id, use_fields, fields)))
|
||||
{
|
||||
DBUG_RETURN(error_num);
|
||||
}
|
||||
field = *(fields->get_next_field_ptr());
|
||||
if (field)
|
||||
{
|
||||
item_name = SPIDER_field_name_str(field);
|
||||
length = SPIDER_field_name_length(field);
|
||||
} else {
|
||||
item_name = SPIDER_item_name_str(item);
|
||||
length = SPIDER_item_name_length(item);
|
||||
}
|
||||
item_name = SPIDER_item_name_str(item);
|
||||
length = SPIDER_item_name_length(item);
|
||||
if (str->reserve(
|
||||
SPIDER_SQL_COMMA_LEN + /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
|
||||
SPIDER_SQL_SPACE_LEN + length
|
||||
@@ -13761,7 +13777,7 @@ int spider_mbase_handler::append_group_by(
|
||||
str->q_append(SPIDER_SQL_GROUP_STR, SPIDER_SQL_GROUP_LEN);
|
||||
for (; order; order = order->next)
|
||||
{
|
||||
if ((error_num = spider_db_print_item_type((*order->item), NULL, spider,
|
||||
if ((error_num = spider_db_print_item_type(order->item_ptr, NULL, spider,
|
||||
str, alias, alias_length, dbton_id, use_fields, fields)))
|
||||
{
|
||||
DBUG_RETURN(error_num);
|
||||
@@ -13818,7 +13834,7 @@ int spider_mbase_handler::append_order_by(
|
||||
str->q_append(SPIDER_SQL_ORDER_STR, SPIDER_SQL_ORDER_LEN);
|
||||
for (; order; order = order->next)
|
||||
{
|
||||
if ((error_num = spider_db_print_item_type((*order->item), NULL, spider,
|
||||
if ((error_num = spider_db_print_item_type(order->item_ptr, NULL, spider,
|
||||
str, alias, alias_length, dbton_id, use_fields, fields)))
|
||||
{
|
||||
DBUG_RETURN(error_num);
|
||||
|
Reference in New Issue
Block a user