SHARE锁定记录的行为,为什么聚合功能不可能?

猴子代码

关于上一个问题,我询问如何从SELECT锁定中UPDATE锁定的记录中排除记录

对于我来说,并不是很明显,在锁定了的记录上SHARE LOCK不可能进行聚合功能。

为什么会这样,我如何绕过这个问题?


我正在做的过程:

  1. 锁定队列中的记录以便使用UPDATE锁定进行删除
  2. 要为用户排除该记录SELECT set SHARE lock,将与execute冲突UPDATE lock,并过滤该记录
  3. 对所选记录进行分页(COUNT()正在使用)

我唯一的选择是以dB / Redis设置标志以过滤该记录吗?


我得到的错误:

PG::FeatureNotSupported: ERROR:  FOR SHARE is not allowed with aggregate functions
: SELECT COUNT(*) FROM "groups" WHERE (groups.deleted_at IS NULL) FOR SHARE OF groups SKIP LOCKED
劳伦兹·阿尔伯

子选择可以帮助您:

SELECT COUNT(*)
FROM (SELECT 1
      FROM groups
      WHERE groups.deleted_at IS NULL
      FOR SHARE SKIP LOCKED) AS q;

原因是锁定行的查询必须能够从结果中识别要锁定的行。

src/backend/optimizer/plan/planner.c 有此代码注释:

/*
 * We've got trouble if FOR [KEY] UPDATE/SHARE appears inside
 * grouping, since grouping renders a reference to individual tuple
 * CTIDs invalid.  This is also checked at parse time, but that's
 * insufficient because of rule substitution, query pullup, etc.
 */

因此,可以说这是实现它所必需的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么dcast不可能传递非聚合函数?

来自分类Dev

为什么for循环的行为与while循环的“ pop”功能不同?

来自分类Dev

为什么不可能注入泛型类?

来自分类Dev

Nullable <int?>是不可能的,为什么不能呢?

来自分类Dev

为什么在Haskell中不可能分割整数?

来自分类Dev

为什么在C中不可能重载?

来自分类Dev

为什么这在学说上是不可能的

来自分类Dev

Nullable <int?>是不可能的,为什么不能呢?

来自分类Dev

为什么本文中的这个问题是不可能的?

来自分类Dev

为什么不可能用焦点影响子元素?

来自分类Dev

C ++不可能的指针行为

来自分类Dev

为什么不可能获得指向基类的受保护方法的指针?

来自分类Dev

为什么不可能将自身缺少复制运算符的对象赋给矢量?

来自分类Dev

为什么我在scala比赛中遇到不可能的情况?

来自分类Dev

为什么不可能在EventBus中注册活动?

来自分类Dev

为什么在Maven中不可能包含相同依赖项的多个版本?

来自分类Dev

为什么当我为注册人命名时,asm有不可能的限制?

来自分类Dev

为什么不建议或不可能创建最大内聚的类?

来自分类Dev

为什么不可能将`(()-> Void)`强制转换为`(()-> Void)`?

来自分类Dev

为什么在Python中不可能实现真正的不变性?

来自分类Dev

为什么不可能指定Scala varargs参数的默认值?

来自分类Dev

为什么不可能通过ddrescue压缩动态图像?

来自分类Dev

观看未使用的局部变量是不可能的吗?为什么?

来自分类Dev

如何在部分模板中设置@key?(或者为什么不可能?)

来自分类Dev

为什么不可能实现“无限”的一个时间片算法?

来自分类Dev

为什么不可能在特征中定义此构造函数?

来自分类Dev

动态重定向输出-在Linux中看起来不可能,为什么?

来自分类Dev

为什么不可能有指向返回引用的指针?

来自分类Dev

为什么这不可能: let array[j] = array[j] + 1;

Related 相关文章

  1. 1

    为什么dcast不可能传递非聚合函数?

  2. 2

    为什么for循环的行为与while循环的“ pop”功能不同?

  3. 3

    为什么不可能注入泛型类?

  4. 4

    Nullable <int?>是不可能的,为什么不能呢?

  5. 5

    为什么在Haskell中不可能分割整数?

  6. 6

    为什么在C中不可能重载?

  7. 7

    为什么这在学说上是不可能的

  8. 8

    Nullable <int?>是不可能的,为什么不能呢?

  9. 9

    为什么本文中的这个问题是不可能的?

  10. 10

    为什么不可能用焦点影响子元素?

  11. 11

    C ++不可能的指针行为

  12. 12

    为什么不可能获得指向基类的受保护方法的指针?

  13. 13

    为什么不可能将自身缺少复制运算符的对象赋给矢量?

  14. 14

    为什么我在scala比赛中遇到不可能的情况?

  15. 15

    为什么不可能在EventBus中注册活动?

  16. 16

    为什么在Maven中不可能包含相同依赖项的多个版本?

  17. 17

    为什么当我为注册人命名时,asm有不可能的限制?

  18. 18

    为什么不建议或不可能创建最大内聚的类?

  19. 19

    为什么不可能将`(()-> Void)`强制转换为`(()-> Void)`?

  20. 20

    为什么在Python中不可能实现真正的不变性?

  21. 21

    为什么不可能指定Scala varargs参数的默认值?

  22. 22

    为什么不可能通过ddrescue压缩动态图像?

  23. 23

    观看未使用的局部变量是不可能的吗?为什么?

  24. 24

    如何在部分模板中设置@key?(或者为什么不可能?)

  25. 25

    为什么不可能实现“无限”的一个时间片算法?

  26. 26

    为什么不可能在特征中定义此构造函数?

  27. 27

    动态重定向输出-在Linux中看起来不可能,为什么?

  28. 28

    为什么不可能有指向返回引用的指针?

  29. 29

    为什么这不可能: let array[j] = array[j] + 1;

热门标签

归档