From 2f0ded2bccf83fa33aeff4d21bfc726bbfad6082 Mon Sep 17 00:00:00 2001 From: wangfeihuo Date: Fri, 25 Apr 2025 15:29:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A1=A8=E6=97=A0=E7=BA=A6?= =?UTF-8?q?=E6=9D=9F=E6=97=B6dbcc=20core=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contrib/shark/expected/test_dbcc.out | 9 +++++++++ contrib/shark/sql/test_dbcc.sql | 7 +++++++ src/gausskernel/optimizer/commands/sequence/sequence.cpp | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/contrib/shark/expected/test_dbcc.out b/contrib/shark/expected/test_dbcc.out index 28b0b8df8a..9555740f42 100644 --- a/contrib/shark/expected/test_dbcc.out +++ b/contrib/shark/expected/test_dbcc.out @@ -114,6 +114,15 @@ CONTEXT: referenced column: dbcc_check_ident_no_reseed DBCC CHECKIDENT ('employees_employeeid_seq', NORESEED); ERROR: relation "employees_employeeid_seq" does not exist CONTEXT: referenced column: dbcc_check_ident_no_reseed +drop table if exists Employees2; +NOTICE: table "employees2" does not exist, skipping +create table Employees2(id int, name VARCHAR(100)); +insert into Employees2 values (1, 'zhangsan'); +insert into Employees2 values (2, 'lisi'); +DBCC CHECKIDENT ('Employees2', NORESEED); +ERROR: cannot not found the serial column for relation "Employees2" +CONTEXT: referenced column: dbcc_check_ident_no_reseed +drop table if exists Employees2; -- plsql create or replace procedure test_procedure_test1(int) as diff --git a/contrib/shark/sql/test_dbcc.sql b/contrib/shark/sql/test_dbcc.sql index 9b3fcdb539..07c95d3f6c 100644 --- a/contrib/shark/sql/test_dbcc.sql +++ b/contrib/shark/sql/test_dbcc.sql @@ -63,6 +63,13 @@ DBCC CHECKIDENT ('Employees1', NORESEED); DBCC CHECKIDENT ('employees_employeeid_seq', NORESEED); +drop table if exists Employees2; +create table Employees2(id int, name VARCHAR(100)); +insert into Employees2 values (1, 'zhangsan'); +insert into Employees2 values (2, 'lisi'); +DBCC CHECKIDENT ('Employees2', NORESEED); +drop table if exists Employees2; + -- plsql create or replace procedure test_procedure_test1(int) as diff --git a/src/gausskernel/optimizer/commands/sequence/sequence.cpp b/src/gausskernel/optimizer/commands/sequence/sequence.cpp index cf3cd52cb5..d6554766a2 100644 --- a/src/gausskernel/optimizer/commands/sequence/sequence.cpp +++ b/src/gausskernel/optimizer/commands/sequence/sequence.cpp @@ -3179,7 +3179,7 @@ static inline void check_relation_valid(Relation rel, char* table_name) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_TABLE), errmsg("relation \"%s\" does not exist", table_name))); } - if (rel->rd_att->constr->num_defval < 1) { + if (rel->rd_att->constr == NULL || rel->rd_att->constr->num_defval < 1) { relation_close(rel, AccessShareLock); ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("cannot not found the serial column for relation \"%s\"", table_name))); -- Gitee