代码之家  ›  专栏  ›  技术社区  ›  GetFree

用C++ STL功能编写MySQL UDF

  •  1
  • GetFree  · 技术社区  · 17 年前

    MySQL文档中有一条语句( http://dev.mysql.com/doc/refman/5.0/en/adding-udf.html

    UDF包含成为正在运行的服务器的一部分的代码,因此,当您编写UDF时,您会受到任何和所有适用于编写服务器代码的约束的约束。例如, . "

    如果使用C++标准库函数来编写UDF,为什么会出现问题?

    2 回复  |  直到 17 年前
        1
  •  2
  •   user121826    17 年前

    特别是,您的UDF不能允许抛出任何C++异常。在从UDF返回之前,必须捕获所有异常。这通常需要尝试进入C++代码中的任何一个UDF,包括一个“catch(…)”子句,如果你特别偏执。

        2
  •  0
  •   Peter M    17 年前

    我对libstdc++一点也不了解,但使用“例如”位意味着此警告适用于libstdc++以外的其他库。我建议,这意味着通常要警惕标准库,因为它们可能会生成在UDF环境中无法工作的内容。

    例如(回溯到C),strtok在调用之间维护一个本地状态,这意味着您必须序列化它的使用,否则如果您试图同时使用它处理两个不同的字符串,就会面临结果的损坏。因此,strtok不能在像UDF这样的环境中工作,在这种环境中,您无法控制调用函数的位置和时间。

    因此,我认为应该避免在多线程环境中不起作用的任何事情。

    但请注意,上述内容纯粹是基于我的猜测,而不是基于现实。