如何删除名称以数字开头的Postgres-XL数据库?

时间:2016-08-25 11:20:12

标签: postgres-xl

我是Postgres-XL的新手,我刚刚创建了一个运行postgres-xl-9.5r1.3的测试集群。

它在三个节点上设置,一个节点GTM,两个节点上各有一个协调器和一个Datanode。

我计划在这两个节点之间进行负载平衡,但目前我只是在第一个协调器上连接并运行SQL查询。

在测试一些基本命令时,我创建了一些测试数据库,其中一个具有完全数字名称," 213"和一个名称以数字开头," 123test& #34 ;.当尝试删除其中任何一个时,我收到语法错误:

postgres=# DROP DATABASE "213";
ERROR:  syntax error at or near "213"

postgres=# drop database 123test;
ERROR:  syntax error at or near "123"
LINE 1: drop database 123test;

postgres=# drop database "123test";
ERROR:  syntax error at or near "123"

删除名称以字母开头的数据库工作正常。

有谁知道如何去删除这些数据库?我做错了什么,或者这是Postgres-XL的问题?

1 个答案:

答案 0 :(得分:0)

我已经通过他们的错误报告邮件列表联系了Postgres-XL团队,似乎这是一个与向远程节点发送命令时如何引用数据库名称相关的错误。

Postgres-XL团队提供的以下补丁应该解决这个问题:

diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index cc8e06e..b73be0a 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -807,7 +807,8 @@ standard_ProcessUtility(Node *parsetree,
                    DropDBCleanConnection(stmt->dbname);

                    /* Clean also remote Coordinators */
-                   sprintf(query, "CLEAN CONNECTION TO ALL FOR DATABASE %s;", stmt->dbname);
+                   sprintf(query, "CLEAN CONNECTION TO ALL FOR DATABASE %s;",
+                           quote_identifier(stmt->dbname));

                    ExecUtilityStmtOnNodes(query, NULL, sentToRemote, true, EXEC_ON_ALL_NODES, false);
                }