diff --git a/src/gausskernel/optimizer/plan/planner.cpp b/src/gausskernel/optimizer/plan/planner.cpp index 1a86b2d47..494a119cb 100755 --- a/src/gausskernel/optimizer/plan/planner.cpp +++ b/src/gausskernel/optimizer/plan/planner.cpp @@ -8439,6 +8439,15 @@ bool is_vector_scan(Plan* plan) static bool IsTypeUnSupportedByVectorEngine(Oid typeOid) { + /* we don't support the domain type. */ + if (typeOid >= FirstBootstrapObjectId) { + if (typeOid != getBaseType(typeOid)) { + ereport(DEBUG2, (errmodule(MOD_OPT_PLANNER), + errmsg("Vectorize plan failed due to has unsupport type: %u", typeOid))); + return true; + } + } + /* we don't support user defined type. */ if (typeOid >= FirstNormalObjectId) { ereport(DEBUG2, (errmodule(MOD_OPT_PLANNER), diff --git a/src/test/regress/expected/force_vector_engine.out b/src/test/regress/expected/force_vector_engine.out index 486f2983a..f3d027322 100644 --- a/src/test/regress/expected/force_vector_engine.out +++ b/src/test/regress/expected/force_vector_engine.out @@ -330,3 +330,15 @@ drop table force_vt_tb1; drop table force_vt_tb1_col; \c regression; drop database pg_length_cmpt_db; +-- Do not use vectorization engine +create table force_vector_sysdomain(a information_schema.cardinal_number, b int); +insert into force_vector_sysdomain values(10, 20); +set try_vector_engine_strategy='force'; +select a,b from force_vector_sysdomain; + a | b +----+---- + 10 | 20 +(1 row) + +drop table force_vector_sysdomain; +set try_vector_engine_strategy='off'; diff --git a/src/test/regress/sql/force_vector_engine.sql b/src/test/regress/sql/force_vector_engine.sql index 64786c256..295b6ffb0 100644 --- a/src/test/regress/sql/force_vector_engine.sql +++ b/src/test/regress/sql/force_vector_engine.sql @@ -112,3 +112,11 @@ drop table force_vt_tb1; drop table force_vt_tb1_col; \c regression; drop database pg_length_cmpt_db; + +-- Do not use vectorization engine +create table force_vector_sysdomain(a information_schema.cardinal_number, b int); +insert into force_vector_sysdomain values(10, 20); +set try_vector_engine_strategy='force'; +select a,b from force_vector_sysdomain; +drop table force_vector_sysdomain; +set try_vector_engine_strategy='off';