本文整理汇总了C++中ObScanner::set_data_version方法的典型用法代码示例。如果您正苦于以下问题:C++ ObScanner::set_data_version方法的具体用法?C++ ObScanner::set_data_version怎么用?C++ ObScanner::set_data_version使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ObScanner
的用法示例。
在下文中一共展示了ObScanner::set_data_version方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cs_get
int ObGetScanProxy::cs_get(const ObGetParam& get_param, ObScanner& scanner,
ObIterator* it_out[],int64_t& it_size)
{
int ret = OB_SUCCESS;
int64_t idx = 0;
if (NULL == it_out || it_size <= 0)
{
ret = OB_INVALID_ARGUMENT;
}
if (OB_SUCCESS == ret)
{
ret = tablet_manager_.get(get_param, scanner);
}
//ms depend on OB_CS_TABLET_NOT_EXIST return value
if (OB_SUCCESS != ret && OB_CS_TABLET_NOT_EXIST != ret)
{
TBSYS_LOG(WARN, "failed to get data from local chunk server, ret=%d", ret);
}
else
{
it_out[idx++] = &scanner;
}
if (OB_SUCCESS == ret)
{
ObScanner* compact_scanner = GET_TSI_MULT(ObScanner,TSI_CS_COMPACTSSTABLE_GET_SCANEER_1);
if (NULL == compact_scanner)
{
TBSYS_LOG(WARN,"alloc scanner failed"); //just warn
}
else
{
compact_scanner->reset();
if ((ret = get_compact_scanner(get_param,scanner,*compact_scanner)) != OB_SUCCESS )
{
TBSYS_LOG(WARN,"get data from compact sstable failed,err=%d",ret);
}
else if (idx < it_size)
{
if (!compact_scanner->is_empty())
{
it_out[idx++] = compact_scanner;
}
int64_t compact_version = compact_scanner->get_data_version();
if (compact_version > 0)
{
scanner.set_data_version(compact_version);
}
}
}
}
it_size = idx;
return ret;
}
示例2: get_compact_scanner
int ObGetScanProxy::get_compact_scanner(const ObGetParam& get_param,
ObScanner& orig_scanner,ObScanner& compact_scanner)
{
ObTabletManager::ObGetThreadContext*& get_context = tablet_manager_.get_cur_thread_get_contex();
const ObGetParam::ObRowIndex* row_index = get_param.get_row_index();
int64_t row_num = orig_scanner.get_row_num();
ColumnFilter* cf = GET_TSI_MULT(ColumnFilter,TSI_CS_COLUMNFILTER_1);
ObTablet* tablet = NULL;
int ret = OB_SUCCESS;
ObRowkey rowkey;
if ((NULL == get_context) || (NULL == row_index) || (NULL == cf))
{
TBSYS_LOG(WARN,"get thread context of get failed");
ret = OB_ERROR;
}
else
{
int64_t compactsstable_version = get_context->min_compactsstable_version_;
if (ObVersion::compare(compactsstable_version,orig_scanner.get_data_version()) > 0)
{
compact_scanner.set_data_version(compactsstable_version);
for(int64_t i=0; (i < row_num) && (OB_SUCCESS == ret); ++i)
{
tablet = get_context->tablets_[i];
rowkey = get_param[row_index[i].offset_]->row_key_;
build_get_column_filter(get_param,row_index[i].offset_,row_index[i].size_,*cf);
if ((tablet != NULL) &&
(ret = get_compact_row(*tablet,rowkey,compactsstable_version,cf,compact_scanner)) != OB_SUCCESS)
{
TBSYS_LOG(WARN,"get data from compactsstable failed,ret=%d",ret);
}
}
}
}
return ret;
}
示例3: fopen
TEST(TestObScanner, add_cell)
{
ObScanner fem;
fem.set_is_req_fullfilled(true, 1011);
fem.set_data_version(170);
char buf[BUFSIZ];
int64_t pospos = 0;
fem.serialize(buf, BUFSIZ, pospos);
FILE *fd;
fd = fopen("tmptest", "w+");
fwrite(buf, 1, pospos, fd);
fclose(fd);
ObScanner os;
ObScanner ost;
/*** added by wushi ***/
int64_t fullfilled_item = 0;
int64_t tmp = 0;
bool is_fullfilled = true;
bool tmp_bool = false;
/// initialize
ASSERT_EQ(os.get_is_req_fullfilled(tmp_bool, fullfilled_item),0);
EXPECT_FALSE(tmp_bool);
ASSERT_EQ(fullfilled_item,0);
/// set fullfilled
is_fullfilled = true;
fullfilled_item = 1000;
os.set_is_req_fullfilled(is_fullfilled,fullfilled_item);
ASSERT_EQ(os.get_is_req_fullfilled(tmp_bool, tmp),0);
ASSERT_EQ(tmp_bool,is_fullfilled);
ASSERT_EQ(tmp,fullfilled_item);
/*** added by wushi ***/
ObCellInfo oci;
oci.table_name_.assign((char*)"table1", 6);
oci.row_key_.assign((char*)"row1", 4);
oci.column_name_.assign((char*)"column1", 7);
oci.value_.set_int(0xff);
ost.set_mem_size_limit(20);
ASSERT_EQ(OB_SIZE_OVERFLOW, ost.add_cell(oci));
os.set_mem_size_limit(1024 * 1024 * 2);
ASSERT_EQ(OB_SUCCESS, os.add_cell(oci));
oci.column_name_.assign((char*)"column2", 7);
oci.value_.set_int(0xfe);
ASSERT_EQ(OB_SUCCESS, os.add_cell(oci));
ObScannerIterator iter = os.begin();
ObCellInfo tci;
ASSERT_EQ(OB_SUCCESS, iter.get_cell(tci));
ASSERT_EQ(string("table1"), string(tci.table_name_.ptr(), tci.table_name_.length()));
ASSERT_EQ(string("row1"), string(tci.row_key_.ptr(), tci.row_key_.length()));
ASSERT_EQ(string("column1"), string(tci.column_name_.ptr(), tci.column_name_.length()));
ASSERT_EQ(OB_SUCCESS, tci.value_.get_int(tmp));
ASSERT_EQ(0xff, tmp);
iter++;
ASSERT_EQ(OB_SUCCESS, iter.get_cell(tci));
ASSERT_EQ(string("table1"), string(tci.table_name_.ptr(), tci.table_name_.length()));
ASSERT_EQ(string("row1"), string(tci.row_key_.ptr(), tci.row_key_.length()));
ASSERT_EQ(string("column2"), string(tci.column_name_.ptr(), tci.column_name_.length()));
ASSERT_EQ(OB_SUCCESS, tci.value_.get_int(tmp));
ASSERT_EQ(0xfe, tmp);
iter++;
ASSERT_EQ(true, os.end() == iter);
//ObCellInfo oci;
char row_key_buffer[1024];
oci.table_name_.assign((char*)"table1", 6);
sprintf(row_key_buffer, "row1");
oci.row_key_.assign(row_key_buffer, 4);
oci.column_name_.assign((char*)"column1", 7);
oci.value_.set_int(0xff);
ASSERT_EQ(OB_SUCCESS, os.add_cell(oci));
oci.table_name_.assign((char*)"table1", 6);
sprintf(row_key_buffer, "row1");
oci.row_key_.assign(row_key_buffer, 4);
oci.column_name_.assign((char*)"column2", 7);
oci.value_.set_int(0xee);
os.set_mem_size_limit(20);
ASSERT_EQ(OB_SIZE_OVERFLOW, os.add_cell(oci));
os.set_mem_size_limit(1024 * 1024 * 2);
ASSERT_EQ(OB_SUCCESS, os.add_cell(oci));
oci.table_name_.assign((char*)"table1", 6);
sprintf(row_key_buffer, "row2");
oci.row_key_.assign(row_key_buffer, 4);
//.........这里部分代码省略.........
示例4: cs_scan
//.........这里部分代码省略.........
else
{
tablet_range_.reset();
ret = scanner.get_range(tablet_range_);
if (OB_SUCCESS == ret)
{
it_out[it_num++] = sstable_scanner;
}
else
{
TBSYS_LOG(WARN, "failed to get tablet range from scanner, ret=%d", ret);
}
}
}
if (OB_SUCCESS == ret)
{
int64_t query_version = 0;
const ObVersionRange version_range = scan_param.get_version_range();
if (!version_range.border_flag_.is_max_value() && version_range.end_version_ != 0)
{
query_version = version_range.end_version_;
}
ObTablet*& scan_tablet = tablet_manager_.get_cur_thread_scan_tablet();
int32_t compactsstable_num = scan_tablet->get_compactsstable_num();
if (compactsstable_num > 0)
{
ObCompactSSTableMemNode* mem_node = scan_tablet->get_compactsstable_list();
ObCompactMemIteratorArray *its = GET_TSI_MULT(ObCompactMemIteratorArray,TSI_CS_COMPACTSSTABLE_ITERATOR_1);
ColumnFilter* cf = GET_TSI_MULT(ColumnFilter,TSI_CS_COLUMNFILTER_1);
ObCompactSSTableMem* mem = NULL;
int64_t major_version = 0;
int32_t i = 0;
if ((NULL == mem_node) || (NULL == cf) || (NULL == its))
{
TBSYS_LOG(WARN,"unexpect error,mem_node=%p,cf=%p,its=%p",mem_node,cf,its);
ret = OB_ALLOCATE_MEMORY_FAILED;
}
else
{
cf->clear();
}
if ((OB_SUCCESS == ret) && (NULL == (cf = ColumnFilter::build_columnfilter(scan_param, cf))))
{
TBSYS_LOG(WARN,"build columnfilter failed");
ret = OB_ERROR;
}
for(i=0; (mem_node != NULL) && (i < compactsstable_num) && (OB_SUCCESS == ret) && (it_num < it_size);++i)
{
mem = &mem_node->mem_;
if (NULL == mem)
{
TBSYS_LOG(WARN,"unexpect error,compact mem is null");
ret = OB_ERROR;
}
else
{
//query version just have major version
major_version = mem->get_version_range().major_version_;
if ((0 == query_version) || (query_version > 0 && major_version <= query_version))
{
if ((ret = its->iters_[i].init(mem)) != OB_SUCCESS)
{
TBSYS_LOG(WARN,"init iterator of compact mem failed,ret=%d",ret);
}
else if ((ret = its->iters_[i].set_scan_param(*scan_param.get_range(),cf,
scan_param.get_scan_direction() == ScanFlag::BACKWARD))
!= OB_SUCCESS)
{
TBSYS_LOG(WARN,"set scan param failed,ret=%d",ret);
}
else
{
it_out[it_num++] = &its->iters_[i];
//set data version to the last compact sstable version
scanner.set_data_version(mem->get_data_version());
FILL_TRACE_LOG("add compact iterator to merger,it_num:%ld,version:%ld",it_num,mem->get_data_version());
}
}
else
{
break; //got enough data
}
}
mem_node = mem_node->next_;
} //end for
} //end compactsstable_num > 0
}
if (OB_SUCCESS == ret)
{
it_size = it_num;
}
return ret;
}
示例5: get_decoded_scanner
int ObScannerLoader::get_decoded_scanner(ObScanner ¶m)
{
ObNewRange range;
ObString column;
ObString table_name;
char value[4096];
if (config_loaded_)
{
TBSYS_LOG(INFO, "creating scanner");
param.reset();
range.reset();
range.table_id_ = table_id_;
TBSYS_LOG(DEBUG, "range_start_=%s", to_cstring(range_start_));
TBSYS_LOG(DEBUG, "range_end_=%s", to_cstring(range_end_));
range.start_key_ = range_start_;
if (range_start_inclusive_)
range.border_flag_.set_inclusive_start();
else
range.border_flag_.unset_inclusive_start();
if (range_start_min_)
range.start_key_.set_min_row();
range.end_key_ = range_end_;
if (range_end_inclusive_)
range.border_flag_.set_inclusive_end();
else
range.border_flag_.unset_inclusive_end();
if (range_end_max_)
range.end_key_.set_max_row();
param.set_range(range);
//param.set_is_req_fullfilled(is_fullfilled_, actual_fullfilled_item_num_);
param.set_is_req_fullfilled(is_fullfilled_, fullfilled_item_num_);
param.set_data_version(data_version_);
FILE *fp = NULL;
if ((fp = fopen(data_file_name_, "rb")) == NULL) {
TBSYS_LOG(ERROR, "Fail to open %s", data_file_name_);
}
else
{
while(fgets(value, 4096, fp))
{
/* only digit and string accepted. if not dig, then string */
int start = 0;
int end = 0;
int cnt = 0;
char buf[4096];
int table_id = 0;
int column_cnt = 0;
ObRowkey row_key;
while(true)
{
while(isspace(value[start]))
{
start++;
}
end = start;
while(!isspace(value[end]) && value[end] != '\0')
{
end++;
}
if (start != end)
{
memset(buf, 0, 4096);
cnt = end - start;
strncpy(buf, &value[start], cnt);
buf[cnt] = '\0';
if (column_cnt == 0)
{
table_id = atoi(buf);
}
else if(column_cnt == 1)
{
// TODO build rowkey
//strcpy(row_key_buf, buf);
//row_key.assign(row_key_buf, cnt);
}
else
{
build_cell_info(table_id, row_key, buf, param);
}
column_cnt++;
start = end;
}
if (value[end] == '\0')
{
break;
}
}
//.........这里部分代码省略.........