PostgreSQL 是一個高可高擴展的數據庫,它提供了一種功能就是把相關的SQL 對象集合成一個包,這個包,在PostgreSQL中被稱爲一個擴展(extension),爲了定義這個擴展(extension),你必須至少需要一個可以創建擴展對象SQL腳本文件,以及一個指定擴展屬性控制文件,如果你的擴展(extension)中包含了C語言,你可能還需要一個動態庫文件。一旦你具有了這些文件,你就可以利用:create extension
創建一個擴展了。
下面我們就簡介一下如何定義一個插件
插件可以定義爲一個擴展(extension)或者一個可執行程序(program)
MODULE_big = pg_buffercache
OBJS = pg_buffercache_pages.o $(WIN32RES)
EXTENSION = pg_buffercache
PGFILEDESC = "pg_buffercache - monitoring of shared buffer cache in real-time"
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
subdir = contrib/pg_buffercache
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk
endif
MODULES 代表要創建的動態庫列表,不要包含動態庫後綴:例如:
MODULES = file_fdw
就會成成file_fdw.so
文件。(見:extension/file_fdw)MODULE_big 根據OBJS 裏面的.o 文件生成的動態庫。
SHLIB_LINK MODULE_big所需要的依賴庫
PROGRAM 根據OBJS 裏面的.o文件生成的可執行文件。
PG_LIBS PROGRAM所需要的依賴庫
EXTENSION 擴展的名字(必須要有一個與改名字相同的控制文件(control))
REGRESS 迴歸測試列表(沒有後綴)
REGRESS_OPTS 迴歸測試額外的配置
EXTRA_CLEAN ‘make clean’ 額外要刪除的對象,一般爲你插件生成的對象
PG_CPPFLAGS 編譯參數,該參數爲編譯程序的時候用相當於CPPFLAGS,如:添加頭文件 -I *.h
PGFILEDESC 描述文件