Japin

登高必自卑,行远必自迩

我在 Emacs 中使用 gtags (GNU global source code tag system) 来作为代码导航的基本工具,它默认标记根目录及其子目录,但是有一些子目录其实我并不想要被标记。本文简要记录一下如何告知 gtags 忽略某些目录或文件。

阅读全文 »

本文简要记录一下如何将 Oracle 数据库中的 sys_connect_by_path() 函数迁移到 PostgreSQL 数据库中。

函数 sys_connect_by_path() 通常是与 Oracle 中的 connect by 子句一起使用的,而 connect by 子句转换到 PostgreSQL 中时通常是使用 WITH RECUSIVE 来实现。

阅读全文 »

最近在做 Oracle 迁移的时候发现一个类型错误,如下所示:

1
ERROR:  invalid input syntax for type numeric: "null"

这个问题其实很简单,就是原始数据里面包含 'null' 的字符串导致的。解决这个问题的办法就是将数据中为 'null' 的异常数据转换为正常数据。

阅读全文 »

最近由于需要从事 Go 语言相关的工作,为此花了约一个星期的时间将《Go 语言实战》这本书过了一遍,对 Go 语言有了一个基本的认识。这本书短小精悍,全书 200 多页,详细介绍了 Go 语言的数组、切片的底层原理,Go 语言的类型系统、并发、通道以及测试。当然部分内容也没有深入的讲解,如映射,其底层的实现介绍的不是很充分。《Go 语言实战》这本书适合有一定语言编程经验的读者。

阅读全文 »

Oracle 数据库的 wm_concat 函数用于将多行数据聚合为单行,从而提供与特定值关联的数据列表,它将以逗号来分割列表。
本文主要介绍 wm_concat 函数的功能以及其在 PostgreSQL 数据库中的替换方法。

阅读全文 »

PostgreSQL 使用 autoconf 工具来自动配置软件源代码包。我在修改了 configure.ac 文件之后执行 autoreconf 发现它将引入其他无关的更改,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@@ -1187,6 +1189,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;

+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+

...

@@ -14714,7 +14738,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];

...

这是由于供应商的软件包经常包含一些改进导致的,这就导致了我们生成的 configure 文件与其他提交者的有不同的结果。

阅读全文 »

最近看到 PostgreSQL 邮件列表中有人说 auto_explain 插件在特定情况下会导致 OOM 问题,经过一番分析发现原来是由于内存上下文的问题导致的。目前该泄露已经修复,并合并到代码库中。

阅读全文 »
0%