К основному контенту

Установка PL/Java для PostgreSQL 9.4

Предварительные требования: 

1. Компилятор C. Как правило имеется в виду gcc и g++

gcc  --version

на CENTOS 7 мне понадобился gcc_c++ (в дополнение к установленному ранее gcc)

2. JAVA. Убедиться, что 

javac  -version

работает 

3. PostgreSQL установлен и работает

pg_config

Файлы для разработки (.h файлы) для нашего PostgreSQL также должны быть установлены. Убедиться можно посмотрев что лежит в INCLUDEDIR-SERVER (вывод pg_config). Я раньше компилировал БД из исходников на этой машине, так что у меня эти файлы были.

4. компилятор Maven

mvn --version


Установка

git clone https://github.com/tada/pljava.git
или
git clone ssh://git@github.com/tada/pljava.git

Заходим в директорию pljava и выполняем

mvn clean install

В результате должны получить:

[INFO] PostgreSQL PL/Java ................................ SUCCESS
[INFO] PL/Java API ....................................... SUCCESS
[INFO] PL/Java backend Java code ......................... SUCCESS
[INFO] PL/Java backend native code ....................... SUCCESS
[INFO] PL/Java Deploy .................................... SUCCESS
[INFO] PL/Java Ant tasks ................................. SUCCESS
[INFO] PL/Java examples .................................. SUCCESS
[INFO] PL/Java packaging ................................. SUCCESS

Теперь:

# as root
su
PATH=$PATH:/usr/pgsql-9.4/bin
java -jar pljava-packaging/target/pljava-pg9.4-amd64-Linux-gpp.jar

# as postgres
psql
SET pljava.libjvm_location TO '/usr/lib/jvm/java-1.8.0/lib/libjvm.so';

CREATE EXTENSION pljava;
GRANT USAGE ON LANGUAGE java TO dbax;

Если все работает, можно делать 

ALTER SYSTEM SET pljava.libjvm_location TO '/usr/lib/jvm/java-1.8.0/lib/libjvm.so';

или править postgresql.conf


Проверка

Для проверки можно установить тестовую схему.

SELECT sqlj.install_jar(
  'file:'
  '/var/lib/pgsql/9.4/src/pljava-master/pljava-examples/target/pljava-examples-1.6.0-SNAPSHOT.jar',
'examples', true);

Проверить или установить search_path:
SET SEARCH_PATH=javatest,public;
SHOW search_path;

search_path ------------------ javatest, public

Установить classpath
SELECT sqlj.set_classpath('javatest', 'examples');

Проверить работу функции из тестовой схемы.

SELECT javatest.java_addone(3);
 java_addone 
-------------
           4

Примечания:

1. Более подробно "что и зачем" описано тут.

2. Если нужно указать прокси-сервер для доступа в интернет:
- для git:

HTTP_PROXY=http://proxy.mycompany:80
$ git config --global http.proxy $HTTP_PROXY

(я на всякий случай указал и HTTPS)

- для maven:
правим

${user.home}/.m2/settings.xml

<settings>
   <proxies>
   <proxy>
      <id>example-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.example.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

Комментарии