строку (not rotate) в операторе select, при использовании not rotate генерируются столбцы, начинающиеся с цифры, а также новые столбцы, созданные с помощью for, также начинаются с цифры. Непреобразованные столбцы и новые столбцы заключаются в одинарные кавычки. После выполнения база данных падает.
【Заголовок описания】: Операция преобразования столбцов в строки (not rotate), при выполнении запроса select, сгенерированные столбцы и новые столбцы начинаются с цифры, не преобразованные столбцы и новые столбцы заключены в одинарные кавычки, после выполнения база данных падает
【Тип теста: SQL-функционал】【Тестовая версия: 7.0.0】 Проблема: операция преобразования столбцов в строки (not rotate), при выполнении запроса select, сгенерированные столбцы и новые столбцы начинаются с цифры, не преобразованные столбцы и новые столбцы заключены в одинарные кавычки, после выполнения база данных падает
【Информация об операционной системе и оборудовании】(запрос команды: cat /etc/system-release, uname -a):
CentOS Linux release 7.9.2009 (Core)
Linux ecs-6ac8 3.10.0-1160.119.1.el7.x86_64 #1:【6.0.1】Ошибка подключения клиента MySQL SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
【Тестовая среда】(одномашинная/1 мастер x резерв x каскадный резерв): одномашинная
【Тестируемая функция】: синтаксис not rotate
【Тип теста】: SQL-функционал
【Версия базы данных】(запрос команды: gaussdb -V):
gaussdb (openGauss 7.0.0-RC1 build c20928a5) compiled at 2025-04-09 20:30:42 commit 0 last mr
【Предварительные условия】: в базе данных D установлен плагин shark
【Процедура выполнения】(укажите подробные шаги выполнения):
CREATE TABLE t_not_rotate0001_01 (
Product VARCHAR(50),
Q1_Sales DECIMAL(10,2),
Q2_Sales DECIMAL(10,2),
Q3_Sales DECIMAL(10,2),
Q4_Sales DECIMAL(10,2)
);
INSERT INTO t_not_rotate0001_01 VALUES
('Laptop', 1000.00, 1500.00, 1200.00, 1800.00),
('Phone', 800.00, 900.00, 950.00, 1100.00),
('Tablet', NULL, 500.00, NULL, 700.00);
SELECT Product, 123Quarter, sales
FROM (
SELECT Product, Q1_Sales, Q2_Sales, Q3_Sales, Q4_Sales
FROM t_not_rotate0001_01
) AS SourceTable
not rotate (
sales FOR Quarter IN (Q1_Sales, Q2_Sales, Q3_Sales, Q4_Sales)
) AS UnpivotTable;
SELECT Product, Quarter, 123sales
FROM (
SELECT Product, Q1_Sales, Q2_Sales, Q3_Sales, Q4_Sales
FROM t_not_rotate0001_01
) AS SourceTable
not rotate (
sales FOR Quarter IN (Q1_Sales, Q2_Sales, Q3_Sales, Q4_Sales)
) AS UnpivotTable;
SELECT 'Product', Quarter, Sales
FROM (
SELECT Product, Q1_Sales, Q2_Sales, Q3_Sales, Q4_Sales
FROM t_not_rotate0001_01
) AS SourceTable
not rotate (
Sales FOR Quarter IN (Q1_Sales, Q2_Sales, Q3_Sales, Q4_Sales)
) AS UnpivotTable;
SELECT Product, Quarter, 'Sales'
FROM (
SELECT Product, Q1_Sales, Q2_Sales, Q3_Sales, Q4_Sales
FROM t_not_rotate0001_01
) AS SourceTable
not rotate (
Sales FOR Quarter IN (Q1_Sales, Q2_Sales, Q3_Sales, Q4_Sales)
) AS UnpivotTable;
【Ожидаемый результат】: при корректных ошибках состояние базы данных должно быть нормальным
【Фактический результат】: после выполнения база данных падает без генерации core-файла
Шаг 2 выполнения приводит к падению базы данных:
Шаг 3 выполнения приводит к падению базы данных:
pg_log:
Шаг 4 выполнения приводит к падению базы данных:
Шаг 5 выполнения приводит к падению базы данных:
pg_log:
【Анализ причины】:
【Информация о журналах】(приложите файлы журналов, скриншоты, информацию о coredump):
【Тестовый код】: