Toto je jeden z nejrychlejších blogů, které publikuji :). Publikuji ze svého terminálu stejně jako své testování pro vytvoření jazyka plpython3u.
Pomocí důvěryhodných nebo nedůvěryhodných distribucí pythonu můžeme vytvořit jazyk plpython3u v PostgreSQL. Při testování se pokouším s distribucí SCL (nedoporučuji, zkoušel jsem to otestovat) python3.3 vytvořit jazyk plpython3u.
Začněme vytvářet jazyk na binární verzi instalace PostgreSQL 9.6 bez jakéhokoli ladění.
-bash-4.2$ psql
psql.bin (9.6.4)
Nápovědu získáte zadáním „nápověda“.postgres=# CREATE LANGUAGE plpython3u;
CHYBA:nelze načíst knihovnu „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so“:libpython3.3m.so.1.0:nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář
Hmmm, „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so“ hledá knihovnu „libpython3.3m.so.1.0“. Pro potvrzení spusťte příkaz „ldd“
-bash-4.2$ cd /opt/PostgreSQL/9.6/lib/postgresql/
-bash-4.2$ ldd plpython3.so
linux-vdso.so.1 => (0x00007fff9db12000)
libpython3.3m.so.1.0 => nenalezeno
libc.so.6 => /lib64/libc.so.6 (0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so. 2 (0x00007fe75ea27000)
Nyní je jasné, že k vytvoření jazyka plpython3u potřebujeme libpython3.3m.so.1.0.
Začněme jako uživatel root instalovat python3.3 z repozitáře SCL tím, že jej povolíme.
#yum install centos-release-scl
#yum install python33
Po instalaci najděte knihovnu „libpython3.3m.so.1.0“, kterou vyžaduje plpython3.so
[root@tools ~]# find / -name libpython3.3m.so.1.0/opt/rh/python33/root/usr/lib64/libpython3.3m.so.1.0
Chladný. Chcete-li použít přepínač bundle Python3 jako uživatel postgresu a nastavit proměnnou prostředí PYTHONPATH, PYTHONHOME, PATH a LD_LIBRARY_PATH.
-bash-4.2$ export PYTHONPATH=/opt/rh/python33/root/usr
-bash-4.2$ export PYTHONHOME=/opt/rh/python33/root/usr
-bash-4.2$ export LD_LIBRARY_PATH=/opt/rh/python33/root/usr/lib64:$LD_LIBRARY_PATH
-bash-4.2$ export PATH=$PYTHONPATH:$PATH
Zkuste znovu spustit „ldd“ na „/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so“, abyste zkontrolovali, zda jsou knihovny správně vybrány.
-bash-4.2$ cd /opt/PostgreSQL/9.6/lib/postgresql/
-bash-4.2$ ldd plpython3.so
linux-vdso.so.1 => (0x00007fffe26ed000)
libpython3.3m.so.1.0 => /opt/rh/python33/root/usr/lib64/libpython3.3m.so.1.0 (0x00007fd31c205000)
libc.so.6 => /lib64/libc.so. 6 (0x00007fd31be2d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd31bc11000)
libdl.so.2 => /lib64libutil.so.1 => /lib64/libutil.so.1 (0x00007fd31b809000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd31b507000)
/lib64/ld -linux-x86-64.so.2 (0x00007fd31c89c000)
Pěkný. Všichni jsme připraveni. Restartujeme server a vytvoříme jazyk plpython3u.
-bash-4.2$ pg_ctl restart
spouštění serveru
-bash-4.2$ psql
psql.bin (9.6.4)
Nápovědu získáte zadáním „help“.
postgres=# VYTVOŘIT JAZYK plpython3u;
VYTVOŘIT JAZYK
Velmi pěkné… Poslední krok, otestujte jazyk plpython3u vytvořením ukázkové funkce.
postgres=# CREATE OR REPLACE FUNCTION maxme (a integer, b integer) RETURNS integer AS
$$
if a > b:
return a
else
return b
$$ LANGUAGE plpython3u;
CREATE FUNCTION
postgres=# SELECT maxme(1, 2);
memax
-------
2
(1 row)
Dobrý. Užijte si to!!
Raghav