2016-08-25 96 views
0

我对Postgres-XL非常陌生,并且我刚刚创建了一个运行postgres-xl-9.5r1.3的测试集群。如何删除名称以数字开头的Postgres-XL数据库?

它是建立在三个节点,一个节点GTM和两个既具有协调员和每个Datanode的。

我打算负荷这两个节点之间的平衡,但此刻我只是在该协调连接并运行SQL查询。

在测试一些基本的命令,我创建了几个测试数据库,其中一个具有完全数字的名字,“213”,和一个与同位,“123test”开头的名称。当试图除去其中任意一个,我得到一个语法错误:

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

似乎是Postgres的-XL的问题,因为有一个“普通”的Postgres这工作没有任何问题 –

回答

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); 
       } 
相关问题