传递一个数据集作为在ECL中嵌入c++的参数



我想将数据集作为参数传递给c++嵌入式函数。当我们硬编码数据集时,这个代码片段似乎是有效的。数据集是一个BLOB类型的喷塑block .dat文件,具有十六进制数据。

#ECL到c++映射文档

inRec := { DATA1 id };
ds := DATASET([x'45', x'55'], inRec);
DATA traceDataset(DATASET(inRec) input) := EMBED(C++)
#include <stdio.h>
#include <unordered_map>
using namespace std;
#body
__lenResult = 2;
__result = (void *)(input+0);
ENDEMBED;
OUTPUT(traceDataset(ds)); //**The final output will be 4555**

当数据集作为输入提供时,我无法在相同的c++嵌入式函数中访问此数据集的单个字节。错误信息'System error: 99: Attempt to execute an activity that has not been created'显示。

rawrec := RECORD
DATA1 block
END;
rawds := DATASET('~.::bitcoinraw',rawrec,FLAT);
DATA traceDataset(DATASET(rawrec) input) := EMBED(C++)
#include <stdio.h>
#include <unordered_map>
using namespace std;
#body
__lenResult = 2;
__result = (void *)(input+0);
ENDEMBED;
OUTPUT(traceDataset(rawds));

我联系了开发人员,他们希望您为这个问题创建一个JIRA票据(https://track.hpccsystems.com),以便他们可以调试查询。现在,这看起来像是一个bug,你需要通过官方渠道报告,这样他们才能正确地解决它。

最新更新