首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏宗恩

    OushuDB-编程接口 - libpq

    编程接口 - libpq 获取连接 数据查询和数据操纵 终止连接 libpq是PostgreSQL的 C应用程序接口。 Libpq 由相关库函数组成,可以允许客户端程序通过将查询传递 给 PostgreSQL 后台服务器并接收这些查询返回的结果。 同时,libpq 也是其它几个 PostgreSQL 应用程 序接口的基础引擎,包括 C++,Perl,Python,Tcl和ECPGC编程的嵌入式 SQL。 OushuDB与 PostgreSQL兼容,同样可以通过libpq来进行数据库连接和数据操纵。 在要使用libpq连接OushuDB数据库之前,首先要引用libpq的头文件libpq-fe.h。

    60810编辑于 2023-05-08
  • 来自专栏PostgreSQL研究与原理解析

    PostgreSQL 14通过libpq改进logging

    PostgreSQL 14通过libpq改进logging PG14中增强了libpq功能,以跟踪应用程序的服务器/客户端通信的可用性。它添加了新的选项控制输出格式。 背景 libpq是客户端库之一,用户可以运行PQtrace函数记录客户端-服务端通信。这个通信是PG使用的一种协议信息,包括:消息类型的标识符,消息长度,交换信息的消息内容。 函数产生了下面类似的输出: 1)包含了时间戳 2)消息方向的代码更加直观:F表示前端,B表示后端 3)输出正式的消息名称,而不是协议消息的标识符 4)有意义的协议消息以一行形式输出 日志检索方法 和以前一样,通过调用libpq 未来 PG14的libpq日志将包含时间戳和更具可读性的文本。在后续版本中,我们会在下面几个方面进一步提升可用性: 1) 当前函数将日志写入指定给PQtrace函数的文件。 原文 https://www.postgresql.fastware.com/blog/improved-logging-by-libpq-in-postgresql-14

    69130发布于 2021-11-26
  • 来自专栏王硕

    原 通过连接libpq对PostgreSQL操作的例子

    #include <stdio.h> #include <stdlib.h> #include <libpq-fe.h> static void exit_nicely(PGconn *conn) { stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/time.h> #include <libpq-fe.h 000 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <libpq-fe.h uint32_t *) iptr)); /* * The binary representation of TEXT is, well, text, and since libpq

    1.8K80发布于 2018-05-17
  • 来自专栏PostgreSQL 技术

    使用 libpq 访问 PostgreSQL 遍历大数据结果集

    我们可以在 C 代码中使用 SQL 层提供的 CURSOR 游标查询数据结果集: /* * testlibpq.c * * 测试 libpq(PostgreSQL 前端库) 的 C 版本 */ #include <stdio.h> #include <stdlib.h> #include <libpq-fe.h> static void exit_nicely(PGconn *conn libpq 方法 下面是 libpq 支持的方法,更多详细,参看 libpq API 文档: SN(序号) 方法描述 1 PQconnectdbParams 开启一个到数据库服务器的新连接。

    91560编辑于 2023-07-14
  • 来自专栏Postgresql源码分析

    Postgresql源码(117)libpq的两套实现(socketshm_mq)

    libpq的通信方式 libpq提供了两套通信方式 socket shm_mq 分别实现在下面两个文件中 pqcomm.c pqmq.c 什么时候用socket通信? 并行框架中会将子进程的libpq的通信改成mq通信,用于子进程给父进程发送错误信息。 MyProc); // mq是单纯的mq抽象,用的时候一般使用mq handle,在这里包装一层成为mqh mqh = shm_mq_attach(mq, seg, NULL); // 配置libpq 的逻辑: 普通场景libpq使用PqCommSocketMethods的实现,将日志发送给客户端。 并发场景子进程中libpq使用PqCommMqMethods的实现,将日志发送给父进程。

    57010编辑于 2023-12-19
  • 来自专栏宗恩

    OushuDB-编程接口 - libpq-数据查询和数据操纵

    在获取到PGconn实例后,我们就可利用PGconn实例进行对数据库的操作了,Libpq执行sql命令的核心 函数为PQexec(PGconn conn, const char command);其中第一个参数为连接 在libpg中,查询语句和更新语句都是通过PQexec函数执行,但是很明显对于这两种语句我们需要的返 回值肯定不同,所以在解析PGresult时,libpq提供了不同的解析函数,这部分先说说解析查询结果用到 ); exit_nicely(conn); } printf("updatelin:%s",PQcmdTuples(res));//解析并打印受影响行数 PQclear(res);执行 命令,可以完成libpq

    28110编辑于 2023-05-08
  • 来自专栏大大刺猬

    tbase symbol lookup error: ./psql: undefined symbol: PQsetErrorContextVisibility

    /psql: undefined symbol: PQsetErrorContextVisibility原因分析此报错为libpq.so版本不对因为本地环境还安装了开源pg库postgresql-libs -9.2.24-4.el7_8.x86_64, 此库包含了libpq.so.5 , 而tbase_pgxz的psql命令默认使用的系统库的libpq(也就是开源的pg-lib), 导致版本不对16:39 :11 [root@ddcw21 bin]#ldd psql | grep libpqlibpq.so.5 => /lib64/libpq.so.5 (0x00007fce6f5c4000)16:40: bin]#rpm -ql tbase_pgxz | grep libpq.so/usr/local/install/tbase_pgxz/lib/libpq.so/usr/local/install/ tbase_pgxz/lib/libpq.so.5/usr/local/install/tbase_pgxz/lib/libpq.so.5.10解决办法方法1 (推荐)添加tbase_pgxz库到系统库

    2.2K20编辑于 2022-06-24
  • 来自专栏BioIT爱好者

    Python 包安装和 postgresql 的一些问题

    Psycopg requires libpq >= 9.1 hgvs 的安装依赖于psycopg2-binary,而psycopg2-binary又依赖于psycopg2。 #error "Psycopg requires PostgreSQL client library (libpq) >= 9.1" ...... export LD_LIBRARY_PATH=/usr/pgsql-10/lib:$LD_LIBRARY_PAT 先备份重命名 /usr/lib64/libpq.so.5,再把正确的 libpq.so $ mv /usr/lib64/libpq.so.5 /usr/lib64/libpq.so.5.old $ ln -s /usr/pgsql-10/lib/libpq.so.5 /usr/lib64/ libpq.so.5

    1.8K40发布于 2021-10-15
  • 来自专栏Greenplum

    Greenplum常见的链接驱动

    odbc.postgresql.org/ Perl DBI pgperl https://metacpan.org/release/DBD-Pg Python DBI pygresql http://www.pygresql.org/ libpq C 库 libpq https://www.postgresql.org/docs/9.4/libpq.html

    1.8K30发布于 2020-10-21
  • 来自专栏Greenplum

    Greenplum 架构和核心引擎

    、postmaster 是数据库主进程,监听用户的请求 12、此时系统空闲,没有任何运行查询 13、Master 上的seq server 为序列号生成器 2.2 客户端建立会话链接 1、客户端通过libpq fork一个子进程用于处理该客户端的所有查询请求 2、子进程在PostgrsSQL中称为backend;在Greenplum中该进程称为QD 2.4 QD建立和Segment的链接 1、QD进程使用libpq 1、Segment上的postmaster进程监听到QD的链接请求后,创建一个子进程以处理后续查询的请求 2、Segment 上创建的子进程称为QE 2.6 客户端发送查询请求给QD 1、客户端使用libpq 协议发送查询请求给master上得得QD进程 2、QD进程对接收到的查询进行处理,包括解析,优化生成分布式查询计划等 2.7 QD发送任务给QE 1、QD生成分布式查询计划后通过libpq协议发送给各个 ,包括错误处理等 2、QE之间没有libpq链接 2.11 QD返回查询结果给客户端 1、最终QD将查询的结果返回给客户端 3 Greenplum 主要设计思考 3.1 继承自PostgreSQL的设计

    1.4K70发布于 2020-02-11
  • 来自专栏Greenplum

    Greenplum架构和核心引擎

    2.2 客户端建立会话链接 1、客户端通过libpq协议发送链接请求给Greenplum master节点 2、Master 节点上postmaster 进程会监听到链接请求,并处理 ? 2.4 QD建立和Segment的链接 1、QD进程使用libpq协议和每个segment建立链接请求 2、Segment上的postmaster进程监听到QD的链接请求并进行处理 3、对于segment 2.6 客户端发送查询请求给QD 1、客户端使用libpq协议发送查询请求给master上得得QD进程 2、QD进程对接收到的查询进行处理,包括解析,优化生成分布式查询计划等 ? 2.7 QD发送任务给QE 1、QD生成分布式查询计划后通过libpq协议发送给各个segment上的QE进程 ? 2.10 QE状态管理 1、QE和QD之间通过libpq协议进行状态的跟新和管理,包括错误处理等 2、QE之间没有libpq链接 ?

    1K30发布于 2020-02-25
  • 来自专栏开源部署

    在CentOS上离线配置PostgreSQL ODBC数据源

    /configure  make  make install 如果报错找不到libpq.so,原因可能是不认识/usr/lib/libpq.so.5或usr/lib/libpq.so.5.5,在/usr /lib下创建一个libpq.so的软连接,或者直接拷贝其中一个并改名。

    2.1K10编辑于 2022-08-18
  • 来自专栏PostgreSQL研究与原理解析

    PG的管道模式如何工作

    因为增强在客户端使用的LIBPQ中,而不是服务端本身。 现在是坏消息了:利用流水线模式和需要使用“C”或能够之间与LIBPQ交互的编程语言。 提示:对于某些人来说,这是一个为自己命名并创建一个方便的LIBPQ管道模式接口的号方法。 怎么运行 现在来探讨下这个机制是如何工作的。 细节 对于C程序员来说,这里有一些参考资料: 1)如前所述,可以针对多个版本的PG使用此功能,但尽在PG14及以后版本进行了描述 2)PG14源代码:src/test/modules/libpq_pipeline /libpq_pipeline.c提供了一个执行SELECT函数调用的简单例子 注意 1) 流水线模式专为异步模式而涉及,因此同步模式不可使用,这有点违背了流水线模式的目的。 或者可以访问libpsq api的语言进行编程 参考 https://stackoverflow.com/questions/65469533/where-is-query-pipelining-in-libpq

    1K10编辑于 2022-03-29
  • 来自专栏Greenplum

    Greenplum 架构和核心引擎

    、postmaster 是数据库主进程,监听用户的请求 12、此时系统空闲,没有任何运行查询 13、Master 上的seq server 为序列号生成器 2.2 客户端建立会话链接 1、客户端通过libpq fork一个子进程用于处理该客户端的所有查询请求 2、子进程在PostgrsSQL中称为backend;在Greenplum中该进程称为QD 2.4 QD建立和Segment的链接 1、QD进程使用libpq 1、Segment上的postmaster进程监听到QD的链接请求后,创建一个子进程以处理后续查询的请求 2、Segment 上创建的子进程称为QE 2.6 客户端发送查询请求给QD 1、客户端使用libpq 协议发送查询请求给master上得得QD进程 2、QD进程对接收到的查询进行处理,包括解析,优化生成分布式查询计划等 2.7 QD发送任务给QE 1、QD生成分布式查询计划后通过libpq协议发送给各个 ,包括错误处理等 2、QE之间没有libpq链接 2.11 QD返回查询结果给客户端 1、最终QD将查询的结果返回给客户端 3 Greenplum 主要设计思考 3.1 继承自PostgreSQL的设计

    1.6K30发布于 2020-02-28
  • 来自专栏PostgreSQL研究与原理解析

    PostgreSQL 14中连接参数target_session_attrs增强

    背景 很多PG客户端程序使用C客户端libpq库访问数据库。libpq提供了一系列函数,允许连接PG后台服务并将查询传送过去,同时还可以接收查询返回的结果。 通过libpq,PG支持一个连接字符串,指定多个host+port。依次尝试每个host+port直到成功建立连接。 PG10中引入指定多个hosts的功能。 最终libpq增强功能在PG14提交了。 支持的客户端 任何使用libpq库的客户端都能够使用target_session_attrs以及此处描述的改进的功能。支持psycopg2(python驱动)、psqlODBC(c 语言接口的驱动)。 案例 Psql使用libpq,可以无需任何编码测试target_session_attrs。

    2K30编辑于 2021-12-06
  • 来自专栏Java架构师必看

    用C语言扩展PHP功能

    include “php.h” #include “php_ini.h” #include “ext/standard/info.h” #include “php_mypg.h” #include “libpq-fe.h         /* create our resource hash key */         convert_to_string_ex(connect_info);         //调用libpq conn, PGconn *, link, -1, “mypg link”,  le_link);         convert_to_string_ex(query);         //通过libpq /configure —enable-mypg     由于要链接libpq.so,可以vi Makefile     在EXTRA_LIBS后面加上:-lpq 来把libpq编译进去,当然也可以通过修改

    2.4K20发布于 2021-03-22
  • 来自专栏kyle的专栏

    使用mac上自带的apache,php

    下好了以后我们按照上面提示设置一下 编辑.zshrc文件增加,之后source ~/.zshrc重启一下 export LDFLAGS="-L/usr/local/opt/libpq/lib" export CPPFLAGS="-I/usr/local/opt/libpq/include" export PKG_CONFIG_PATH="/usr/local/opt/libpq/lib/pkgconfig

    2.3K31发布于 2020-08-24
  • 来自专栏jiajia_deng

    使用 Conan、CMake 组织跨平台 Qt 工程

    Using compatible package '3558c54d13382045caaf9174821b7c2ba01fc8bc' libpq/13.6: Main binary package ' /data/libpq/13.6/_/_/package/3558c54d13382045caaf9174821b7c2ba01fc8bc/lib/libpq.a -- Library pgcommon found /Users/jj.deng/.conan/data/libpq/13.6/_/_/package/3558c54d13382045caaf9174821b7c2ba01fc8bc/lib /lib/libpgcommon.a -- Library pgcommon_shlib found /Users/jj.deng/.conan/data/libpq/13.6/_/_/package/ /data/libpq/13.6/_/_/package/3558c54d13382045caaf9174821b7c2ba01fc8bc/lib/libpq.a -- Library odbc found

    2K31编辑于 2023-10-21
  • 来自专栏cwl_Java

    数据库PostrageSQL-SSPI 认证

    注意如果没有显式指定用户名,libpq会使用 SAM 兼容的名称。如果你使用的是libpq或者基于它的驱动,你应该让这个选项保持禁用或者在连接字符串中显式指定用户名。

    1.1K10发布于 2020-11-24
  • 来自专栏老高的技术博客

    PHP编译错误的解决办法

    find ldap libraries in /usr/lib cp -frp /usr/lib64/libldap* /usr/lib/ configure: error: Cannot find libpq-fe.h PostgreSQL support for PDO… yes, shared checking for pg_config… not found configure: error: Cannot find libpq-fe.h Fix: yum -y install unixODBC-devel checking for pg_config… not found configure: error: Cannot find libpq-fe.h

    1.1K30编辑于 2022-12-27
领券