Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL PL/Proxy和异常来检测坏的碎片连接_Postgresql_Exception Handling_Sharding - Fatal编程技术网

PostgreSQL PL/Proxy和异常来检测坏的碎片连接

PostgreSQL PL/Proxy和异常来检测坏的碎片连接,postgresql,exception-handling,sharding,Postgresql,Exception Handling,Sharding,我试图通过plpgsql函数中的异常来检测错误的postgres PL/代理碎片连接。当直接调用函数时(试图访问坏的碎片会引发异常),这与预期完全一样。但是,现有的代码库通过RUN-ON语句中的plproxy函数间接调用该函数,在这种情况下,访问任何shard(好的或坏的)时抛出异常。是否有其他人看到这一点和/或有解决方案或解决办法 下面是一个问题的示例: A) FunctionA是一个plproxy函数,它具有以下行: 在functionB上运行($1,NULL) B) functionB是一

我试图通过plpgsql函数中的异常来检测错误的postgres PL/代理碎片连接。当直接调用函数时(试图访问坏的碎片会引发异常),这与预期完全一样。但是,现有的代码库通过RUN-ON语句中的plproxy函数间接调用该函数,在这种情况下,访问任何shard(好的或坏的)时抛出异常。是否有其他人看到这一点和/或有解决方案或解决办法

下面是一个问题的示例:

A) FunctionA是一个plproxy函数,它具有以下行: 在functionB上运行($1,NULL)

B) functionB是一个plpgsql函数,它具有以下行: 从functionC()中选择db_索引

C) functionC也是一个plpgsql函数,其代码用于检查连接: 对于()循环中的db_id 开始 执行check_shard(db_id)--这只是调用在碎片上运行的函数 内部错误时发生异常 然后 提出通知“捕获ID%的异常”,db_ID; 结束; 端环

当在SELECT中直接调用functionB或functionC时,好的碎片不会引发异常。但是,当在RUN-ON语句中使用函数调用调用plproxy function时,所有碎片都会引发异常。因此,似乎是plproxy函数或RUN on语句发生了什么事情导致了这个问题


任何帮助都将不胜感激

这听起来像pl/proxy中的一个bug。我建议您与skytools维护人员联系。在我的一生中,我看不出任何合乎逻辑的理由来解释为什么这会是人们想要的行为,甚至可能会发生。也许有什么东西挡住了