1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/opengauss-openGauss-server

 / Детали:

【Тестовый тип: функциональность инструмента】【Тестовая версия: 7.0.0-RC1】gs_dump не экспортирует типы,...

Предстоит сделать
Владелец
Создано  
30.06.2025

зависящие от других типов

【Заголовок описания】:
【Тип тестирования: функциональность инструмента】【Тестовая версия: 7.0.0-RC1】 gs_dump не экспортирует типы, на которые есть зависимости других типов

【Информация об операционной системе и аппаратном обеспечении】(команда запроса: cat /etc/system-release, uname -a):
Информация об операционной системе и аппаратном обеспечении

【Тестовая среда】:
Одиночная машина
【Тестируемая функция】: gs_dump
gs_dump
【Тип тестирования】:
Функциональность инструмента
【Версия базы данных】(команда запроса: gaussdb -V):
Версия базы данных
【Предварительные условия】:
Отсутствуют
【Шаги выполнения】(пожалуйста, заполните подробные шаги выполнения):

  1. Используйте следующий код для создания базы данных db1 и в db1 создайте пакет и функцию.
drop database if exists db1;
create database db1;
\c db1

create or replace package pkg_for_test as
type r1 is record(id int, col text);
type t1 is table of int;
type a1 is table of varchar2(20) index by varchar2(20);
type v1 is varray(10) of varchar2(20);
var1 r1 := (2023,'vbase');
var2 t1 := t1(3,1,3,4);
var3 a1;
var4 v1 := v1('vbase','opengauss','pg');
end pkg_for_test;
/

create or replace function func_for_test() return void
as
type rec1 is record(attr1 pkg_for_test.r1, attr2 pkg_for_test.t1, attr3 pkg_for_test.a1, attr4 pkg_for_test.v1);
var1 rec1 := ((2025,'for_test'), pkg_for_test.t1(1,2,3,4), NULL, pkg_for_test.v1(4,5,6,7) );
begin
raise info 'func_for_test var1:%',var1;
end;
/
  1. Используйте команду gs_dump db1 -h 127.0.0.1 -p 5432 -W 'xxx' -U uuu -f bck.sql для экспорта db1.

【Ожидаемый вывод】:
Поскольку func_for_test.rec1 зависит от pkg_for_test.r1, ожидается, что определение pkg_for_test.r1 также будет экспортировано, как показано ниже:

CREATE TYPE "16524.r1" AS (
        id integer,
        col text
);

CREATE TYPE "16531.rec1" AS (
        attr1 "16524.r1",
        attr2 integer[],
        attr3 character varying[],
        attr4 character varying[]
);

【Фактический вывод】:
Определение 16524.r1 отсутствует, присутствует только определение 16531.rec1.
Фактический вывод

【Анализ причины】:

  1. Корневая причина проблемы
    Согласно текущей логике экспорта типов, если тип находится в пакете, он не экспортируется. Путь кода: getTypes-->selectDumpableType-->IsPackageObject
    selectDumpableType
    IsPackageObject
    А 16524.r1 удовлетворяет условию для непереносимости:
    Условие для непереносимости 16524.r1
  2. Процесс выявления проблемы
  3. Другие возможные причины подобных явлений
  4. Временные меры по обходу проблемы
  5. Решение проблемы
  6. Ожидаемое время исправления проблемы

【Информация о журналах】(пожалуйста, приложите файлы журналов, скриншоты, coredump информацию):

【Тестовый код】:

Комментарий (0)

GitLife Service Account Задача создана
GitLife Service Account добавлено
 
sig/tools
label.
Развернуть журнал операций

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/opengauss-openGauss-server.git
git@api.gitlife.ru:oschina-mirror/opengauss-openGauss-server.git
oschina-mirror
opengauss-openGauss-server
opengauss-openGauss-server