From aa418d9192499c57490cc202fcb193928adf9ee8 Mon Sep 17 00:00:00 2001 From: zhubin79 <18784715772@163.com> Date: Thu, 27 Mar 2025 15:18:30 +0800 Subject: [PATCH] =?UTF-8?q?dolphin=20=E6=B6=88=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E9=87=8D=E5=A4=8D=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/backend/catalog/pg_enum.cpp | 8 +++++++- src/common/backend/utils/adt/orderedsetaggs.cpp | 1 - src/common/backend/utils/adt/quote.cpp | 6 +++++- src/gausskernel/optimizer/commands/typecmds.cpp | 14 ++++++++------ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/common/backend/catalog/pg_enum.cpp b/src/common/backend/catalog/pg_enum.cpp index a03f399b14..660948eca4 100644 --- a/src/common/backend/catalog/pg_enum.cpp +++ b/src/common/backend/catalog/pg_enum.cpp @@ -114,7 +114,13 @@ void EnumValuesCreate(Oid enumTypeOid, List* vals, Oid collation) checkEnumLableValue(lab); values[Anum_pg_enum_enumtypid - 1] = ObjectIdGetDatum(enumTypeOid); values[Anum_pg_enum_enumsortorder - 1] = Float4GetDatum(elemno + 1); - (void)namestrcpy(&enumlabel, lab); + if (DB_IS_CMPT(B_FORMAT)) { + /* trim the right space for set label */ + Datum trimtxt = DirectFunctionCall1(rtrim1, CStringGetTextDatum(lab)); + (void)namestrcpy(&enumlabel, TextDatumGetCString(trimtxt)); + } else { + (void)namestrcpy(&enumlabel, lab); + } values[Anum_pg_enum_enumlabel - 1] = NameGetDatum(&enumlabel); tup = heap_form_tuple(RelationGetDescr(pg_enum), values, nulls); diff --git a/src/common/backend/utils/adt/orderedsetaggs.cpp b/src/common/backend/utils/adt/orderedsetaggs.cpp index f359cd9ee1..b1842f12b5 100644 --- a/src/common/backend/utils/adt/orderedsetaggs.cpp +++ b/src/common/backend/utils/adt/orderedsetaggs.cpp @@ -96,7 +96,6 @@ static void tuplesort_state_init(OrderedSetAggState* osastate, MemoryContextSwitchTo(oldcontext); } - /* * Set up working state for an ordered-set aggregate */ diff --git a/src/common/backend/utils/adt/quote.cpp b/src/common/backend/utils/adt/quote.cpp index 44023245ae..9f7d01ab22 100644 --- a/src/common/backend/utils/adt/quote.cpp +++ b/src/common/backend/utils/adt/quote.cpp @@ -62,7 +62,11 @@ static size_t quote_literal_internal(char* dst, const char* src, size_t len) if (SQL_STR_DOUBLE(*src, true)) *dst++ = *src; charlen = pg_mblen(src); - + if (DB_IS_CMPT(B_FORMAT) && (size_t)charlen > len) { + ereport(ERROR, + (errmsg("Cannot convert string 0x%02x to %s", + (unsigned char)*src, GetDatabaseEncodingName()))); + } for (int i = 0; i < charlen; i++) *dst++ = *src++; diff --git a/src/gausskernel/optimizer/commands/typecmds.cpp b/src/gausskernel/optimizer/commands/typecmds.cpp index 436b295b9d..18825f0c25 100644 --- a/src/gausskernel/optimizer/commands/typecmds.cpp +++ b/src/gausskernel/optimizer/commands/typecmds.cpp @@ -2714,7 +2714,8 @@ void DefineObjectTypeMethodSpec(CompositeTypeStmt* stmt, Oid typoid, char** mapO /* IF TYPE HAVE SCHEMA, constructor function SHOULD ALSO HAVE IT */ if ((list_length(submethod->funcname) != 1) || strcmp(funcname, stmt->typevar->relname) != 0) ereport(ERROR, (errmodule(MOD_COMMAND), errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), - errmsg("Constructor function Name %s Fault, construct function name must be same with type", funcname))); + errmsg("Constructor function Name %s Fault, " + "construct function name must be same with type", funcname))); submethod->returnType = makeTypeNameFromOid(typoid, -1); if (firstparam == NULL || ((firstparam != NULL) @@ -3556,7 +3557,7 @@ static bool isSameTypeMethodArgList(List* argList1, List* argList2, List* funcna } } - for (int i = 0, j = 0; i < length1 || j< length2; i++, j++) { + for (int i = 0, j = 0; i < length1 || j < length2; i++, j++) { if (!enableOutparamOverride) { fp1 = arr1[inLoc1]; fp2 = arr2[inLoc2]; @@ -3609,7 +3610,7 @@ static bool isSameTypeMethodArgList(List* argList1, List* argList2, List* funcna } /* If table of type should check its base type */ - if (isTableOf1 == isTableOf2 && isTableOf1 == true) { + if (isTableOf1 == isTableOf2 && isTableOf1) { if (baseOid1 != baseOid2 || fp1->mode != fp2->mode) { pfree_ext(arr1); pfree_ext(arr2); @@ -4924,9 +4925,9 @@ ObjectAddress AlterTypeOwner(List* names, Oid newOwnerId, ObjectType objecttype, * up the pg_class entry properly. That will call back to * AlterTypeOwnerInternal to take care of the pg_type entry(s). */ - if ((typTup->typtype == TYPTYPE_COMPOSITE) || (typTup->typtype == TYPTYPE_ABSTRACT_OBJECT)) + if ((typTup->typtype == TYPTYPE_COMPOSITE) || (typTup->typtype == TYPTYPE_ABSTRACT_OBJECT)) { ATExecChangeOwner(typTup->typrelid, newOwnerId, true, AccessExclusiveLock); - else { + } else { /* * We can just apply the modification directly. * @@ -5282,7 +5283,8 @@ Oid AlterTypeNamespaceInternal( * Update dependency on schema, if any --- a table rowtype has not got * one, and neither does an implicit array. */ - if ((isCompositeType || (typform->typtype != TYPTYPE_COMPOSITE) || (typform->typtype == TYPTYPE_ABSTRACT_OBJECT)) && !isImplicitArray) + if ((isCompositeType || (typform->typtype != TYPTYPE_COMPOSITE) || (typform->typtype == TYPTYPE_ABSTRACT_OBJECT)) + && !isImplicitArray) if (changeDependencyFor(TypeRelationId, typeOid, NamespaceRelationId, oldNspOid, nspOid) != 1) ereport(ERROR, (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST), -- Gitee