PostgreSQL 临时表
本文主要介绍 PostgreSQL 数据库中的临时表 (Temporary Table)。临时表将在会话结束或者当前事务结束时被删除。PostgreSQL 支持临时表和永久存储表 (Permanent Table) 具有相同的名称,如果出现这种情况,那么只有在临时表被删除之后才能看到永久表或者你可以指定 schema 来明确需要查询的是永久表。此外,在临时表上建立的索引同样也是临时的。
本文主要介绍 PostgreSQL 数据库中的临时表 (Temporary Table)。临时表将在会话结束或者当前事务结束时被删除。PostgreSQL 支持临时表和永久存储表 (Permanent Table) 具有相同的名称,如果出现这种情况,那么只有在临时表被删除之后才能看到永久表或者你可以指定 schema 来明确需要查询的是永久表。此外,在临时表上建立的索引同样也是临时的。
最近用 Python 帮人写一个程序,主体工作完成之后,利用 PyQt 写了一个界面,通过命令行运行一切正常,然后,利用 PyInstaller 打包成一个单独的可执行文件时,问题就来了:( 。我使用打包命令如下:
1 | pyinstaller -F -w xxx.py |
运行可执行文件时,弹出的对话框显示如下信息,此外就没有别的其它信息了。
1 | "failed to execute script xxx" |
今天朋友咨询了下面一个问题:
一个信息系统中包含全省的数据,但是各个市州可以访问自己的数据,而不能访问其他市州的数据。
例如,四川省下辖的成都市、绵阳市等有自己的数据,它们可以使用自己的用户登陆并更新自己的数据,
而不能修改其他市的数据(不可见);而四川省级别的用户则对下辖的所有市的数据均可见。
在我初看这个问题时,PostgreSQL 的行级安全策略 (Row Security Policy) 浮现在我的脑海中。PostgreSQL 的行级安全策略可以基于每个用户限制正常查询可以返回哪些行,或者由数据修改命令插入,更新或删除哪些行。默认情况下,PostgreSQL 中的表是不具备任何策略的。
在编译完成之后对 Greenplum 数据库进行安装测试时遇到如下问题,
1 | psql: FATAL: semctl(592740353, 7, SETVAL, 0) failed: Invalid argument (pg_sema.c:151) |
从而导致数据库启动失败,从错误结果来看应该是与信号量相关。那么具体是怎么回事呢?
文献 [1] 中给出了关于这个错误的详细说明,问题是由 System V IPC 对象导致的。
配置文件 logind.conf
中的 RemoveIPC
参数控制着 System V IPC 对象是否在用户完全退出的情况下被清除(系统用户排除在外)。在 systemd 212
版本之后这个选项默认是开启的,即 RemoveIPC=yes
。仍在被使用的共享内存段不会被清理,因此 systemd
不会去清理正在使用的共享内存段;但是信号量没有进程附加的概念,因此,当用户退出或进程终止时,即便该信号量正在被使用也会被清理(这里的理解不一定正确,建议直接看原文)。
表达式和运算符是组成 C 语言的基本组成部分,本文主要针对表达式和运算符进行讲解,涉及到赋值运算符、算术运算符、比较运算符和逻辑运算符等运算符以及条件表达式、成员访问表达式和函数调用表达式等一系列表达式。
本文主要介绍 C 语言中的类型及存储类限定符,C 语言中提高了两个类型限定符:const
和 volatile
;类型限定符指明了变量的访问方式。存储类限定符则指定了变量在内存中的存储方式,C 语言提供了四种存储类限定符:auto
,register
,extern
和 static
。
C 语言的数据类型可以分为七种,它们分别是原始类型(内建类型)、枚举类型、联合类型、结构体、数组、指针以及不完全类型。此外,本文还介绍了类型限定符、存储类型说明符以及类型重命名。