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 .


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


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



20261010转测自验无误:

正常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=#


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




测试类型
SQL功能
测试版本
7.0.0LTS
问题描述
操作系统和硬件信息
2403 arm
测试环境
企业版主备
被测功能
预置条件
操作步骤
在B库中创建age插件
create extension age;预期输出
成功加载age插件
实际输出
日志信息
如上
提单组织
测试团队
测试代码