2015-10-06 107 views
4

我創建了自己的R樹:「rtree.h」擴展PostgreSQL的

我想用我自己的數據結構(使用POSTGIS)創建的Postgres的延伸,我已經讀到Interfacing Extensions To Indexes,現在我我讀了一些例子here,但說實話,我一點都不明白怎麼用我自己的R-Tree來創建一個可擴展性,我理解關於運算符,索引等的概念,但我不知道怎麼做。

那麼,如何將我的文件連接到PostGis,然後在PostgreSQL上創建可擴展性?

由於延伸性的功能,讓說,在PostgreSQL的網站上的一個例子:

CREATE OR REPLACE FUNCTION my_consistent(internal, data_type, smallint, oid, internal) 
RETURNS bool 
AS 'MODULE_PATHNAME' 
LANGUAGE C STRICT; 

它是如何工作的? MODULE_PATHNAME等於/path/rtree.h?

回答

2

在如何定義在Postgres的C語言編寫的一個功能,你必須首先編譯對象條件,所以'MODULE PATHNAME'rtree.so在Linux系統上,可能在Windows的DLL。函數目錄here中的代碼提供了C中函數定義的概要以及在Postgres中聲明函數的SQL函數。

就您如何實現R-Tree而言,我會使用您已經找到的GIST資源。我不認爲你可以編譯R-Tree.c程序,它只是工作,你必須使用GIST構造。它看起來像was once Postgres樹幹中的r-tree實現,您可能能夠找到,或者您可以查看當前樹幹中的此B樹主要擴展:https://github.com/postgres/postgres/tree/master/contrib/btree_gist


+1

謝謝您的回答!你說得對有關編譯,所以首先我想要做一個小測試,但是我有些疑惑(http://stackoverflow.com/questions/32985683/creating-an -extension-test-in-postgresql)。 –