已关闭
[Bug]: 使用默认配置的B库中创建age插件报错 #8440
lvlintao666创建于  8月27日关闭于  9月11日
lvlintao666
lvlintao666成员
8月27日 创建

测试类型

SQL功能

测试版本

7.0.0LTS

问题描述

操作系统和硬件信息

2403 arm

测试环境

企业版主备

被测功能

预置条件

操作步骤

在B库中创建age插件
create extension age;

预期输出

成功加载age插件

实际输出

image.png

image.png

日志信息

如上

提单组织

测试团队

测试代码

likedislike
lvlintao666lvlintao666成员
8月27日 添加了label:bug
lvlintao666lvlintao666成员
8月27日 关联了看板:临时看板
opengauss_botopengauss_bot成员
8月27日 添加了label:sig/Community
opengauss_bot
opengauss_bot成员
8月27日 评论:

Welcome To openGauss Community

Hey @u012280419 , thanks for your contribution to the community.

Bot Usage Manual

I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands. You can self-configure the PR merge rules for this repository. For more details, please refer to Here.

Contact Guide

If you have any questions, please contact the SIG: Community ,
and any of the maintainers: @CarrotGo, @chendong76, @chenxiaobin19, @congzhou2603, @dodders, @hwworkholic, @jemappellehc, @libiao2024, @muyulinzhong, @quemingjian, @shenzheng4, @shirley_zhengx, @superlchf, @totaj, @wlff234, @wofanzheng, @ywzq1161327784 ,
and any of the committers: @Igali, @bihua111, @cailei19, @h_ray, @levy53071, @libiao2024, @lihaixiao, @mrzack, @wangfeihuo, @wuyuechuan, @xiong_xjun, @zhangfengzhi123, @zhangxubo, @zhangzq131, @zjh_hw .

likedislike
opengauss_botopengauss_bot成员
8月28日 删除了label:sig/Community
opengauss_botopengauss_bot成员
8月28日 添加了label:sig/Plugin,sig/SQLEngine
chendong76chendong76成员
9月1日 关联了看板:openGauss 7.0.0-LTS
chendong76chendong76成员
9月1日 移除了看板:临时看板
ywzq1161327784ywzq1161327784成员
9月2日 移除了负责人 ywzq1161327784
opengauss_bot
opengauss_bot成员
9月2日 评论:

This issue requires an assignee. Since you haven't specified one, we've assigned TestManager as the default assignee for this issue.

likedislike
opengauss_botopengauss_bot成员
9月2日 将 TestManager 设为负责人
ywzq1161327784ywzq1161327784成员
9月2日 将 liyangx 设为负责人,移除负责人 TestManager
Lliyangx成员
9月3日 关联了pull request:fix: 修复 Dolphin B 兼容模式下 AGE 扩展无法安装
Lliyangx成员
9月3日 关联了pull request:fix: 修复 Dolphin B 兼容模式下 AGE 扩展无法安装
Lliyangx成员
9月3日 issue状态由 待办的 改变为 已完成
liyangx成员
9月9日 评论:

20260909转测包自验无误:
image.png

likedislike
Lliyangx成员
9月9日 issue状态由 已完成 改变为 待回归
lvlintao666
lvlintao666成员
9月11日 评论:

回归时间:2026.9.11
回归版本:7.0.0 B022
回归结论:通过
回归步骤:按上述步骤执行SQL语句,查看插件是否安装成功
image.png

likedislike
lvlintao666lvlintao666成员
9月11日 issue状态由 待回归 改变为 已验收
lvlintao666lvlintao666成员
9月11日 关闭了 issue
liyangx成员
23 天前 评论:

20261010转测自验无误:
image.png

正常SQL操作无问题:

test_b=# \set ON_ERROR_STOP on
test_b=# \set graph_name compat_age_smoke_20260903_03
test_b=#
test_b=# \echo '===== 1. 环境检查 ====='
===== 1. 环境检查 =====
test_b=#
test_b=# SELECT current_database();
 current_database
------------------
 test_b
(1 row)

test_b=#
test_b=# SHOW dolphin.b_compatibility_mode;
 dolphin.b_compatibility_mode
------------------------------
 on
(1 row)

test_b=#
test_b=# SELECT extname, extversion
test_b-# FROM pg_extension
test_b-# WHERE extname IN ('dolphin', 'age')
test_b-# ORDER BY extname;
 extname | extversion
---------+------------
 age     | 1.0.1
 dolphin | 5.3
(2 rows)

test_b=#
test_b=# SELECT n.nspname
test_b-# FROM pg_namespace n
test_b-# WHERE n.nspname = 'ag_catalog';
  nspname
------------
 ag_catalog
(1 row)

test_b=#
test_b=# SELECT p.oid, p.proname, n.nspname
test_b-# FROM pg_proc p
test_b-# JOIN pg_namespace n ON n.oid = p.pronamespace
test_b-# WHERE n.nspname = 'ag_catalog'
test_b-#   AND p.proname IN ('create_graph', 'drop_graph', 'cypher')
test_b-# ORDER BY p.oid;
  oid  |   proname    |  nspname
-------+--------------+------------
 47841 | create_graph | ag_catalog
 47842 | drop_graph   | ag_catalog
 48313 | cypher       | ag_catalog
 48314 | cypher       | ag_catalog
 48315 | cypher       | ag_catalog
(5 rows)

test_b=#
test_b=# \echo '===== 2. AGE 加载和图空间创建 ====='
===== 2. AGE 加载和图空间创建 =====
test_b=#
test_b=# SET dolphin.b_compatibility_mode = off;
SET
test_b=#
test_b=# LOAD 'age';
LOAD
test_b=#
test_b=# SET search_path TO ag_catalog, public;
SET
test_b=#
test_b=# SELECT create_graph(:'graph_name');

NOTICE:  graph "compat_age_smoke_20260903_03" has been created
CONTEXT:  referenced column: create_graph
 create_graph
--------------

(1 row)

test_b=#
test_b=# SELECT g.name, g.oid, g.namespaceoid
test_b-# FROM ag_catalog.ag_graph g
test_b-# WHERE g.name = :'graph_name';
             name             |  oid  | namespaceoid
------------------------------+-------+--------------
 compat_age_smoke_20260903_03 | 48475 |        48472
(1 row)

test_b=#
test_b=# \echo '===== 3. 创建 vertex ====='
===== 3. 创建 vertex =====
test_b=#
test_b=# SELECT *
test_b-# FROM cypher(
test_b(#     :'graph_name',
test_b(#     $$CREATE (:person {name: "Alice", age: 30})$$
test_b(# ) AS (result agtype);
 result
--------
(0 rows)

test_b=#
test_b=# SELECT *
test_b-# FROM cypher(
test_b(#     :'graph_name',
test_b(#     $$CREATE (:person {name: "Bob", age: 25})$$
test_b(# ) AS (result agtype);
 result
--------
(0 rows)

test_b=#
test_b=# \echo '===== 4. 查询 vertex ====='
===== 4. 查询 vertex =====
test_b=#
test_b=# SELECT *
test_b-# FROM cypher(
test_b(#     :'graph_name',
test_b(#     $$MATCH (n:person) RETURN n$$
test_b(# ) AS (n agtype);
                                               n
------------------------------------------------------------------------------------------------
 {"id": 844424930131969, "label": "person", "properties": {"age": 30, "name": "Alice"}}::vertex
 {"id": 844424930131970, "label": "person", "properties": {"age": 25, "name": "Bob"}}::vertex
(2 rows)

test_b=#
test_b=# \echo '===== 5. 创建 edge ====='
===== 5. 创建 edge =====
test_b=#
test_b=# SELECT *
test_b-# FROM cypher(
test_b(#     :'graph_name',
test_b(#     $$MATCH (a:person {name: "Alice"}),
test_b$#              (b:person {name: "Bob"})
test_b$#       CREATE (a)-[:knows]->(b)$$
test_b(# ) AS (result agtype);
 result
--------
(0 rows)

test_b=#
test_b=# \echo '===== 6. 查询 edge ====='
===== 6. 查询 edge =====
test_b=#
test_b=# SELECT *
test_b-# FROM cypher(
test_b(#     :'graph_name',
test_b(#     $$MATCH (a:person)-[e:knows]->(b:person)
test_b$#       RETURN a, e, b$$
test_b(# ) AS (a agtype, e agtype, b agtype);
                                               a                                                |                                                             e                                                              |
                              b
------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+----------------
------------------------------------------------------------------------------
 {"id": 844424930131969, "label": "person", "properties": {"age": 30, "name": "Alice"}}::vertex | {"id": 1125899906842625, "label": "knows", "end_id": 844424930131970, "start_id": 844424930131969, "properties": {}}::edge | {"id": 84442493
0131970, "label": "person", "properties": {"age": 25, "name": "Bob"}}::vertex
(1 row)

test_b=#
test_b=# \echo '===== 7. 检查 AGE 元数据 ====='
===== 7. 检查 AGE 元数据 =====
test_b=#
test_b=# SELECT l.name, l.graph, l.id, l.kind, l.relation
test_b-# FROM ag_catalog.ag_label l
test_b-# JOIN ag_catalog.ag_graph g ON g.oid = l.graph
test_b-# WHERE g.name = :'graph_name'
test_b-# ORDER BY l.id;
       name       | graph | id | kind |                   relation
------------------+-------+----+------+-----------------------------------------------
 _ag_label_vertex | 48475 |  1 | v    | compat_age_smoke_20260903_03._ag_label_vertex
 _ag_label_edge   | 48475 |  2 | e    | compat_age_smoke_20260903_03._ag_label_edge
 person           | 48475 |  3 | v    | compat_age_smoke_20260903_03.person
 knows            | 48475 |  4 | e    | compat_age_smoke_20260903_03.knows
(4 rows)

test_b=#
test_b=# \echo '===== 8. AGE 操作符测试(B 兼容语义关闭) ====='
===== 8. AGE 操作符测试(B 兼容语义关闭) =====
test_b=#
test_b=# SET dolphin.b_compatibility_mode = off;
SET
test_b=#
test_b=# SELECT '{"name":"Alice","age":30}'::agtype
test_b-#        ? 'name'::text AS has_name;
 has_name
----------
 t
(1 row)

test_b=#
test_b=# SELECT '{"name":"Alice","age":30}'::agtype
test_b-#        ?| ARRAY['name', 'missing']::text[] AS has_any;
 has_any
---------
 t
(1 row)

test_b=#
test_b=# SELECT '{"name":"Alice","age":30}'::agtype
test_b-#        ?& ARRAY['name', 'age']::text[] AS has_all;
 has_all
---------
 t
(1 row)

test_b=#
test_b=# SELECT '{"name":"Alice"}'::agtype
test_b-#        @> '{"name":"Alice"}'::agtype AS contains_value;
 contains_value
----------------
 t
(1 row)

test_b=#
test_b=# SELECT '{"name":"Alice"}'::agtype
test_b-#        <@ '{"name":"Alice","age":30}'::agtype AS contained_value;
 contained_value
-----------------
 t
(1 row)

test_b=#
test_b=# \echo '===== 9. AGE 函数接口测试 ====='
===== 9. AGE 函数接口测试 =====
test_b=#
test_b=# SELECT ag_catalog.agtype_exists(
test_b(#     '{"name":"Alice","age":30}'::agtype,
test_b(#     'name'
test_b(# ) AS function_exists;
 function_exists
-----------------
 t
(1 row)

test_b=#
test_b=# SELECT ag_catalog.agtype_exists_any(
test_b(#     '{"name":"Alice","age":30}'::agtype,
test_b(#     ARRAY['name', 'missing']::text[]
test_b(# ) AS function_exists_any;
 function_exists_any
---------------------
 t
(1 row)

test_b=#
test_b=# SELECT ag_catalog.agtype_exists_all(
test_b(#     '{"name":"Alice","age":30}'::agtype,
test_b(#     ARRAY['name', 'age']::text[]
test_b(# ) AS function_exists_all;
 function_exists_all
---------------------
 t
(1 row)

test_b=#
test_b=# SELECT ag_catalog.agtype_contains(
test_b(#     '{"name":"Alice"}'::agtype,
test_b(#     '{"name":"Alice"}'::agtype
test_b(# ) AS function_contains;
 function_contains
-------------------
 t
(1 row)

test_b=#
test_b=# \echo '===== 10. Dolphin B 模式普通 SQL 测试 ====='
===== 10. Dolphin B 模式普通 SQL 测试 =====
test_b=#
test_b=# SET dolphin.b_compatibility_mode = on;
SET
test_b=#
test_b=# DROP TABLE IF EXISTS dolphin_age_smoke;
NOTICE:  table "dolphin_age_smoke" does not exist, skipping
DROP TABLE
test_b=#
test_b=# CREATE TEMP TABLE dolphin_age_smoke (
test_b(#     id integer,
test_b(#     name text
test_b(# );
CREATE TABLE
test_b=#
test_b=# INSERT INTO dolphin_age_smoke VALUES
test_b-#     (1, 'Alice'),
test_b-#     (2, 'Bob');
INSERT 0 2
test_b=#
test_b=# SELECT id, name
test_b-# FROM dolphin_age_smoke
test_b-# ORDER BY id;
 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

test_b=#
test_b=# SELECT count(*) AS row_count
test_b-# FROM dolphin_age_smoke;
 row_count
-----------
         2
(1 row)

test_b=#
test_b=# \echo '===== 11. 清理 AGE 测试图 ====='
===== 11. 清理 AGE 测试图 =====
test_b=#
test_b=# SET dolphin.b_compatibility_mode = off;
SET
test_b=#
test_b=# SELECT drop_graph(:'graph_name', true);
NOTICE:  drop cascades to 4 other objects
DETAIL:  drop cascades to table compat_age_smoke_20260903_03._ag_label_vertex
drop cascades to table compat_age_smoke_20260903_03._ag_label_edge
drop cascades to table compat_age_smoke_20260903_03.person
drop cascades to table compat_age_smoke_20260903_03.knows
CONTEXT:  referenced column: drop_graph
NOTICE:  graph "compat_age_smoke_20260903_03" has been dropped
CONTEXT:  referenced column: drop_graph
 drop_graph
------------

(1 row)

test_b=#
test_b=# \echo '===== 12. 恢复 B 兼容模式 ====='
===== 12. 恢复 B 兼容模式 =====
test_b=#
test_b=# SET dolphin.b_compatibility_mode = on;
SET
test_b=#
test_b=# RESET search_path;
RESET
test_b=#
test_b=# \echo '===== AGE/Dolphin 验收测试完成 ====='
===== AGE/Dolphin 验收测试完成 =====
test_b=#
test_b=#
test_b=#
likedislike
lvlintao666
lvlintao666成员
21 天前 评论:

回归时间:2026.10.12
回归版本:8.0.0 B001
回归结论:通过
回归步骤:按上述步骤执行SQL语句
image.png

likedislike