From 22ec6001916651f73c1f97ecf00b5d7b8f141095 Mon Sep 17 00:00:00 2001 From: lukeman Date: Mon, 5 Aug 2024 17:43:31 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=A4=84=E7=90=868.0=20core=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=91blob=E5=AD=97=E7=AC=A6=E5=BA=8F=E6=96=AD?= =?UTF-8?q?=E8=A8=80=E5=AF=BC=E8=87=B4core,=20=E6=B7=BB=E5=8A=A0IsBinaryTy?= =?UTF-8?q?pe=E7=9A=84hook=E5=87=BD=E6=95=B0=EF=BC=8C=E5=A4=84=E7=90=86tin?= =?UTF-8?q?yblob=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/backend/parser/parse_type.cpp | 5 ++++- src/include/knl/knl_session.h | 1 + src/include/parser/parse_type.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/common/backend/parser/parse_type.cpp b/src/common/backend/parser/parse_type.cpp index 34f329f18..f4c1f7e28 100644 --- a/src/common/backend/parser/parse_type.cpp +++ b/src/common/backend/parser/parse_type.cpp @@ -1773,6 +1773,9 @@ Oid LookupTypeInPackage(List* typeNames, const char* typeName, Oid pkgOid, Oid n bool IsBinaryType(Oid typid) { + if (u_sess->hook_cxt.isBinaryType != NULL) { + return ((isBinaryType)(u_sess->hook_cxt.isBinaryType))(typid); + } return ((typid) == BLOBOID || (typid) == BYTEAOID); } @@ -1807,4 +1810,4 @@ TypeTupStatus GetTypeTupStatus(Type typ) return (UNDEFINEDOID == HeapTupleGetOid(typ) ? UndefineTypeTup : NormalTypeTup); } return InvalidTypeTup; -} \ No newline at end of file +} diff --git a/src/include/knl/knl_session.h b/src/include/knl/knl_session.h index 607d2004c..e89df225e 100644 --- a/src/include/knl/knl_session.h +++ b/src/include/knl/knl_session.h @@ -2947,6 +2947,7 @@ typedef struct knl_u_hook_context { void *deparseQueryHook; void *checkSqlFnRetvalHook; void *typeTransfer; + void *isBinaryType; void *forTsdbHook; void *pluginPlannerHook; void *groupingplannerHook; diff --git a/src/include/parser/parse_type.h b/src/include/parser/parse_type.h index 83a21cea6..faabc0dfa 100644 --- a/src/include/parser/parse_type.h +++ b/src/include/parser/parse_type.h @@ -65,6 +65,7 @@ extern HeapTuple FindPkgVariableType(ParseState* pstate, const TypeName* typname TypeDependExtend* depend_extend = NULL); extern char* CastPackageTypeName(const char* typName, Oid pkgOid, bool isPackage, bool isPublic = true); extern bool IsBinaryType(Oid typid); +typedef bool (*isBinaryType)(Oid typid); #define ISCOMPLEX(typeid) (typeidTypeRelid(typeid) != InvalidOid) extern void check_type_supports_multi_charset(Oid typid, bool allow_array); extern char* ParseTypeName(const char* typName, Oid pkgOid);