C++ 示例: BasicIntegerParser
BasicIntegerParser
示例解析由非数字字符分隔的整数字符串。有关使用持续加载的此解析器的版本,请参阅 C++ 示例: ContinuousIntegerParser。
加载和使用示例
按如下所示加载并使用 BasicIntegerParser
示例。
=> CREATE LIBRARY BasicIntegerParserLib AS '/home/dbadmin/BIP.so';
=> CREATE PARSER BasicIntegerParser AS
LANGUAGE 'C++' NAME 'BasicIntegerParserFactory' LIBRARY BasicIntegerParserLib;
=> CREATE TABLE t (i integer);
=> COPY t FROM stdin WITH PARSER BasicIntegerParser();
0
1
2
3
4
5
\.
实施
BasicIntegerParser
类仅实施 API 中的 process()
方法。(它还实施了一个用于类型转换的 helper 方法。)此方法处理每一行输入,查找每一行的数字。当它前进到新行时,它会移动 input.offset
标记并检查输入状态。然后它写入输出。
在工厂中,plan()
方法是无操作的;没有要检查的参数。prepare()
方法使用 SDK 提供的宏实例化解析器:
getParserReturnType()
方法声明了单个输出:
对于所有用 C++ 编写的 UDx,该示例以注册其工厂结束: