我正在尝试读取表示为一组可变长字节的数据。我不知道我做错了什么。
HDFql::execute("CREATE TRUNCATE CHUNKED DATASET inclusion AS UNSIGNED VARTINYINT(UNLIMITED)");
//padding with values
hdfql_execute("SELECT FROM inclusion");
auto count_row = HDFql::cursorGetCount();
std::vector<HDFQL_VARIABLE_LENGTH> result;
std::vector<HDFQL_VARIABLE_LENGTH> my_data(1);
for(auto i=0;i < count_row-1;++i)
{
int number = HDFql::variableRegister(&my_data[0]);
if(i==0)
{
scriptst << "SELECT FROM inclusion INTO MEMORY " << number;
}
else
{
scriptst << "SELECT FROM inclusion(" << i <<":::1) INTO MEMORY " << number;
}
status = HDFql::execute(scriptst);
scriptst.str(std::string());
scriptst.clear();
HDFql::variableUnregister(&my_data);
result.push_back(my_data[0]);
}
在这个版本中,读取发生在第一行,结果按预期添加。但是如果你用一个变量替换向量以从 hdfql 中获取结果,那么内存中的整个堆栈就会崩溃,行数的变量会消失,结果块中的所有内容也会被破坏。我的意思是如果更换:
std::vector<HDFQL_VARIABLE_LENGTH> my_data(2); --> HDFQL_VARIABLE_LENGTH my_data;
result.push_back(my_data);
- 另外,我想澄清一下对hyperslab的正确理解:x-从什么位置读取如果为0则应该为空,y-读取多少->>包含(x:?:?:y)