PostgreSQL 9.1.3 plpgsql debugger module
今天一位网友在群里面问PostgreSQL 9.0如何debug 函数. 我记得在8.3的时候有一个插件叫edb-debugger是可以使用的. 手头上没有9.0
今天一位网友在群里面问PostgreSQL 9.0如何debug 函数. 我记得在8.3的时候有一个插件叫edb-debugger是可以使用的. 手头上没有9.0的数据库, 于是测试了一下在9.1上能不能用, 结果是编译不通过.
最后找到了解决办法, 记录如下.
在pgfoundry中有一个开源的edb-debugger插件可以用来调试PostgreSQL的PLPGSQL函数.
但是这个版本太老, 在PostgreSQL 9.1中无法编译通过, 报错如下.
make
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -fpic -I. -I. -I../../src/include -D_GNU_SOURCE -I/usr/include/libxml2 -c -o pldbgapi.o pldbgapi.c
pldbgapi.c: In function ‘pldbg_attach_to_port’:
pldbgapi.c:346: warning: implicit declaration of function ‘MAKE_OFFSET’
pldbgapi.c: In function ‘pldbg_wait_for_target’:
pldbgapi.c:474: warning: implicit declaration of function ‘SHM_OFFSET_VALID’
pldbgapi.c:476: warning: implicit declaration of function ‘MAKE_PTR’
pldbgapi.c:476: warning: cast to pointer from integer of different size
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -fpic -L../../src/port -Wl,-rpath,'/opt/pgsql/lib',--enable-new-dtags -shared -o pldbgapi.so pldbgapi.o
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -fpic -I. -I. -I../../src/include -D_GNU_SOURCE -I/usr/include/libxml2 -c -o targetinfo.o targetinfo.c
targetinfo.c: In function ‘getTriggerFuncOid’:
targetinfo.c:268: error: ‘SnapshotNow’ undeclared (first use in this function)
targetinfo.c:268: error: (Each undeclared identifier is reported only once
targetinfo.c:268: error: for each function it appears in.)
targetinfo.c: In function ‘getProcOidBySig’:
targetinfo.c:508: error: too few arguments to function ‘FuncnameGetCandidates’
targetinfo.c: In function ‘getProcOidByName’:
targetinfo.c:555: error: too few arguments to function ‘FuncnameGetCandidates’
make: *** [targetinfo.o] Error 1
rm pldbgapi.o
不知道为什么不更新了, 作者是这两位.
在EDB发布的EDB-AS版本中是包含了debugger的.
只是直接把它的so文件拷贝到开源版本的PostgreSQL中无法使用.
例如我把EDB-AS 9.1.2.2版本的$libdir/plugins/plugin_debugger.so文件拷贝到开源的PostgreSQL $PGHOME/lib/plugins/目录下.
配置postgresql.conf
在启动数据库时报错如下 :
这个NonSPLFunctionContext在PostgresPlus/9.1AS/include/server/utils/elog.h 文件里面定义的.
但是把它拷贝到开源的PostgreSQL的/opt/pgsql/include/server/utils/elog.h后依旧.
虽然pgfoundry里面提供下载的只有0.9.3版本, 庆幸的是cvs里面有最新的.
请见参考链接, 把这些文件下载过了后放到源码的contrib目录里面新建一个debugger目录.
编译过程 :
make
make install
修改数据库配置文件 :
重启数据库,
在需要调试的数据库里面使用超级用户安装函数和类.
CREATE TYPE
CREATE TYPE
CREATE TYPE
CREATE TYPE
CREATE TYPE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
创建一个测试函数 :
使用pgAdmin登陆到这个数据库, 右键点击函数的时候就有调试选项了.
一个调试页面截图 :

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Pengenalan: Dalam dunia moden pembangunan web, pangkalan data merupakan komponen penting. Apabila memilih pangkalan data, pilihan biasa ialah MySQL dan PostgreSQL. Artikel ini akan merangkumi amalan terbaik untuk menggunakan MySQL dan PostgreSQL dalam pembangunan web dan menyediakan beberapa contoh kod. 1. Senario yang boleh digunakan MySQL sesuai untuk kebanyakan aplikasi web, terutamanya yang memerlukan prestasi tinggi, kebolehskalaan dan kemudahan penggunaan.

MySQL dan PostgreSQL: Perbandingan Prestasi dan Petua Pengoptimuman Semasa membangunkan aplikasi web, pangkalan data adalah komponen yang sangat diperlukan. Apabila memilih sistem pengurusan pangkalan data, MySQL dan PostgreSQL adalah dua pilihan biasa. Kedua-duanya ialah sistem pengurusan pangkalan data hubungan sumber terbuka (RDBMS), tetapi terdapat beberapa perbezaan dalam prestasi dan pengoptimuman. Artikel ini akan membandingkan prestasi MySQL dan PostgreSQL dan memberikan beberapa petua pengoptimuman. Perbandingan prestasi membandingkan dua pengurusan pangkalan data

MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran Pengenalan: Dalam masyarakat moden, data telah menjadi bahagian penting dalam perniagaan dan kehidupan peribadi. Untuk sistem pengurusan pangkalan data, keselamatan data dan strategi sandaran adalah penting, kedua-duanya untuk melindungi data daripada kehilangan atau kerosakan dan untuk memastikan kebolehpercayaan dan integriti data yang dipulihkan. Artikel ini akan memberi tumpuan kepada keselamatan data dan strategi sandaran dua sistem pangkalan data hubungan arus perdana, MySQL dan PostgreSQL. 1. Keselamatan data: (1) Hak pengguna

Dengan perkembangan teknologi pangkalan data, sistem pengurusan pangkalan data juga menyediakan pelbagai pilihan Pembangun boleh memilih pangkalan data yang paling sesuai mengikut keperluan dan pilihan mereka. Sebagai sistem pangkalan data hubungan sumber terbuka termaju, PostgreSQL semakin menarik perhatian dan penggunaan oleh pembangun. Jadi, bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? 1. Pasang dan konfigurasikan pangkalan data PostgreSQL Sebelum menggunakan PostgreSQL, anda perlu memasang dan mengkonfigurasinya. pertama

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Dalam pembangunan perisian moden, pangkalan data adalah bahagian yang amat diperlukan. Sebagai bahasa pengaturcaraan yang berkuasa, bahasa Go menyediakan pelbagai fungsi operasi pangkalan data dan kit alat, yang boleh melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data dengan mudah. Artikel ini akan memperkenalkan cara mempelajari fungsi pangkalan data dalam bahasa Go dan menggunakan pangkalan data PostgreSQL untuk operasi sebenar. Langkah 1: Pasang pemacu pangkalan data dalam bahasa Go untuk setiap pangkalan data

Bahasa Go ialah bahasa pengaturcaraan yang pantas dan cekap sesuai untuk membina perkhidmatan web dan aplikasi bahagian belakang. PostgreSQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang menjanjikan untuk memberikan kebolehpercayaan, skalabiliti dan keselamatan data yang lebih tinggi. Dalam artikel ini, kami akan mendalami penggunaan PostgreSQL dalam Go dan memberikan beberapa contoh dan petua kod praktikal. Memasang dan menyediakan PostgreSQL Pertama, kita perlu memasang dan menyediakan PostgreSQL. Boleh didapati di laman web rasmi

Dengan pembangunan Internet, jumlah data terus berkembang, dan keperluan untuk pengurusan data menjadi semakin mendesak. Pangkalan data perhubungan ialah cara pengurusan data yang penting, antaranya PostgreSQL popular untuk fleksibiliti, skalabiliti dan keselamatannya. Artikel ini memperkenalkan cara menggunakan bahasa PHP untuk melaksanakan pangkalan data hubungan PostgreSQL sumber terbuka Saya harap ia akan membantu pembangun dengan keperluan yang sepadan. Gambaran Keseluruhan PostgreSQL ialah sistem pangkalan data hubungan yang berkuasa yang mengikut standard SQL dan mempunyai banyak

MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? Gambaran Keseluruhan: Prestasi pertanyaan pangkalan data adalah pertimbangan penting semasa membangunkan aplikasi. Prestasi pertanyaan yang baik meningkatkan responsif aplikasi dan pengalaman pengguna. Artikel ini akan memperkenalkan beberapa kaedah untuk mengoptimumkan prestasi pertanyaan pangkalan data, memfokuskan pada dua pangkalan data yang biasa digunakan, MySQL dan PostgreSQL. Pengoptimuman indeks pangkalan data: Indeks pangkalan data merupakan faktor penting dalam meningkatkan prestasi pertanyaan. Indeks boleh mempercepatkan carian data dan mengurangkan masa pengimbasan pertanyaan.
