2016-08-25 31 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); 
       } 
相關問題