2015-10-06 75 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)。 –