- 浏览: 245435 次
-
最新评论
用PG做了些项目,积累了些经验,其中之一就是在PG下调试function。
可以设置break point,单步调试,就象在eclipse里面调试java code,一个很复杂的function通过这种方式很快就找出问题,大大提高开发效率。(注:要求pg8.2及以上版本)
因为PG默认是不支持function调试的,要在PG里调试function得安装enterpriseDB提供的pg插件edb-debugger
实际操作:
1、安装git
yum install git
2、克隆得到pldebugger
git clone git://git.postgresql.org/git/pldebugger.git
备注:网上很多说的下载地址都是下面这个,但是安装会报错,建议不要采用
地址:http://pgfoundry.org/projects/edb-debugger/,目前最新版本为0.93
-rw-r--r-- 1 root root 66319 Sep 9 16:26 edb-debugger-0.93.tgz --版本太老了,安装不成功
drwxr-xr-x 2 postgres games 4096 Sep 26 2008 pldebugger
3、[root@localhost contrib]# pwd
/postgresql-9.1.1/contrib
drwxr-xr-x 3 root root 4096 Sep 9 16:52 pldebugger
4、安装
cd pldebugger
make
make install
5、修改数据库配置文件 :
[postgres@localhost postgresql]$ pwd
/pg/lib/postgresql
[postgres@localhost postgresql]$ ll plugin_debugger.so
-rwxr-xr-x 1 root root 62516 Sep 9 08:56 plugin_debugger.so
vi $PGDATA/postgresql.conf
shared_preload_libraries = '/pg/lib/postgresql/plugin_debugger.so'
6、重启pg服务
[postgres@localhost data]$ pg_ctl -D /pg/data start
server starting
[postgres@localhost data]$ 2014-09-09 09:10:24 UTC--- :LOG: loaded library "/pg/lib/postgresql/plugin_debugger.so"
7、在要进行调试的数据库里执行pldbgapi.sql文件,这个文件在你pg安装目录的share/postgresql/下面
[postgres@localhost extension]$ pwd
/pg/share/postgresql/extension
-rw-r--r-- 1 root root 7457 Sep 9 08:56 pldbgapi--1.0.sql
-rw-r--r-- 1 root root 181 Sep 9 08:56 pldbgapi.control
-rw-r--r-- 1 root root 2258 Sep 9 08:56 pldbgapi--unpackaged--1.0.sql
[postgres@localhost extension]$ psql tina postgres -f /pg/share/postgresql/extension/pldbgapi--1.0.sql
Installing pldebugger as unpackaged objects. If you are using PostgreSQL
version 9.1 or above, use "CREATE EXTENSION pldbgapi" instead.
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
CREATE TYPE
DO
8、调试pg的function
1)新建一个测试函数:
CREATE OR REPLACE FUNCTION f_test()
RETURNS varchar AS
$BODY$
begin
return 'i am tina';
end;
$BODY$
LANGUAGE plpgsql;
2)打开pgadmin3,打开你要调试的数据库,在你要调试的function上右击,这时你会发现多了一项"调试中",
占击子项中的"调试"就可对function进行调试了。
可以设置break point,单步调试,就象在eclipse里面调试java code,一个很复杂的function通过这种方式很快就找出问题,大大提高开发效率。(注:要求pg8.2及以上版本)
因为PG默认是不支持function调试的,要在PG里调试function得安装enterpriseDB提供的pg插件edb-debugger
实际操作:
1、安装git
yum install git
2、克隆得到pldebugger
git clone git://git.postgresql.org/git/pldebugger.git
备注:网上很多说的下载地址都是下面这个,但是安装会报错,建议不要采用
地址:http://pgfoundry.org/projects/edb-debugger/,目前最新版本为0.93
-rw-r--r-- 1 root root 66319 Sep 9 16:26 edb-debugger-0.93.tgz --版本太老了,安装不成功
drwxr-xr-x 2 postgres games 4096 Sep 26 2008 pldebugger
3、[root@localhost contrib]# pwd
/postgresql-9.1.1/contrib
drwxr-xr-x 3 root root 4096 Sep 9 16:52 pldebugger
4、安装
cd pldebugger
make
make install
5、修改数据库配置文件 :
[postgres@localhost postgresql]$ pwd
/pg/lib/postgresql
[postgres@localhost postgresql]$ ll plugin_debugger.so
-rwxr-xr-x 1 root root 62516 Sep 9 08:56 plugin_debugger.so
vi $PGDATA/postgresql.conf
shared_preload_libraries = '/pg/lib/postgresql/plugin_debugger.so'
6、重启pg服务
[postgres@localhost data]$ pg_ctl -D /pg/data start
server starting
[postgres@localhost data]$ 2014-09-09 09:10:24 UTC--- :LOG: loaded library "/pg/lib/postgresql/plugin_debugger.so"
7、在要进行调试的数据库里执行pldbgapi.sql文件,这个文件在你pg安装目录的share/postgresql/下面
[postgres@localhost extension]$ pwd
/pg/share/postgresql/extension
-rw-r--r-- 1 root root 7457 Sep 9 08:56 pldbgapi--1.0.sql
-rw-r--r-- 1 root root 181 Sep 9 08:56 pldbgapi.control
-rw-r--r-- 1 root root 2258 Sep 9 08:56 pldbgapi--unpackaged--1.0.sql
[postgres@localhost extension]$ psql tina postgres -f /pg/share/postgresql/extension/pldbgapi--1.0.sql
Installing pldebugger as unpackaged objects. If you are using PostgreSQL
version 9.1 or above, use "CREATE EXTENSION pldbgapi" instead.
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
CREATE TYPE
DO
8、调试pg的function
1)新建一个测试函数:
CREATE OR REPLACE FUNCTION f_test()
RETURNS varchar AS
$BODY$
begin
return 'i am tina';
end;
$BODY$
LANGUAGE plpgsql;
2)打开pgadmin3,打开你要调试的数据库,在你要调试的function上右击,这时你会发现多了一项"调试中",
占击子项中的"调试"就可对function进行调试了。
发表评论
-
pg 锁
2016-01-14 16:26 0pg 锁 ... -
postgresql 的三类日志
2016-01-14 15:59 18565一、PostgreSQL有3种日志: 1)pg_log(数据 ... -
pg存储过程--创建分区表
2016-01-13 15:46 01)将普通表改成按时间字段分区表 调用select fun_c ... -
pg常用自制shell脚本-tina
2016-01-13 15:30 49831)小型监控: 1.在pg库主机上部署,每5分钟执行一次,插入 ... -
postgresql 时间类型和相关函数
2016-01-13 10:41 5480今天来好好学习一下postgresql涉及时间的字段类型和一些 ... -
pg 表空间
2016-01-07 16:28 3134一、说明 在数据库运维工作中,经常会有数据目录使用率较高 ... -
pg 定期vacuum和reindex
2016-01-07 14:56 8640定期vacuum和reindex: 一 ... -
pg 序列
2016-01-06 16:58 1638一、简介 一个序列对象通常用于为行或者表生成唯一的标识符。 ... -
pg 简单备份和恢复
2016-01-06 15:53 3794pg的备份和恢复 pg_dump ... -
ERROR: invalid page header in block 27073 of relation base/21078/45300926
2016-01-06 15:12 2159突然断网,检查后通知我们UPS断电,db所在主机重启 1、连上 ... -
pg_cancel_backend()和pg_terminate_backend()
2016-01-05 17:42 3567pg_cancel_backend()和pg_terminat ... -
canceling statement due to conflict with recovery
2016-01-05 17:12 1733报错: canceling statement due to ... -
postgresql dblink 使用
2015-12-31 14:33 2069dblink的使用 pg的跨库查询工具 select dbli ... -
root用户不能使用psql或者pg_dump等pg命令
2015-12-24 14:40 7082root用户不能使用psql或者pg_dump等pg命令 [ ... -
postgresql新建库2个常见报错
2015-12-22 16:43 6337今天使用pg建库发现两个报错: ERROR: new c ... -
安装postgresql 9.1.1
2015-12-22 16:25 649安装postgresql 9.1.1 ---版本自选,步骤相同 ... -
pgbadger监控安装和使用
2015-12-21 10:01 2053pgbadger监控安装和使用 https://github ... -
oracle,postgresql,mysql一些使用上的区别记录
2015-12-16 11:38 01.限制行数: select * from ta where ... -
postgresql存储过程实例:已审核证书存入临时表
2015-12-14 16:44 677存储过程实例: 需求: 思路:建立存储过程 代码逻辑: 1 ... -
pg 函数sfa_tmp_sleep()执行越来越慢-sql分析
2015-12-11 09:48 693pg 函数sfa_tmp_sleep()执行越来越慢 ...
相关推荐
内容概要:本文详细介绍了如何利用LTspice进行LDO(低压差线性稳压器)电源电路的仿真。首先讲解了如何导入LDO模型并配置仿真环境,接着深入探讨了瞬态分析、相位裕度、电源抑制比(PSRR)等关键仿真的具体步骤和注意事项。文中提供了多个实用的操作技巧,如通过调整补偿电容优化相位裕度,以及使用.step param命令批量测试不同参数的影响。此外,还分享了一些常见的仿真误区及其解决方法,帮助读者更好地理解和掌握LDO的设计与调试。 适合人群:电子工程专业学生、电源电路设计初学者、希望深入了解LDO特性的工程师。 使用场景及目标:适用于希望通过仿真工具提高LDO设计技能的人群。主要目标是掌握LDO的基本工作原理,学会使用LTspice进行各种类型的仿真分析,从而优化电路设计,确保系统的稳定性和性能。 其他说明:文章不仅提供详细的仿真步骤和技术细节,还附带了作者的实际经验和常见问题解决方案,使读者能够在实践中不断改进自己的设计思路。
渝安集团员工职业发展通道设计方案.ppt
内容概要:本文详细介绍了新能源电动汽车中VCU(整车控制器)和BMS(电池管理系统)的HIL(硬件在环)仿真技术。首先阐述了整车建模的基础,包括电池、电机等关键部件的建模要点。接着分别解析了驾驶员模块、仪表模块、BCU整车控制器模块、MCU电机模块、TCU变速箱模块、BMS电池管理模块等多个子模块的功能和实现方式。最后强调了HIL仿真在电动汽车控制系统测试和优化中的重要性,特别是在降低成本和风险方面的作用。 适合人群:从事新能源汽车研发的技术人员,尤其是专注于VCU和BMS领域的工程师。 使用场景及目标:适用于需要深入了解电动汽车控制系统仿真技术的研发团队,在产品开发初期进行系统测试和优化,确保各子系统间的协同工作正常。 其他说明:文中提供了大量代码示例,帮助读者更好地理解和实践相关概念和技术细节。此外,还分享了一些实际项目中的经验和教训,如故障注入测试的具体应用场景等。
如何应对一线人员春节后的离职潮
线性代数
离职面谈表.xls
聚宽对接qmt大礼包,配备需要的全部软件:python3.9版本,qmt模拟安装包,pycharm安装包,talib包
试用期转正表.xls
招聘数据分析.xls
如何让新员工快速融入团队
内容概要:本文详细介绍了并离网逆变器的两种主要控制策略——PQ控制和V/f控制,以及无功能量发生器(SVG)和有源电力滤波器(APF)的仿真模型。对于PQ控制,文章展示了如何将功率指令转化为电流指令,并强调了电网电压定向和限幅处理的重要性。V/f控制则用于离网模式,通过调节电压和频率来维持系统的稳定。SVG主要用于无功补偿,通过实时计算无功需求进行补偿。APF则专注于谐波检测和消除,利用自适应滤波器提高效率。此外,文中还提供了多个实用的小技巧,如仿真步长设置、模式切换时的前馈补偿等。 适合人群:从事电力电子仿真研究的技术人员,尤其是对逆变器控制策略感兴趣的工程师。 使用场景及目标:适用于需要深入理解和实现逆变器控制策略的研究项目,帮助工程师优化仿真模型,提升系统性能,确保仿真结果的准确性。 其他说明:文章不仅提供了详细的代码片段,还分享了许多实践经验,有助于读者避免常见错误,提高仿真成功率。
内容概要:本文详细介绍了如何利用Carsim与Simulink进行联合仿真,通过线性二自由度模型和卡尔曼滤波(KF)来估计车辆的质心侧偏角和横摆角速度。首先搭建了联合仿真框架,Carsim提供车辆状态量,Simulink负责算法处理。文中展示了线性二自由度模型的状态方程及其参数设定,并深入探讨了KF的两种实现方式:S函数编程和Simulink内置模块。对于S函数实现,着重讲解了状态转移矩阵的动态更新以及噪声矩阵Q的调整策略,确保模型能够适应车速变化。而对于内置模块,则指出了其在灵活性方面的不足之处。此外,还讨论了联合仿真的配置要点,如数据接口同步、采样时间和信号处理等问题。 适合人群:从事车辆动力学研究、控制理论应用、自动化控制领域的工程师和技术人员。 使用场景及目标:适用于需要精确估计车辆质心侧偏角和横摆角速度的研究和开发项目,特别是在涉及ESP等主动安全系统的开发过程中。目标是提高估计精度,增强系统的鲁棒性和响应速度。 其他说明:文章提供了详细的代码片段和实践经验分享,帮助读者更好地理解和实施相关技术。建议在实际应用中根据具体需求选择合适的KF实现方式,并注意处理各种边界条件和异常情况。
档案管理[03]
内容概要:本文详细介绍了风电与储能联合调频系统的原理及其优化方法。首先解释了风电输出功率的波动性和对电网频率的影响,提出储能系统作为解决方案。文中展示了如何用Python生成风速数据并构建调频控制系统,重点讨论了PID控制器的设计以及SOC(荷电状态)管理策略。此外,还探讨了调频控制逻辑、硬件在环测试、风电功率预测模型(如LSTM)、调频效果验证方法及储能系统的物理限制等问题。最后强调了模型验证的重要性,提出了异常数据注入测试的方法。 适合人群:从事电力系统自动化、新能源发电及储能技术研发的专业人士,尤其是有一定编程基础的研究人员和技术工程师。 使用场景及目标:适用于需要理解和实施风电与储能联合调频项目的团队。主要目标是提高电网稳定性,减少风电波动带来的负面影响,同时延长储能系统的使用寿命。 其他说明:文中提供了大量实用的Python代码示例,涵盖了从数据生成到控制逻辑实现再到模型验证的全过程。对于希望深入理解风储调频系统的工作机制和技术挑战的人来说,是一份非常有价值的参考资料。
HCIA-Storage V4.5 培训教材 合集
内容概要:本文详细介绍了利用西门子S7-1200系列PLC和博途V15软件平台构建的小车自动往返控制系统。首先进行硬件组态,选择合适的CPU并配置输入输出点位,确保限位开关和急停按钮的有效接入。接着编写梯形图逻辑,实现小车在AB两点间的精确控制,采用定时器互锁机制避免电机损坏。然后设计触摸屏界面,通过WinCC创建动画效果展示小车运动状态,并设置按钮操作实现手动与自动模式切换。最后进行联合仿真实验,解决常见错误如变量地址配置不当等问题,确保系统稳定运行。 适合人群:工业自动化领域的工程师和技术人员,尤其是对PLC编程和HMI设计有一定基础的学习者。 使用场景及目标:适用于需要掌握PLC控制系统设计全流程的专业人士,帮助他们理解如何整合硬件组态、梯形图编程以及HMI开发,最终完成一个完整的自动化工程项目。 其他说明:文中提供了详细的调试经验和技巧,附带74分钟的操作录像资料,有助于读者更好地理解和实践相关知识点。
公司员工关怀工作清单
内容概要:本文详细介绍了如何利用ANSYS/LS-DYNA进行多孔延时起爆和重复起爆的仿真。首先强调了起爆点的时间线控制和材料参数设置的重要性,如使用*INITIAL_DETONATION关键字设定起爆时间和坐标,以及配置JWL方程等材料属性。接着讨论了重复起爆的具体实现方式,包括使用*CONTROL_TERMINATION配合重启动功能,确保起爆点的正确复用。此外,文章还提供了调试技巧,如检查起爆同步性和优化时间步控制,以确保仿真的准确性。最后,分享了一些实际应用中的经验和常见错误,帮助用户更好地理解和掌握这一复杂的技术。 适合人群:从事爆炸力学研究和爆破工程设计的专业人士,尤其是有一定ANSYS/LS-DYNA使用经验的工程师。 使用场景及目标:适用于需要精确控制多个起爆点时间延迟和多次起爆的应用场合,如矿山开采、隧道挖掘等领域的爆破作业仿真。目标是提高爆破效率,减少对周围环境的影响。 其他说明:文中提到的许多技术细节对于初学者来说可能会有一定的难度,因此建议从简单的单孔起爆开始练习,逐步掌握复杂的多孔延时和重复起爆技术。同时,保持良好的注释习惯有助于追踪参数修改历史,便于后续调试和维护。
内容概要:本文档详细介绍了Java面向对象编程的三大核心特性:封装、继承与多态。封装通过访问修饰符限制属性的访问权限,确保数据的安全性和完整性,如Student类中将name和age设为私有属性并通过公共方法进行访问控制。继承使得子类可以复用父类的属性和方法,减少代码冗余,如Dog类继承了Animal类的属性和方法并增加了特有的bark()方法。多态分为编译时多态(方法重载)和运行时多态(方法重写),它允许不同对象以相同接口执行不同的行为,如Shape类及其子类Circle和Rectangle通过重写getArea()方法实现了不同的面积计算逻辑,并在Main类中展示了多态的实际应用。 适合人群:具有Java编程基础的学习者或开发者,特别是对面向对象概念有初步了解但需要深入理解的人群。 使用场景及目标:①掌握Java中封装的实现机制,学会使用访问修饰符保护类成员;②理解继承的概念,能够创建父子类关系并利用继承特性提高代码复用性;③熟悉多态的应用场景,能够在实际项目中运用多态特性实现灵活的对象行为。 阅读建议:本资源侧重于理论讲解与简单示例演示,建议读者在学习过程中结合实际编程练习加深理解,同时注意对比不同特性的应用场景,以便更好地掌握面向对象编程的核心思想。
基于51单片机protues仿真的番茄计时器(仿真图、源代码、AD原理图、流程图、视频) 设计一个番茄计时器。使用番茄工作法(番茄工作法是一种时间管理方法),选择一个待完成的任务,将番茄时间设为45分钟,专注工作,中途不允许做任何与该任务无关的事,直到番茄时钟响起,然后进行短暂休息一下(5分钟),然后再开始下一个番茄。每4个番茄时段再多休息5分钟。 按键1:单击设置45分钟倒计时,双击设置5分钟休息倒计时。 按键2:单击音乐播放,双击暂停。按键3:复位按键。 所需硬件:3个按键,1个动态数码管,1个蜂鸣器。 仿真图、源代码、AD原理图、流程图、视频