You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by zt...@apache.org on 2022/01/03 09:09:11 UTC
[hawq] 03/03: HAWQ-1826. fix gpfdist external table rename issue
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 <zh...@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 */