Skip to content

analyze导致计算节点ddl重放报错 #797

@jd-zhang

Description

@jd-zhang

*Issue migrated from trac ticket # 894 www.kunlunbase.com *

component: computing nodes | priority: major

2022-07-11 15:25:43: smith created the issue


** analyze的执行逻辑

1、计算节点向存储节点发送analyze命令;
2、从存储节点读取表的统计信息;
3、根据(2)生成对系统表的update/insert语句,例如:
 UPDATE pg_class SET relpages=97,
         reltuples=16341
  WHERE relname='t1'
        AND relnamespace = 
    (SELECT oid
    FROM pg_namespace
    WHERE nspname = 'public')

-* 问题

1、步骤一没有检查用户的权限;
2、其他计算节点执行(3)的sql时,使用的是最开始执行analyze的用户,而该用户可能没有对应的权限,导致ddl复制卡住。

-* 复现

create user test;
create table t1(a int, b int);
set role test;
analyze t1; -- 预期warning
create table t2(a int, b int);
analyze t2; -- 预期其他计算节点ddl复制进程卡住

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions