• 神奇的void指针

    void 指针在C语言里一直很神奇, 比如,有下面这么一个要求 1. 为用户提供一些接口 2. 将我们具体的实现方法藏起来 要怎么才能办到呢,这里,我们利用void指针来传递数据结构 提供为用户的头文件 public.h #include <string.h> #include <stdio.h> #include <stdlib.h> ...

    阅读全文
    作者:klwang | 分类:Linux | 阅读:89 views | 标签:,
  • 二叉树关键字查找

    postgresql 中二叉树查找关键字的算法 src/backend/parser/kwlookup.c 关键字的存储结构 typedef struct ScanKeyword { const char *name; int value; ... ... 其他结构 } ScanKeyword; 将所有的关键字按照字符顺序排列成为一个数组 static const ScanKeyword ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:135 views
  • postgresql 异步消息处理

    有几种情况下后端会发送一些并非由特定的前端的命令流提示的消息。 在任何时候前端都必须准备处理这些信息,即使是并未涉及到查询的处理的时候。 至少,我们应该在开始读取查询响应之前检查这些情况。 NoticeResponse 消息有可能是因为外部的活动而生成的; 比如,如果数据库管理员进行一次”快速”数据库关 ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:255 views | 标签:,
  • postgresql 扩展查询

    postgresql 是使用扩展协议进行prepare/bind方式查询的 在扩展的协议里,前端首先发送一个 Parse 消息,它包含一个文本查询字串, 另外还有一些有关参数占位符的数据类型的信息,以及一个最终准备好的语句对象的名字(一个空字串选择未命名的准备好的语句)。 响应要么是一个 ParseComplete 要么是 ErrorResponse。 参 ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:223 views | 标签:,
  • postgresql 连接终止过程

    通常的终止过程的优雅方法是前端发送一条 Terminate (终止)消息并且立刻关闭联接。 一旦收到消息,后端马上关闭联接并且退出。 在少数情况下(比如一个管理员命令数据库关闭),后端可能在没有任何前端请求的情况下断开连接。 在这种情况下,后端将在它断开连接之前尝试发送一个错误或者通知信息,给出断开的原因。 ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:358 views | 标签:,
  • postgresql 的查询取消操作

    原来pg的取消查询是这么做的,果然眼前一亮啊。 在一条查询正在处理的时候,可能取消该查询的处理。 这样的取消请求不是直接通过打开的连接发送给后端的,这么做是因为实现的有效性: 我们不希望后端在处理查询的过程中不停地检查前端来的输入。 取消请求应该相对而言比较少见,所以我们把取消做得稍微笨拙一些,以便不 ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:273 views | 标签:,
  • postgresql 简单查询处理过程

    一个SQL查询循环是由前端发送一条 Query 消息给后端进行初始化的。 这条消息包含一个用文本字串表达的 SQL 命令(或者一些命令)。 后端根据查询命令字串的内容发送一条或者更多条响应消息给前端, 并且最后是一条 ReadyForQuery 响应信息。 ReadyForQuery 通知前端它可以安全地发送新命令了。 (实际上前端不必在发送 ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:255 views | 标签:,
  • postgresql 错误消息和具体格式含义

    postgresql使用ErrorResponse报文向前端发送错误信息,具体消息格式如下: Byte1('E') 标识消息是一条错误。 Int32 以字节记的消息内容的长度,包括长度本身。 消息体由一个或多个标识出来的字段组成,后面跟着一个字节零作为终止符。 字段可以以任何顺序出现。对于每 ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:237 views | 标签:,
  • postgresql 登陆验证时的SSL过程

    postgresl支持 SSL 加密数据传输 如果编译 PostgreSQL 的时候打开了 SSL 支持,那么前后端通讯就可以用 SSL 加密。 这样就提供了一种在攻击者可能捕获会话通讯数据包的环境下保证通讯安全的方法。 有关使用 SSL 加密 PostgreSQL 会话的更多信息。 要开始一次 SSL 加密联接,前端先是发送一个 SSLRequest 消息(当然要和 ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:411 views | 标签:,