本文将为您介绍Hologres各版本相关缺陷的修复记录,包括问题描述、影响程度等。您可以通过报错或问题描述,检查您当前的业务中是否产生了相关问题,提前进行问题规避。建议您搜索(钉钉群号:32314975)加入实时数仓Hologres交流群联系对应技术支持协助您将产品升级到最新版本。

背景信息

  • 缺陷及修复说明
    • 缺陷内容向下穿透:当前版本存在的缺陷,在之前的版本中均存在。

      例如,1.3版本中存在某缺陷,在1.1或0.10等版本中大多数存在,少数不存在场景有明确标注。

    • 缺陷修复向上包含:当前版本修复后的缺陷,在之后的版本中均已修复。

      例如,1.1版本中已修复的某缺陷,在1.1或1.3等版本中均已修复。

  • 缺陷等级说明
    • P0:建议立即升级,一旦触发会影响线上的使用(如查询正确性、写入成功率等操作)。
    • P1:推荐升级,提前规避相关问题。
    • P2:选择性升级,偶尔发生的问题,具备应该改写方法,或重启即可修复。

2023年2月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2rb_build函数带表名时报错:Not support calling pg udf for type (23, LIST),示例SQL如下:
create table rb_build_test(a int[]);
insert into rb_build_test values ('{1,2,3}');
select rb_build(a) from rb_build_test
--报错信息
HGERR_code XX000 HGERR_msge internal error: Not support calling pg udf for type (23, LIST)
直接执行rb_build函数不带表名则运行成功,示例SQL如下:
select rb_build('{1,2,3}')
--返回结果
rb_build
\x3a300000010000000000020010000000010002000300
                                
执行rb_build函数带有表名时,会先计算然后落表,该函数执行是在HQE中,而当前版本HQE暂时不支持数组和PQE数组的双向转换,所以执行失败。

出现版本:

1.3.37及以下版本。

修复版本:

1.3.38及以上版本。

建议升级到最新版本。
P2SQL中包含limit x offset y语句,其中y>x,运行SQL后返回结果数错误。示例SQL如下,本应该返回2行结果,实际返回0行。
create table test (id int, msg text);
insert into test values (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd');
select * from (select * from test order by id limit 2) x limit 4 offset 3;
在生成执行计划时,当offset值超过limit值的时候,仍然将limit下推给了算子,但offset没有下推,导致查询结果不正确。

出现版本:

1.3.20至1.3.36版本。

修复版本:

1.3.37及以上版本。

  • 修改SQL,将SQL中 offset的值改为小于limit的值。
  • 建议升级到最新版本。
P2执行ANALYZE操作时报错:ERROR: store statistic results for table `public.table_name` failed: basic_string::_M_createANALYZE在解析表的字段时未处理正确,导致报错。

出现版本:

1.3.36版本。

修复版本:

1.3.37及以上版本。

建议升级到最新版本。
P2指定schema(非public schema)时执行create table as命令,报错找不到表,示例SQL如下:
create schema test_schema;
set search_path to test_schema;
create table test_src (a int);
insert into test_src values (1);
create table as test_src_1 select * from test_src
--报错信息
error:relation "xxx" does not exsits;
使用set search_path to 命令指定特定Schema后,create table as语法中表名称未添加Schema前缀的情况下,系统还是会默认从public Schema下搜索源表、插入数据,但public Schema下没有此表,导致报错。

出现版本:

1.3.20至1.3.36版本。

修复版本:

1.3.37及以上版本。

  • create table as语法中为表指定schema,示例:
    create table as test_schema.test_src_1 select * from test_src;
  • 建议升级到新版本。
P2设置bigserial类型字段的起始值超过int4范围(-2147483648 ~ 2147483647),查询表数据时起始值不正确,示例SQL如下:
create table if not exists test_tb(
  id bigserial not null,
  f1 text,
  primary key (id,f1)
);
--在insert语句中,给f1字段插入数据。
insert into test_tb(f1) values('1'),('2'),('3');
-- 修改自增起始值100000000000
alter sequence public.test_tb_id_seq restart with 100000000000
-- 插入两条数据测试
insert into test_tb(f1) values('6'),('7');
select * from test_tb order by id asc;

--返回结果
id| f1
------------+----
1 | 1
2 | 2
3 | 3
1128270048 | 6
1128270049 | 7
当前版本对bigserial类型起始值支持的数据范围是int4的范围(-2147483648 ~ 2147483647,当设置的起始值超过支持的范围后,会出现精度溢出,从而导致结果不正确。

出现版本:

1.3.20至1.3.35版本。

修复版本:

1.3.36及以上版本。

建议升级到新版本。
P2Hologres实例从V1.1版本升级到V1.3版本后,查询、写入分区表Array类型时报错:internal error: Datasets has different schema Schema,且SQL命中的分区有升级前的分区和升级后创建的分区。分区表父表的Array类型的字段未指定not null属性,当前版本处理Array的nullable属性处理有误,升级前默认为nullable,升级后新创建子表默认为not null,当查询同时命中升级前后多个分区时,由于分区子表元数据不一致,导致执行报错。

出现版本:

1.3.20至1.3.35版本。

修复版本:

1.3.36及以上版本。

  • 对分区父表执行一次修改表属性操作,示例:
    call set_table_property('table_name', 'time_to_live_in_seconds', 'xx');
  • 建议升级到新版本。

2023年1月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2分区表场景下,开启JSONB列存,查询分区父表时速度慢,但查询子表速度很快。示例SQL如下:
CREATE TABLE public.hologres_parent(a text, b jsonb) PARTITION BY LIST(a);
CREATE TABLE public.hologres_child1 PARTITION OF public.hologres_parent FOR VALUES IN('v1');
select b->>'xxx' from hologres_parent;
开启JSONB列存后,查询分区父表,优化器无法将查询下推到分区子表,导致查询出整列JSONB,从而性能变差。

出现版本:

1.3.20至1.3.34版本。

修复版本:

1.3.35及以上版本。

  • 直接查询分区子表。
  • 建议升级到最新版本。
P2使用JSONB列存时,带LIMIT过滤,列存不生效,查询速度慢。
create table jsonb_test(inputvalues JSONB );
select inputvalues ->> 'price' pos_id from jsonb_test where inputvalues ->> 'price' = 'aaa' limit 100;
在有LIMIT的情况下,执行计划中列存下推失败,导致计算时会查询出整列JSONB,从而出现性能退化。

出现版本:

1.3.20至1.3.34版本。

修复版本:

1.3.35及以上版本。

  • 开启JSONB列存后不加LIMIT
  • 建议升级到最新版本。
P0在开启MC外表直读场景下,实例因为某些原因重启(如扩容计算节点、OOM等)造成实例服务无法启动。MC直读时在因为系统实现缺陷,存在一定概率造成元数据与数据状态不一致,造成存储引擎无法正常加载数据,造成启动失败。后续修正问题时,有可能存在丢失删除状态的问题。

出现版本:

1.3.14至1.3.33版本。

修复版本:

1.3.34及以上版本。

  • 建议低版本不要开启MC直读功能。
  • 建议升级到新版本。
P2查列存表Binlog,且设置了Segment Key,WHERE过滤条件为Segment Key,查询时,过滤条件无效。示例SQL如下:
BEGIN;
CREATE TABLE test (
  id int PRIMARY KEY,
  title text NOT NULL,
  c_time timestamptz
);
CALL set_table_property ('test', 'orientation', 'column');
call set_table_property('test', 'event_time_column', 'c_time');
call set_table_property('test', 'binlog.level', 'replica');
call set_table_property('test', 'binlog.ttl', '86400');
COMMIT;
select hg_binlog_lsn,hg_binlog_event_type,hg_binlog_timestamp_us,* from test where c_time = 1;

示例中,查询结果中c_time不等于1,为其他值。

列存表设置了Binlog和Segment Key,在WHERE条件中使用Segment Key过滤,生成了错误的执行计划,导致过滤无效。

出现版本:

1.3.33及以下版本。

修复版本:

1.3.34及以上版本。

建议升级到新版本。
P2使用#>操作符解析JSONB时报错:Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8.示例建表SQL如下:
create table t1 (f1 json);
insert into t1 values ('{"a":"Hello\u00F7"}');
select f1 #> ARRAY['a'] from t1;
#>操作符实际上是通过json_extract_path函数去解析,解析JSONB类型时,默认使用Postgres的ASSII码,导致报错。

出现版本:

1.3.33及以下版本。

修复版本:

1.3.34及以上版本。

建议升级到新版本。

2022年12月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2创建一个新的数据库,权限模型设置为SPM后,第一次使用JDBC消费Hologres Binlog出现报错:ERROR: internal error: create table hologres.hg_replication_progress failed在JDBC消费Hologres Binlog时为了让所有用户看到hg_replication_progress,系统会发出GRANT select ON TABLE hologres.hg_replication_progress TO PUBLIC;的授权命令,但是SPM禁用GRANT命令,导致创建失败,从而消费Binlog报错。

出现版本:

1.3.20至1.3.32版本。

修复版本:

1.3.33及以上版本。

  • 先切换至专家权限模型授权再使用SPM模型消费Binlog或者直接使用专家权限模型消费Binlog。
  • 建议升级到新版本。
P1Hologres实例升级到V1.3.30版本后,内存使用率不明原因上涨,业务QPS、数据量等均没有变化。在Hologres中默认会有Result Cache,在Result Cache插入失败时资源没有及时析构,从而出现内存使用率上涨。

出现版本:

1.3.30至1.3.31版本。

修复版本:

1.3.32及以上版本。

建议升级到新版本。
P2jsonb_object_filed嵌套jsonb_array_element时报错:internal error: Only jsonb_object_feld and jsonb_object_field_text supported,示例SQL如下。
create table t1(f1 jsonb);
insert into t1 values ('[{"a":1},{"b":2}]');
select  f1->0->'a' from t1;
函数嵌套逻辑错误,导致值不匹配。

出现版本:

1.3.20至1.3.29版本。

修复版本:

1.3.30及以上版本。

建议升级到新版本。
P2查询只读从实例中的表时出现主键重复,查询主实例中相同的表则没有主键重复。数据刚导入时就执行删除,且只读从实例刚好因为升级、扩容等原因Failover,导致从实例中重复的主键数据没有及时清理掉,从而出现从实例主键数据重复。

出现版本:

1.3.27至1.3.28版本。

修复版本:

1.3.29及以上版本。

  • 使用主实例提供查询。
  • 建议升级到新版本。

2022年11月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2建表时,nullable的字段设置为Clustering Key或Segment Key ,查询数据时有偶发结果不一致的现象。含有nullable Clustering Key或Segment Key的表,查询的时候,Result Cache中的结果缓存错误,导致查询结果不一致。

出现版本:

1.1.30至1.3.27版本。

修复版本:

1.3.28及以上版本。

  • 重新建表并指定设置Clustering Key或Segment Key的字段不能为空。
  • 建议升级到新版本。
P2使用ST_Collect(col)函数时报错:ERPC_CONNECTION _COLSEDPostGIS函数兼容PostgreSQL,Hologres中使用原生PostgreSQL的node tag值进行判断,判断错误导致报错。

出现版本:

1.3.27及以下版本。

修复版本:

1.3.28及以上版本。

建议升级到新版本。
P2使用string_agg(text)函数出现报错:An I/O error occurred while sending to the backend string_agg函数在Hologres中是走PQE,当string_agg(text)没有指定分隔符时,PQE处理该函数出现空指针,导致查询报错。

出现版本:

1.3.20至1.3.27版本。

修复版本:

1.3.28及以上版本。

  • 修改SQL,为string_agg(text,',')显式指定分隔符。
  • 建议升级到新版本。
P2读取MaxCompute外部表数据时,使用WITH语句,查询结果与不带WITH语句的结果不一致。在读取CFile、RANGE TABLE等格式的MaxCompute外部表时,同时命令语句中含有WITH子句且WITH子句输出的列顺序与表中列顺序不一致,Hologres外部表接口输出的结果顺序错误,导致查询结果不一致。

出现版本:

1.3.24至1.3.26版本。

修复版本:

1.3.27及以上版本。

  • 不使用WITH语句进行查询。
  • 建议升级到新版本。
P2查询MaxCompute外部表ARRAY类型的字段报错:Array length did not match record batch length访问MaxCompute ORC格式的表时,Hologres外部表对于ARRAY类型的字段接口长度处理不一致,导致ARRAY数据长度超过限制,出现报错。

出现版本:

1.3.20至1.3.26版本。

修复版本:

1.3.27及以上版本。

建议升级到新版本。

2022年10月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2将Distribution Key设置为空字符串时查询报错:Failed to get bh reader: internal error CONTEXT。示例DDL如下:
call set_table_property('<table_name>', 'distribution_key', ' ');
Distribution Key设置为空字符串时,无法正确路由到数据所在的Shard,导致查询报错。

出现版本:

1.3.24及以下版本。

修复版本:

1.3.26及以上版本。

  • 重新建表,并设置合理的Distribution Key。
  • 建议升级到新版本。
    说明 升级后仍然不支持Distribution Key设置为空,建表时会报错。
P2查询MaxCompute外部表时报错:column with id 0 has type date64[ms] but ReadColumn returns array Array(type=timestamp[ms, tz=UTC]Hologres读取MaxCompute外部表时,DATETIME类型转换错误,导致查询报错。

出现版本:

1.3.20至1.3.24版本。

修复版本:

1.3.25及以上版本。

建议升级到新版本。
P2Hologres实例升级 V1.3.20版本后,查询带有数组类型字段的MaxCompute外部表时报错:internal error: IOError: Invalid flatbuffers message读取MaxCompute外部表时,因读取接口版本较低,无法识别数组类型,导致查询报错。

出现版本:

1.3.20至1.3.24版本。

修复版本:

1.3.25及以上版本。

  • 暂时避免查询数组类型的字段。
  • 建议升级到新版本。
P2PostgreSQL系统表导入至Hologres表,Hologres表结果随机变化,不稳定。示例如下:
-- 查询结果 22505
SELECT
count(1)
FROM
pg_class c inner join pg_attribute a on c.oid = a.attrelid
-- 创建内部表
CREATE TABLE public. tables11 (
schemaname name NULL
);
truncate public. tables11
-- 插入数据随机变换
insert into public.tables11
SELECT
'tmp'
FROM
pg_class c inner join pg_attribute a on c.oid = a.attrelid

select count(1) from public.tables11
PostgreSQL系统表为PostgreSQL原生系统表,Hologres是分布式系统,每个FE节点因为不断执行DDL导致节点的版本不一致。查PostgreSQL系统表时,从不同的节点获取数据,导致结果不稳定。

出现版本:

1.3.22至1.3.24版本。

修复版本:

1.3.25及以上版本。

建议升级到新版本。
P2Hologres实例升级 V1.3.20及以上版本后,case when语句中含有DECIAML类型字段的查询报错:internal error: column with id 0 has type decimal(38, 3) but ReadColumn returns array Array(type=decimal(38, 10) length=3 null_count=0case when语句中,DECIAML未被显示转换精度,优化器(QO)在推导执行计划时,精度推导错误,从而导致执行报错。

出现版本:

1.3.20至1.3.24版本。

修复版本:

1.3.24及以上版本。

建议升级到新版本。
P2PostgreSQL系统视图导入到业务创建的Hologres表中,Hologres表中没有数据,示例SQL如下。
CREATE table holo_pg_tables (
schemaname text,
tablename text,
tableowner text,
tablespace text,
hasindexes text,
hasrules text,
hastriggers text,
rowsecurity text
);
insert into holo_pg_tables select * from pg_catalog.pg_tables;
Postgresql系统视图pg_catalog.pg_tables中有个过滤条件:c.relkind = ANY (ARRAY['r'::"char", 'p'::"char"]),此类型在转执行计划的时候被错误转成某个无意义的数值,导致没有数据命中。

出现版本:

1.3.22至1.3.24版本。

修复版本:

1.3.25及以上版本。

建议升级到新版本。
P2使用Proxima向量查询时,为表设置了两个Proxima向量索引,查询时性能较设置一个索引时更差,设置索引的DDL示例如下。
call set_table_property
('t1', 'proxima_vectors', '
{"f2":{"algorithm":"Graph","distance_method":"InnerProduct"}},
{"f3":{"algorithm":"Graph","distance_method":"InnerProduct"}}
');
设置两个索引时,DDL中{}书写错误,应该一个索引对应一个{}。FE侧未正确拦截该格式的DDL,导致第一个索引构建成功,第二个索引被丢弃,从而导致查询性能下降,正确的书写格式如下:
call set_table_property
('t1', 'proxima_vectors', '{
"f2":{"algorithm":"Graph","distance_method":"InnerProduct"},
"f3":{"algorithm":"Graph","distance_method":"InnerProduct"}
}');

出现版本:

1.3.24及以下版本。

修复版本:

1.3.25及以上版本。

  • 重新建表并将设置索引DDL改为正确的书写格式。
  • 建议升级到新版本。
    说明 升级最新版本后,仍然不支持该错误的书写,但是建表时会报错。
P2非Superuser用户执行select hg_dump_script('xxxx')命令时报错:ERROR: permission denied for table pg_subscriptionhg_dump_script函数间接调用pg_subscription进行逻辑复制,pg_subscription鉴权失败导致出现报错。

出现版本:

1.3.20至1.3.24版本。

修复版本:

1.3.25及以上版本。

  • 使用Superuser账号进行授权,命令示例如下。
    grant select on 
    pg_subscription to "xx";
  • 建议升级到新版本。
P2使用RAM用户通过Flink消费Hologres Binlog或者通过DataHub写入数据至Hologres时,报错:NoSuchProject接入节点(Frontend)对RAM用户解析错误,导致报错。

出现版本:

1.3.23及以下版本。

修复版本:

1.3.24及以上版本。

建议升级到新版本。
P2Hologres实例从 V1.1版本升级至 V1.3版本后,MaxCompute外部表查询耗时增加,通过查看执行计划(explain sql)发现,表统计信息的row_count1000,即统计信息未自动更新。Hologres实例升级到 V1.3版本后,Auto Analyze未检测到外部表的Schema,导致未能及时获取到外部表的统计信息。

出现版本:

1.3.14至1.3.23版本。

修复版本:

1.3.24及以上版本。

  • 手动执行analyze <tablename>命令。
  • 建议升级到新版本。
P2查询语句中的union all含有DECIMAL类型字段时报错:Schema fields[4] has type decimal(14, 4) but decimal(11, 2) is expected
示例如下:
create table t1(n decimal(6,4));
create table t2(n decimal(5,3));
select * from (select 1 as type, n from t1 union all select 2 as type, n from t2)t where t.type=2;
使用union all在生成执行计划时,对DECIMAL类型的精度进行了额外裁剪,导致结果精度错误。

出现版本:

1.3.20至1.3.23版本。

修复版本:

1.3.24及以上版本。

建议升级到新版本。

2022年09月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2JDBC连接串指定了Schema,但是Schema没有生效,仍然为public Schema。连接示例如下:
String jdbcUrl = "jdbc:postgresql://hostname: port /dbname?currentSchema=demo;
FE节点对于连接串中?后的字符串未处理,导致currentSchema设置未生效。

出现版本:

1.3.14至1.3.22版本。

修复版本:

1.3.23及以上版本。

建议升级到新版本。
P1创建了物化视图,SQL查询命中物化视图自动改写,导致实例出现短暂重启。命中物化视图自动改写的SQL,优化器在生成执行计划时获取表的Meta数据失败,导致实例异常。

出现版本:

1.3.14至1.3.22版本。

修复版本:

1.3.23及以上版本。

建议升级到新版本。
P2在一个实例内为不同用户设置不同的IP白名单策略,这些用户在白名单的IP内无法访问Hologres实例,报错:reject ip xxx为用户设置IP白名单后,网关拦截了用户,导致实际上用户并没有被设置在白名单内。

出现版本:

1.3.21及以下版本。

修复版本:

1.3.22及以上版本。

  • 不设置IP白名单,或者将白名单的用户策略改为ALL(即将数据库限制参数设置为ALL)。
  • 建议升级到新版本。
P2Fixed Plan的点查场景下查询 Deciaml类型数据报错:get result failed:scale should betewwn xxxx。示例如下:
begin;
create table t (k1 int, k2 decimal(18, 2), primary key(k1, k2));
call set_table_property ('t', 'distribution_key', 'k1');
end;
insert into t (1, 12.11);
set hg_experimental_enable_fixed_dispatcher_for_scan = on;
select * from t where k1=1 and k2>10.1 and k2 < 12.3;
Fixed Plan场景下Deciaml类型精度推导错误,导致结果报错。

出现版本:

1.3.20及以下版本。

修复版本:

1.3.21及以上版本。

建议升级到新版本。
P2开启IP白名单之后,Flink消费Hologres Binlog报错:reject ip 1.xxxFlink消费Hologres binlog使用的接口为Hologres实时数据导入接口(非JDBC模式),该接口暂不支持开启IP白名单功能。

出现版本:

1.3.20及以下版本。

修复版本:

1.3.21及以上版本。

  • 不设置IP白名单。
  • 建议升级到新版本。
P2将数组类型显式转换成String类型时,报错:ERROR: Cast from LIST to STRING is not supported.。示例如下:
create table aaa1(
a text[],
b int[]
);
insert into aaa1 values (ARRAY['1','aaa'], ARRAY[1,2,3]);
d=# select a::text, b::text from aaa1;
当前Hologres暂不支持将数组类型显式转换成String类型。

出现版本:

1.3.20及以下版本。

修复版本:

1.3.21及以上版本。

建议升级到新版本。

2022年08月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2使用JDBC Prepare Statement模式执行SQL查询时报错:cannot push query id when transaction is not start在JDBC Prepare Statement模式下,执行SQL实际上还没有开始事务,导致无法生成Query ID,从而报错。

出现版本:

1.1.80至1.1.86版本。

修复版本:

1.3.20及以上版本。

  • JDBC连接串修改为Simple模式:jdbc:postgresql://<host>:<port>/<dbname>?preferQueryMode=simple
  • 建议升级到新版本。
P2修改TTL时,设置的TTL值中间带了逗号(,):CALL set_table_property('wdt_qyb.wdt_qyb_trade', 'time_to_live_in_seconds', '315,360,000');导致数据很快被删除。带逗号的TTL值315,360,000属于非法数值,在解析SQL时会默认将逗号后的值去掉,导致TTL被设置成了315s,数据因为过期被清理。

出现版本:

1.1.85及以下版本。

修复版本:

1.3.20及以上版本。

  • 设置TTL时使用INT类型且不使用逗号。
  • 建议升级到新版本。
    说明 升级后,带逗号的非法TTL值在建表、修改TTL时,将会报错。
P2行存表Clustering Key和PK设置不一致时,查询报错:internal error: Cannot build column col1
示例如下:
CREATE TABLE test(
col1 text,
col2 text,
col3 text,
PRIMARY KEY (col1, col2)
); 
CALL set_table_property('public.test', 'distribution_key', 'col1'); 
CALL set_table_property('public.test', 'clustering_key', 'col1:asc');
SELECT * FROM public.test;
当行存表Clustering Key和PK设置不一致时,存储引擎会错误的生成相同的Record,导致查询报错。

出现版本:

1.1.84及以下版本。

修复版本:

1.3.20及以上版本。

  • 行存表设置相同的Clustering Key和PK。
  • 建议升级到新版本。
P2非Superuser账号通过JDBC消费Hologres Binlog时,执行call hg_create_logical_replication_slot('hg_replication_slot_1', 'hgoutput', 'hg_publication_test_1');命令时报错:permission denied for table hg_replication_slot_propretitiesJDBC消费Hologres Binlog时需要使用Superuser账号,否则会没有权限。

出现版本:

1.1.83及以下版本。

修复版本:

1.3.20及以上版本。

P2查询慢Query日志时缺少日志,但是监控信息上却显示延迟和QPS。同一事务(Transaction)中不同Query有相同Query ID,元仓收集Query去重后只保留了一条Query,导致其他Query丢失。

出现版本:

1.1.80及以下版本。

修复版本:

1.3.20及以上版本。

建议升级到新版本。
P2消费Hologres Binlog时报错:com.alibaba.hologres.org.postgresql.util.PSQLException: ERROR: relation "hologres.hg_replication_slot_properties" does not exist实例因某个原因有过FE节点重启,节点恢复后没有将Hologres Binlog的Extension恢复,导致消费失败。

出现版本:

1.3以下版本。

修复版本:

1.3.20及以上版本。

建议升级到新版本。

2022年07月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2热升级之后查询表报错:File(fn: xxx) real size != size in meta: 0 != yyyy实例进行热升级,热升级过程中表有离线BulkLoad写入,离线写入时数据会进行Compaction,导致元数据存在兼容性问题从而出现报错。

出现版本:

1.1.80及以下版本。

修复版本:

1.1.81及以上版本。

  • 实例热升级时暂停表的离线写入或者使用普通冷升级。
  • 建议升级到新版本。
P2同时回写MaxCompute同一表的不同分区时报错:ERROR:commit uploder failedErrorMessage=Operation failed due to concurrent upload/insert operationson the same table不同的MaxCompute分区属于同一个表,在回写时,回写接口执行commit upload session时会共享同一个表锁,导致锁冲突报错。

出现版本:

1.1.78及以下版本。

修复版本:

1.1.79及以上版本。

建议升级到新版本。

2022年06月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2Analyze OSS外部表时,出现OOM(Out Of Memory)。在对OSS外部表执行Analyze时,OSS行数获取接口会默认采样的行数较大(超过3万行),从而出现OOM。

出现版本:

1.1.76及以下版本。

修复版本:

1.1.77及以上版本。

建议升级到新版本。
P2含有in查询的SQL,当in中常量类型和列的实际类型不一致时,报错:internal error: Invalid filter value type int32 for column type int16
示例SQL如下。
create table test(pid smallint);
insert into test values (1);
select pid from test where pid not in (4, 5);
in算子指定的常量数据类型和原列类型不同时,优化器(QO)没有对常量进行cast类型转换,导致在执行器(QE)端报错。

出现版本:

1.1.73及以下版本。

修复版本:

1.1.74及以上版本。

  • in中的常量类型和列的类型保持一致。
  • 建议升级到新版本。
P2创建OSS外部表时,只选择部分字段创建外部表,创建时报错:Open ORC file failed for schema mismatch选择部分OSS字段创建外部表时,引擎对部分外部表的支持有限制,只能选择全部字段。

出现版本:

1.1.73及以下版本。

修复版本:

1.1.74及以上版本。

  • 选择全部字段创建外部表。
  • 建议升级到新版本。
P2删除某一段区间的数据之后(如删除某个分区),立即对同一张表执行insert命令,写入的速度变慢。当删除了一个区间或者一段连续的值之后,此时Compation还未全部完成,执行insert命令时,会先去查询该时间段是否有相同的记录,直到遇到第一条没被删除的记录才能停下来,如果查询的Key附近有大量连续删除的记录,会消耗很多时间在遍历这些记录上,导致insert命令写入速度慢。

出现版本:

1.1.70及以下版本。

修复版本:

1.1.71及以上版本。

建议升级到新版本。

2022年05月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2查MaxCompute表报错:Timestamp overflow detected while converting timestampfrom orc VectorBatch to arrow在MaxCompute表中有TIMESTAMP类型,使用Tunnel写入后TIMESTAMP精度会变成纳秒,目前Hologres暂不支持精度为纳秒的TIMESTAMP,导致报错。

出现版本:

1.1.69及以下版本。

修复版本:

1.1.70及以上版本。

  • 修改MaxCompute表的TIMESTAMP类型为DATATIME类型。
  • 建议升级到新版本。
P2查询OSS Parquet数据时,通过count语句每次查出的结果不一致,而OSS数据没发生过变化。Hologres读OSS Parquet文件时,接口版本较老,导致读取非Null数据中会随机出现Null值,从而查询结果错误。

出现版本:

1.1.67及以下版本。

修复版本:

1.1.68及以上版本。

建议升级到新版本。
P2在Hologres中使用SQL方式将数据回写MaxCompute时报错:Blocks not match, server:xx client yy在回写MaxCompute时,超时时间默认为300s,导致产生了空的Block,从而出现报错。

出现版本:

1.1.64及以下版本。

修复版本:

1.1.65及以上版本。

  • 通过执行如下命令修改超时时间。
    alter server odps_server options (add socket_timeout '600');
    修改超时时间为600s,不容易产生空Block。
  • 建议升级到新版本。
P2Hologres V1.1版本在对MaxCompute外部表增加多列时报错:not support alter table with multi commands。示例SQL如下。
ALTER FOREIGN TABLE bank 
ADD COLUMN cons_conf_idx float8, 
ADD COLUMN euribor3m float8;
Hologres V1.1版本增加了对外部表add column状态的检查,当增加多列时,状态检查错误,导致增加列失败。

出现版本:

1.1.1至1.1.58版本。

修复版本:

1.1.59及以上版本。

  • 一次只新增一个列或者使用IMPORT FOREIGN SCHEMA语法刷新外部表。
  • 建议升级到新版本。
P1使用to_date函数带where过滤条件查询时报错:invalid value \"\" for \"YYYY\" HGERR_detl Field requires 4 characters, but only 0 could be parsed。示例查询SQL如下。
select *  from public.test 
where to_date(content, 'YYYYMMDD' ) 
BETWEEN  '2021-10-22' AND '2021-10-23' limit 10;
使用to_date函数带where过滤条件时,where过滤的数据被识别为了非法数据进行转换,导致报错。

出现版本:

1.1.58及以下版本。

修复版本:

1.1.59及以上版本。

建议升级到新版本。
P2并发读取MaxCompute加密的表时,出现报错:failed to load row group data from file pangu在并发读取MaxCompute加密表时,Reader并发解析加密对象, 导致解密错误。

出现版本:

1.1.57及以下版本。

修复版本:

1.1.58及以上版本。

建议升级到新版本。
P2对NUMERIC或者DECIMAL类型的字段执行求余(%)计算,且下推至HQE中执行,导致计算结果不正确。HQE不支持NUMERIC和DECIMAL类型的求余,但未做类型校验,导致结果出错。

出现版本:

1.1.55及以下版本。

修复版本:

1.1.56及以上版本。

  • 不对NUMERIC和DECIMAL类型的字段执行求余计算。
  • 建议升级到新版本。
    说明 升级后仍然不支持对NUMERIC和DECIMAL类型的字段执行求余计算,会直接报错。

2022年04月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2通过JDBC订阅Hologres Binlog,启动JDBC消费Binlog作业pgreplicationstream.start()在数据库端同时执行drop table xx;删除对应表,导致实例出现短暂重启。订阅Binlog时删除表,会导致订阅时表不存在,但是订阅Binlog需要获取表的table_properties, 导致空指针,出现实例重启现象。

出现版本:

1.1.54及以下版本。

修复版本:

1.1.55及以上版本。

  • 订阅Hologres Binlog时不删除表。
  • 建议升级到新版本。
    说明 升级Hologres实例后若是订阅Binlog时删除表,会报表不存在。
P2分区子表执行detach父表之后,再attach至同一个父表上,无法attach通过CREATE TABLE <table_name> PARTITION OF <parent_table>命令创建的分区子表,不会继承父表的Table Group属性,当分区子表detach后再进行attach时,校验出子表与父表的Table Group属性不一致,导致无法进行attach

出现版本:

1.1.52及以下版本。

修复版本:

1.1.53及以上版本。

建议升级到新版本。
P2当使用Grouping sets和多个Count Distinct对分区表进行查询时,查询结果不正确。Grouping sets和多个Count Distinct对分区表查询时,优化器未对分区进行裁剪,导致分区过滤条件未命中,从而出现结果不正确。

出现版本:

1.1.52及以下版本。

修复版本:

1.1.53及以上版本。

建议升级到新版本。

2022年03月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2通过DLF查询OSS外部表时报错:failed to import foreign schema ,创建user-mapping后能正常查询。没有设置user-mapping时,鉴权接口传递权限错误,导致查询报错。

出现版本:

1.1.50及以下版本。

修复版本:

1.1.51及以上版本。

  • 显式设置user-mapping,详情请参见OSS数据湖加速
  • 建议升级到新版本。
    说明 升级到新版本后不需要显示创建user-mapping即可正常访问相关数据。
P2PrepareStatement模式下查询SQL报错:unrecognized node type: 0或者Hologres实例出现短暂重启。PrepareStatement模式下可以对反复执行的SQL生成Plan cache,减少接入端的开销。而在当前版本PrepareStatement模式对SQL的Plan cache获取不及时,导致查询出错。

出现版本:

1.1.47至1.1.50版本。

修复版本:

1.1.51及以上版本。

  • 使用jdbc:postgresql://<host>:<port>/<dbname>preferQueryMode=simple命令将JDBC连接串修改为Simple模式。
  • 建议升级到新版本。
P1Blink或者Flink RPC模式写入Hologres时报错:failed to create channel into server xxx,connection refused to rpc proxy endpoint使用Blink或者Flink RPC模式写入Hologres时,接口未返回Rpcproxy端口,导致写入报错。

出现版本:

1.1.50及以下版本。

修复版本:

1.1.51及以上版本。

  • 将Flink作业切换为JDBC写入模式,详情请参见Flink全托管
  • 建议升级到新版本。
P2执行含有union all的Join SQL命令时报错:internal error: 0 shard end shard value: xxx doesn\'tunion all的JOIN SQL在推导执行计划时错误,导致报错。

出现版本:

1.1.49及以下版本。

修复版本:

1.1.50及以上版本。

建议升级到新版本。
P2使用json_array_elements函数且SQL中含有Join命令时,报错:Duplicate keys detected when building hash table执行引擎(QE)在执行Join算子时会构建哈希表,但是实际读数据时,没有正常过滤json_array_elements处理后的数据,导致读取的数据有重复从而报错。

出现版本:

1.1.49及以下版本。

修复版本:

1.1.50及以上版本。

建议升级到新版本。
P2执行Join SQL时报错:Explicit remote seek from a source is not supportedJoin SQL生成的执行计划(通过explain sql查看)是Nested Loop Join时,执行引擎获取Nested Loop Join相关的执行计划错误,导致执行报错。

出现版本:

1.1.49及以下版本。

修复版本:

1.1.50及以上版本。

建议升级到新版本。
P2SQL过滤条件中含有not in时,查询结果中仍然含有not in过滤的数据。示例如下。
create table if not exists test(id bigint,  value int);
select id from test where id in (238024008,276941010) and id not in (238024008) and value in (1, 2, 3);
优化器在生成执行计划时,对not in处理错误,生成了错误的执行计划,导致not in过滤条件丢失,结果出错。

出现版本:

1.1.48及以下版本。

修复版本:

1.1.49及以上版本。

建议升级到新版本。
P2SLPM权限模型下,修改Schema名称时执行CALL slpm_rename_schema ( old_name, new_name )命令,报错:UPDATE is not supportedSLPM权限模型下修改Schema时,权限接口判断错误,导致执行报错。

出现版本:

1.1.47及以下版本。

修复版本:

1.1.48及以上版本。

建议升级到新版本。

2022年02月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2SPM或者SLPM模式下,开启数据脱敏后,进行Auto Analyze或者Analyze失败。后端会使用表Owner去执行Auto Analyze,但SPM或者SLPM模式下,表的Owner是Developer,没有登录权限,而对脱敏列采样时会走PQE,导致Auto Analyze或者Analyze失败。

出现版本:

1.1.1至1.1.46版本。

修复版本:

1.1.47及以上版本。

  • 关闭数据脱敏。
  • 建议升级到新版本。
P1Analyze外部表时,外部表分区太多(通常是多级分区场景)报错超过分区限制(大于512分区),导致Analyze失败。Analyze时未对外部表分区进行相应裁剪,导致Analyze失败。

出现版本:

1.1.1至1.1.46版本。

修复版本:

1.1.47及以上版本。

  • 若是外部表分区数在1024以内,可以先将外表分区限制调大再执行Analyze。
  • 建议升级到新版本。
    说明 升级后默认Analyze 最多512个外部表分区,若是需要更多分区,请将Analyze分区限制数调大,详情请参见优化MaxCompute外部表的查询性能
P1执行explain analyze SQL命令时,结果中partitions selected 为0,与实际命中分区不符。生成执行计划时对partitions selected 判断错误,导致结果为0。

出现版本:

1.1.1至1.1.46版本。

修复版本:

1.1.47及以上版本。

建议升级到新版本。
P2查看慢Query日志时,无法显示查询读取的行数(read_rows)、返回行数(result_rows)等信息。元仓采集信息不全导致。

出现版本:

1.1.1至1.1.46版本。

修复版本:

1.1.47及以上版本。

建议升级到新版本。
说明 Hologres V1.1.36版本开始可以通过GUC参数查看,V1.1.47版本后可以不使用GUC参数。
P2使用JDBC PrepareStatement模式时,insert或者select多个值时,多执行几次(大于3次)结果出现错行错列,而一次insert或者select一个值分多次执行时结果正确。示例如下:一条SQL包含32个values一次写入,总共写4次,每次这32行数据在values中的顺序随机变化。而一条SQL只包含一个values,分32条sql写入,结果正确。PrepareStatement模式下对多个values进行多次insert或者select时,优化器(QO)生成了错误的执行计划,导致结果出错。

出现版本:

1.1.46及以下版本。

修复版本:

1.1.47及以上版本。

  • Query符合Fixed Plan特征时,可以开启Fixed Plan加速SQL执行
  • 将PrepareStatement模式更改为Simple模式。
  • 建议升级到新版本。
P2执行非Join的SQL(例如含有count distinct)时,报错:error: Hash32 shard function does not support decimal or fixed binary type非Join的SQL也可能会使用Shard Function生成执行计划,而目前Shard Function目前不支持NUMERIC等类型,导致部分非精确类型在执行时报错。

出现版本:

1.1.46及以下版本。

修复版本:

1.1.47及以上版本。

建议升级到新版本。
P1在使用key = max(key)时,出现的结果不符合预期,一直只出现一行数据,使用key in max(key)时符合预期。优化器在生成执行计划时,会将key = max(key),转化成order by id asc limit 1 , 这种查询永远只有一行数据,导致结果不符合预期。

出现版本:

1.1.46及以下版本。

修复版本:

1.1.47及以上版本。

  • 使用key in max(key)
  • 建议升级到新版本。
P2在Hologres中通过exec_external_sql使用MaxCompute语法时,exec_external_sql中包含未在实例中创建的server名称,如select exec_external_sql('odps_test_server', 'seahawks', 'select 1;');其中odps_test_server未在实例中创建过,导致实例出现重启。接入节点在查找foreign_server 时,遇见没有创建的server名称,无法判断结果,导致实例重启。

出现版本:

1.1.46及以下版本。

修复版本:

1.1.47及以上版本。

  • 使用Hologres内置的server名称:odps_server
  • 建议升级到新版本。
    说明 升级完成后使用未创建的server仍然不能执行成功,但实例不会重启。
P2非PostgreSQL来源(如JDBC)的DDL有SQL代码注释,示例:create table ttxwsx1(i int); -- comments -- xxxxx执行成功后,写入或者查询时出现卡死的现象。DDL命令末尾有注释,会使得同一行最后的分号失去命令间的分隔作用,导致新生成的命令追加到注释后面失效,从而使得SQL不合法,导致节点间Replay失败,造成写入或者查询卡死。

出现版本:

1.1.45及以下版本。

修复版本:

1.1.46及以上版本。

  • 删除DDL语句最后的注释。
  • 建议升级到新版本。
P1按照主键点查方式查询行存表时,存在一定概率场景,出现部分行存数据查询不到的情况。行存表在做后台文件compaction时,在处理并发场景有缺陷,致使部分索引文件定位有误,导致部分行存数据查询不到。

出现版本:

1.1.44及以下版本。

修复版本:

1.1.45及以上版本。

建议升级到新版本
P2Hologres实例升级至 V1.1版本后,查询MaxCompute外部表,当外部表有多级分区时(一般3级分区),SQL过滤条件中带有or,查询相比V0.10版本变慢(之前查询只需要几秒钟)或者出现OOM。Hologres V1.1版本,在多级分区过滤中,优化器对or条件生成的算子无法识别,导致生成的filter为空,即不做任何过滤,从而扫描了所有分区,导致查询变慢或者出现OOM。

出现版本:

1.1.44及以下版本。

修复版本:

1.1.45及以上版本。

建议升级到新版本
P1CPU占用不高时内存也长期处于高水位,通过监控发现QPS比较高(几百及以上),但是连接数只用了几十个,即一个Connection保持几百个QPS的速度执行SQL。当执行SQL时,优化器会去获取表的statistics,当一个Connection保持几百个QPS的速度执行SQL,且Connection长期不关闭,导致获取statistics时泄漏,造成内存高水位。

出现版本:

1.1.44及以下版本。

修复版本:

1.1.45及以上版本。

  • 通过添加set hg_experimental_alway_show_execution_statistics=off;参数解决。
  • 建议升级到新版本。
P2SQL中含有not like xxx%条件,但是查询结果中仍然出现not like过滤后的数据。优化器在生成执行计划时,对like相关的函数预处理规则出错,进行了错误的改写,导致结果不正确。

出现版本:

1.1.44及以下版本。

修复版本:

1.1.45及以上版本。

  • 带like的SQL出错时可以通过添加hg_experimental_remove_redundant_cmp=off;参数解决。
  • 建议升级到新版本。
P1STS账号登录时,报错:Cloud authentication failed,并且检查账号密码等都没有填写错误。账号认证接口对STS账号的状态判断错误,导致报错。

出现版本:

1.1.43至1.1.44版本。

修复版本:

1.1.45及以上版本。

建议升级到新版本
P2在HoloWeb中,通过SQL方式回写MaxCompute时报错:ERROR: SqlTask Run failed: create instance failed!,通过jdbc/psql等执行不报错。HoloWeb接口在鉴权exec_external_sql时失败,导致回写报错。

出现版本:

1.1.44及以下版本。

修复版本:

1.1.45及以上版本。

  • 通过jdbc/psql方式进行回写。
  • 建议升级到新版本。
P0在应用侧数据写入完成,但引擎侧数据写入进程崩溃,有概率存在数据丢失,用户查询时发现数据缺少。正常流程是用户写数据,WAL(Write Ahead Log)落盘后才返回给上层调用,表示写入完成,保证数据持久化和一致性。但当落盘进程写入超时触发系统重试后,数据会首先写入内存缓存部分,并返回给上层调用,如果此时内存缓存进程崩溃后,会造成应用层返回成功,但实际数据存储层丢失的问题。

出现版本:

0.8及以下版本。

修复版本:

0.9及以上版本。

建议升级到新版本
P1实例写入和查询数据时失败并报错:ERROR: Invoke StoreMasterClient failed:ERPC_ERROR_CONNECTION_CLOSED出现报错后,业务侧进行Query重试叠加后端接入节点(FE)重试,导致请求量太高,Store Master(元数据管理)处理不及时而报错。

出现版本:

1.1.43及以下版本。

修复版本:

1.1.44及以上版本。

  • 使用set optimizer_join_order=query命令,暂时绕过。
  • 建议升级到新版本。
P2新增一列类型为DECIMAL且不指定精度的列,如alter table add column c0 decimal; Query执行成功,但是查询新加的列时出现报错:Schema fields[] has type decimal(x,y) but decimal(x1, y1) is expected.当前新增列不支持DECIMAL不指定精度,但是新增列(Add Column)时没有做精度校验,导致查询报错。修复后在新增列时会对精度校验,未指定精度会报错。

出现版本:

1.1.42及以下版本。

修复版本:

1.1.43及以上版本。

  • 新增列时含有DECIMAL字段时需要指定精度。
  • 建议升级到新版本。
P0当AccessKey被禁用后,仍然能使用被禁用的AccessKey访问Hologres实例。AccessKey接口对于禁用的AccessKey状态调用错误,导致禁用的AccessKey被当成了正常的AccessKey使用。

出现版本:

1.1.42及以下版本。

修复版本:

1.1.43及以上版本。

  • 取消账号的访问权限。
  • 建议升级到新版本。
P2建表时有Default字段,使用copy命令语句时,实例出现重启。copy功能不支持建表时带有Default值,导致实例OOM发生重启。

出现版本:

1.1.42及以下版本。

修复版本:

1.1.43及以上版本。

建议升级到新版本。
P2执行有外表关联的INNER JOIN查询语句时,报错找不到某一列,如:ERROR: column "id" does not exist,而SQL中并没有这一列。优化器在生成执行计划时,对于等价表达式的推导不对,没有输出的列也作为了等价表达式的推导,导致报错。

出现版本:

1.1.42及以下版本。

修复版本:

1.1.43及以上版本。

建议升级到新版本。
P1使用行列共存的表,带有复杂的Nested Loop Join,出现实例重启后又快速恢复。优化器在检测行列共存的表时,没有生成正确的执行计划,导致报错从而触发实例重启。

出现版本:

1.1.42及以下版本。

修复版本:

1.1.43及以上版本。

  • 不使用行列共存的表
  • 建议升级到新版本。
P1多表(如6个表)Join的复杂导入作业在手动取消后,CPU使用率仍然为100%,持续几个小时不结束,执行drop table时也卡住。比较复杂的Query,执行计划包括Hash Join算子,涉及到的数据量很大,后端出现锁死,导致取消后仍然在后端运行中。

出现版本:

1.1.42及以下版本。

修复版本:

1.1.43及以上版本。

  • 重启实例。
  • 建议升级到新版本。

2022年01月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2数据通过DataHub写入Hologres分区表时,分区表未提前创建分区子表,Hologres实例重启。DataHub写入Hologres分区表时,写入接口未做分区校验,引发实例Coredump。

出现版本:

1.1.41及以下版本。

修复版本:

1.1.42及以上版本。

  • 在Hologres中提前创建好分区子表再写入数据。
  • 建议升级到新版本。
    说明 若是分区表,升级后仍然需要提前创建分区子表才能写入数据。
P2分区子表通过attach到分区父表后,查分区表时报错:partition_table_missing分区子表的建表属性与分区父表不一致(比如not null约束、PK设置,Clustering Key设置等),在attach时没有对属性进行校验,导致查询报错。

出现版本:

1.1.41及以下版本。

修复版本:

1.1.42及以上版本。

  • 建分区子表时,子表的Schema和属性需要同attach的分区父表保持一致。
  • 建议升级到新版本。
P1使用JDBC PreparedStatment模式时,SQL中的where命令中含有"<"或者">"过滤条件,执行后出现实例重启。使用JDBC PreparedStatment模式时,where中的"<"或者">"过滤条件会在生成执行计划时,转换成INTERVAL,在转换时遇见空指针,导致SQL出错引发实例重启。

出现版本:

1.1.0至1.1.40及以下版本。

修复版本:

1.1.41及以上版本。

建议升级到新版本。
P1使用JDBC PreparedStatment模式时,IN条件超过100个时,有一定概率结果出错或者不符合预期。当使用JDBC PreparedStatment模式时,IN条件超过100个时,生成执行计划时会错误的把IN条件给删除,导致数据结果出错。

出现版本:

1.1.0至1.1.40及以下版本。

修复版本:

1.1.41及以上版本。

建议升级到新版本。
P2行列共存的表使用IN条件查询时报错:An I/O error occurred while sending to the backend.,使用行存表则不会报错。IN条件中的字段类型是TEXT时,并且该字段设置了Bitmap,导致行列共存的表生成了错误的执行计划,从而报错。

出现版本:

1.1.0至1.1.40及以下版本。

修复版本:

1.1.41及以上版本。

  • 使用行存表。
  • 建议升级到新版本。
P2执行SQL,where条件中有and连接in=时报错:ERROR: serialized_error_msg is null。示例SQL:
SELECT * FROM public.conflict_1 where a in (1,31) and a=1;
后端在判断and两侧in=的数据类型时判断错误(示例:假如是 a = 1 就是一个int类型, a in (1,2,3) 就是一个array 类型),导致执行失败。

出现版本:

1.1.0至1.1.40及以下版本。

修复版本:

1.1.41及以上版本。

建议升级到新版本。
P2修改分区子表的生命周期(TTL)后出现报错:Invoke StoreMasterClient failed:ERPC_ERROR_CONNECTION_CLOSED修改子表TTL时,元数据管理器Store Manager(SM)检验Schema变动时出错,导致SQL出现报错。

出现版本:

1.1.0至1.1.40及以下版本。

修复版本:

1.1.41及以上版本。

  • 暂不修改子表TTL。
  • 建议升级到新版本。
P2使用DROP语句删除表时报错:invalid table id,重试时报错:SE object lock failed 一个实例会有多个接入节点,执行SQL时,是先在一个节点执行,再去其他节点重放(reply),当某个节点因为版本等原因无法跟其他节点保持元数据信息一致时,会进行重试(retry)。当并发执行drop table时,会触发节点的主动,retry时没有释放表锁导致报错。

出现版本:

1.1.39及以下版本。

修复版本:

1.1.40及以上版本。

  • 串行执行drop table等DDL。
  • 建议升级到新版本。
P1开启Auto Analyze功能之后,实例没有明显上涨的QPS,出现报错:database is not accepting commands to avoid wraparound data loss in database开启Auto Analyze功能之后,接入节点的系统表没有及时执行auto vacuum,导致后台不断提交带事务的SQL,导致实例报错。

出现版本:

1.1.38及以下版本。

修复版本:

1.1.39及以上版本。

建议升级到新版本。
P2基于分区表创建视图,并对分区列做cast,导致不能使用静态分区裁剪,导致扫描所有分区性能变差。示例SQL如下:
--建view
create view test_partition_table_view asselecttest_partition_table.ds::text as dsfromtest_partition_table;
--查询sql
select * from test_partition_table_view where ds='20211116';
封装成View之后,在优化器中的过滤条件是基于cast之后的列,而非分区列。分区裁剪只能对分区列生效,导致性能变差。

出现版本:

1.1.38及以下版本。

修复版本:

1.1.39及以上版本。

  • View中不对分区列进行cast
  • 建议升级到新版本。
P2
  • 当日期是周日时,执行to_char(xxx, 'Day')函数,实例发生重启。
  • 当日期是周日时,执行to_char(xxx, 'D')函数,结果有误。
当日期是周日时,to_char()函数的底层执行逻辑是toDayOfWeek(),其返回值为7,发生数组越界,导致Hologres实例重启或者结果有误。

出现版本:

1.1.36及以下版本。

修复版本:

1.1.37及以上版本。

建议升级到新版本。
P1实例开启数据脱敏后,子查询(Sub Query)中含有CTE函数,实例短暂出现连接报错或者I/O口报错。递归调用处理CTE函数时,数据脱敏处理不正确,导致Hologres实例重启。

出现版本:

1.1.36及以下版本。

修复版本:

1.1.37及以上版本。

  • 关闭数据脱敏。
  • 建议升级到新版本。

2021年12月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P0为TEXT类型字段设置Dictionary索引时,实例出现短暂重启,示例SQL如下。
call set_table_property('tbl', 'dictionary_encoding_columns', 'a');
,其中a是TEXT类型。
Hologres会给TEXT类型的字段默认设置Dictionary,即为auto属性,手动再给TEXT类型指定Dictionary时,会变为on属性,导致文件状态不一致,无法进行压缩合并(Compaction),从而引发Coredump。

出现版本:

1.1至1.1.35及版本。

修复版本:

1.1.36及以上版本。

  • 手动设置dictionary时,设置为auto属性,即:call set_table_property('tbl', 'dictionary_encoding_columns', 'a:auto');
  • 建议升级到新版本。
P2查看慢Query日志时,无法显示查询读取的行数(read_rows)、返回行数(result_rows)等信息。元仓采集信息不全导致无法显示。

出现版本:

1.1至1.1.35及版本。

修复版本:

1.1.36及以上版本。

建议升级到新版本,且需要在查看慢Query的SQL前添加如下命令。
  • set hg_experimental_force_sync_collect_execution_statistics = on;
  • alter database <dbname> set hg_experimental_force_sync_collect_execution_statistics = on;
P1当SQL的where条件中含有case when xx in ('')时,结果不正确。Hologres会默认对TEXT类型构建Bitmap,且该列是Nullable属性的情况下,后端对case when xx in ('')生成了错误的执行计划,导致结果不正确。

出现版本:

1.1.35及以下版本。

修复版本:

1.1.36及以上版本。

建议升级到新版本。
P1报错: Cannot reserve capacity larger than 2^31 - 1 for binary\n Hologres会默认对TEXT列构建Dictionary字典编码,当插入的字段太大(单字段超过2GB)时,导致构建的Dictionary过大,查询时报错。

出现版本:

1.1.35及以下版本。

修复版本:

1.1.36及以上版本。

建议升级到新版本。
P1查Binlog时,带有Binlog字段的SQL查主键(PK)字段时查不出数据,不带Binlog的SQL查PK字段时能查询出数据。示例查询(其中a是test表的PK字段)如下。
--带Binlog的SQL
SELECT, hg_binlog_lsn ,hg_binlog_event_type,hg_binlog_timestamp_us
FROM testwhere a = '723295948321120659';
--不带Binlog的SQL
“SELECT * FROM testwhere a = '723295948321120659';
后端优化器根据PK字段查询时生成了错误的执行计划,导致查询错误。

出现版本:

1.1.35及以下版本。

修复版本:

1.1.36及以上版本。

建议升级到新版本。
P2实例在CPU负载满的情况下,在HoloWeb中无法查询活跃Query、活跃连接等信息。在CPU负载满时,pg_stat_activity等系统表会受资源限制,导致查询失败。

出现版本:

1.1.35及以下版本。

修复版本:

1.1.36及以上版本。

建议升级到新版本。
P1使用ANY数组为空时,Hologres实例出现重启。对于ANY数组为空时后端处理不正确,导致实例Coredump。

出现版本:

1.1.35及以下版本。

修复版本:

1.1.36及以上版本。

建议升级到新版本。
P1Query包含LeadLag函数,同时函数的第三个参数缺省时报错:Column column5 should be non-nullable but the values contain 1 nulls执行器对于LeadLag函数的输出结果的Nullable推导不正确,导致报错。

出现版本:

1.1.34及以下版本。

修复版本:

1.1.35及以上版本。

建议升级到新版本。
P2Flink写入Hologres时,有RoaringBitmap字段,写入很慢。带有RoaringBitmap的写入链路没有在后端优化导致写入性能差。

出现版本:

1.1.35及以下版本。

修复版本:

1.1.36及以上版本。

  • 不使用Roaring Bitmap。
  • 建议升级到新版本。
P1使用Roaring Bitmap时报错:An I/O error occurred while sending to the backend并且在CPU使用率很低时,内存使用率很高。Roaring Bitmap存在内存泄漏。

出现版本:

1.1.34及以下版本。

修复版本:

1.1.35及以上版本。

  • 不使用Roaring Bitmap。
  • 建议升级到新版本。
P1SQL中有order by时报错:PlStmt Translation: Attribute number 4 not found in project listorder by会生成sort算子,优化器在生成执行计划时下推错误,导致无法生成执行计划,从而报错。

出现版本:

1.1.33及以下版本。

修复版本:

1.1.34及以上版本。

建议升级到新版本。
P1使用Proxima查询时报错:HGERR_code XX000 HGERR_msge internal error: record batches is empty后端读取Proxima的文件状态有误,从而报错。

出现版本:

1.1.33及以下版本。

修复版本:

1.1.34及以上版本。

建议升级到新版本。
P2实例升级至1.1版本或者在1.1版本对实例执行升降配等重启操作后,第一次查询时,Query的速度变慢,查看执行计划,统计信息不准确。再次执行Query,统计信息正确且性能恢复。实例升级重启后,第一次执行Query时未能拿到正确的统计信息版本,导致统计信息不准确,性能变差。

出现版本:

1.1至1.1.32版本。

修复版本:

1.1.33及以上版本。

  • 可以多次执行Query,使得统计信息变正确,恢复性能。
  • 建议升级到新版本。
P0使用drop/truncate命令时同时查询表,造成实例重启。查询结束到数据析构之间,发生表的drop/truncate,造成实例coredump,从而重启。

出现版本:

1.1.32及以下版本。

修复版本:

1.1.33及以上版本。

建议升级到新版本。
P1升级至1.1版本后,多表(十几个表)Join出现OOM异常,且升级前运行正常。优化器预估表的行数过多,导致执行器在初始化阶段OOM,无法进行下一步计算。

出现版本:

1.1至1.1.31版本。

修复版本:

1.1.32及以上版本。

建议升级到新版本。
P2Serving点查场景,因为客户端凑批导致延迟变高。每个Worker节点上只有一个点查写入节点,当请求都发到写入节点时容易产生凑批行为,而当前凑批上限过大,导致等待攒批耗时较长,造成点查延迟变高。

出现版本:

1.1至1.1.31版本。

修复版本:

1.1.32及以上版本。

建议升级到新版本。
P1存储加密的表limit offset命令不加order by limit能查到结果,加了就查不出结果。对于存储加密的表,没有按照文档正确的配置进行操作,生成了错误版本,导致内存表(MemTable)数据丢失,从而无法出结果。

出现版本:

1.1至1.1.31版本。

修复版本:

1.1.32及以上版本。

建议升级到新版本。
P1执行Truncate命令时,当表名称有大写时会报错找不到表。例如执行#truncate "Abc";,报错:ERROR: relation "abc" does not exist当前Truncate对大小写处理逻辑错误。

出现版本:

1.1.30及以下版本。

修复版本:

1.1.31及以上版本。

建议升级到新版本。
P1使用函数to_charto_dateto_timestamp时报错:time after 2282 not supported函数to_charto_dateto_timestamp支持的时间范围是1925 ~ 2282年,超出时间范围就会报错。

出现版本:

1.1.30及以下版本。

修复版本:

1.1.31及以上版本。

建议升级到新版本,升级后可以通过GUC控制时间范围,支持所有时间的数据,如下所示。
  • set hg_experimental_functions_use_pg_implementation = ‘to_char’;
  • set hg_experimental_functions_use_pg_implementation = ‘to_date’;
  • set hg_experimental_functions_use_pg_implementation = ‘to_timestamp’;
P1SQL中有内连接(inner join),执行后运算结果偏少。Join算子要求相同的join key数据分布推导在相同并发节点,实际执行时,数据分布推导错误,会错误的将相同数据Shuffle到不同的节点,导致Join结果错误,表现为结果比实际少。

出现版本:

1.1.30及以下版本。

修复版本:

1.1.31及以上版本。

建议升级到新版本。
P1执行SQL时报错:Query could not generate plan by Hologres : PlStmt Translation: Attribute number 4 not found in project list表连接时没有Join Key,导致执行计划生成失败报错。

出现版本:

1.1至1.1.27版本。

修复版本:

1.1.28及以上版本。

  • 重新建表,然后执行analyze table命令。
  • 建议升级到新版本。
P1使用get_json_object函数时报错:Column column0 should be non-nullable but the values contain 1 nullsget_json_object函数的两个参数为非Nullable类型,但是UDF的结果可能为Nullable类型,在生成执行计划时,检查非Nullable失败,导致报错。

出现版本:

1.1.27及以下版本。

修复版本:

1.1.28及以上版本。

建议升级到新版本。
P1报错:ERROR: Build query failed: Table group [] from table must equals table group [] from QO.执行计划生成中,DML节点对下游TG有信息要求,但下游某节点推断出的TG属性为NULL,没有满足DML的TG要求,导致报错。

出现版本:

1.1.27及以下版本。

修复版本:

1.1.28及以上版本。

建议升级到新版本。
P1执行DROP TABLE命令时卡死,且重试之后CPU突然飙高。实例开启了Auto AnalyzeAuto Analyze会加share_update_exclusive锁, 同时Auto Analyze会使用连接,新的连接load_stats,会加access_shared_lock;这两个步骤期间,如果用户进行DROP TABLE 就会卡死。

出现版本:

1.1.27及以下版本。

修复版本:

1.1.28及以上版本。

  • 建议在业务低峰期开启Auto Analyze功能。
  • 建议升级到新版本。

2021年11月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P2(优化)当实例重启后,查询部分数据结果不一致。后端某一个节点重启后,需要与其他节点版本追齐,在追齐过程中,重启的节点版本较低,查询的还是原数据,导致结果查询不一致。优化后的行为是,当节点重启后,若是与其他节点版本不一致,则不提供服务,直到追齐版本后再提供服务,保证数据一致性。

出现版本:

1.1.24及以下版本。

修复版本:

1.1.26及以上版本。

建议升级到新版本。
P2MaxCompute数据导入时,执行set hg_experimental_foreign_table_split_size = 64; INSERT INTO public.lineitem SELECT * FROM public.odps_lineitem_1t ;时内存很高或者报错OOM,当设置参数值为128时,则没有问题。底层在Meta中,加载了所有StripesMeta导致内存飙高。

出现版本:

1.1.24及以下版本。

修复版本:

1.1.26及以上版本。

  • 暂时不使用set hg_experimental_foreign_table_split_size = 64;命令。
  • 建议升级到新版本。
P1当对Distribution Key或者Primary Key使用IN操作,IN数组超过100个的时候,导致最终结果不正确。IN超过100个后,Shard pruning之后的Shard数量随机变化,导致生成的计划错误,结果不正确。

出现版本:

1.1.24及以下版本。

修复版本:

1.1.26及以上版本。

  • 减少IN的数量至100以内。
  • 建议升级到新版本。
P1在外部表数据导入内部表的时候,先insert 然后delete历史数据,但是insert 语句取出来的分区不是最新分区,导致插入数据为0。在导入过程中,存在存储器异常问题,导致未获取到最新数据。

出现版本:

1.1.24及以下版本。

修复版本:

1.1.26及以上版本。

建议升级到新版本。
P1当行很宽,数据量超过数百MB时,单行记录就超出了RECORDBATCH记录批规格的上限,就会输出0行的RECORDBATCH,从而引发缺陷,实例进行重启。当行很宽时,后端对行数的处理不够,导致实例进行重启。

出现版本:

1.1.24及以下版本。

修复版本:

1.1.26及以上版本。

建议升级到新版本。
P2报错:internal error: string decimal literal can not be tentativeSQL中有in表达式,例如:select * from tbl where col in (1.11, 1.2, 1.333);in表达式里面的DECIMAL精度不一致的时候,后端计算引擎处理结果不一致导致报错。

出现版本:

1.1.24及以下版本。

修复版本:

1.1.26及以上版本。

  • in表达式里只用一个数据。
  • 建议升级到新版本。
P2(优化)报错:org.postgresql.util.PSQLException: ERROR: Total memory used by all existing queries exceeded memory limitation 20132659200: xxxxx bytes used.单个节点计算内存超过20GB的上限(单个节点总上限时64G,1/3用于计算,1/3用于缓存,1/3用于元数据)。

出现版本:

1.1.23及以下版本。

修复版本:

1.1.24及以上版本。

在1.1.24版本支持单个节点内存弹性调整,后台会检测当前节点内存的使用状态,弹性调整计算内存大小,缓解20G计算内存上限的问题。但是Query还是报错,建议优化SQL或者扩容。
P1报错:ERROR: Query could not generate plan by Hologres : Query Translation: No attribute entry found due to incorrect normalization of query执行的sql中,选中的列不在GROUP BY子句里面,但主键是GROUP BY子句的子集,Query无法生成计划,从而导致报错。

出现版本:

1.1.23及以下版本。

修复版本:

1.1.24及以上版本。

建议升级到新版本。
P1使用Flink或者Holo Client,往Binlog表里一次写入多条重复的数据,中间数据的Binlog丢失。写Binlog表,其中有重复的数据时,后端执行器会只生成最后一条数据的Binlog,其他重复的数据会被忽略。

出现版本:

1.1.23及以下版本。

修复版本:

1.1.24及以上版本。

建议升级到新版本。
P0查询MaxCompute外部表时,最后两行数据会随机变化,数据类型是DECIMAL类型。直读MaxCompute的ORC格式数据,当文件中存在DECIMAL类型,存储优化时,Hologres读出来的DECIMAL统计信息存在随机问题。

出现版本:

1.1.23及以下版本。

修复版本:

1.1.24及以上版本。

建议升级到新版本。
P1报错:Remote seek with parameters are not supportedsort算子默认具有rewindable属性,但底层并不支持,Query生成计划时报错。

出现版本:

1.1.23及以下版本。

修复版本:

1.1.24及以上版本。

建议升级到新版本。
P1在HologresV1.1版本设置了资源组,但是在跑Query时OOM(Out Of Memory),出现报错:used by all existing queries exceeded memory limitation,即使不跑任何Query,查询慢SQL和活跃Query这些也报错OOM。QE内存使用超过阈值,跑新Query超过资源组配额,异常时会导致内存泄漏。

出现版本:

1.1至1.1.23版本。

修复版本:

1.1.24及以上版本。

  • 重新新建资源组。
  • 建议升级到新版本。
P2偶发报错:fail to setremoteost invalid remon ip后台进程在检查IP白名单的变量时,变量没有初始化导致偶发报错。

出现版本:

1.1.23及以下版本。

修复版本:

1.1.24及以上版本。

  • 请重试几次。
  • 建议升级到新版本。
P1对表执行Analyze或者auto analyze时,当表中存在同名但是大小写不同的列名时,报错:CheckSchema failedFrontend节点在从优化以后的树结构里面转化成PowerBuilderTree的时候对应列的序号找错,导致报错。

出现版本:

1.1.22及以下版本。

修复版本:

1.1.23及以上版本。

建议升级到新版本。
P1执行多表RightOuterJoin的SQL时,不带有limit子句查询结果仅一条,加上limit子句之后会出现多条重复的数据。实现RightOuterJoin的时候,在优化器中生成了错误的计划,导致最终结果数据重复。

出现版本:

1.1.22及以下版本。

修复版本:

1.1.23及以上版本。

建议升级到新版本。
P1case when语句中,TEXT字段同时作为group byagg的参数时,无法生成计划,出现报错:ERROR: Query could not generate plan by Hologres : PlStmt Translation: Attribute number 46046320 not found in project listcase when中取法找到agg参数字段的colref导致计划无法生成。

出现版本:

1.1.22及以下版本。

修复版本:

1.1.23及以上版本。

建议升级到新版本。
P1报错:ERROR: internal error: Writting column: item_emb with array size: 682790219 violates fixed size list (32) constraint declared in schemaconst数组优化机制在SE没有判断导致执行出错。

出现版本:

1.1至1.1.21版本。

修复版本:

1.1.22及以上版本。

建议升级到新版本。
P0使用insert on conflict do update set语句时,语句的subquery中将多行值赋给一行,例如SET(mes1, mes2) = (SELECT mes1, mes2 FROM insert_on_conflict_do_update_negative_source)导致实例重启。subquery中将多行值赋给一行的语法产生了多表达式参数,此参数没有进行转换支持column id信息不存在,导致实例重启。

出现版本:

1.1.21及以下版本。

修复版本:

1.1.22及以上版本。

建议升级到新版本。
P2对于DECIMAL数据相乘报错:code: kActorInvokeError msg: "HGERR_code 22003 HGERR_msge numeric field overflow HGERR_detl A field with precision 38, scale 36 must round to an absolute value less than 10^2. HGERR_ctxt HGERR_erno 2 HGERR_end" err_data { filename: "FunctionsCast.cc" lineno: 323 funcname: "DecimalOverflowCheck" sqlerrcode: 50331778 message: "numeric field overflow" detail: "A field with precision 38, scale 36 must round to an absolute value less than 10^2." context: "对于DECIMAL类型的字段进行相乘,例如:numeric(38, 18)乘以numeric(38, 18)会得到numeric(38, 36),小数点保存太多位数导致溢出,从而报错。

出现版本:

1.1.21及以下版本。

修复版本:

1.1.22及以上版本。

  • 使用round函数进行绕过。
  • 建议升级到新版本。

2021年9-10月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P0报错:"database is not accepting commands to avoid wraparound data loss in database ""template0""后台会给Query设置自增transation id,对于QPS高的实例,ID会超过INT上界,从而导致报错。

出现版本:

0.10.19至0.10.42版本。

修复版本:

1.1及以上版本。

建议升级到新版本。
P1数据局部列更新入表偶发报错:internal error: Record batch has 519 rows but length of columns is 7407字段中包含TEXT[],当前TEXT[]没有进行二层数组的slice(),导致其长度不正确,在执行revserve()命令时取到了-1导致超过容量。

出现版本:

0.10.41。

修复版本:

0.10.42及以上版本。

  • 通过set hg_experimental_skip_mem_table=on命令暂时绕过。
  • 建议升级到新版本。
P1使用hg_create_table_like创建行存表,对行存表插入数据时报错:ERROR: internal error: Cannot find index full ID: 51539607554 (table id: 12, index id: 2) in storages or it is deleting!行存表中有多个主键,获取表主键的时候是需要执行多次hg_create_table_like,将主键的列取出来放到Set集合里面,导致顺序丢失。

出现版本:

0.10.42。

修复版本:

0.10.45及以上版本。

  • 手动执行create语句创建行存表。
  • 建议升级到新版本。
P2删除分区时报错:FAILED: ERROR: query id[27xxxxxxxxxxxxxx37] SE object lock failed删除分区时,Query被后端异常退出,导致报错。

出现版本:

0.10.41及以下版本。

修复版本:

0.10.42及以上版本。

  • 不对该表进行操作。
  • 联系值班重启实例。
  • 建议升级到新版本。
P2查询或者写入数据时报错:ERROR: internal error: Invalid table id : 641 MDTableGroup一般是因为刚做完DDL,后端节点还在重启,这个时候执行DML,就会导致节点间的版本不一致而报错。

出现版本:

1.1.18及以下版本。

修复版本:

1.1.19及以上版本。

  • 等待一段时间重试。
  • 建议升级到新版本。

2021年08月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P1表开启Hologres Binlog,且建表时Binlog的TTL设置比较小的时间,但表的存储数据一直增长(业务数据量并没有增加)。建表(create table)时,显式指定的Binlog TTL未真正生效,默认为100年。

出现版本:

0.10版本。

修复版本:

1.1版本。

  • 需要重新手动更改表Binlog TTL为较小的值,执行call set_table_property('schema.table', 'binlog.ttl', '86400');
  • 建议升级到V1.1版本。
P1列存表频繁进行Update、Delete、Insert on Conflict操作,引起存储空间持续增长。Hologres为提高更高的效率,采用标记删除算法,当文件中被标记记录达到一定比率,会触发后台Compaction进程,进行空间的释放。Hologres存在缺陷,在某些情况下Compaction未启动。

出现版本:

0.10.25以下版本。

修复版本:

0.10.25及以上版本。

建议升级到最新版本。
P1当表正在实时写入(通过Flink、数据集成等方式)时,同时查询数据报错:ERROR: internal error: Record batch has 742 rows but length of columns is 749. columns=[ColumnHandle(type=string)(table_column_id=3), ColumnHandle(type=string)(table_column_id=4), ColumnHandle(type=string)(table_column_id=5)]实时写入时,数据是先写入MemTable再落到磁盘,在写入期间去查询,查询列标记长度和真实数据长度未对齐,导致查询失败报错。

出现版本:

0.10.41版本。

修复版本:

0.10.42及以上版本。

建议升级到最新版本。
P1业务没有增加,内存突然增长。SQL中有如下函数,会出现内存泄漏,导致内存突然增长。
  • extract(xxx from time)
  • extract(xxx from interval)
  • date_part(xx, interval)

出现版本:

0.10.31以下版本。

修复版本:

0.10.32及以上版本。

  • 不使用列表中的函数。
  • 建议升级到最新版本。
P2提示报错:time before epoch time not supportedSQL中使用了to_charto_dateto_timestamp这些函数的其中一个或多个,且数据有1970年之前的数据,Hologres不支持1970年之前的数据。

出现版本:

0.10及以下版本。

修复版本:

1.1版本。

  • 过滤1970年之前的数据。
  • 建议升级到最新版本,可支持1925-2282年的数据。
P2非Superuser执行select hg_dump_script('xxxx')函数时报错:ERROR: permission denied for table pg_subscription hg_dump_script间接调用了pg_subscription这个relation,但是pg_subscription里面可能会存在敏感信息,默认只有Superuser才可以访问这个表。

出现版本:

0.10版本。

修复版本:

1.1版本。

  • pg_subscription并未实际存储对于hg_dump_script有用的信息,已修改该默认行为,在V1.1版本解决。
  • 遇到没有权限问题,可以给当前用户授予pg_subscription的访问权限
P2SQL中含有left join,不带有limit子句查询结果仅一条,加上limit之后会出现多条重复的数据。left join在底层会转换成right outer join,引擎在实现right outer join的时候,生成的right side走broadcast的错误执行计划,导致最终结果数据重复,可以通过执行explain sql查看执行计划是否走broadcast。

出现版本:

0.10.40及以下版本。

修复版本:

1.1版本。

建议升级到最新版本。
P2往Binlog表里一次写入多条重复的数据时,中间数据的Binlog会丢失,未保留所有Binlog中间状态变化。重复数据会被引擎去重,默认保留最后一条,导致中间状态变化丢失。

出现版本:

0.10.30及以下版本。

修复版本:

0.10.39及以上版本。

建议升级到最新版本。
P2提示报错:ERROR: status { code: SERVER_INTERNAL_ERROR message: " HGERR_code 00000 HGERR_msge OptimizedRegularExpression: cannot compile re2: \\c, error: invalid escape sequence: \\c4 HGERR_end[query_id:xx" err_data { message: "OptimizedRegularExpression: cannot compile re2: \\c, error: invalid escape sequence: \\c4" context: "[query_id:xxx]" } }CONTEXT: [query_id:xx]SQL中的like有\ + 字符或数字的情况,示例SQL如下。
select * from test_tb where a like '%\c%';select * from test_tb where a like '%F\G%';
目前引擎对于SQL中的like有\ + 字符或数字的情况处理不够完善,导致报错。

出现版本:

0.10.38及以下版本。

修复版本:

0.10.39及以上版本。

建议升级到最新版本。
P2行存表根据主键查询时,结果不一致或者报错:Duplicate keys detected when building hash table建行存表时,主键和Clustering Key的顺序指定不一致,如
create table k ( a int, b int, primary key(a, b));
call set_table_property('k', 'orientation', 'row');
call set_table_property('k', 'clustering_key', 'b,a');

出现版本:

0.10.37及以下版本。

修复版本:

0.10.38及以上版本。

  • 重新建表,将主键和Clustering Key的顺序保持一致。
  • 建议升级到新版本。
P2在新建的schema下使用数据脱敏,查询脱敏数据时报错:hg_anon_mask_name(text) doesnt exist数据脱敏函数被创建在public schema下,导致在新schema下无法查询脱敏数据。

出现版本:

0.10.35及以下版本。

修复版本:

0.10.36及以上版本。

  • 只在public schema下使用数据脱敏函数。
  • 建议升级到新版本。
P2报错:internal error:string decimal literal can not be tentativeSQL语句里in中包含不同精度的decimal数据,示例SQL如下。
select * from table where sval in(170344.964,1339107.84);

出现版本:

0.10.34及以下版本。

修复版本:

0.10.35及以上版本。

  • 修改SQL语句里in中包含的decimal数据精度一致。
  • 建议升级到最新版本。

2021年07月

等级报错/问题描述缺陷原因出现/修复版本规避建议
P0RoaringBitmap字段被配置为字典编码(Dictionary Encoding)时,造成写入失败,实例不可查询。RoaringBitmap类型并不支持字典编码,强行设置造成编码逻辑故障,导致写入一直失败。

出现版本:

0.10.24及以下版本。

修复版本:

0.10.25及以上版本。

  • RoaringBitmap字段取消Dictionary Encoding。
  • 建议升级到新版本。
P0在非public schema执行add commect on tablename is "is comment" 导致写入或查询卡住。在非public schema下执行add comment操作:add comment on tablename is "comment",SQL语句中未指定Schema名,导致单个节点异常,从而导致出现写入/查询卡住现象。

出现版本:

0.10.20及以下版本。

修复版本:

0.10.21及以上版本。

  • SQL中add comment时加上Schema名:add comment on schema.tablename is "comment"
  • 建议升级到新版本。
P0报错:cannot acquire lock in time 在原有的版本中,会对DDL加锁,高并发查询和删除(Drop)同一张表时,后端节点出现死锁,导致有关这张表的操作都卡住,从而报错

出现版本:

0.9.22及以下版本。

修复版本:

0.9.23及以上版本。

建议升级到新版本。
P1在数据没有写入时,存储空间持续线性增长。使用insert on conflict do update set pk =pk语句导入数据,实际上导入前和导入后数据并没有实际变化,触发底层优化BUG,导致存储线性增长。

出现版本:

0.10.23及以下版本。

修复版本:

0.10.24及以上版本。

  • 可以通过执行insert into values语句,触发数据更新,多余的数据将会被删除。
  • 建议升级到新版本。
P1在执行extract XXX from timestamptz/timestamp时,提示报错:time before epoch time not supportedEXTRACT函数在处理数据中的NULL值会有误。

出现版本:

0.10.20及以下版本。

修复版本:

0.10.21及以上版本。

  • SQL通过过滤条件过滤掉NULL。
  • 建议升级到新版本。
P1报错:cant determine shard id of shard valueSQL语句中有union all语句,并且Group by字段中有distrubition key,导致执行计划错误,从而导致找不到对应的Shard

出现版本:

0.10.20及以下版本。

修复版本:

0.10.21及以上版本。

建议升级到新版本。
P1ERROR: Query could not generate plan by gporca : Group by key is type of unsupported type. not supportedGroup by的字段类型是非精确类型,导致出现报错。

出现版本:

0.9及以下版本。

修复版本:

0.10已开发限制。

  • Group by中避免非精确数据类型。
  • 建议升级到新版本。
P1读外表时报错:unsupported column type:list在MaxCompute已有表中新增一列array column且该列不导入数据,外表查询该MaxCompute时报错

出现版本:

0.9.22及以下版本。

修复版本:

0.9.23及以上版本。

  • MaxCompute新增一列array column后,及时为该列写入数据。
  • 建议升级到新版本。
P1报错ERROR: internal error: The left child should be column ref, num_children: 1查询的SQL中,Clustering key为varchar类型就会触发。

出现版本:

0.9.24及以下版本。

修复版本:

0.9.25及以上版本。

  • varchar字段改成TEXT字段。
  • 建议升级到新版本。
P2查询外表报错:code: SERVER_INTERNAL_ERROR message: "query next from foreign table executor failed,Unknown file type: xxxMaxCompute集群发生配置更新,同时Hologres依赖的外表元数据未及时更新导致。

出现版本:

0.10.20及以下版本。

修复版本:

0.10.21及以上版本。

无法规避,需要实例重启或者升级到新版本。