diff --git a/contrib/shark/expected/test_dbcc.out b/contrib/shark/expected/test_dbcc.out index 28b0b8df8a58f6e84ddb76c1b9dab5bcd239abb2..9555740f42d54e32eb42cf141f1d114f46bff702 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 9b3fcdb53951e88d85b32c1e5c414626c039834c..07c95d3f6ce2040d2ec7ec0e004d923cab5b77f6 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 cf3cd52cb540fbd7a9e0fe99572d36bfdefd6931..d6554766a2c26f1912b776d226dfa339bcc8c80e 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)));