diff --git a/src/common/backend/catalog/pg_enum.cpp b/src/common/backend/catalog/pg_enum.cpp index a03f399b1470a60fa234c1db0111c58ceecb9585..660948eca4d4cd572ba3136b27e1a45841276c8a 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 f359cd9ee18f75f0beee9ad30a0122346603f33b..b1842f12b582184af8b4cefb2e0283281fa6c8da 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 44023245aed0ba1022543474e35847c3ac8d0586..9f7d01ab2282cdcc9664545ae5101dd4394a3fd6 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 436b295b9dd6070e8c50beef7a77fdf3c3542075..18825f0c2589be4e4f71c83710681b365db005df 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),