修复URLencode不能正确处理z,9,Z的问题。

This commit is contained in:
zhengchao
2016-11-23 16:52:04 +08:00
parent 8acb0225ac
commit 4cc035a54e

View File

@@ -27,7 +27,7 @@
#include "mesa_fuzzy.h"
#include "great_index_engine.h"
int MAAT_FRAME_VERSION_1_8_20161121=1;
int MAAT_FRAME_VERSION_1_8_20161123=1;
const char *maat_module="MAAT Frame";
const char* CHARSET_STRING[]={"NONE","gbk","big5","unicode","utf8","bin",
@@ -151,9 +151,9 @@ int URLEncode(const char* str, const int strSize, char* result, const int result
for ( i=0; (i<strSize)&&(j<resultSize); ++i)
{
ch = str[i];
if (((ch>='A') && (ch<'Z')) ||
((ch>='a') && (ch<'z')) ||
((ch>='0') && (ch<'9')))
if (((ch>='A') && (ch<='Z')) ||
((ch>='a') && (ch<='z')) ||
((ch>='0') && (ch<='9')))
{
result[j++] = ch;
}
@@ -688,12 +688,14 @@ void* create_bool_matcher(MESA_htable_handle compile_hash,int thread_num,void* l
free(one_set);
one_set=NULL;
}
MESA_handle_runtime_log(logger,RLOG_LV_INFO,maat_module,
"build bool matcher start contain %ld compile rule",
q_cnt);
bool_matcher=boolexpr_initialize(set_array, q_cnt, thread_num, &mem_size);
if(bool_matcher!=NULL)
{
MESA_handle_runtime_log(logger,RLOG_LV_INFO,maat_module,
"build bool matcher contain %ld compile rule, use %u memory",
q_cnt,mem_size);
"build bool matcher use %u memory",mem_size);
}
else
{
@@ -943,6 +945,7 @@ struct _Maat_scanner_t* create_maat_scanner(unsigned int version,_Maat_feather_t
scanner->version=version;
scanner->cfg_num=0;
scanner->dedup_expr_num=0;
scanner->max_thread_num=scan_thread_num;
//optimized for CPU cache_alignment 64
scanner->ref_cnt=aligment_int64_array_alloc(scan_thread_num);
@@ -1201,14 +1204,6 @@ void digest_batch_update(GIE_handle_t* handle,MESA_lqueue_head update_q,void*log
update_array=NULL;
return;
}
void batch_update(struct _Maat_scanner_t *scanner,void*logger)
{
rulescan_batch_update(scanner->region,
scanner->region_update_q,
logger);
scanner->last_update_time=time(NULL);
return;
}
struct _Maat_group_rule_t* add_region_to_group(struct _Maat_group_rule_t* group,int region_id,int district_id,int expr_id,enum MAAT_TABLE_TYPE region_type)
{
struct _Maat_region_rule_t* region_rule=(struct _Maat_region_rule_t*)malloc(sizeof(struct _Maat_region_rule_t));
@@ -1581,7 +1576,7 @@ int add_expr_rule(struct _Maat_table_info_t* table,struct db_str_rule_t* db_rule
if(region_str_len==(int)strlen(sub_key_array[k])&&
0==memcmp(sub_key_array[k],region_string,region_str_len))
{
op_expr->no_effect_convert_cnt++;;
op_expr->no_effect_convert_cnt++;
}
}
else
@@ -1605,6 +1600,7 @@ int add_expr_rule(struct _Maat_table_info_t* table,struct db_str_rule_t* db_rule
if((TRUE==table->src_charset_in_dst&&op_expr->no_effect_convert_cnt==sub_expr_cnt)||
op_expr->convert_failed>0)
{
scanner->dedup_expr_num++;
destroy_op_expr(op_expr);
op_expr=NULL;
}
@@ -2584,6 +2580,9 @@ void do_scanner_update(struct _Maat_scanner_t* scanner,MESA_lqueue_head garbage_
{
garbage_bagging(GARBAGE_BOOL_MATCHER, tmp2, garbage_q);
}
MESA_handle_runtime_log(logger,RLOG_LV_INFO,maat_module ,
"Version %d dedup string rule %lu",scanner->version,scanner->dedup_expr_num);
scanner->dedup_expr_num=0;
rulescan_batch_update(scanner->region,
scanner->region_update_q,
logger);