小编Pin*_*iya的帖子

在 postgresql 的单个查询中使用 WITH + DELETE 子句

我有以下表结构,用于listens以 PRIMARYKEY命名的表(uid,timestamp)

     Column     |            Type             |                      Modifiers                       
----------------+-----------------------------+------------------------------------------------------    
 id             | integer                     | not null default nextval('listens_id_seq'::regclass)
 uid            | character varying           | not null
 date           | timestamp without time zone | 
 timestamp      | integer                     | not null
 artist_msid    | uuid                        | 
 album_msid     | uuid                        | 
 recording_msid | uuid                        | 
 json           | character varying           | 
Run Code Online (Sandbox Code Playgroud)

我需要删除特定用户(uid) 的所有条目,这些条目早于最大时间戳,比如 max 是 123456789(以秒为单位),delta 是 100000,然后,所有记录都早于max-100000

当表包含单个用户时,我设法创建了一个查询,但我无法将其制定为适用于数据库中的每个用户。这个操作需要对数据库中的每个用户进行。

WITH max_table as (
    SELECT max(timestamp) - 10000 as max 
    FROM listens 
    GROUP …
Run Code Online (Sandbox Code Playgroud)

sql postgresql common-table-expression dml

5
推荐指数
1
解决办法
8977
查看次数

没有sudo的SIGKILL init(PID = 1)?linux中的bug?

我试着运行以下命令kill -9 1,它说bash: kill: (1) - Operation not permitted.

对我来说很明显,你不应该在没有sudo的情况下发出init进程的信号.

但是在为c-shell编写代码时遇到了一个bug(我认为它确实存在).我编译了以下程序并运行它.现在它让我和我所有的操作系​​统概念混淆了.

#include <signal.h>
int main()
{
    killpg(1,9);
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

请保存所有程序并自行运行代码.

任何人都可以给我一个理由并澄清我的困惑.

UPDATE
Man页面killpg()读作...

在Linux上,killpg()作为库函数实现,使得调用kill(-pgrp,sig).

人工页面kill()读作......

PID为-1是特殊的; 它表示除kill进程本身和init之外的所有进程.

现在的问题是,这种呼叫的用途是什么,从根本上杀死一切.它有许多危险的应用程序而不是有用的应用程序.但是,自从多年以来它一直保存在Linux内核中,它必须有自己的用处.但我无法弄明白.有人知道吗?

c linux system-calls

3
推荐指数
1
解决办法
170
查看次数

标签 统计

c ×1

common-table-expression ×1

dml ×1

linux ×1

postgresql ×1

sql ×1

system-calls ×1