1
0
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:
Oleksandr Byelkin
2024-10-29 15:24:38 +01:00
655 changed files with 8060 additions and 3541 deletions

View File

@@ -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);