From 105e6ccb685aadbf1319521c5c6f750f85b5b5dd Mon Sep 17 00:00:00 2001 From: chenlinfeng3 <1377682907@qq.com> Date: Wed, 29 Jul 2020 10:27:41 +0800 Subject: [PATCH 1/3] bugfix: change kernel to support some third-party extensions --- src/gausskernel/process/tcop/utility.cpp | 36 ------------------------ 1 file changed, 36 deletions(-) diff --git a/src/gausskernel/process/tcop/utility.cpp b/src/gausskernel/process/tcop/utility.cpp index 9bff438869..ed3bbd01a2 100755 --- a/src/gausskernel/process/tcop/utility.cpp +++ b/src/gausskernel/process/tcop/utility.cpp @@ -3586,9 +3586,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi } break; case T_AlterDomainStmt: -#ifdef PGXC - ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("domain is not yet supported."))); -#endif /* PGXC */ { AlterDomainStmt* stmt = (AlterDomainStmt*)parse_tree; @@ -4240,10 +4237,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi } break; case T_RuleStmt: /* CREATE RULE */ -#ifdef PGXC - if (!IsInitdb && !u_sess->attr.attr_sql.enable_cluster_resize && !u_sess->exec_cxt.extension_is_valid) - ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("RULE is not yet supported."))); -#endif /* PGXC */ DefineRule((RuleStmt*)parse_tree, query_string); #ifdef PGXC if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) { @@ -4927,10 +4920,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi * ******************************** DOMAIN statements **** */ case T_CreateDomainStmt: -#ifdef PGXC - if (!IsInitdb && !u_sess->attr.attr_common.IsInplaceUpgrade) - ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("domain is not yet supported."))); -#endif /* PGXC */ DefineDomain((CreateDomainStmt*)parse_tree); #ifdef PGXC if (IS_PGXC_COORDINATOR) @@ -8531,9 +8520,6 @@ void CheckObjectInBlackList(ObjectType obj_type, const char* query_string) return; else break; - case OBJECT_AGGREGATE: - tag = "AGGREGATE"; - break; case OBJECT_OPERATOR: tag = "OPERATOR"; break; @@ -8596,28 +8582,6 @@ void CheckObjectInBlackList(ObjectType obj_type, const char* query_string) */ bool CheckExtensionInWhiteList(const char* extension_name, uint32 hash_value, bool hash_check) { - /* 2902411162 hash for fastcheck, the sql file is much shorter than published version. */ - uint32 postgisHashHistory[POSTGIS_VERSION_NUM] = {2902411162, 2959454932}; - - /* check for extension name */ - if (pg_strcasecmp(extension_name, "postgis") == 0) { - /* PostGIS is disabled under 300 deployment */ - if (is_feature_disabled(POSTGIS_DOCKING)) { - return false; - } - - if (hash_check && !isSecurityMode) { - /* check for postgis hashvalue */ - for (int i = 0; i < POSTGIS_VERSION_NUM; i++) { - if (hash_value == postgisHashHistory[i]) { - return true; - } - } - } else { - return true; - } - } - return true; } -- Gitee From 597536b18109d3b051f1bceacebeac61385277a7 Mon Sep 17 00:00:00 2001 From: chenlinfeng3 <1377682907@qq.com> Date: Wed, 29 Jul 2020 12:01:47 +0800 Subject: [PATCH 2/3] bugfix: allow use default values on foreign table --- src/gausskernel/optimizer/commands/tablecmds.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/gausskernel/optimizer/commands/tablecmds.cpp b/src/gausskernel/optimizer/commands/tablecmds.cpp index a285b4b089..445a433bd1 100644 --- a/src/gausskernel/optimizer/commands/tablecmds.cpp +++ b/src/gausskernel/optimizer/commands/tablecmds.cpp @@ -1803,13 +1803,6 @@ Oid DefineRelation(CreateStmt* stmt, char relkind, Oid ownerId) if (colDef->raw_default != NULL) { RawColumnDefault* rawEnt = NULL; - if (relkind == RELKIND_FOREIGN_TABLE) { - if (!(IsA(stmt, CreateForeignTableStmt) && - isMOTTableFromSrvName(((CreateForeignTableStmt*)stmt)->servername))) - ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("default values on foreign tables are not supported"))); - } - Assert(colDef->cooked_default == NULL); rawEnt = (RawColumnDefault*)palloc(sizeof(RawColumnDefault)); rawEnt->attnum = attnum; -- Gitee From eaa8a9f93a82b76021f8b282f021955b62017029 Mon Sep 17 00:00:00 2001 From: chenlinfeng3 <1377682907@qq.com> Date: Wed, 29 Jul 2020 14:19:10 +0800 Subject: [PATCH 3/3] bugfix:can not delete a database with external tables --- src/gausskernel/cbb/extension/foreign/foreign.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gausskernel/cbb/extension/foreign/foreign.cpp b/src/gausskernel/cbb/extension/foreign/foreign.cpp index cfa8fd69d1..79f16f618e 100644 --- a/src/gausskernel/cbb/extension/foreign/foreign.cpp +++ b/src/gausskernel/cbb/extension/foreign/foreign.cpp @@ -524,8 +524,7 @@ FdwRoutine* GetFdwRoutineByServerId(Oid serverid) /* Get foreign-data wrapper OID for the server. */ tp = SearchSysCache1(FOREIGNSERVEROID, ObjectIdGetDatum(serverid)); if (!HeapTupleIsValid(tp)) - ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("cache lookup failed for foreign server %u", serverid))); + return NULL; serverform = (Form_pg_foreign_server) GETSTRUCT(tp); fdwid = serverform->srvfdw; ReleaseSysCache(tp); -- Gitee