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 */

Reply via email to