summaryrefslogtreecommitdiff
path: root/storage/spider/spd_db_conn.cc
diff options
context:
space:
mode:
authorKentoku <kentokushiba@gmail.com>2018-11-20 00:12:58 +0900
committerSergei Golubchik <serg@mariadb.org>2019-01-31 08:51:34 +0100
commit6caf9ec425a12ed54741cdf4c4a238c45cabd898 (patch)
tree26555b3c02ad22f3a719508cae99d40f2f0c4f57 /storage/spider/spd_db_conn.cc
parent36be0a5aef0376c526d68007da1c11ac440f0d8b (diff)
downloadmariadb-git-6caf9ec425a12ed54741cdf4c4a238c45cabd898.tar.gz
Update Spider to version 3.3.14. Add direct left outer join/right outer join/inner join feature
Diffstat (limited to 'storage/spider/spd_db_conn.cc')
-rw-r--r--storage/spider/spd_db_conn.cc413
1 files changed, 265 insertions, 148 deletions
diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc
index ac5701a8274..1e117b68728 100644
--- a/storage/spider/spd_db_conn.cc
+++ b/storage/spider/spd_db_conn.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2017 Kentoku Shiba
+/* Copyright (C) 2008-2018 Kentoku Shiba
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -77,7 +77,7 @@ pthread_mutex_t spider_open_conn_mutex;
const char spider_dig_upper[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
/* UTC time zone for timestamp columns */
-extern Time_zone *UTC;
+Time_zone *UTC = 0;
int spider_db_connect(
const SPIDER_SHARE *share,
@@ -1387,12 +1387,34 @@ int spider_db_unlock_tables(
int spider_db_append_name_with_quote_str(
spider_string *str,
- char *name,
+ const char *name,
uint dbton_id
) {
- int error_num, length = strlen(name);
- char *name_end, head_code;
DBUG_ENTER("spider_db_append_name_with_quote_str");
+ DBUG_RETURN(spider_db_append_name_with_quote_str_internal(
+ str, name, strlen(name), dbton_id));
+}
+
+int spider_db_append_name_with_quote_str(
+ spider_string *str,
+ LEX_CSTRING &name,
+ uint dbton_id
+) {
+ DBUG_ENTER("spider_db_append_name_with_quote_str");
+ DBUG_RETURN(spider_db_append_name_with_quote_str_internal(
+ str, name.str, name.length, dbton_id));
+}
+
+int spider_db_append_name_with_quote_str_internal(
+ spider_string *str,
+ const char *name,
+ int length,
+ uint dbton_id
+) {
+ int error_num;
+ const char *name_end;
+ char head_code;
+ DBUG_ENTER("spider_db_append_name_with_quote_str_internal");
for (name_end = name + length; name < name_end; name += length)
{
head_code = *name;
@@ -1695,8 +1717,13 @@ int spider_db_append_key_where_internal(
if (sql_kind == SPIDER_SQL_KIND_HANDLER)
{
+#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
const char *key_name = key_info->name.str;
- key_name_length = key_info->name.length;
+ key_name_length = key_info->name.length;
+#else
+ const char *key_name = key_info->name;
+ key_name_length = strlen(key_name);
+#endif
if (str->reserve(SPIDER_SQL_READ_LEN +
/* SPIDER_SQL_NAME_QUOTE_LEN */ 2 + key_name_length))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
@@ -2876,7 +2903,7 @@ int spider_db_fetch_row(
THD *thd = field->table->in_use;
Time_zone *saved_time_zone = thd->variables.time_zone;
DBUG_ENTER("spider_db_fetch_row");
- DBUG_PRINT("info", ("spider field_name %s", field->field_name.str));
+ DBUG_PRINT("info", ("spider field_name %s", SPIDER_field_name_str(field)));
DBUG_PRINT("info", ("spider fieldcharset %s", field->charset()->csname));
thd->variables.time_zone = UTC;
@@ -3013,7 +3040,7 @@ int spider_db_fetch_table(
dbug_tmp_use_all_columns(table, table->write_set);
#endif
DBUG_PRINT("info", ("spider bitmap is set %s",
- (*field)->field_name.str));
+ SPIDER_field_name_str(*field)));
if ((error_num =
spider_db_fetch_row(share, *field, row, ptr_diff)))
DBUG_RETURN(error_num);
@@ -3184,7 +3211,8 @@ int spider_db_fetch_key(
my_bitmap_map *tmp_map =
dbug_tmp_use_all_columns(table, table->write_set);
#endif
- DBUG_PRINT("info", ("spider bitmap is set %s", field->field_name.str));
+ DBUG_PRINT("info", ("spider bitmap is set %s",
+ SPIDER_field_name_str(field)));
if ((error_num =
spider_db_fetch_row(share, field, row, ptr_diff)))
DBUG_RETURN(error_num);
@@ -3303,7 +3331,7 @@ int spider_db_fetch_minimum_columns(
dbug_tmp_use_all_columns(table, table->write_set);
#endif
DBUG_PRINT("info", ("spider bitmap is set %s",
- (*field)->field_name.str));
+ SPIDER_field_name_str(*field)));
if ((error_num = spider_db_fetch_row(share, *field, row, ptr_diff)))
DBUG_RETURN(error_num);
#ifndef DBUG_OFF
@@ -4011,9 +4039,18 @@ int spider_db_store_result(
DBUG_PRINT("info",("spider store result to temporary table"));
DBUG_ASSERT(!current->result_tmp_tbl);
+#ifdef SPIDER_use_LEX_CSTRING_for_Field_blob_constructor
+ LEX_CSTRING field_name1 = {STRING_WITH_LEN("a")};
+ LEX_CSTRING field_name2 = {STRING_WITH_LEN("b")};
+ LEX_CSTRING field_name3 = {STRING_WITH_LEN("c")};
+ if (!(current->result_tmp_tbl = spider_mk_sys_tmp_table_for_result(
+ thd, table, &current->result_tmp_tbl_prm, &field_name1, &field_name2,
+ &field_name3, &my_charset_bin)))
+#else
if (!(current->result_tmp_tbl = spider_mk_sys_tmp_table_for_result(
thd, table, &current->result_tmp_tbl_prm, "a", "b", "c",
&my_charset_bin)))
+#endif
{
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
@@ -5324,7 +5361,7 @@ int spider_db_seek_tmp_table(
dbug_tmp_use_all_columns(table, table->write_set);
#endif
DBUG_PRINT("info", ("spider bitmap is set %s",
- (*field)->field_name.str));
+ SPIDER_field_name_str(*field)));
if ((error_num =
spider_db_fetch_row(spider->share, *field, row, ptr_diff)))
DBUG_RETURN(error_num);
@@ -5411,7 +5448,8 @@ int spider_db_seek_tmp_key(
my_bitmap_map *tmp_map =
dbug_tmp_use_all_columns(table, table->write_set);
#endif
- DBUG_PRINT("info", ("spider bitmap is set %s", field->field_name.str));
+ DBUG_PRINT("info", ("spider bitmap is set %s",
+ SPIDER_field_name_str(field)));
if ((error_num =
spider_db_fetch_row(spider->share, field, row, ptr_diff)))
DBUG_RETURN(error_num);
@@ -5502,7 +5540,7 @@ int spider_db_seek_tmp_minimum_columns(
dbug_tmp_use_all_columns(table, table->write_set);
#endif
DBUG_PRINT("info", ("spider bitmap is set %s",
- (*field)->field_name.str));
+ SPIDER_field_name_str(*field)));
if ((error_num =
spider_db_fetch_row(spider->share, *field, row, ptr_diff)))
DBUG_RETURN(error_num);
@@ -5514,7 +5552,7 @@ int spider_db_seek_tmp_minimum_columns(
else if (bitmap_is_set(table->read_set, (*field)->field_index))
{
DBUG_PRINT("info", ("spider bitmap is cleared %s",
- (*field)->field_name.str));
+ SPIDER_field_name_str(*field)));
bitmap_clear_bit(table->read_set, (*field)->field_index);
}
}
@@ -8478,11 +8516,14 @@ int spider_db_flush_logs(
contains only one field; NULL otherwise.
*/
-Field *spider_db_find_field_in_item_list(Item **item_list, uint item_count,
- uint start_item, spider_string *str,
- const char *func_name,
- int func_name_length)
-{
+Field *spider_db_find_field_in_item_list(
+ Item **item_list,
+ uint item_count,
+ uint start_item,
+ spider_string *str,
+ const char *func_name,
+ int func_name_length
+) {
uint item_num;
Item *item;
Field *field = NULL;
@@ -8530,11 +8571,17 @@ Field *spider_db_find_field_in_item_list(Item **item_list, uint item_count,
@return Error code.
*/
-int spider_db_print_item_type(Item *item, Field *field, ha_spider *spider,
- spider_string *str, const char *alias,
- uint alias_length, uint dbton_id,
- bool use_fields, spider_fields *fields)
-{
+int spider_db_print_item_type(
+ Item *item,
+ Field *field,
+ ha_spider *spider,
+ spider_string *str,
+ const char *alias,
+ uint alias_length,
+ uint dbton_id,
+ bool use_fields,
+ spider_fields *fields
+) {
DBUG_ENTER("spider_db_print_item_type");
DBUG_PRINT("info",("spider COND type=%d", item->type()));
@@ -8560,26 +8607,40 @@ int spider_db_print_item_type(Item *item, Field *field, ha_spider *spider,
case Item::ROW_ITEM:
DBUG_RETURN(spider_db_open_item_row((Item_row *) item, spider, str,
alias, alias_length, dbton_id, use_fields, fields));
+#ifdef SPIDER_USE_CONST_ITEM_FOR_STRING_INT_REAL_DECIMAL_DATE_ITEM
+ case Item::CONST_ITEM:
+ {
+ switch (item->cmp_type()) {
+ case TIME_RESULT:
+ case STRING_RESULT:
+ DBUG_RETURN(spider_db_open_item_string(item, field, spider, str,
+ alias, alias_length, dbton_id, use_fields, fields));
+ case INT_RESULT:
+ case REAL_RESULT:
+ case DECIMAL_RESULT:
+ DBUG_RETURN(spider_db_open_item_int(item, field, spider, str,
+ alias, alias_length, dbton_id, use_fields, fields));
+ default:
+ DBUG_ASSERT(FALSE);
+ DBUG_RETURN(spider_db_print_item_type_default(item, spider, str));
+ }
+ }
+#else
case Item::STRING_ITEM:
DBUG_RETURN(spider_db_open_item_string(item, field, spider, str,
- alias, alias_length, dbton_id,
- use_fields, fields));
+ alias, alias_length, dbton_id, use_fields, fields));
case Item::INT_ITEM:
case Item::REAL_ITEM:
case Item::DECIMAL_ITEM:
DBUG_RETURN(spider_db_open_item_int(item, field, spider, str,
- alias, alias_length, dbton_id,
- use_fields, fields));
+ alias, alias_length, dbton_id, use_fields, fields));
+#endif
case Item::CACHE_ITEM:
- DBUG_RETURN(spider_db_open_item_cache((Item_cache *) item, field,
- spider, str, alias, alias_length,
- dbton_id, use_fields, fields));
+ DBUG_RETURN(spider_db_open_item_cache((Item_cache *) item, field, spider,
+ str, alias, alias_length, dbton_id, use_fields, fields));
case Item::INSERT_VALUE_ITEM:
DBUG_RETURN(spider_db_open_item_insert_value((Item_insert_value *) item,
- field, spider, str,
- alias, alias_length,
- dbton_id,
- use_fields, fields));
+ field, spider, str, alias, alias_length, dbton_id, use_fields, fields));
case Item::SUBSELECT_ITEM:
case Item::TRIGGER_FIELD_ITEM:
#ifdef SPIDER_HAS_EXPR_CACHE_ITEM
@@ -8587,28 +8648,37 @@ int spider_db_print_item_type(Item *item, Field *field, ha_spider *spider,
#endif
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
default:
- THD *thd = spider->trx->thd;
- SPIDER_SHARE *share = spider->share;
- if (spider_param_skip_default_condition(thd,
- share->skip_default_condition))
- DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
- if (str)
- {
- if (spider->share->access_charset->cset == system_charset_info->cset)
- {
+ DBUG_RETURN(spider_db_print_item_type_default(item, spider, str));
+ }
+
+ DBUG_RETURN(0);
+}
+
+int spider_db_print_item_type_default(
+ Item *item,
+ ha_spider *spider,
+ spider_string *str
+) {
+ DBUG_ENTER("spider_db_print_item_type_default");
+ THD *thd = spider->trx->thd;
+ SPIDER_SHARE *share = spider->share;
+ if (spider_param_skip_default_condition(thd,
+ share->skip_default_condition))
+ DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
+ if (str)
+ {
+ if (spider->share->access_charset->cset == system_charset_info->cset)
+ {
#if MYSQL_VERSION_ID < 50500
- item->print(str->get_str(), QT_IS);
+ item->print(str->get_str(), QT_IS);
#else
- item->print(str->get_str(), QT_TO_SYSTEM_CHARSET);
+ item->print(str->get_str(), QT_TO_SYSTEM_CHARSET);
#endif
- } else {
- item->print(str->get_str(), QT_ORDINARY);
- }
- str->mem_calc();
- }
- break;
+ } else {
+ item->print(str->get_str(), QT_ORDINARY);
+ }
+ str->mem_calc();
}
-
DBUG_RETURN(0);
}
@@ -8641,8 +8711,7 @@ restart_first:
if (str)
restart_pos = str->length();
if ((error_num = spider_db_print_item_type(item, NULL, spider, str,
- alias, alias_length, dbton_id,
- use_fields, fields)))
+ alias, alias_length, dbton_id, use_fields, fields)))
{
if (
str &&
@@ -8676,8 +8745,7 @@ restart_first:
}
if ((error_num = spider_db_print_item_type(item, NULL, spider, str,
- alias, alias_length, dbton_id,
- use_fields, fields)))
+ alias, alias_length, dbton_id, use_fields, fields)))
{
if (
str &&
@@ -8786,7 +8854,15 @@ int spider_db_open_item_ident(
}
if (str)
{
- field_name_length = item_ident->field_name.length;
+#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
+ if (item_ident->field_name.str)
+ field_name_length = item_ident->field_name.length;
+#else
+ if (item_ident->field_name)
+ field_name_length = strlen(item_ident->field_name);
+#endif
+ else
+ field_name_length = 0;
if (share->access_charset->cset == system_charset_info->cset)
{
if (str->reserve(alias_length +
@@ -8795,8 +8871,13 @@ int spider_db_open_item_ident(
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
str->q_append(alias, alias_length);
+#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if ((error_num = spider_dbton[dbton_id].db_util->
append_name(str, item_ident->field_name.str, field_name_length)))
+#else
+ if ((error_num = spider_dbton[dbton_id].db_util->
+ append_name(str, item_ident->field_name, field_name_length)))
+#endif
{
DBUG_RETURN(error_num);
}
@@ -8804,9 +8885,15 @@ int spider_db_open_item_ident(
if (str->reserve(alias_length))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(alias, alias_length);
+#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if ((error_num = spider_dbton[dbton_id].db_util->
append_name_with_charset(str, item_ident->field_name.str,
field_name_length, system_charset_info)))
+#else
+ if ((error_num = spider_dbton[dbton_id].db_util->
+ append_name_with_charset(str, item_ident->field_name,
+ field_name_length, system_charset_info)))
+#endif
{
DBUG_RETURN(error_num);
}
@@ -8891,31 +8978,50 @@ int spider_db_open_item_ref(
DBUG_ENTER("spider_db_open_item_ref");
if (item_ref->ref)
{
+#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if (
(*(item_ref->ref))->type() != Item::CACHE_ITEM &&
item_ref->ref_type() != Item_ref::VIEW_REF &&
!item_ref->table_name &&
item_ref->name.str &&
item_ref->alias_name_used
- ) {
+ )
+#else
+ if (
+ (*(item_ref->ref))->type() != Item::CACHE_ITEM &&
+ item_ref->ref_type() != Item_ref::VIEW_REF &&
+ !item_ref->table_name &&
+ item_ref->name &&
+ item_ref->alias_name_used
+ )
+#endif
+ {
if (str)
{
+#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
uint length = item_ref->name.length;
+#else
+ uint length = strlen(item_ref->name);
+#endif
if (str->reserve(length + /* SPIDER_SQL_NAME_QUOTE_LEN */ 2))
{
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
+#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if ((error_num = spider_dbton[dbton_id].db_util->
append_name(str, item_ref->name.str, length)))
+#else
+ if ((error_num = spider_dbton[dbton_id].db_util->
+ append_name(str, item_ref->name, length)))
+#endif
{
DBUG_RETURN(error_num);
}
}
DBUG_RETURN(0);
}
- DBUG_RETURN(spider_db_print_item_type(*(item_ref->ref), NULL, spider,
- str, alias, alias_length, dbton_id,
- use_fields, fields));
+ DBUG_RETURN(spider_db_print_item_type(*(item_ref->ref), NULL, spider, str,
+ alias, alias_length, dbton_id, use_fields, fields));
}
DBUG_RETURN(spider_db_open_item_ident((Item_ident *) item_ref, spider, str,
alias, alias_length, dbton_id, use_fields, fields));
@@ -8945,8 +9051,7 @@ int spider_db_open_item_row(
{
item = item_row->element_index(roop_count);
if ((error_num = spider_db_print_item_type(item, NULL, spider, str,
- alias, alias_length, dbton_id,
- use_fields, fields)))
+ alias, alias_length, dbton_id, use_fields, fields)))
DBUG_RETURN(error_num);
if (str)
{
@@ -8957,8 +9062,7 @@ int spider_db_open_item_row(
}
item = item_row->element_index(roop_count);
if ((error_num = spider_db_print_item_type(item, NULL, spider, str,
- alias, alias_length, dbton_id,
- use_fields, fields)))
+ alias, alias_length, dbton_id, use_fields, fields)))
DBUG_RETURN(error_num);
if (str)
{
@@ -8987,12 +9091,17 @@ int spider_db_open_item_row(
@return Error code.
*/
-int spider_db_open_item_string(Item *item, Field *field, ha_spider *spider,
- spider_string *str,
- const char *alias, uint alias_length,
- uint dbton_id,
- bool use_fields, spider_fields *fields)
-{
+int spider_db_open_item_string(
+ Item *item,
+ Field *field,
+ ha_spider *spider,
+ spider_string *str,
+ const char *alias,
+ uint alias_length,
+ uint dbton_id,
+ bool use_fields,
+ spider_fields *fields
+) {
int error_num = 0;
DBUG_ENTER("spider_db_open_item_string");
@@ -9002,10 +9111,10 @@ int spider_db_open_item_string(Item *item, Field *field, ha_spider *spider,
TABLE *table;
my_bitmap_map *saved_map;
Time_zone *saved_time_zone;
+ String str_value;
char tmp_buf[MAX_FIELD_WIDTH];
spider_string tmp_str(tmp_buf, MAX_FIELD_WIDTH, str->charset());
String *tmp_str2;
- String str_value;
tmp_str.init_calc_mem(126);
if (!(tmp_str2 = item->val_str(tmp_str.get_str())))
@@ -9013,16 +9122,17 @@ int spider_db_open_item_string(Item *item, Field *field, ha_spider *spider,
if (str->reserve(SPIDER_SQL_NULL_LEN))
{
error_num = HA_ERR_OUT_OF_MEM;
- goto error;
+ goto end;
}
str->q_append(SPIDER_SQL_NULL_STR, SPIDER_SQL_NULL_LEN);
- }
- else
- {
- if (field && field->type() == FIELD_TYPE_TIMESTAMP)
- {
+ } else {
+ if (
+ field &&
+ field->type() == FIELD_TYPE_TIMESTAMP &&
+ field->table->in_use->variables.time_zone != UTC
+ ) {
/*
- Store the string value in the field. This is necessary
+ Store the string value in the field. This is necessary
when the statement contains more than one value for the
same field.
*/
@@ -9039,15 +9149,14 @@ int spider_db_open_item_string(Item *item, Field *field, ha_spider *spider,
if (!tmp_str2)
{
error_num = HA_ERR_OUT_OF_MEM;
- goto error;
+ goto end;
}
}
-
if (str->reserve(SPIDER_SQL_VALUE_QUOTE_LEN * 2 +
- tmp_str2->length() * 2))
+ tmp_str2->length() * 2))
{
error_num = HA_ERR_OUT_OF_MEM;
- goto error;
+ goto end;
}
if (!thd)
tmp_str.mem_calc();
@@ -9056,12 +9165,12 @@ int spider_db_open_item_string(Item *item, Field *field, ha_spider *spider,
if (str->reserve(SPIDER_SQL_VALUE_QUOTE_LEN))
{
error_num = HA_ERR_OUT_OF_MEM;
- goto error;
+ goto end;
}
str->q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN);
}
-error:
+end:
if (thd)
{
thd->variables.time_zone = saved_time_zone;
@@ -9089,12 +9198,17 @@ error:
@return Error code.
*/
-int spider_db_open_item_int(Item *item, Field *field, ha_spider *spider,
- spider_string *str,
- const char *alias, uint alias_length,
- uint dbton_id,
- bool use_fields, spider_fields *fields)
-{
+int spider_db_open_item_int(
+ Item *item,
+ Field *field,
+ ha_spider *spider,
+ spider_string *str,
+ const char *alias,
+ uint alias_length,
+ uint dbton_id,
+ bool use_fields,
+ spider_fields *fields
+) {
int error_num = 0;
DBUG_ENTER("spider_db_open_item_int");
@@ -9102,24 +9216,27 @@ int spider_db_open_item_int(Item *item, Field *field, ha_spider *spider,
{
THD *thd = NULL;
TABLE *table;
- bool print_quoted_string;
my_bitmap_map *saved_map;
Time_zone *saved_time_zone;
+ String str_value;
+ bool print_quoted_string;
char tmp_buf[MAX_FIELD_WIDTH];
spider_string tmp_str(tmp_buf, MAX_FIELD_WIDTH, str->charset());
- String str_value;
String *tmp_str2;
tmp_str.init_calc_mem(127);
if (!(tmp_str2 = item->val_str(tmp_str.get_str())))
{
error_num = HA_ERR_OUT_OF_MEM;
- goto error;
+ goto end;
}
tmp_str.mem_calc();
- if (field && field->type() == FIELD_TYPE_TIMESTAMP)
- {
+ if (
+ field &&
+ field->type() == FIELD_TYPE_TIMESTAMP &&
+ field->table->in_use->variables.time_zone != UTC
+ ) {
/*
Store the int value in the field. This is necessary
when the statement contains more than one value for the
@@ -9132,11 +9249,9 @@ int spider_db_open_item_int(Item *item, Field *field, ha_spider *spider,
saved_time_zone = thd->variables.time_zone;
thd->variables.time_zone = UTC;
print_quoted_string = TRUE;
- }
- else
- {
+ } else {
#ifdef SPIDER_ITEM_HAS_CMP_TYPE
- DBUG_PRINT("info", ("spider cmp_type=%u", item->cmp_type()));
+ DBUG_PRINT("info",("spider cmp_type=%u", item->cmp_type()));
if (item->cmp_type() == TIME_RESULT)
print_quoted_string = TRUE;
else
@@ -9154,23 +9269,24 @@ int spider_db_open_item_int(Item *item, Field *field, ha_spider *spider,
if (!tmp_str2)
{
error_num = HA_ERR_OUT_OF_MEM;
- goto error;
+ goto end;
}
}
if (str->reserve(SPIDER_SQL_VALUE_QUOTE_LEN * 2 + tmp_str2->length()))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ {
+ error_num = HA_ERR_OUT_OF_MEM;
+ goto end;
+ }
str->q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN);
str->append(*tmp_str2);
str->q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN);
- }
- else
- {
+ } else {
if (str->append(*tmp_str2))
error_num = HA_ERR_OUT_OF_MEM;
}
-error:
+end:
if (thd)
{
thd->variables.time_zone = saved_time_zone;
@@ -9198,12 +9314,17 @@ error:
@return Error code.
*/
-int spider_db_open_item_cache(Item_cache *item_cache, Field *field,
- ha_spider *spider, spider_string *str,
- const char *alias, uint alias_length,
- uint dbton_id,
- bool use_fields, spider_fields *fields)
-{
+int spider_db_open_item_cache(
+ Item_cache *item_cache,
+ Field *field,
+ ha_spider *spider,
+ spider_string *str,
+ const char *alias,
+ uint alias_length,
+ uint dbton_id,
+ bool use_fields,
+ spider_fields *fields
+) {
DBUG_ENTER("spider_db_open_item_cache");
if (!item_cache->const_item())
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
@@ -9213,8 +9334,7 @@ int spider_db_open_item_cache(Item_cache *item_cache, Field *field,
{
case STRING_RESULT:
DBUG_RETURN(spider_db_open_item_string(item_cache, field, spider, str,
- alias, alias_length, dbton_id,
- use_fields, fields));
+ alias, alias_length, dbton_id, use_fields, fields));
case ROW_RESULT:
{
int error_num;
@@ -9229,11 +9349,9 @@ int spider_db_open_item_cache(Item_cache *item_cache, Field *field,
for (roop_count = 0; roop_count < item_count; ++roop_count)
{
if ((error_num = spider_db_open_item_cache(
- (Item_cache *)
- item_cache_row->element_index(roop_count),
- NULL, spider, str, alias, alias_length,
- dbton_id, use_fields, fields)))
- {
+ (Item_cache *) item_cache_row->element_index(roop_count), NULL,
+ spider, str, alias, alias_length, dbton_id, use_fields, fields
+ ))) {
DBUG_RETURN(error_num);
}
if (str)
@@ -9244,11 +9362,9 @@ int spider_db_open_item_cache(Item_cache *item_cache, Field *field,
}
}
if ((error_num = spider_db_open_item_cache(
- (Item_cache *)
- item_cache_row->element_index(roop_count),
- NULL, spider, str, alias, alias_length,
- dbton_id, use_fields, fields)))
- {
+ (Item_cache *) item_cache_row->element_index(roop_count), NULL,
+ spider, str, alias, alias_length, dbton_id, use_fields, fields
+ ))) {
DBUG_RETURN(error_num);
}
if (str)
@@ -9266,10 +9382,8 @@ int spider_db_open_item_cache(Item_cache *item_cache, Field *field,
default:
break;
}
-
DBUG_RETURN(spider_db_open_item_int(item_cache, field, spider, str,
- alias, alias_length, dbton_id,
- use_fields, fields));
+ alias, alias_length, dbton_id, use_fields, fields));
}
/**
@@ -9288,13 +9402,17 @@ int spider_db_open_item_cache(Item_cache *item_cache, Field *field,
@return Error code.
*/
-int spider_db_open_item_insert_value(Item_insert_value *item_insert_value,
- Field *field, ha_spider *spider,
- spider_string *str,
- const char *alias, uint alias_length,
- uint dbton_id,
- bool use_fields, spider_fields *fields)
-{
+int spider_db_open_item_insert_value(
+ Item_insert_value *item_insert_value,
+ Field *field,
+ ha_spider *spider,
+ spider_string *str,
+ const char *alias,
+ uint alias_length,
+ uint dbton_id,
+ bool use_fields,
+ spider_fields *fields
+) {
int error_num;
DBUG_ENTER("spider_db_open_item_insert_value");
@@ -9308,9 +9426,7 @@ int spider_db_open_item_insert_value(Item_insert_value *item_insert_value,
str->q_append(SPIDER_SQL_OPEN_PAREN_STR, SPIDER_SQL_OPEN_PAREN_LEN);
}
if ((error_num = spider_db_print_item_type(item_insert_value->arg, field,
- spider, str, alias,
- alias_length, dbton_id,
- use_fields, fields)))
+ spider, str, alias, alias_length, dbton_id, use_fields, fields)))
DBUG_RETURN(error_num);
if (str)
{
@@ -9375,10 +9491,9 @@ int spider_db_append_update_columns(
while ((field = fi++))
{
value = vi++;
- if ((error_num = spider_db_print_item_type((Item *) field, NULL, spider,
- str, alias, alias_length,
- dbton_id,
- use_fields, fields)))
+ if ((error_num = spider_db_print_item_type(
+ (Item *) field, NULL, spider, str, alias, alias_length, dbton_id,
+ use_fields, fields)))
{
if (
error_num == ER_SPIDER_COND_SKIP_NUM &&
@@ -9396,12 +9511,9 @@ int spider_db_append_update_columns(
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
}
- if ((error_num = spider_db_print_item_type((Item *) value,
- ((Item_field *) field)->field,
- spider, str,
- alias, alias_length,
- dbton_id,
- use_fields, fields)))
+ if ((error_num = spider_db_print_item_type(
+ (Item *) value, ((Item_field *) field)->field, spider, str,
+ alias, alias_length, dbton_id, use_fields, fields)))
DBUG_RETURN(error_num);
if (str)
{
@@ -10599,8 +10711,13 @@ int spider_db_udf_copy_key_row(
) {
int error_num;
DBUG_ENTER("spider_db_udf_copy_key_row");
+#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if ((error_num = spider_db_append_name_with_quote_str(str,
(char *) field->field_name.str, dbton_id)))
+#else
+ if ((error_num = spider_db_append_name_with_quote_str(str,
+ (char *) field->field_name, dbton_id)))
+#endif
DBUG_RETURN(error_num);
if (str->reserve(joint_length + *length + SPIDER_SQL_AND_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);