This is an automated email from the ASF dual-hosted git repository. ztao1987 pushed a commit to branch ztao in repository https://gitbox.apache.org/repos/asf/hawq.git
commit 27ac97ce07c31f9bb3e42f0b2775ae6d3ba06f14 Author: ztao1987 <zhenglin.ta...@gmail.com> AuthorDate: Mon Jan 3 17:08:13 2022 +0800 HAWQ-1826. fix gpfdist external table rename issue --- src/backend/commands/tablecmds.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 60dc98b..fd93525 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -3814,7 +3814,39 @@ renamerel(Oid myrelid, const char *newrelname, RenameStmt *stmt) } } } - renameHdfsPath(myrelid, pNode, oldrelname, newrelname); + // Filter out table which fmtopts == "formatter 'orc' category 'internal'". + // Example: + // create table test (int a) format 'orc'; + cqContext *exPcqCtx = caql_beginscan( + NULL, + cql("SELECT * FROM pg_exttable " + " WHERE reloid = :1 ", + ObjectIdGetDatum(myrelid))); + HeapTuple exTuple = caql_getnext(exPcqCtx); + bool notSupport = 0; + if (exTuple) + { + bool isNull; + Relation pgExtTableRel = heap_open(ExtTableRelationId, RowExclusiveLock); + Datum fmtOptDatum = heap_getattr(exTuple, Anum_pg_exttable_fmtopts, + RelationGetDescr(pgExtTableRel), &isNull); + char *fmtOptString = + DatumGetCString(DirectFunctionCall1(textout, fmtOptDatum)); + char *fmtName = getExtTblFormatterTypeInFmtOptsStr(fmtOptString); + char *fmtCategory = getExtTblCategoryInFmtOptsStr(fmtOptString); + notSupport = + fmtName && fmtCategory && strstr(fmtCategory, "internal") && + strstr(fmtName, "orc"); + heap_close(pgExtTableRel, RowExclusiveLock); + } + caql_endscan(exPcqCtx); + if (notSupport) + { + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("rename is not supported."), + errOmitLocation(true))); + } } /* MPP-6929: metadata tracking */