關鍵缺陷通知

更新時間:
Copy as MD

本文將為您介紹Hologres各版本相關缺陷的修複記錄,包括問題描述、影響程度等。您可以通過報錯或問題描述,檢查您當前的業務中是否產生了相關問題,提前進行問題規避。建議加入即時數倉Hologres交流群聯絡對應支援人員協助您將產品升級到最新版本,詳情請參見如何擷取更多的線上支援?

背景資訊

  • 缺陷及修複說明

    • 缺陷內容向下穿透:目前的版本存在的缺陷,在之前的版本中均存在。

      例如,V1.3版本中存在某缺陷,在V1.1V0.10等版本中大多數存在,少數不存在情境有明確標註。

    • 缺陷修複向上包含:目前的版本修複後的缺陷,在之後的版本中均已修複。

      例如,V1.1版本中已修複的某缺陷,在V1.1V1.3等版本中均已修複。

  • 缺陷等級說明

    • P0:建議立即升級,一旦觸發會影響線上的使用(如查詢正確性、寫入成功率等操作)。

    • P1:推薦升級,提前規避相關問題。

    • P2:選擇性升級,偶爾發生的問題,具備應該改寫方法,或重啟即可修複。

2026年缺陷

20266

嚴重等級

報錯/問題描述

缺陷原因

出現版本

修複版本

規避建議

P0

邏輯分區表更新部分主鍵時,flush資料可能導致執行個體重啟

邏輯分區表在更新主鍵情境存在缺陷

V3.1.1

V3.2.29、V3.1.43

升級到最新版本。

P0

資料寫入過程中報錯Partition count [65535] in memtable has exceed the limit [65535]Worker重啟

記憶體表memtable分區數限制檢查存在缺陷,未正確統計本次待寫入分區數,導致Worker自殺

V4.0.1

V4.1.21、V4.2.2、V4.0.37

20265

嚴重等級

報錯/問題描述

缺陷原因

出現版本

修複版本

規避建議

P1

對開啟Binlog的表執行Rebuild時,有機率出現接入節點卡住,執行個體不可用

Rebuild底層在處理開啟Binlog的表時存在缺陷

V4.1.1

V4.1.21

  • 升級到最新版本。

  • 關閉GUC set hg_experimental_rebuild_try_to_using_dynamic_table_mode=off後執行Rebuild。

P2

串連執行個體時在options內設定多項配置會使得串連失敗或配置值錯誤。如串連時設定options-c statement_timeout=1000 -c search_path=public,則串連失敗,報錯Connect to FE failed, invalid value for parameter "statement_timeout": "1000-csearch_path=public"

網關模組處理options欄位時錯誤地忽略了空格

  • V2.0.18~V2.0.35

  • V2.1.1~V2.1.15

  • V2.0.36

  • V2.1.16

  • 升級到最新版本。

  • 避免在串連options中設定超過一個配置。

20264

嚴重等級

報錯/問題描述

缺陷原因

出現版本

修複版本

規避建議

P2

使用資料脫敏 V2版本查詢含有脫敏表的VIEW時可能錯誤地出現permission denied for schema xxx或者permission denied for table xxx報錯資訊

資料脫敏對於許可權攔截錯誤導致報錯

  • V4.0.1~V4.0.27

  • V4.1.1~V4.1.12

  • V4.0.28

  • V4.1.13

升級到最新版本。

P1

建立了全域二級索引(Global Index)的表執行DML時,如果執行計畫使用Shard Prune運算元,會報錯Transaction xxxxxxxxxxxxx has no snapshot of table xxxxx index 1.

全域二級索引暫不支援處理Shard Prune運算元

V4.0.1

待修複

  • 針對報錯Query,關閉GUC hg_experimental_enable_shard_pruning

  • 修複後升級到最新版本。

20263

嚴重等級

報錯/問題描述

缺陷原因

出現版本

修複版本

規避建議

P1

全文倒排索引的短語檢索模式時,如果設定slot參數大於255,檢索結果可能不正確。

全文倒排索引針對slot大於255時的匹配邏輯存在缺陷。

V4.0.1

V4.1.9

  • 升級至最新版本。

  • 避免設定slop>255。

P2

動態表incremental重新整理模式下,Volatile函數下接AggVolatile不在最後一列時,重新整理失敗。報錯:

ERROR: Feature not supported: Distribution key must be contained by output columns, residual key list:[3, ]

distribution key list被帶到內層查詢,但distribution key list對應的是最終output column,與內層列無法對應。

V3.1

  • V4.1.8

  • V4.0.24

  • 繞過方式:使用full mode,或將Volatile函數寫在distribution key後面。

  • 升級至最新版本。

P2

載入Table Group到計算群組時,FE可能擷取不全SE shard location資訊,導致FixedFE寫入失敗,影響時間長度約1秒。

函數DDLReadService::DoGetTableGroupShards中碰到ShardInfos為空白時使用了break而非continue,導致資料擷取不全。

V1.1

  • V4.1.7

  • V4.0.24

  • 升級至最新版本。

P2

array列變長類型超過64MB時進行攢批,報錯Copy overflow with offset xx, length xx, and array length xx

mutable arrayreserve了一行,但append進來的array超過1行;當text列超過64MB時,builder大小被reserve成一行,沒有考慮到最小值。

V4.0

  • V4.1.6

  • V4.0.21

  • 繞過方式:執行alter database xxx set hg_experimental_enable_batch_accumulator_v2=off;

  • 升級至最新版本。

P2

使用者執行SQL時阿里雲帳號名不能自動轉換為ID,如GRANT USAGE ON SCHEMA public TO "ALIYUN$a"

is_initdb被錯誤地視為true,未聲明extern bool is_initdb;

  • V2.2

  • V3.0

  • V3.1

  • V3.2

  • V4.0

V3.0.53

  • 繞過方式:避免使用帳號名,直接用ID做相關操作。

  • 升級至最新版本。

P2

批量copy處理時共用記憶體可能寫滿,報錯ERROR: Parse data from copy ecountered internal errorcoredump(棧中有holo_copyCopyReadLineText)。

copy批量模式將用戶端資料按行數攢批寫入共用記憶體,使用者作業單條資料較大(每批約600MB),多串連同時寫入時可能將共用記憶體用滿,導致後續資料寫入失敗或讀取側因溢出讀取到非法值導致進程崩潰。

V1.1

  • V4.1.5

  • V4.0.21

  • V3.2.31

  • 繞過方式:採取流式copy寫入;或調小攢批條數hg_experimental_query_batch_size(預設8192),如alter user xx set hg_experimental_query_batch_size = 512;

  • 升級至最新版本。

P2

Parquet讀數組列時,因page index跳頁導致報錯。開啟page index(預設開啟),SQL讀數組列且有謂詞下推到parquet reader並因此有任意列的任意頁被過濾時可能觸發。

page index跳頁邏輯與數組列讀取存在相容性問題,當謂詞過濾導致頁跳過時,數組列的讀取狀態未能正確同步。

V3.1

  • V4.1.5

  • V4.0.19

  • V3.2.29

  • V3.1.43

  • 繞過方式:關閉page index:set hg_experimental_enable_external_parquet_use_page_index = off;

  • 升級至最新版本。

P2

Fixed plan模式下,INSERT ON CONFLICT語句中WHERE條件為常量時結果不正確。執行insert into a values(0,1) on conflict(id) do update set id = excluded.id, name = excluded.name where 1 = 0;時,id不衝突但寫入0行。

WHERE條件為常量運算式時,未能正確進行條件改寫,導致合格資料無法寫入。

V4.0

  • V4.1.6

  • V4.0.24

  • 繞過方式:使用INSERT OR IGNORE文法,避免在ON CONFLICT運算式中使用常量條件。

  • 升級至最新版本。

P2

Parquet reader無法處理空row group,讀到包含0行的row group時報錯,錯誤資訊被拋回使用者側。Hologres V3.1及以上版本可能表現為coredump,棧中包含hologram::spi::parquet::RowRange

reader內部假設row group中一定包含資料(非0行),在處理空row group時,解析資料頁返回eof時被忽略,導致錯誤處理邏輯被觸發。

V3.0

  • V4.1.4

  • V4.0.19

  • V3.2.29

  • 繞過方式:用hiveqe執行query,設定GUC參數:set hg_experimental_force_access_dlf_paimon_via_hiveqe = on;set hg_experimental_force_access_dlf_iceberg_via_hiveqe = on;hg_experimental_enable_access_dlf_via_fse = off;

  • 升級至最新版本。

P0

bulkload提交空檔案導致flush失敗。bulkload提交了一個file size0的檔案,導致後續的flush開啟這個檔案讀meta時失敗。

bulkload觸發deletion compaction時,被pick的檔案中所有行都被標記刪除,產生空檔案。

V3.1

  • V4.1.2

  • V4.0.18

  • V3.2.29

  • V3.1.43

  • 繞過方式:設定GUC參數並重導表:set hg_serverless_computing_run_compaction_before_commit_bulk_load = off;

  • 升級至最新版本。

P2

二級索引包含bool類型時,Fixed plan寫入報錯。建立global indexinsert時報錯:ERROR: XX000: internal error: unexpected error, failed to write, detail: Unsupported type in fixed dispatcher.

fixed dispatcher不支援bool類型在二級索引中的寫入。

V4.0.0

  • V4.0.16

  • V4.1.2

  • 升級至最新版本。

P2

Holo FDW跨執行個體查詢失敗。升級4.0後使用外表查詢時報錯:Fetch table group shards failed on meta proxy:Loading cached shard location value for table group[...] failed

FDW載入緩衝的shard location值時失敗。

V4.0.6

  • V4.0.15

  • V4.1.1

  • 升級至最新版本。

P2

從脫敏表寫入資料到含自增列的目標表時出現非預期行為。在Hologres V4.0及以前版本,從脫敏表寫入到另一個表時,如果目標表存在自增列,會出現coredump或報錯行為異常。

代碼假設parsetree->targetListrte_insert->insertedCols一一對應,但當目標表含有自增列時假設不成立。parsetree->targetList包含自增列和使用者明確寫入的列,而rte_insert->insertedCols只包含使用者明確寫入的列。

V3.1

  • V3.2.26

  • V4.0.14

  • V3.1.42

  • 繞過方式:不要使用自增列。

  • 升級至最新版本。

P2

Array Ref介面線程不安全導致coredump。從Hologres V2.2開始,worker層級shuffleQE v2shuffle邏輯中,多線程訪問array->type時可能出現coredump,arraytype欄位變為非法值。

ArrayRef的擷取type介面雖標記為const,但使用mutable關鍵字使成員變數type_可改。多線程同時擷取type時可能破壞type_的control block,導致安全執行緒問題。

V3.1

  • V4.1.6

  • V4.0.21

  • V3.2.31

  • V3.1.45

  • 臨時繞過:關閉worker層級shuffleQE v2。set hg_experimental_enable_worker_level_connection = off; set hg_experimental_enable_qe_v2 = off;

  • 升級至最新版本。

P2

已建立的Dynamic table執行alter definition加列時報錯。base表為物理分區表、DT為邏輯分區表時,對DT執行alter definition報錯:ERROR: New definition is not supported in incremental mode: Multiple partitions of table XXX is selectedERROR: New definition is not supported in incremental mode: No partitions of table XXX is selected

create流程中已關閉GUC忽略QO分區數檢查,但alter definition流程未同步該邏輯。

V3.1

  • V3.1.40

  • V3.2.24

  • V4.0.12

  • V4.0.13

  • 繞過方式:設定GUC參數:set hg_experimental_check_selected_partition_table_number_for_dynamic_table = off;之後再執行alter definition。

  • 升級至最新版本。

P2

建立External Dynamic table時報主鍵重複錯誤。當External DTselect queryjoinunion多個相同表時,產生的base table list包含重複項,插入系統資料表時報錯:ERROR: duplicate key value violates unique constraint "pg_holo_external_dynamic_table_dependencies_name_index"

dtexternal dt都存在該問題。dt的系統資料表沒有主鍵所以插入重複記錄未報錯,但external dt的系統資料表有主鍵約束,不允許插入重複記錄。

V4.0

V4.0.13

  • 升級至最新版本。

P2

char(n)類型資料執行彙總查詢時報錯。開啟AQE後執行select col1, max(col2) from t1 group by col1時報錯:hos_exception: Internal error: HGERR_code XX000 ExecuteQuery failed, last errmsg: syntax error at or near "4294967291"

ORCA中對於輸出結果為char類型的agg未推導type_modifier欄位,導致agg結果的char類型type_modifier被置為-5(即4294967291)。開啟AQE時嘗試建立char(4294967291)類型欄位,超出長度限制導致報錯。

V3.1

  • V3.1.39

  • V3.2.24

  • V4.0.12

  • V4.0.13

  • 繞過方式:關閉AQE:alter database xxx set hg_experimental_enable_adaptive_execution = off;

  • 升級至最新版本。

P2

view中包含無別名子查詢時,snapshot SQL執行失敗。在viewselect語句中使用了subquery alias optional功能(子查詢未指定別名)後,執行hg_dump_script產生的snapshot sql會報錯:unnamed_subquery不存在。

pgview rule中推導view definition sql時未強制給subquery指定別名。當使用者的viewsubquery alias未指定別名時,推匯出的view definition sql也沒有給subquery指定名字,但target list中卻指定了名字,導致sql解析失敗。

V4.0

  • V4.1.6

  • V4.0.12

  • 繞過方式:使用者將這類view進行create or replace方式重建,給每個subquery都指定別名。

  • 升級至最新版本。

P1

Paimon DV表按PK group後出現重複記錄。當Parquet檔案中存在物理格式為FIXED_LEN_BYTE_ARRAY、邏輯格式為decimal且編碼格式為plainpage,讀取該列的record batch跨越頁邊界時,僅該record batch中頁邊界之後的資料會被錯誤放置於record batch開始處。

Parquet decoder放置資料時未加上位移量,導致record batch跨越頁邊界時資料位元置錯誤。

V3.1.0

  • V3.1.39

  • V3.2.23

  • V3.2.24

  • V4.0.12

  • 繞過方式:執行select hg_admin_command('set_global_flag', 'enable_create_decimal_array_v2 = true');

  • 升級至最新版本。

P2

MC表切換成Common Table鏈路後,Auto Analyze擷取不到表最新的last modified time資訊。使用者升級到Hologres V3.0.51後,查詢外表時從普通鏈路改成Common Table鏈路後,OOM報錯仍然存在。MC表三層模型情況下,common table鏈路擷取的responseschema name會變成default而非Holoproject_name,導致Auto Analyze批量擷取外表的last modified timestamp失敗,外表收集不到變化資訊。

common table鏈路與holo_native在三層模型處理上未對齊。fetcher->GetTables介面在三層模型情況下,holo_native返回的schema_name仍是project_name,但common table返回的schema_name會變成default,導致資料無法回填。

V3.0

  • V3.0.52

  • V3.1.39

  • V3.2.23

  • V3.2.24

  • 繞過方式:手工執行ANALYZE。

  • 升級至最新版本。

P2

Hologres使用CommonTable查詢MC資料的時候,oct_get_partition_names介面有緩慢的記憶體流失。Hologres V3.1.22升級到Hologres V3.1.30後出現,記憶體長期來看存在持續緩慢上漲的情況。開啟CommonTableMC分區表進行高頻查詢時觸發。

oct_get_partition_names介面存在緩慢的記憶體流失,長期累積導致記憶體持續上漲。

V3.0

  • V3.0.51

  • V3.1.36

  • V3.2.18

  • V4.0.7

  • 繞過方式:這個記憶體流失比較緩慢,當holo_worker記憶體較高的時候,可以重啟記憶體高的pod來恢複,如果pod比較多,可以重啟執行個體。

  • 升級至最新版本。

P1

Union allhash joinprobe側,第一個孩子中hash join產生的runtime filter被推到第二個孩子中,導致查詢結果資料缺失。

Runtime filter經過映射下推到union all的第二個孩子過程中,合并了第一個孩子中的RF,導致錯誤下推。

V3.1

  • V3.1.39

  • V3.2.23

  • V3.2.24

  • V4.0.12

  • 繞過方式:設定GUC參數:alter database set hg_experimental_enable_runtime_filter_push_thru_union_all=off;

  • 升級至最新版本。

P2

曾經rename過或alter schema過的dynamic table,升級到Hologres V4.0.7及以上版本,無法自動重新整理。報錯:ExecuteQuery failed, last errmsg: Can not find dynamic table properties of XXXrelation "XXX" does not exist

dynamic table需要在driver中定期從FE擷取最新properties。代碼從table driver轉移到driver master時,漏掉了同步最新table nameschema name的代碼,導致升級後使用首次建立時的名稱無法重新整理。

V4.0.7

  • V4.0.10

  • V4.0.13

  • 升級至最新版本。

P2

CTAS(Create Table As Select)在createstmt階段執行QO最佳化時,存在影響效能的最佳化步驟。

CTAS語句在createstmt階段走QO最佳化時,部分最佳化步驟不必要地影響了效能。

V4.0

  • V4.0.10

  • V4.0.13

  • 升級至最新版本。

P1

增量重新整理的動態表使用ANY_VALUE函數彙總時計算結果不正確。基表欄位只有一個值,但查詢DT表出現多個值。

FinalizeStateRows時錯誤將result_array的產生放在迴圈體裡面,該bugCP3.2版本。

V3.2

V3.2.24

  • 繞過方式:將該函數換成MIN/MAX函數,如select id, sum(col1), min(col2) from t1 group by id

  • 升級至最新版本。

P2

查詢外表時,從普通鏈路改成Common Table鏈路後,OOM報錯增多。報錯:ERROR: internal error: common table memory pool out of memory

Common Table鏈路在Auto Analyze收集時許可權有變化,系統無法擷取表的last modified time,導致auto-analyze無法觸發,統計資訊未及時更新引發OOM。

  • V3.0.42

  • V3.1

  • V3.2

  • V4.0

  • V4.0.9

  • V3.1.38

  • V3.2.21

  • V3.0.51

  • V3.2.24

  • 繞過方式:手動執行ANALYZE。

  • 升級至最新版本。

P2

Dynamic table refresh同時開啟多行事務時,走Serverless報錯。

PatchTG不存在的報錯提前到FE檢查,但未考慮Serverless特殊情況。在Follower計算群組上執行無法自動路由的Serverless DML時會觸發。

V4.0

  • V4.0.9

  • V4.0.13

  • 繞過方式:走DML自動路由(如賦予Leader計算群組許可權);或串連Leader warehouse執行SQL或建立DT。

  • 升級至最新版本。

P2

Query OOM(記憶體溢出)。

shuffleec優先順序被改低,導致CPU較滿時搶不到時間片,build端擷取資料較慢,runtime filter構建延遲,probe端讀取過多資料導致RF過濾效率降低。

V4.0.x之後

  • V4.0.10

  • V4.0.13

  • 繞過方式:設定GUC參數:hg_experimental_enable_qe_v2 = onhg_experimental_runtime_filter_wait_time_ms = 10000hg_experimental_wait_for_all_runtime_filters = on

  • 升級至最新版本。

P1

部分登入審計日誌中client_addr欄位為空白。

Gateway彙報登入審計日誌時額外調用getpeername擷取用戶端IP,若此時用戶端串連已異常斷開則無法擷取。

支援登入審計日誌的所有版本

V4.0.13

  • 升級至最新版本。

P2

使用preparestmt執行包含clustering key的查詢時報錯:ERROR: XX000: Dispatch query failed: internal error: DataType::STRING column range conjuncts should use string literal or parameter ref.

mask_md5clustering key,在preparestmtmask_md5 in (md5($1),md5($2))無法常量摺疊,導致提取的clustering filter中帶上了md5函數,後端無法解析該filter而報錯。

V1.1

  • V3.1.37

  • V3.2.20

  • V4.0.8

  • V3.2.24

  • 繞過方式:不使用preparestmt;或將mask_md5 in (md5($1),md5($2))改為mask_md5 = md5($1) or mask_md5 = md5($2)

  • 升級至最新版本。

P2

使用者執行帶limitquery或主動cancel早停時,小機率發生coredump,導致query執行失敗,worker重啟。

SplitFactoryClose函數中進行了資源釋放操作,但沒有使用自己的ExecutionContext,導致資源釋放時機早於其他函數執行結束,引發coredump。

V3.2.4

  • V4.0.7

  • V3.2.19

  • V3.2.24

  • V4.0.13

  • 繞過方式:設定GUC參數:alter role all set hg_experimental_enable_qe_v2 = off;

  • 升級至最新版本。

P2

TableGroup unloadHoloweb無法登入,元倉報錯ERROR: 42704: Table group[bizp.bizp_tg_default] is not found in warehouse bdmp_api_warehoue。Gateway指標顯示建立串連請求多、耗時高,短時間建立fixed fe串連數很多,消費binlog啟動時拿鎖時間久,並發多時會卡insert。

發生unload時,在舊的warehouse上的binlog/fixed plan等新請求在bhclient中會retry 27.5s。fixed fe上消費binlog是串連ec同步調用這個方法,當發生retry時會卡串連ec,導致fixed fe建立串連建立卡住,從而導致串連堆積。

V3.2

V4.0.8

  • 繞過方式:停止binlog消費任務,改Flink作業使用正確的warehouse消費;或使用者側登入Holoweb把未載入的table group load到目標計算群組,如果Holoweb無法登入,需要找FE研發後台重啟gateway。

  • 升級至最新版本。

P2

Hologres V3.1版本Dynamic Table開啟auto refresh後,容器記憶體(監控尺度拉到7天層級)持續上漲,holo worker記憶體穩定但FE記憶體升高。重複執行hg_generate_query_options_for_dynamic_table時記憶體持續上漲。

UDF hg_generate_query_options_for_dynamic_table存在記憶體流失。UDFnew了一個HoloQmDispatcher對象,雖然使用shared_ptr,但DispatcherManager會將其放入以query_idkeymap中。代碼建立的query_id不是UDF執行queryquery_id,而是一個單獨的query_id。正常query結束時應調用RemoveDispatcher(query_id)刪除dispatcher,但代碼中漏了這一步。DispatcherManager生命週期與conn進程綁定,導致dispatcher對象不斷累積。

V3.1.0

  • V4.0.0

  • V3.1.26

  • V3.2.8

  • 繞過方式:在pg_stat_activity中找到並kill掉長串連;或註冊cron job自動清理超過1小時的串連:SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE length(query) > 0 AND pid != pg_backend_pid() AND backend_type = 'client backend' AND state = 'idle' AND application_name = 'DynamicTableTableDriver' AND current_timestamp - backend_start > '1 hour';

  • 升級至最新版本。

P2

執行個體中存在2worker記憶體高於其他worker,且無shard傾斜。監控顯示FE記憶體差距過大,從記憶體開始上漲時間點查詢,存在長串連存活很久且執行了大量DDL(query_count > 1000)。

DDL執行流程中存在記憶體流失。QueryDesc對象的記憶體釋放依賴query結束時MemoryContext的整體釋放,但UtilityStmt(廣義DDL)的記憶體配置在長生命週期的MemoryContext中,導致query層級MemoryContext釋放時不會釋放它,產生記憶體流失。

所有版本

  • V3.1.22

  • V3.2.5

  • V3.2.24

  • 繞過方式:關閉存在記憶體流失的長串連即可釋放記憶體。可通過SQL排查:SELECT pid, session_id, count(*) as query_count, max(query_start) FROM meta_warehouse.query_info WHERE query_start > now() - '1 hour'::interval AND command_tag NOT IN ('INSERT','SELECT','DELETE','UPDATE') GROUP BY 1,2 ORDER BY 3 DESC LIMIT 20;

  • 升級至最新版本。

20262

嚴重等級

報錯/問題描述

缺陷原因

出現版本

修複版本

規避建議

P1

建立含有空格、特殊字元和大小寫複雜表名的表時,執行個體短暫重啟。

在從系統資料表擷取表的table property時狀態錯誤,導致執行個體coredump。

  • V4.1.6

  • V4.0.23

  • V4.1.7

  • V4.0.24

  • 升級至最新版本。

P2

ai_gento_file聯用時會報錯。

function ai_gen(text, text, file, bytea) does not exist

ai_gento_file聯用時,類型轉換錯誤,導致函數報錯。

  • V4.1.5

  • V4.0.21

  • V4.1.6

  • V4.0.22

  • 升級至最新版本。

P1

如果某計算群組沒有載入源表所在Table Group,在使用該計算群組通過輕量級串連模式(Flink源表參數connection.fixed.enabled為開啟或根據執行個體版本預設開啟狀態)消費源表Binlog後,該執行個體會持續無法建立串連。

在通過輕量級串連模式消費Binlog的初始化階段,由於當前計算群組未載入Table Group,請求會自動重試。重試期間錯誤持有全域鎖,導致無法響應建立串連。

  • V3.1.13

  • V3.2.10

  • V4.0.0

  • V4.0.8

  • 升級至最新版本。

  • 若執行個體串連數充裕,將源表connection.fixed.enabled設為false,臨時繞過此問題。

P1

含有雙流Join的增量動態表首次重新整理或REFRESH OVERWRITE時有機率報錯。

ERROR: hos_exception: Internal error: status { code: OPERATION_INVALID_ARGUMENT message: "duplicate key value violates unique constraint...

如果定義中有基於雙流Join結果的彙總,則可能導致彙總結果錯誤。

首次增量重新整理有小機率會將短時間內已經被刪除的資料計算進去,導致報錯或者結果錯誤。

  • V3.2.5

  • V4.0.1

  • V4.1.1

  • V4.0.21

  • V4.1.6

  • 升級至最新版本。

P2

array_to_string函數在處理兩個入參請求時,如果輸入資料包含NULL值,則該NULL值將參與計算。這與PostgreSQL的行為不一致,預期應為NULL值不參與計算。

說明

該函數在處理三個入參請求時,NULL值也會參與計算,與PostgreSQL行為一致。

HQE引擎在處理該函數兩個入參請求時,計算邏輯存在缺陷。

  • V3.0.1

  • V3.1.1

  • V3.2.1

  • V3.0.46

  • V3.1.25

  • V3.2.24

  • 升級至最新版本。

20261

嚴重等級

報錯/問題描述

缺陷原因

出現版本

修複版本

規避建議

P2

在使用JOIN且執行引擎是PQE時,報錯

ERROR: XX000: internal error: unmatched data row schema number

Join 和 PQE情境下,Join的輸出資料行和PQE的輸入列對不齊導致報錯。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.33

  • V3.2.24

  • V4.0.13

  • 改寫SQL,避免使用PQE引擎執行。

  • 升級至最新版本。

P2

使用了PQE引擎,執行了between計算,報錯

ERROR: 0A000: ORCA failed to produce a plan : Operator BetweenAnd not supported

PQE引擎不支援between運算元計算。

  • V3.2.0

  • V4.0.0

  • V3.2.24

  • V4.0.13

升級至最新版本。

P1

timestamp作為segment key或者cluster key時,進行過濾會導致最終結果沒有被過濾。

儲存引擎在當前提取segment key有問題,導致資料未過濾。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.38

  • V3.2.24

  • V4.0.13

升級至最新版本。

P1

升級到V4.0後記憶體持續升高,且在沒有任何查詢時也沒有下降和平穩的趨勢。

V4.0 版本在 result cache 鏈路遇到dict array會發生記憶體泄露。

  • V4.0.0

  • V4.0.10

  • 關閉開關,臨時繞過該問題。

     select hg_admin_command('set_global_flag', 'enable_dict_array=false');
  • 升級至最新版本。

P2

CTE複用的情況下無法產生plan,報錯

ORCA failed to produce a plan : No plan has been computed for required properties

由於QO未正確更新CTE計數,導致最終報錯。

  • V3.2.0

  • V4.0.0

  • V3.2.24

  • V4.0.7

  • 關閉開關,臨時繞過該問題。

    ALTER DATABASE <database_name> set set hg_cte_strategy = 'inlining'; 
  • 升級至最新版本。

P2

使用範圍方式取數組元素報錯,例如array_column[1:1]。

QO處理數組元素有問題,導致最終報錯。

  • V3.0.0

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.39

  • V3.2.24

  • V4.0.13

升級至最新版本。

P1

同時滿足如下所有條件時,若Shard數大於bucket數,則PQE輸出的資料不經過shuffle直接和另外一張同個Table Group的表的普通列存scan的結果做JOIN、UNION ALL 計算,有機率漏資料。

  • 列存表走主鍵索引,觸發 point seek

  • 資料直接使用PQE計算

列存表使用主鍵索引的時候QO產生的計劃裡沒有使用Gather運算元,導致如果bucket數不等於shard數,一個bucket裡有多個shard,pqe query 計算的shard_count/bucket_count的機率漏資料。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.39

  • V3.2.24

  • V4.0.10

升級至最新版本。

P2

  • 當使用者rebuild的表,表名含有大寫字母又沒有其他特殊字元時。rebuild報錯,任務失敗,progress裡顯示擷取view失敗。

  • 當使用者rebuild的表,列名含有大寫字母又沒有其他特殊字元時。rebuild報錯,任務失敗,progress裡顯示暫存資料表缺列。

rebuild在老版本中並未考慮大小寫情況,所以導致失敗。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.40

  • V3.2.25

  • V4.0.13

升級至最新版本。

P2

subquery中包含case when運算式時,報錯如下:

ERROR: column "xxx" does not exist

查詢最佳化工具處理該情境時存在Bug,導致無法產生可用的查詢計劃。

  • V3.0.0

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V4.1.0

  • V3.0.53

  • V3.1.41

  • V3.2.25

  • V4.0.14

  • 關閉開關,臨時繞過該問題。

    ALTER DATABASE <database_name> set hg_experimental_reuse_switch_case_expression =off;  
  • 升級至最新版本。

P1

Flink消費Hologres Binlog時,如果Flink作業中定義的源表(Source Table)僅包含Hologres物理表中的部分列,則消費的資料可能會出現非預期的空值。

FlinkHologres Connector在處理消費Binlog部分列的情境時存在缺陷。

  • Flink VVR 11.311.4,且Hologres版本為V4.0.1及以上。

  • Flink VVR 11.311.4版本的熱修複於202619日正式發布。

  • 修複時間後重啟Flink作業即可。

  • 修複前,可在Flink源表的WITH參數中增加如下配置並重啟作業:source.binlog.project-columns.enabled' = 'false'

P1

已完成的Query可能未能正確清理,從而導致事務殘留,進而造成表鎖無法釋放。

目前的版本在部分已結束啟動並執行Query的記憶體回收(GC)邏輯上存在缺陷,導致查詢標識符(query_id)殘留。

  • V2.2.0及以下版本。

  • V3.0.0

  • V2.2.32

  • V3.0.12

  • 升級至最新版本。

  • 使用如下SQL手動清理殘留的query:

    SELECT pg_terminate_backend(pid) FROM hg_stat_activity WHERE query_id = <query_id>;

2025年缺陷

202512

嚴重等級

報錯/問題描述

缺陷原因

出現版本

修複版本

規避建議

P0

查詢 DLF 的 Paimon Postpone 表時,會讀取到已提交但尚未進行壓縮的資料,從而導致主鍵表中出現主鍵重複的情況。

Hologres升級至V3.2.12版本後,Paimon SnapshotReader類的介面行為發生了變更:

  • 舊版Paimon SDK:SnapshotReader在構造時,會自動為postpone表添加onlyReadRealBuckets選項。該選項確保唯讀取已完成Compaction的最終資料。

  • 新版Paimon SDK:移除了上述自動添加邏輯。現在,使用者需要手動為SnapshotReader配置此選項,才能實現唯讀最終資料的行為。

  • V3.2.12

  • V4.0.0

  • V3.2.24

  • V4.0.11

  • 升級至最新版本。

P1

在使用DLF外表時,當設定Paimon表的bucket_num=-2時,在涉及多表JOIN的情境中,由於產生的JOIN計劃不正確,導致資料未能關聯,從而造成查詢結果的不準確。

當設定Paimon表的bucket_num=-2時,在涉及多表JOIN的情境中,由於產生的JOIN Plan不正確,導致資料未能有效關聯,從而造成查詢結果不準確。

  • V3.2.0

  • V4.0.0

  • V3.2.21

  • V4.0.8

  • 關閉開關,臨時繞過該問題,設定SQL如下:

    ALTER DATABASE <database_name> set hg_experimental_use_shard_info_in_hashed_dist_spec=off;  
  • 升級至最新版本。

P1

在使用CTE運算式時,發現拆分執行與聯合執行的結果存在差異。

在使用CTE運算式時,儘管在執行中間結果時出現了失敗,但並未將該失敗情況上報給FE,最終導致了結果的錯誤。

  • V3.2.0

  • V4.0.0

  • V3.2.17

  • V4.0.6

  • 升級至最新版本。

P1

在使用者具備相應許可權的前提下,holgores.hg_query_log 和 hologres.hg_table_info 的查詢結果為空白。

holgores.hg_query_log 和 hologres.hg_table_info 資料未上報。

  • V2.0.39

  • V2.2.16

  • V3.0.0

  • V2.0.47

  • V2.1.44

  • V2.2.24

  • V3.0.2

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • 升級至最新版本。

P0

含有多流JOIN 的 Dynamic Table增量重新整理時,當只有一條流有資料且資料有回撤時,重新整理結果出錯,結果和查詢結果不一致。

Dynamic Table進行增量重新整理時,存在僅在單流回撤情況下未能正確處理的問題,導致應從結果表中刪除的資料未被正確移除,從而造成結果表的錯誤。

  • V4.0.1

  • V4.0.9

  • 首先對錶資料進行修改,然後使用 refresh overwrite 修正已出現錯誤的資料,具體操作如下所示的兩個 SQL:

    alter table xxx set (refresh_guc_hg_experimental_incremental_agg_insert_bulkload_batch_size = 1);
    refresh overwrite table xxx with (refresh_mode = 'incremental');
  • 升級至最新版本。

P1

升級至V4.0版本後,出現了Worker OOM錯誤,相關報錯資訊類似:

  1. 報錯:ERROR: XX000: ERPC_ERROR_CONNECTION_CLOSED

  2. 報錯:ERROR: Dispatch query failed: Connect to xxx.xxx.xxx:xxx failed

為了在記憶體中緩衝更多資料,V4.0版本對記憶體結構進行了最佳化。然而,新的記憶體結構在處理Decimal類型時存在缺陷,因此當包含Decimal列的表參與HashJoin時,可能會導致執行個體發生CoreDump。

  • V4.0.0

V4.0.10

  • 關閉查詢記憶體最佳化,臨時繞過該問題,SQL設定如下:

    select hg_admin_command('set_global_flag', 'enable_selection_vector=false');
  • 升級至最新版本。

P1

查詢 MaxCompute Append Delta Table 有資料的表時,查詢返回為空白。

受到 Split Cache 影響,導致查詢結果為空白。

  • V4.0.0

V4.0.9

  • 關閉 Split Cache,臨時繞過該問題。

ALTER DATABASE <database_name> set hg_experimental_enable_maxcompute_sdk_splits_cache=off;
  • 升級至最新版本。

P0

V4.0版本中使用邏輯分區表,邏輯分區表包含主鍵並設定了clustering_key時,發現有主鍵資料重複。

V4.0 版本為了最佳化邏輯分區表的寫入效能,支援多分區 Flush,在多分區 Flush 時,Cluster Index 的處理邏輯存在 Bug,導致寫到Apsara Distributed File System上的 AliORC 檔案(列存內表的資料檔案)內部的 Cluster Index可能有錯,Cluster Index 錯誤可能導致資料存在但查不出來,最終導致在寫入更新情境下,可能會認為不存在老資料,直接寫了一條新的,從而產生重複。

  • V4.0.0

V4.0.9

  • 升級至最新版本。升級至最新版本後,增加了對於錯誤檔案的檢測邏輯,如果掃描到寫錯的檔案,報錯如下clustered_index size [x] incorrect。此時需要你對報錯的表執行 Full Compaction操作修複檔案。更多說明請參見分區表常見問題

P1

升級到V4.0版本後,出現Worker OOM 報錯,報錯資訊類似。報錯1:ERROR: XX000: ERPC_ERROR_CONNECTION_CLOSED

報錯2:ERROR: Dispatch query failed: Connect to xxx.xxx.xxx:xxx failed

為了能夠在記憶體中緩衝更多的資料,V4.0 版本最佳化了記憶體結構,新的記憶體結構對於資料大小計算不準,導致過小的預估了需要放進記憶體的資料,最終導致了記憶體不夠引起了worker OOM。

  • V4.0.0

V4.0.7

  • 關閉 Result Cache,臨時繞過該問題。

ALTER DATABASE <database_name> set hg_experimental_enable_result_cache=off;
  • 升級至最新版本。

202511

等級

報錯/問題描述

缺陷原因

出現版本

修複版本

規避建議

P1

Flink即時寫入情境中,drop目前使用者,後在建立同名的有許可權的使用者,即使建立串連,仍然報錯沒有許可權。

FixedFE組件使用者權限緩衝更新策略問題。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.38

  • V3.2.21

  • V4.0.9

  • 升級至最新版本。

P1

Dynamic Table 使用 Stream 模式增量重新整理資料時,對 base 表做insert/update/delete,立刻truncateinsert overwrite,再次重新整理時,重新整理資料不正確。

Dynamic Table 使用 Stream 模式增量重新整理資料時,對 base 表做insert/update/delete,立刻truncateinsert overwrite,再次重新整理時,同一個主鍵可能消費到重複的delete訊息,導致Dynamic Table結果不正確。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.37

  • V3.2.20

  • V4.0.8

  • 升級至最新版本。

P2

通用型執行個體執行SELECT hg_rebalance_instance()進行rebalance時報 shard group not found的錯誤。

通用型執行個體rebalance預設傳參錯誤,導致報錯。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.37

  • V3.2.20

  • V4.0.8

  • 升級至最新版本。

P2

擴縮過程中,在 Table Group 的 Leader 計算群組和 Follower 計算群組目前會很低機率遇到 ShardPermissionDenied的報錯,導致秒級的寫入失敗。

擴縮過程中,在 Table Group 的 Leader 計算群組和 Follower 計算群組目時預期會捕捉失敗,並重試,但是ShardPermissionDenied的報錯,沒有轉為可重試的 kShardHotMigrationInProgress,導致報錯到使用者端

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.37

  • V3.2.20

  • V4.0.8

  • 升級至最新版本。

P2

訪問 MaxCompute 鏈路切換到 Common Table 鏈路後,當 Dynamic Table 使用了 MaxCompute 外表時,重新整理報錯,報錯資訊如下:

MaxCompute csdk open reader failed: set_reader_filter, parser filter error: (Invalid: File is smaller than indicated metadata size) filter= (ARROW1)

Dynamic Table傳遞plan的方式和普通olap query不同,傳遞過程中傳遞的binary被寫壞了,導致filter解析失敗。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.36

  • V3.2.17

  • V4.0.6

  • 關閉 Common Table 訪問鏈路,臨時繞過該問題。

ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
  • 升級至最新版本。

P2

使用專家許可權模型時,在使用者被賦予 Dynamic Table 的 Owner 許可權後,使用Dynamic TableOwner身份對歷史表或者分區重新整理時,仍報錯Permission Denied。

因為重新整理的身份時首次重新整理緩衝下來的,導致修改許可權身份後報錯。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • 升級至最新版本。

P2

查詢DLF的資料時,對timestamp列的進行range filter查詢時報錯,報錯資訊如下:

ERROR:  XX000: Dispatch query failed: Internal error: hos_exception: Internal error: status { code: SERVER_INTERNAL_ERROR message: "Call iterator Next() Failed: is_meta_mirror_iter: 1, error: hos_exception: [meta_util.cc:292 CompareSimpleValue] HGERR_code XX000 HGERR_msge internal error: value1 should has long literal HGERR_end" err_data { filename: "snapshot_api.cc" lineno: 1136 funcname: "GetSnapshotDataSetBatch" sqlerrcode: 2600 message: "internal error: Call iterator Next() Failed: is_meta_mirror_iter: 1, error: hos_exception: [meta_util.cc:292 CompareSimpleValue] HGERR_code XX000 HGERR_msge internal error: value1 should has long literal HGERR_end" context: "" } }

literal類型錯誤處理錯誤,錯誤的使用了long進行處理

  • V3.2.0

  • V4.0.0

  • V3.1.17

  • V4.0.6

  • 關閉 Bigmeta 訪問鏈路,臨時繞過該問題。

ALTER DATABASE <database_name> set hg_experimental_enable_big_meta=off;
  • 升級至最新版本。

P2

當主鍵中包含boolean類型的列,且DML插入資料少於10條時,報錯,報錯資訊如下:

ERROR:  XX000: internal error: hos_exception: [literal.cc:181 Init] HGERR_code XX000 HGERR_msge internal error: Unsupported output data type BOOL in type { id: LIST children { id: BOOL nullable: false field_name: "is_ciga" } } long_literal { array { values: 0 values: 0 values: 0 values: 0 values: 0 values: 0 values: 0 } }. HGERR_end

Query Engine會把boolean類型的array轉化為uint8 array,hybrid dml在建立row group filter時未考慮這個情境,導致row group filterliteral的類型(bool)和實際的實值型別(long)不匹配。

  • V3.1.0

  • V3.2.0

  • V3.1.25

  • V3.2.7

  • 關閉hybrid dml,臨時繞過該問題。

ALTER DATABASE <database_name> set hg_experimental_enable_hybrid_dml = off;
  • 升級至最新版本。

P2

使用Remote UDF 時,報錯如下:

 [Invoke function 'random_between' qualifier 'LATEST' compression 'None' failed: Fail to check http status: 403, {"RequestId":"xxxxx","Code":"SignatureNotMatch","Message":"The request signature we calculated does not match the signature you provided. Check your access key and signing method."} with request: Request {
  url: /2023-03-30/functions/random_between/invocations,
  method: POST,
  params: {qualifier: LATEST},
  headers: {Authorization: xxxxx}

調用時多執行緒存在問題,導致最終報錯。

  • V3.1.0

  • V3.2.0

  • V3.1.25

  • V3.2.8

  • 升級至最新版本。

P1

Dynamic Table 使用 Stream 模式增量重新整理資料時,若 base 表 compaction 後立刻 refresh,可能會導致增量資料亂序。

因為同一個key消費到的增量是亂序的,會導致最終的sink表結果錯誤。

  • V3.1.0

  • V3.2.0

  • V3.1.23

  • V3.2.6

  • 升級至最新版本。

P1

針對Rebuild功能:

  • 未開啟Binlog模式:將物理分區表Rebuild成邏輯分區表時,最終的邏輯分區表會錯誤地開啟Binlog。

  • 開啟Binlog模式:物理分區表Rebuild成邏輯分區表時,最終的邏輯分區表未開啟Binlog。

rebuild partition to logical partition操作時,對Binlog的處理邏輯存在錯誤。

  • V3.1.1

  • V3.2.1

  • V4.0.1

暫未修複

P2

使用create table as讀的是DLF外表,報錯如下:

check permission for dlf table failed: failed to check permission: DLF error,


create table as在讀取DLF V2.0的表時,許可權讀取錯誤。

  • V3.0.1-V3.0.49

  • V3.1.1-V3.1.34

  • V3.2.1-V3.2.16

  • V4.0.1-V4.0.4

  • V3.0.50

  • V3.1.35

  • V3.2.17

  • V4.0.6

  • 升級至最新版本,並改用Rebuild功能。

P2

源表使用了資料脫敏,當使用create table as語句時,報錯the insert table has not set security label。樣本 SQL 如下:

create table tb1(id int, data text);
insert into tb1 select i, i::text from generate_series(1, 10) i;
security label for hg_anon on column tb1.data is 'default_value';

set hg_anon_enable = t;
create table bk as select * from tb1;

資料脫敏的設定沒有傳遞到create table as過程中,導致報錯。

  • V3.1.1-V3.1.32

  • V3.2.1-V3.2.12

  • V4.0.1-V4.0.2

  • V3.1.33

  • V3.2.13

  • V4.0.3

  • 升級至最新版本,並改用Rebuild功能。

P0

使用者使用array高階函數時,如果返回結果數組裡面的元素都是相同的,則有可能去重為只有一個元素的數組。樣本SQL:

create table tbl1(col1 text[]);
insert into tbl1 values(array['1', '1']);
select hg_array_map(lambda[x => '1' || '1'], col1) from tbl1; 
# 返回結果是{11}, 預期是{11, 11}

create table tbl2(col1 jsonb);
insert into tbl2 values('{"a": "a", "b": "b", "c": null}');
select hg_array_map(lambda[x => col1 ->> x], array['c', 'd']) from tbl2; 
# 返回結果是{NULL}, 預期是{NULL, NULL}

select hg_array_map(lambda[x => case when col1 ->> x is null then '' else col1 ->> x end], array['c', 'd']) from tbl2;
# 返回結果是{''}, 預期是{'', ''}

select hg_array_map(lambda[x => case when col1 ->> x is null then '1' else col1 ->> x end], array['c', 'd']) from tbl2;
# 返回結果是{1}, 預期是{1, 1}

數組計算架構對所有元素相同的數組處理存在缺陷。

  • V3.2.1-V3.2.16

  • V4.0.1-V4.0.5

  • V3.2.17

  • V4.0.6

  • 升級至最新版本。

202510

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P0

使用 HoloWeb 的 Table Resharding 功能時,若任務異常並點擊“取消任務”,發現系統未正確清理暫存資料表。
此時手動執行 DROP TABLE 刪除該暫存資料表,會導致 Frontend(FE)卡住,無法響應。































































HoloWeb內部整合的清理函數存在缺陷

出現版本:

  • V2.0.24

修複版本:

  • V2.2.28

升級至最新版本。

P2

HG_MOVE_TABLE_TO_TABLE_GROUP(即Resharding)的目標表,如果表名帶有特殊字元,或表名本身為關鍵字,Resharding 會失敗(不報錯,但是操作後Table Group沒有變化)。

HG_MOVE_TABLE_TO_TABLE_GROUP在需要轉義的場合處理存在問題

出現版本:所有版本

修複版本:需要使用V3.1版本Rebuild功能作為替代。

升級至最新版本,並改用Rebuild功能。

P2

Hologres Serverless Computing計算資源後付費賬單中,“執行個體ID”欄位錯誤展示為<instance_id>_<uid>_<region_id>,預期應展示為<instance_id>

底層配置存在問題。

出現版本:所有版本。時間範圍為2025-09-09 16:00:002025-10-14 16:00:00

修複版本:所有版本。時間範圍為2025-10-14 16:00:00後的賬單。

單獨處理錯誤時間段內的賬單。

202509

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P0

在系統執行Shard Rebalance(如擴縮容、重啟)過程中,若多條請求同時完成,可能導致後台進程異常,進而引發執行個體讀寫失敗。

幕後處理同時執行完成的多條請求時存在缺陷。

出現版本:V3.0.9版本。

修複版本:V3.0.14及以上版本。

升級至最新版本。

P0

Hologres外部表格資料匯入至內部表時,自適應調整匯入速度的功能在同時滿足以下條件時會造成資料丟失:

  • 使用 INSERT INTO ... SELECT ... 方式匯入。

  • 系統資源緊張導致匯入作業自動調整匯入速度。此時,如果外部讀取走到SQE鏈路,可能會導致少量資料片段遺漏,從而造成部分資料丟失。

外部表格資料匯入至內部表的自適應調整匯入速度功能,遇到外部表格資料讀取回退到SQE鏈路時,會導致部分資料丟失。

出現版本:

  • V3.0.1~V3.0.46版本。

  • V3.1.1~V3.1.27版本。

  • V3.2.1~V3.2.9版本。

修複版本:

  • V3.0.47及以上版本。

  • V3.1.28及以上版本。

  • V3.2.10及以上版本。

執行個體層級執行GUC關閉自適應匯入功能。

ALTER ROLE ALL SET hg_experimental_enable_adaptive_adjust_bulkload_dop = off;

P1

設定資料脫敏後,對錶執行update,查出來的結果沒有脫敏。樣本sql:

create table tb1(id int, data text);
create table tb2(id int, data text);
insert into tb1 select i, i::text from generate_series(1, 10) i;
insert into tb2 select i, null from generate_series(1, 10) i;
security label for hg_anon on column tb1.data is 'default_value';

set hg_anon_enable = t;
update tb2 set data = tb1.data from tb1 where tb1.id = tb2.id;
SELECT * FROM tb2 LIMIT 2;
id	| data
----|----
1	  | 1
2	  | 2

設定脫敏後,update對脫敏欄位處理錯誤,導致結果未脫敏。

出現版本:

  • V3.1.0-V3.1.31

修複版本:

  • V3.1.32

升級至最新版本。

P1

執行個體重啟後導致dynamic table不再自動重新整理。

後端調度系統異常導致。

出現版本:

  • V3.0.0-V3.0.45

  • V3.1.0-V3.1.24

  • V3.2.0-V3.2.7

修複版本:

  • V3.0.46

  • V3.1.25

  • V3.2.7

  • V4.0.0

升級至最新版本。

P1

邏輯分區Dynamic Table,開啟自動重新整理後,活躍分區是增量重新整理模式,當分區結束活躍時間時,仍然為增量重新整理沒有自動轉為全量重新整理,且儲存不斷增加。

系統在處理dynamic table活躍分區時,分區狀態處理錯誤。

出現版本:

  • V3.1.0-V3.1.23

  • V3.2.0-V3.2.6

修複版本:

  • V3.1.24

  • V3.2.7

升級至最新版本。

P2

dynamic table設定clustering key,且是nullable屬性,在執行alter dynamic table時報錯clustering_key should not be nullable。

alter dynamic table時未能正常推導clusteringkey的屬性,導致報錯。

出現版本:

  • V3.1.0-V3.1.31

  • V3.2.0-V3.2.11

修複版本:

  • V3.1.32

  • V3.2.12

升級至最新版本。

P2

列存表不設定clustering key,使用insert on conflict do update離線匯入後,再即時寫入,會有機率出現重複pk。


離線寫入時處理主鍵的資料有誤,導致即時寫入沒有檢測到有重複資料,導致最後機率性出現主鍵重複。

出現版本:

  • V3.1.0-V3.1.29

  • V3.2.0-V3.2.9

  • V4.0.0-V4.0.1

修複版本:

  • V3.1.30

  • V3.2.10

  • V4.0.2

升級至最新版本。

P2

insert on conflict有主鍵重複時設定了hg_experimental_affect_row_multiple_times_keep_last參數也有主鍵重複報錯duplicate key value violates unique constraint。

資料重複時,keep lastguc設定沒有生效導致仍然主鍵重複報錯。

出現版本:

  • V3.1.0-V3.1.29

  • V3.2.0-V3.2.9

  • V4.0.0-V4.0.1

修複版本:

  • V3.1.30

  • V3.2.10

  • V4.0.2

升級至最新版本。

P2

升級到V3.1版本後查詢含脫敏欄位的視圖報錯relation "xxx" does not exist。

V3.1版本的資料脫敏在處理視圖時,對視圖中的表名處理錯誤,導致報錯表不存在。

出現版本:

  • V3.1.0-V3.1.22

  • V3.2.0-V3.2.5

修複版本:

  • V3.1.23

  • V3.2.6

升級至最新版本。

P2

使用hg_insert_overwrite + external database 讀取相關外表時,有機率sql卡住。

hg_insert_overwrite處理external database相關表時訪問逾時,導致卡住。

出現版本:

  • V3.1.0-V3.1.21

  • V3.2.0-V3.2.4

修複版本:

  • V3.1.22

  • V3.2.5

升級至最新版本。

202508

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

Query請求出現以下任一情況時,可能在Query結束時觸發Worker卡住問題,進而導致後續對相關表的DDL操作以及有LIMITQuery請求被阻塞:

  • Query請求發生記憶體溢出(OOM)。

  • Query請求被手動取消。

  • Query請求被手動Cancel或因異常結束。

查詢引擎在Query結束時的資源清理過程存在缺陷。

出現版本:

  • V3.1.18版本。

  • V3.2.3版本。

修複版本:

  • V3.1.21及以上版本。

  • V3.2.5及以上版本。

  • 升級至最新版本

  • 發生卡住時重啟執行個體或計算群組。

  • 執行如下命令關閉新版查詢引擎。

    ALTER ROLE ALL SET hg_experimental_enable_qe_v2=off;

P1

使用Holo Client V2.6.0版本,通過阿里雲AccessKey(阿里雲帳號、RAM使用者、RAM角色)串連Hologres執行個體時,在每天的某個時間段內會串連失敗。串連失敗的時間段與使用Holo Client的用戶端時區有關,如東八區為00:00:00+0808:00:00+08無法串連、西五區為19:00:00-0500:00:00-05無法串連。

Holo Client V2.6.0版本對時區處理存在問題。

Holo Client V2.6.0版本(與Hologres執行個體無關)。

Holo Client升級至V2.6.1及以上版本。

P0

Hologres V3.1版本中,若執行個體建立了Dynamic Table並以Stream方式消費基表資料,當Dynamic Table處於唯讀(ReadOnly)狀態時,可能導致執行個體不斷重啟。

該情境會導致資料Flush失敗,從而觸發執行個體不斷重啟。

出現版本:

  • V3.1.1~V3.1.20版本。

  • V3.2.1~V3.2.2版本。

修複版本:

  • V3.1.21及以上版本。

  • V3.2.3及以上版本。

升級至最新版本。

202507

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

使用Serverless Computing匯入資料執行失敗時,中間檔案有機率未刪除,導致執行個體儲存量增加。

中間檔案清理邏輯有機率失效。

出現版本:V3.1.1版本。

修複版本:V3.1.20及以上版本。

  • 重啟執行個體,清理中間檔案。

  • 升級至最新版本。

P2

使用DLF查詢Iceberg的外部表格資料時,結果為空白,未返回任何資料。

Iceberg時檔案解析錯誤,導致查詢為空白。

出現版本:V3.1.1~V3.1.16版本。

修複版本:V3.1.17及以上版本。

升級至最新版本。

P2

使用產生列建表,查詢錯誤ERROR: ORCA failed to produce a plan : Query Translation: No variable entry found due to incorrect normalization of query。樣本SQL如下。

CREATE TABLE lpt1 (
  a TEXT,
  b INT,
  ts TIMESTAMP NOT NULL,
  d TIMESTAMP GENERATED ALWAYS AS (date_trunc('day', ts)) STORED NOT NULL
)
LOGICAL PARTITION BY LIST(d);

CREATE VIEW v1 AS SELECT * FROM lpt1;

SELECT * FROM v1 WHERE ts >= '2025-03-12 01:00:00';

表中有產生列,發起查詢時,最佳化器翻譯產生列錯誤,導致查詢報錯。

出現版本:V3.1.1~V3.1.16版本。

修複版本:V3.1.17及以上版本。

升級至最新版本。

P1

建立Dynamic Table時,Query中有BOOLEAN類型,Refresh報錯: ERROR: Internal error: HGERR_code XX000 HGERR_msge can not get pg type string %s: id: UINT8

Dynamic Table對於BOOLEAN類型的欄位推導錯誤,導致Refresh錯誤。

出現版本:V3.1.1~V3.1.15版本。

修複版本:V3.1.16及以上版本。

升級至最新版本。

P2

Hologres升級到V3.1版本後,hg_dynamic_table_state_size函數查詢結果為空白。

hg_dynamic_table_state_size未適配V3.1版本。

出現版本:

  • V3.1.1~V3.1.15版本。

  • V3.2.0~V3.2.1版本。

修複版本:

  • V3.1.16及以上版本。

  • V3.2.2及以上版本。

升級至最新版本。

P2

Hologres V3.1版本建立Dynamic Table為增量重新整理後,直接刪除Dynamic Table,狀態表仍然保留。

直接刪除增量重新整理的Dynamic Table時,狀態表沒有被正確清理,導致殘留。

出現版本:V3.1.1~V3.1.12版本。

修複版本:V3.1.13版本。

升級至最新版本。

P2

Schema使用rb_or_cardinality_aggRoaringBitmap64位函數時,報錯:Unsupported agg function:public.rb_or_cardinality_agg

RoaringBitmap64位相關函數的Schema推導錯誤,導致跨Schema查詢報錯。

出現版本:

  • V3.1.1~V3.1.11版本。

  • V3.2.0版本。

修複版本:

  • V3.1.12及以上版本。

  • V3.2.1及以上版本。

升級至最新版本。

P2

建立Dynamic Table為邏輯分區表時,Base表指定了欄位為NOT NULL,建立時報錯:failed:the index xx "xxx" should not by nullable

CREATE TABLE t1 (
    day DATE,
    key INT NOT NULL,
    val TEXT
);

INSERT INTO t1 VALUES ('20201010', 1, '2'), ('20201111', 2, '4'), ('20201212', 3, 'test');

CREATE DYNAMIC TABLE dt1 
logical PARTITION BY LIST (day) 
WITH (
    clustering_key = 'day', 
    segment_key = 'day', 
    auto_refresh_mode = 'incremental', 
    freshness = '1 hour') AS
SELECT
    day, MAX(key), val
    FROM t1
    GROUP BY day, val;
failed:the index xx "xxx" should not by nullable

Dynamic TableNOT NULL屬性推導錯誤。

出現版本:

  • V3.1.1~V3.1.11版本。

  • V3.2.0版本。

修複版本:

  • V3.1.12及以上版本。

  • V3.2.1及以上版本。

升級至最新版本。

P2

單表物化視圖存在SUM(DECIMAL)時,執行個體會出現短暫重啟現象。

單表物化視圖計算SUM(DECIMAL)時,由於記憶體未對齊,導致執行個體發生了核心轉儲(coredump)

出現版本:

  • V3.1.1~V3.1.17版本。

  • V3.0.41~V3.0.43版本。

  • V3.2.0~V3.2.1版本。

修複版本:

  • V3.1.17及以上版本。

  • V3.0.44及以上版本。

  • V3.2.2及以上版本。

升級至最新版本。

P1

Hologres執行個體升級至V3.0.41版本後,使用CommonTable鏈路查MaxCompute外部表格時,記憶體緩慢上漲。

CommonTable鏈路查MaxCompute外表時,有記憶體泄露,導致記憶體上漲。

出現版本:

  • V3.1.1~V3.1.17版本。

  • V3.0.41~V3.0.43版本。

  • V3.2.0~V3.2.1版本。

修複版本:

  • V3.1.17及以上版本。

  • V3.0.44及以上版本。

  • V3.2.2及以上版本。

升級至最新版本。

P0

在特定並發情境下,對同一張表使用Serverless Computing執行DML操作時,同時執行TRUNCATE/DROP TABLE操作,可能因引擎內部狀態同步問題,導致該表所在Shard出現讀寫異常。

由於引擎並發處理存在問題,引起Shard內部狀態異常,受影響的Shard將暫時無法提供讀寫服務,可能影響業務中部分表的正常訪問。

出現版本:

  • V2.1.45及以下版本。

  • V2.2.45及以下版本。

修複版本:

  • V2.1.46版本。

  • V2.2.46版本。

  • V3.0.27及以上版本。

  • V3.1.1及以上版本

  • 臨時方式:

    • 錯峰執行DMLTRUNCATE/DROP TABLE操作。

    • 不使用Serverless Computing執行 DML。

  • 推薦方式:

    升級到最新版本。

202506

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

計算群組執行個體擴容時,計算節點偶發性重啟。

系統缺陷,如果表同時存在DML任務、Compaction任務,並執行計算群組擴容時,有機率觸發。

出現版本:V3.0.1版本。

修複版本:V3.0.28及以上版本。

升級到最新版本。

P1

JSONB列式儲存最佳化和GIN索引一起使用時,執行個體會異常重啟。

JSONB列式儲存最佳化和GIN索引存在不相容情況。

出現版本:V3.1.1版本。

修複版本:

  • V3.0.42及以上版本。

  • V3.1.10及以上版本。

  • 刪除表的GIN索引。

  • 升級到最新版本。

P2

Dynamic Table的基表都是View時,執行Refresh會導致執行個體重啟。

當基表是View時,會導致Dynamic TableRefresh時處理錯誤,導致執行個體coredump。

出現版本:V3.1.8版本。

修複版本:V3.1.9及以上版本。

升級到最新版本。

P2

Dynamic Table增量重新整理模式下,Query中有ARRAY_AGG函數,當資料全被Agg Filter過濾後,返回結果是空(期望是null)。

無。

出現版本:

  • V3.0.40版本。

  • V3.1.7版本。

修複版本

  • V3.0.41及以上版本

  • V3.1.7及以上版本

升級到最新版本。

P1

屬性關聯漏鬥函數(finder_funnel)指定時區時,結果計算錯誤。指定時區的樣本SQL如下:

SELECT
    id,
    finder_funnel (86400000, 57600, 86400, 2, 3, 0, 'Asia/Shanghai', TRUE, eventtime * 1000, eventtime * 1000, event = 1000, event = 1001, event = 1002)
FROM
    a
GROUP BY
    id
ORDER BY
    id;

finder_funnel函數預設是UTC時區,當在SQL中指定時區時,將時區錯誤的丟棄,導致結果錯誤。

出現版本:V3.0.40版本。

修複版本:V3.0.41及以上版本。

升級到最新版本。

P2

計算群組執行個體,使用PG_RELATION_SIZEPG_DATABASE_SIZEHOLOGRES.HG_RELATION_SIZE查出來的儲存不正確。

計算群組執行個體下,使用PG_RELATION_SIZE查詢出來的儲存會多算,導致結果不正確。

出現版本:V3.0.39版本。

修複版本:V3.0.40及以上版本。

升級到最新版本。

P2

Dynamic Table增量重新整理模式下單次重新整理時,如果基表中有多行重複的資料,重新整理報錯ERROR: internal error: Filter has 1 rows but length of columns

當單次重新整理有多行重複資料時,增量重新整理處理錯誤導致重新整理報錯。

出現版本:V3.0.39版本。

修複版本:V3.0.40及以上版本。

升級到最新版本。

P2

Dynamic Table增量重新整理有多表JOIN時,表中有ARRAY欄位的Refresh報錯XX000: internal error: Not Implements

ARRAY欄位時,多表JOIN的增量重新整理無法正確處理。

出現版本:

  • V3.0.38版本。

  • V3.1.2版本。

修複版本

  • V3.0.39及以上版本

  • V3.1.3及以上版本

升級到最新版本。

P1

通過事務向邏輯分區寫入資料時,如果分區列資料基數過大導致分區數量超過限制(5200個),則事務Commit時,會發生執行個體重啟。

事務Commit時檢查到邏輯分區表的分區數超出限制,進程異常自行終止,導致執行個體Coredump。

出現版本:V3.1.1版本。

修複版本:V3.1.9及以上版本。

最佳化匯入任務的資料品質,清洗分區鍵的髒資料,避免分區數量過多。

202504

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

讀取MaxCompute外表時報錯ERROR: XX000: internal error: max compuate csdk get next error: storage/formats/orcfile/orc_reader.cpp(362): RetryableStorageException: ODPS-0010000:BadAllocError:allocated pointer 1b658028 not aligned with 64

在讀取MaxCompute外表時介面轉換錯誤,導致讀取外表失敗。

出現版本:V3.0.1~V3.0.35版本。

修複版本:V3.0.36及以上版本。

升級到最新版本。

P2

hg_create_table_like複製表coment時發生錯誤。

hg_create_table_like在複製表comment時識別錯誤,將表comment複製成了列comment。

出現版本:V3.0.1~V3.0.33版本。

修複版本:V3.0.34及以上版本。

升級到最新版本。

P2

查詢資料湖外表時報錯ERROR: failed to get foreign table split from hive:Failed to generate splits: IllegalStateException: Weights must be non-negative

讀取外表時,資料格式轉換錯誤,導致報錯。

出現版本:V3.0.1~V3.0.30版本。

修複版本:V3.0.31及以上版本。

升級到最新版本。

P1

使用ARRAY_AGG函數後,機率性出現記憶體持續上漲的情況。

ARRAY_AGG函數存在記憶體泄露問題,導致記憶體使用量量持續增加。

出現版本:V3.0.1~V3.0.29版本。

修複版本:V3.0.30及以上版本。

升級到最新版本。

P2

CTE查詢語句中存在Nested Loop Join時,報錯Cannot open a fragment with explicit_seek set to false

最佳化器推導JOIN ORDER錯誤,導致查詢報錯。

出現版本:V3.0.1~V3.0.27版本。

修複版本:V3.0.28及以上版本。

升級到最新版本。

P2

使用GENERATE_SERIES函數處理DECIMAL類型的欄位時,報錯generate series first and second arguments should has same type

最佳化器對DECIMAL類型欄位的精度推導錯誤,導致報錯。

出現版本:V3.0.1~V3.0.25版本。

修複版本:V3.0.26及以上版本。

升級到最新版本。

P2

查看hg_stat_activityquery_id欄位,當engine_type={PG}時,query_id的內容不準確。

engine_type={PG}時,hg_stat_activity彙報query_id錯亂,導致query_id不準確。

出現版本:V3.0.1~V3.0.25版本。

修複版本:V3.0.26及以上版本。

升級到最新版本。

202503

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

使用視窗函數,例如ROW_NUMBER() OVER,處理欄位lc_state_split_idx時,報錯ORCA failed to produce a plan

視窗函數處理lc_state_split_idx欄位時,將其誤識別成了關鍵字,導致錯誤的截斷,從而無法產生執行計畫,最終引發SQL報錯。

出現版本:V3.0.24及以下版本。

修複版本:V3.0.25及以上版本。

升級到最新版本。

P1

Dynamic Table中手動指定Distribution Key時,不生效。

引擎推導錯誤,導致手動設定的Distribution Key未生效。

出現版本:V3.0.24及以下版本。

修複版本:V3.0.25及以上版本。

升級到最新版本。

202502

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

BI或開發工具串連Hologres時,沒有許可權的使用者也能看到Database、SchemaTable的中繼資料資訊。

許可權控制不嚴格。

出現版本:V3.0.23及以下版本。

修複版本:V3.0.24及以上版本。

升級到最新版本。

P2

MaxCompute外部表格JOIN Hologres_fdw外部表格時查詢報錯error: Build desc failed: Fetch table group shards failed on meta proxy

Hologres_fdw外部表格在JOIN MaxCompute外部表格時,如果內部表發生Shard Pruning,會產生邏輯錯誤,導致查詢報錯。

出現版本:V3.0.22及以下版本。

修複版本:V3.0.23及以上版本。

升級到最新版本。

P2

Hologres執行個體升級到V2.2版本後,使用GENERATE_SERIES集合返回函數處理DECIMAL類型欄位時報錯error: generate series first and second arguments should has same type

GENERATE_SERIES函數處理DECIMAL欄位時,最佳化器對DECIMAL類型的欄位精度推導錯誤,導致查詢報錯。

出現版本:V2.2.22及以下版本。

修複版本:V2.2.23及以上版本。

升級到最新版本。

P2

為某個帳號設定脫敏規則為all:unmasked,但是未脫敏的情況並未生效,查出來的資料仍然是脫敏。

設定脫敏後,沒有正確判斷帳號的脫敏規則導致查詢不符合預期。

出現版本:

  • V3.0.1及以下版本。

  • V2.2.21及以下版本。

修複版本:

  • V3.0.2及以上版本。

  • V2.2.22及以上版本。

升級到最新版本。

P2

使用JDBC模式消費Hologres Binlog時,作業拋出Binlog Convert FailedJava heap space等異常,或部分Shard的資料讀取在某個時刻停止,無法繼續消費。

在消費Binlog的過程中,如果Flink下遊運算元反壓或其他異常,導致源表資料消費不及時,後端會拋出逾時異常。Gateway轉寄異常到客戶過程中存在問題,導致讀取數據卡住或資料解析失敗報錯。

  • 出現版本:V2.2.21及以下版本。

  • 修複版本:V2.2.22及以上版本。

升級到最新版本,並重啟Flink任務。

P2

JSONB列在開啟列式儲存最佳化功能後,如果設定了Bitmap索引,將會導致資料寫入後FlushCompaction失敗,執行個體儲存量上漲、記憶體水位上升。

JSONB列式儲存最佳化功能對BINARY類型開啟Bitmap索引的處理存在缺陷。

出現版本:

  • V3.0.1~V3.0.9版本。

  • V2.2.31及以下版本。

修複版本:

  • V3.0.10及以上版本。

  • V2.2.32及以上版本。

  • 升級到最新版本。

  • 關閉該表的列式儲存最佳化功能,並重建該表。

202501

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

array_agg函數在視窗裡的計算結果錯誤。樣本如下:

CREATE TABLE ttt(a text, b int);
INSERT INTO ttt VALUES ('0101', 1), ('0102', 2), ('0103', 3);
SELECT a, array_agg(b) OVER (OEDER BY a DESC) FROM ttt;
--執行結果:
a	array_agg
0103	{3}
0102	{2}
0101	{1}

--正確的結果
a	array_agg
0103	{3}
0102	{3,2}
0101	{3,2,1}

array_agg函數與視窗函數一起計算時,計算邏輯錯誤導致結果不正確。

出現版本:

  • V3.0.1~V3.0.21版本。

  • V2.2.38及以下版本。

修複版本:

  • V3.0.22及以上版本。

  • V2.2.39及以上版本。

升級到最新版本。

P2

建立EXTERNAL TABLE時,含有大寫字元的表,查詢報錯:

CREATE TABLE 'dlf_paimon'.'ods'.'ods_test' ( 'ID' VARCHAR(64) NOT NULL) WITH ( 
  'bucket' = '1', 
  'path' = 'dls://xxx', xxx );
  SELECT * FROM 'dlf_paimon'.'ods'.'ods_test' ;
  ERROR: internal : scan column 'ID' cannot be found in Paimon table

EXTERNAL TABLE在讀取包含大寫字元的表時,大小寫轉義錯誤,導致查詢報錯。

  • 出現版本:V3.0.18及以下版本。

  • 修複版本:V3.0.19及以上版本。

升級到最新版本。

P2

未配置OSS Endpoint時,查詢DLF中的表報錯:

SELECT * FROM openlake_demo_dlf.github_events.ods_github_events_raw;

--報錯資訊
ERROR: internal error: external dataset reader missing required oss_endpoint option.

未配置OSS Endpoint時,無法正確路由到對應的OSS表,導致查詢報錯。

  • 出現版本:V3.0.17及以下版本。

  • 修複版本:V3.0.18及以上版本。

升級到最新版本。

說明

升級到新版本後,無需配置OSS Endpoint即可查詢成功。

2024年缺陷

202412

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

Dynamic Table在全量和增量重新整理時,若包含DECIMAL類型欄位,將報錯column type doesn't match, decimal(28, 10) v.s. decimal(38, 10)

Dynamic Table在全量和增量重新整理時,DECIMAL類型欄位的精度推導錯誤,從而導致Refresh報錯。

出現版本:V3.0.16及以下版本。

修複版本:V3.0.17及以上版本。

  • 手動指定QueryDECIMAL類型欄位的精度。

  • 升級到最新版本。

P2

UNION ALL兩邊Query Schema不一致時報錯schema's field number from producers are not equal [1 vs 0]

UNION ALL推導Schema不正確,從而導致報錯。

出現版本:V3.0.16及以下版本。

修複版本:V3.0.17及以上版本。

升級到最新版本。

P2

Dynamic Table增量重新整理對SMALLINT類型欄位進行彙總時,報錯不支援。

Dynamic Table增量重新整理對SMALLINT類型支援不夠完善。

出現版本:V3.0~V3.0.16版本。

修複版本:V3.0.17及以上版本。

升級至最新版本。

P2

升配計算群組執行個體後,查詢報錯CreateFile ignore since it's not leader

升配計算群組期間,表Meta未及時更新,導致查詢時擷取的是舊錶Meta的資料,從而導致升配後報錯。

出現版本:

  • V3.0.12~V3.0.15版本。

  • V2.0.35及以下版本。

修複版本:

  • V3.0.16及以上版本。

  • V2.2.36及以上版本。

  • 重啟升配的計算群組。

  • 升級到最新版本。

p1

Hologres升級至V3.0.12~V3.0.15版本後,對於開啟動態分區的表,如果分區鍵類型是TEXT,動態分區的調度可能會出現錯誤,從而導致建立分區表失敗。

對於TEXT為分區鍵時,調度系統處理有問題,會導致內部轉換失敗,從而建表失敗。

出現版本:V3.0.12~V3.0.15版本。

修複版本:V3.0.16及以上版本。

升級到最新版本。

p1

Hologres版本升級至V3.0~V3.0.13版本後,查詢MaxCompute外表效能變慢。

Hologres V3.0版本,加強了擷取MaxCompute Table Meta許可權檢查,這導致FE節點發生多次反覆調用,從而降低了查詢MaxCompute外部表格的效能。

出現版本:V3.0~V3.0.13版本。

修複版本:V3.0.14及以上版本。

升級到最新版本。

202411

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

Dynamic Table全量重新整理模式下開啟Binlog後,Refresh報錯ERROR: internal error: refresh table failed: internal error: new_values is missing col

Dynamic Table全量重新整理模式下開啟Binlog後,隱藏列推導不一致,導致Refresh報錯。

出現版本:V3.0.11及以下版本。

修複版本:V3.0.12及以上版本。

升級到最新版本。

說明

不建議全量重新整理模式開啟Binlog,每一次全量重新整理都相當於在執行INSERT OVERWRITE,會導致Binlog不完整。

P2

SLPM許可權模型下,刪除Orafce Extension再重新建立會報錯“role slpm xxx already exists“

SLPM許可權模型下,刪除Orafce Extension時使用者組的許可權未清理乾淨,導致在重新建立時使用者組仍然存在,從而無法成功建立Orafce Extension。

出現版本:V3.0.9及以下版本。

修複版本:V3.0.10及以上版本。

  • SLPM改成專家許可權模型後再重新建立Orafce Extension。

  • 升級到最新版本。

P2

Dynamic Table中有Decimal欄位,Refresh時報錯invalid definition of a numeric type

Decimal欄位的精度推導不正確,導致Dynamic TableRefresh時精度不一致而報錯。

出現版本:V3.0.9及以下版本。

修複版本:V3.0.10及以上版本。

  • 建立Dynamic Table時手動指定Decimal欄位的精度。

  • 升級到最新版本。

P2

元倉大於10 sQuery偶發出現Plan列沒有EXPLAIN ANALYZE結果。

大於10 sQuery在彙報偶發延遲,導致Plan列沒有採集到結果。

出現版本:

  • V3.0.8及以下版本。

  • V2.2.33及以下版本。

修複版本:

  • V3.0.9及以上版本。

  • V2.2.34及以下版本。

升級到最新版本。

P2

AnalyzeBIS類型的表報錯Not supported type: bsi0.] in cache failed

AnalyzeBIS類型的欄位支援不完善,導致出現報錯。

出現版本:

  • V3.0.8及以下版本。

  • V2.2.31及以下版本。

修複版本:

  • V3.0.10及以上版本。

  • V2.2.32及以上版本。

升級到最新版本。

P2

使用hg_insert_overwrite後,產生的暫存資料表未自動清理。

hg_insert_overwrite過程中因清理機制未啟動,導致暫存資料表未清理。

出現版本:V2.2.30及以下版本。

修複版本:V2.2.31及以上版本。

升級到最新版本。

P2

執行個體頻繁執行DDL操作,若FE節點的版本剛好不一致時執行了TRUNCATE操作,此時對TRUNCATE執行CANCEL時,無法成功CANCEL,可能會導致資料結果不一致。

FE節點的版本不一致時,會出現節點Relay卡住,導致後續DDL失敗,如果期間執行DROP、TRUNCATE,執行CANCEL不會成功。

出現版本:V2.2.26及以下版本。

修複版本:V2.2.27及以上版本。

升級到最新版本。

P2

執行SQL語句過長超出了限制報錯:ERROR: Current query length xxx exceeds the limit 10000000

Hologres增加了SQL長度限制,預設值10000000。

出現版本:

  • V2.2.22及以上版本。

  • V3.0.1及以上版本。

通過設定如下參數取消SQL長度限制。

ALTER DATABASE db_name SET hg_experimental_query_length_limit = 0;

202409

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

資料庫首次開啟DML事務後,如果在SQL中對同一表執行並發DDL操作,可能會導致Query卡住等現象。

在資料庫首次使用DML事務時,將首先擷取表鎖。如果該表存在並發的DDL操作,系統將進入嘗試建表的迴圈,機率性出現死結,導致Query卡住等。

出現版本:V2.2.24及以下版本。

修複版本:V2.2.25及以上版本。

升級到最新版本。

P2

對於包含roaringbitmap類型欄位的Hologres表,當通過CREATE FOREIGN TABLE命令建立Hologres跨庫查詢外表,且外表中不包含roaringbitmap類型欄位時,可成功建立外表,但在使用SELECT * FROM方式查詢包含roaringbitmap類型的欄位時,報錯cache lookup failed for type 22243

跨庫查詢的外表不支援roaringbitmap類型,在建立外表時需要校正。

出現版本:V2.2.24及以下版本。

修複版本:V2.2.25及以上版本。

升級到最新版本。

說明

升級完成後,進行跨庫查詢時,如果外表中存在roaringbitmap類型,將直接報錯,提示不支援該類型。

P2

使用JDBC prepareStatement方法時,反覆執行CREATE EXTENSION命令後報錯unrecognized extension: "PostgreSQL JDBC Driver",而使用其他工具則未發現此問題。範例程式碼如下:

Connection conn = DBInitializer.BuildSlaveDsOnHolo().getConnection();
List sqls = Arrays.asList(
    "SET application_name TO 'PostgreSQL JDBC Driver'",
    "CREATE EXTENSION IF NOT EXISTS hologres_fdw"
    );

使用JDBC prepareStatement方法迴圈執行CREATE EXTENSION命令後,導致Cache被破壞,從而出現報錯。

出現版本:

  • V2.2.23及以下版本。

  • V3.0.3及以下版本。

修複版本:

  • V2.2.24及以上版本。

  • V3.0.4及以上版本。

  • 一個資料庫只需要執行一次CREATE EXTENSION,無需反覆執行。

  • 升級到最新版本。

P2

元倉Query Log中的result_rowsaffected_rows值與實際值不符。

元倉彙報result_rowsaffected_rows時發生錯誤,導致彙報的值與實際值不符。

出現版本:V2.2.22及以下版本。

修複版本:V2.2.23及以上版本。

升級到最新版本。

P2

計算群組執行個體中,重啟主計算群組時,可能會導致從計算群組點查(基於主鍵的查詢)變慢。

重啟主計算群組時,正常啟動並執行計算群組對應的Shard會輪詢主Shard狀態,導致點查卡住,直到所有Shard恢複後才會繼續執行。

出現版本:V2.2.21及以下版本。

修複版本:V2.2.22及以上版本。

升級到最新版本。

P2

BSI_SUM函數結果數組中,所有元素的總和超出2^31時,結果出錯。

函數資料溢出情況誤處理。

出現版本:V2.1.1及以上版本。

修複版本:等待修複。

  • 修複後升級到最新版本。

  • 改寫SQL,樣本如下:

    SELECT SUM(a[2]) FROM (SELECT BSI_ITERATE(BSI_BUILD('{20240901,1}','{3101397531,100}')) a) b;

P2

串連Hologres執行個體偶發建立連線逾時或卡住,導致無法建立串連。

串連執行個體偶發節點內進程卡住,導致此節點無法建立新串連。

出現版本:低於V2.2.23,V2.1.43,V2.0.46,V1.3.71的版本。

修複版本:V3.0.4,V2.2.23,V2.1.43,V2.0.46,V1.3.71及以上版本。

  • 短期方案:重啟執行個體可暫時解決。

  • 長期方案:升級至各版本的最新小版本。

202408

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

計算群組執行個體中,若某個計算群組A不可用(如正在重啟),其他計算群組對A載入的Table Group中的表執行點查時,延遲升高。

即時讀寫鏈路內部模組存在缺陷,計算群組執行點查時會等待Table Group狀態,導致延遲升高。

出現版本:V2.1.1V2.2.21版本。

修複版本:V2.2.22及以上版本。

升級到最新版本。

P1

Fixed Plan即時寫入資料量超過100QPS時,有小機率觸發寫入失敗和執行個體重啟。

即時讀寫鏈路記憶體管理器存在缺陷。

出現版本:

  • V2.0.1~V2.0.43版本。

  • V2.1.1~V2.1.36版本。

  • V2.2.1~V2.2.8版本。

修複版本:

  • V2.0.44及以上的V2.0版本。

  • V2.1.37及以上的V2.1版本。

  • V2.2.9及以上的V2.2版本。

升級到最新版本。

202407

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

使用jdbcjdbc_fixed模式讀取HologresBinlog時,如果Flink作業遭遇反壓導致後端逾時,有機率導致Flink作業卡住或觸發Failover。

Gateway收到後端逾時的異常資訊時,將異常返回給用戶端的過程中存在問題,導致讀取數據卡住或資料解析失敗報錯。

出現版本:V1.3及以上版本。

修複版本:V2.2.21及以上版本。

從最新的checkpoint直接重啟作業,並升級到最新版本。

P2

V2.2版本之後,使用了Shard Pruning(執行計畫中包含Shard Prune運算元)的COUNT DISTINCT操作,通過PQE執行,導致計算效能下降。

CREATE TABLE t1 (a int, b int) WITH (distribution_key = 'b');
INSERT INTO t1 VALUES(1,1),(2,2),(3,3),(4,4);
EXPLAIN SELECT count(DISTINCT a) FROM t1 WHERE b =1;
--返回結果如下
QUERY PLAN
Final Aggregate  (cost=0.00..105.00 rows=1 width=8)
  ->  Partial Aggregate  (cost=0.00..5.00 rows=1 width=8)
        ->  Partial HashAggregate  (cost=0.00..5.00 rows=10 width=4)
              Group Key: a
              ->  Local Gather  (cost=0.00..5.00 rows=32 width=4)
                    ->  Partial HashAggregate  (cost=0.00..5.00 rows=32 width=4)
                          Group Key: a
                          ->  Seq Scan on t1  (cost=0.00..5.01 rows=1000 width=4)
                                Shard Prune: Eagerly
                                Shards selected: 1 out of 21
                                Filter: (b = 1)
                                RowGroupFilter: (b = 1)
Optimizer: HQO version 2.2.0

使用Shard Pruning後,COUNT DISTINCT的執行計畫推導錯誤,導致通過PQE執行,影響查詢效能。

出現版本:V2.2.1V2.2.18版本。

修複版本:V2.2.19及以上版本。

  • 升級到最新版本。

  • COUNTDISTINCT替換為UNIQ。

P2

Query日誌(query_log表)中query_start欄位的日期格式為2024-07-08 22:00:00,而query_date欄位日期格式為19700101

Query日誌中的query_date欄位資料擷取錯誤。

出現版本:V2.2.1V2.2.18版本。

修複版本:V2.2.19及以上版本。

升級到最新版本。

P2

在寫入分區子表時,若COPY列中包含了分區列,並且當分區值為0時,傳入其他非0值也能正常寫入,這可能導致分區值出現髒資料。

begin;
create table tp(a int, b int) partition by list (a);
create table c0 partition of tp for values in (0);
commit;

COPY c0 FROM stdin WITH (stream_mode ON, format 'csv', null 'null');

# 輸入
1,0
null,0
\.

在寫入分區子表時,如果copy列中包含了分區列,並且分區值為0,系統缺少對分區值為0的檢查,從而導致髒資料成功寫入。

出現版本:V2.2.1V2.2.18版本。

修複版本:V2.2.19及以上版本。

升級到最新版本。

P2

在串連串上顯示的設定時區為SET timezone='+8',且Query中含有PQE日期函數,例如to_char。執行結果將為西八區的日期(應為東八區)。樣本:

CREATE TABLE date_test(a timestamptz);
--返回結果:2001-09-28
INSERT INTO date_test VALUES ('2001-09-28 03:00:00+08');
SELECT to_char(a, 'YYYY-MM-DD') FROM date_test;

--錯誤的結果: 2001-09-27
SET hg_experimental_udf_pushdown_blacklist =timestamptz_to_char;
SET timezone='+8';
SELECT to_char(a, 'YYYY-MM-DD') FROM date_test;

串連串上指定了時區後,PQE在解析日期函數時計算時區錯誤,導致結果錯誤。

出現版本:V2.2.1V2.2.18版本。

修複版本:V2.2.19及以上版本。

升級到最新版本。

P2

使用pad_sub_cost函數時報錯Column should be non-nullable but the values contain 609 nulls

pad_sub_cost函數在計算時Nullable屬性推導錯誤,導致查詢報錯。

出現版本:V2.2.1至 V2.2.18版本。

修複版本:V2.2.19及以上版本。

升級到最新版本。

P0

使用動態分區管理功能時,如果time_unit設定為MONTH,即按月建立動態分區,則可能會誤建立未來分區、誤刪除當前分區。

V2.2版本開始,動態分區管理功能支援自訂調度開始時間,對於按月分區時間計算有誤。

出現版本:V2.2.1V2.2.17版本。

修複版本:V2.2.18及以上版本。

升級到最新版本。

202406

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

執行hg_insert_overwriteCREATE TABLE AS

COPY命令操作外部表格時遇到報錯: Fail to access foreign data as user xxx, no token found in request header

V2.2版本開始,MaxCompute外部表格操作需要通過服務關聯角色(SLR)來進行身分識別驗證。由於當前實現存在問題,已建立SLR的使用者在執行hg_insert_overwriteCREATE TABLE AS

COPY命令操作時會遇到外部表格訪問失敗的情況。

出現版本:

V2.2.1V2.2.14版本。

修複版本:

V2.2.15及以上版本。

升級到最新版本。

P1

源表存在重複資料,執行UPDATEUPSERT並基於PK去重,目標表將偶發出現重複資料,且表資料TTL沒有到期。

執行UPDATEUPSERT時,是目標表和源表JOIN,如果兩個表的JOIN KEY不一致,目標表會出現Redistribution。這種情況下,如果源表有重複資料,會導致最佳化器在處理重複資料時邏輯錯誤,資料未能正常去重,導致最後主鍵重複。

出現版本:

V2.2.13及以下版本。

修複版本:

V2.2.14及以上版本。

升級到最新版本。

p2

通過FlinkPaimon資料讀取並寫入Hologres時,Paimon VARCHAR類型資料與Hologres資料格式不一致。

PaimonVARCHAR類型的資料:中國
寫入Hologres後的VARCHAR類型的資料為:???(亂碼)

HologresPaimon VARCHAR類型的資料轉換錯誤,導致出現亂碼。

出現版本:

V2.2.12及以下版本。

修複版本:

V2.2.13及以上版本。

升級到最新版本。

p2

IS DISTINCT FROM文法,對NaN資料處理和PostgreSQL不一致。

--PostgreSQL的行為:
CREATE TABLE test_f8 (a float8);
INSERT INTO test_f8 VALUES ('NaN');
SELECT * FROM test_f8 WHERE a IS DISTINCT FROM 'NaN';
-- 返回結果如下
 a
---
(0 rows)
--------------------------------------------------------
Hologres的行為:
CREATE TABLE test_f8 (a float8);
INSERT INTO test_f8 VALUES ('NaN');
SELECT * FROM test_f8 WHERE a IS DISTINCT FROM 'NaN';
-- 返回結果如下
  a  
-----
 NaN

為了能夠利用索引,PostgreSQL定義了NaN和其他數位大小比較規則,將NaN值視為相等,且大於任何非NaN值。而Hologres在實現時遵循了C++標準的比較規則,因此NaN值互不相等,導致結果與PostgreSQL不一致。

出現版本:

V2.1.37及以下版本。

修複版本:

  • V2.1.38及以上版本。

  • V2.2.10及以上版本。

升級到最新版本。

202405

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

使用Fixed Plan點查多個相同主索引值時(例如select * from table_name where (pk=1) or (pk=1);),會返回多條相同結果。

Fixed Plan沒有對相同主鍵的多組過濾條件進行去重。

出現版本:

V2.2.8及以下版本。

修複版本:

V2.2.9及以上版本。

  • 避免一個SQL語句的where過濾條件中存在多組相同主鍵(pk)值。

  • 升級到最新版本。

P1

Rebalance過程中,執行Schema Change的相關操作後,執行個體無法正常寫入和查詢。

Rebalance過程中,當ShardLeaderFollower延遲小於10秒時,將進行FollowerLeader的切換。在切換時,若使用者執行Schema Change的相關操作,會導致儲存引擎SE的狀態異常,進而導致執行個體無法進行正常的寫入和查詢操作。特別是在Hologres V2.1版本中,當執行個體存在空Worker節點時,會自動觸發Rebalance機制,從而增加了該問題發生的機率。

出現版本:

  • V2.1.16V2.1.23版本。

  • V2.0.0V2.0.41版本。

修複版本:

  • V2.1.24及以上版本。

  • V2.0.42以上版本。

升級到最新版本。

P2

Hologres執行個體升級至V2.1.25及以上版本後,對非public下的表執行insert overwrite語句時,產生的暫存資料表未能自動清理。

insert overwrite語句,在執行時檢測疏漏,導致暫存資料表未能正常清理掉。

出現版本:

V2.1.25V2.1.32版本。

修複版本:

V2.1.33及以上版本。

  • 使用HoloWeb表管理功能,一鍵清理暫存資料表。

  • 升級到最新版本。

P2

使用FixedFE(對應Connector中的jdbc_fixed模式)寫入資料到Hologres過程中,開啟SLPM模型並授予使用者對應Schema的開發人員(developer)許可權,但FixedFE出現報錯permission denied for schema XXX

FixedFESLPM模型許可權變化時,沒有及時重新整理緩衝,導致使用者已有許可權,卻仍然出現相關報錯。

出現版本:

V2.0.31及以下版本

修複版本:

V2.0.32及以上版本。

升級到最新版本。

202404

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

使用datediff函數按照指定的單位計算兩個時間差值時,偶發返回結果與實際結果相差1。

Function Compute存在邏輯缺陷。

出現版本:

V2.0.31版本。

修複版本:

V2.1.27及以上版本。

升級到最新版本。

P2

Hologres執行個體升級至V2.1.26版本後,監控指標顯示執行個體記憶體分布使用率中的Query記憶體緩慢上漲。

升級至V2.1.26版本,當Query出現OOM問題後,記憶體指標會被重複統計,導致監控中記憶體相關的指標上漲。

說明

執行個體中的記憶體並沒有真正上漲,只是監控統計重複。

出現版本:

V2.1.26版本。

修複版本:

V2.1.27及以上版本。

升級到最新版本。

P1

Hologres執行個體升級至V2.1版本,且在執行個體中進行MaxCompute外部表格查詢時,出現執行個體記憶體緩慢上漲現象,Query效能出現抖動,或者OOM較多。

使用V2.1版本執行個體查詢MaxCompute外部表格時,開啟的檔案未被及時關閉,導致記憶體緩慢上漲,影響了Query效能或者執行個體穩定性。

出現版本:

V2.1.1V2.1.25版本。

修複版本:

V2.1.26及以上版本。

升級到最新版本。

P2

V2.1版本中,主從執行個體或計算群組執行個體的儲存容量變多,表現為監控指標的儲存使用總量大於通過pg_relation_sizeFunction Compute的儲存總量。

V2.1版本的主從執行個體或計算群組執行個體回收舊檔案不及時,導致儲存容量增長,監控採集的儲存量變多。

出現版本:

V2.1.1V2.1.25版本。

修複版本:

V2.1.26及以上版本。

升級到最新版本。

P1

Flink通過JDBC模式消費Hologres Binlog時,出現作業啟動時消費速率較高,之後持續下降的情況。

Flink通過JDBC模式消費Hologres Binlog時,存在記憶體流失問題。

出現版本:

VVR V6.0.7以下版本。

修複版本:

VVR V6.0.7及以上版本。

升級到最新版本。

202403

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P0

由於查詢資源未釋放導致:

  • 記憶體持續上漲。

  • 大量鎖佔用。

  • 大量查詢因為分配不到資源導致卡住,即使重啟執行個體,也無法明顯緩解,在短時間內,仍會卡住。

當查詢僅涉及Shard資料,且使用了PQESQE執行MaxCompute外部表格或資料湖外部表格的查詢時,查詢完成後不會系統主動觸發資源回收,只能使用Query Master的記憶體回收機制來回收資源。當Query Master壓力較大時,查詢操作會因退出延遲而佔用大量資源,導致後續的查詢無法執行。

出現版本:

V2.1.23V2.1.24版本。

修複版本:

V2.1.25及以上版本。

升級到最新版本。

P1

對字典編碼過的列添加bitmap,導致not null的列查詢結果錯誤,出現null值。

對字典編碼過的列添加bitmap,後端構建bitmap時,未對全部資料生效,導致結果有錯誤。

出現版本:

V2.1.21及以下版本。

修複版本:

V2.1.22及以上版本。

升級到最新版本。

P1

通過Fixed Plan進行資料的即時寫入或點查,執行個體記憶體使用量率逐漸上漲。

Hologres V2.1版本中Fixed Plan執行引擎進行了重構,其為讀寫表建立的operator沒有及時清理,導致記憶體泄露。

出現版本:

V2.1.1V2.1.9版本。

修複版本:

V2.1.10及以上版本。

升級到最新版本。

P1

對運行在PQE上的Query執行取消(cancel)操作時,有機率觸發對應PQE節點的進程死結,無法處理新的PQE請求。

PQE IO並發控制功能缺陷,當PQE接收到cancel訊號時有機率觸發。影響所有PQE進程。

出現版本:

  • V2.1.2V2.1.8版本。

  • V2.0.23V2.0.30版本。

修複版本:

  • V2.1.9及以上版本。

  • V2.0.31及以上版本。

升級到最新版本。

P2

INTERSECTEXCEPT函數在Shard Pruning時,出現執行結果與實際結果不一致。例如在Shard Pruning時,執行如下樣本SQL,返回結果可能與實際結果不符。

SELECT * FROM (
	SELECT user_id FROM dc_ads_public_label_r where label_id = 1 and user_id = 1) 
a INTERSECT (
	SELECT user_id FROM dc_ads_public_label_r where label_id = 1 and user_id = 1);
  
--返回結果,不正確
user_id   
-------
 2
 
--實際結果,正確
user_id   
-------
 1

當前INTERSECTEXCEPT函數是通過JOIN實現,在Shard Pruning時,對於INTERSECTEXCEPT函數的處理導致執行計畫不正確,結果出現錯誤。

出現版本:

V2.1.21及以下版本。

修複版本:

V2.1.22及以上版本。

升級到最新版本。

P2

PQE進程退出時,存在小機率的卡死現象,持續積累後會導致PQE無法處理新的請求。

PQE進程退出時,啟動的RPC退出線程和主線程存在並發問題,導致RPC退出線程無法正常結束,進而導致PQE進程無法順利退出。

出現版本:

V2.1.0V2.1.14版本。

修複版本:

V2.1.15及以上版本。

升級到最新版本。

P2

並發執行PQEQuery時,執行個體出現短暫重啟現象。

Hologres V2.0及以下版本中,PQE存在多線程並發問題,導致執行個體機率性的出現Coredump。

出現版本:

V2.0及以下版本。

修複版本:

V2.1.0及以上版本。

升級到最新版本。

P2

使用Prepared Statement模式執行包含in ($1....)SQL,並經過分區選取器(shard selector)進行處理時,出現了執行個體短暫重啟現象。

最佳化器產生Plan錯誤,導致執行個體出現Coredump。

出現版本:

V2.0及以下版本。

修複版本:

V2.1.0及以上版本。

升級到最新版本。

202402

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

TEXT類型先轉換為BIT類型,再轉換成BIGINT類型報錯:Cast FROM STRING to BINARY is not supported.。樣本SQL:

CREATE TABLE ttttt (a text);
INSERT INTO ttttt VALUES ('x165a7b4a00001');

SELECT * FROM ttttt;
SELECT a::bit(52)::bigint FROM ttttt; 


--textbit報錯不支援 :Cast FROM STRING to BINARY is not supported.
--textbit,再轉bigint報錯 :ERROR: syntax error at or near ")"

TEXT類型轉BIT類型支援不完善,導致出現報錯:Cast FROM STRING to BINARY is not supported.。然後BIT類型再轉BIGINT類型會錯誤識別BIT類型,出現報錯:syntax error at or near ")"

出現版本:

V2.1.20及以下版本。

修複版本:

V2.1.21及以上版本。

升級到最新版本。

P2

行存表指定了PK,Clustering Key設定為空白串時,出現中繼資料不一致導致Query卡住。樣本建表SQL:

BEGIN;
DROP TABLE IF EXISTS public.t01;
CREATE TABLE public.t01 (
  agree_time timestamp without time zone,
  seller_id int NOT NULL,
  seller_nick text NOT NULL,
  ref_id bigint NOT NULL,
  scope text NOT NULL,
  status integer NOT NULL,
  PRIMARY KEY (seller_id)
);
CALL set_table_property('public.t01', 'orientation', 'row');
CALL set_table_property('public.t01',  'clustering_key', '');
END;

行存表的Clustering Key為空白串時,與PK不一致,FE節點響應請求失敗,從而造成中繼資料不一致,導致Query停滯。

出現版本:

V2.1.20及以下版本。

修複版本:

V2.1.21及以上版本。

  • 重建立表,並顯式指定Clustering Key(建議行存表Clustering KeyPK一致,才能發揮更好的效能)。

  • 升級到最新版本。

P2

Query的過濾條件(where)中包含Clustering Key,且使用Order ByClustering Key排序,如where a >= xxx limit x order by aa列是Clustering Key,Query計算結果不正確。樣本SQL:

BEGIN;
CREATE TABLE test3(a int NOT NULL);

CALL set_table_property('test3', 'clustering_key', 'a');
CALL set_table_property('test3', 'segment_key', 'a');
CALL set_table_property('test3', 'distribution_key', 'a');
END;
INSERT INTO test3 SELECT i FROM generate_series(0, 100000)i;
INSERT INTO test3 SELECT 500 FROM generate_series(0, 100000)i;

SELECT count(1) FROM (SELECT * FROM test3 WHERE a>=500  AND a <= 500 ORDER BY a ASC LIMIT 20 OFFSET 11440)a;
--出現結果異常,limit 20,但是返回的資料可能是30

當過濾條件中有Clustering Key,且使用Order ByClustering Key排序,會導致Order By的演算法匹配錯誤,從而出現返回的結果與LIMIT的結果不正確。

出現版本:

V2.1.19及以下版本。

修複版本:

V2.1.20及以上版本。

升級到最新版本。

P1

Hologres V2.1版本中,執行個體記憶體使用量率有緩慢上漲,查詢MaxCompute外部表格時,偶發出現ERPC_ERROR_CONNECTION_CLOSED報錯。

執行個體升級到 V2.1版本後,由於外部表格的底層資料檔案沒被及時關閉,導致記憶體流失,偶發引起執行個體重啟。

出現版本:

V2.1.10V2.1.18版本。

修複版本:

V2.1.19及以上版本。

升級到最新版本。

P2

DECIMAL類型相乘後精度不符合預期。樣本SQL:

CREATE TABLE t (a decimal(30,10), b decimal(30,10));
INSERT INTO t VALUES (1.1111111111, 1.0000000000),(1.1111111112, 1.0000000000),(1.1111111111, 2.0000000000),(1.1111111112, 2.0000000000);
SELECT a*b FROM t;

--Hologres結果,不正確
2.222222222000000000
1.111111111000000000
1.111111111000000000
2.222222222000000000

--PG結果,正確
2.222222222000000000
1.111111111000000000
1.111111111000000000
2.222222224000000000

DECIMAL類型乘法預設小數精度是18位,兩個DECIMAL類型相乘後小數位元超過18時,會導致將資料截斷再計算,從而出現結果不符合預期。

出現版本:

V2.1.18及以下版本。

修複版本:

V2.1.19及以上版本。

  • DECIMAL類型轉換(CAST)為TEXT類型。

  • 升級到最新版本。

202401

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

升級到Hologres V2.1版本後,truncate後再執行INSERT操作會偶發報錯:Invalid table id in schema

Hologres V2.1版本FrontEnd錯誤增加了過長的replay緩衝時間,導致同一個DDL後再執行DML,DDL replay會變慢。

出現版本:

V2.1.1V2.1.14版本。

修複版本:

V2.1.15及以上版本。

升級到最新版本。

P2

jsonb_to_textarray函數不支援常量摺疊導致SQL帶有常量計算時會報錯:ERROR: internal error: The left deepest leaf node of columnar access ref。樣本SQL:

CREATE TABLE t2 (f1 text[]);
INSERT INTO t2 VALUES (ARRAY['1']);
SELECT f1 && jsonb_to_textarray('["1","2"]') FROM t2;

--報錯
ERROR:  internal error: The left deepest leaf node of columnar access ref

SQLjsonb_to_textarrayFunction Compute有常量時下推錯誤,從而出現報錯。

出現版本:

  • V2.1.1V2.1.14版本。

  • V2.0.34及以下版本。

修複版本:

  • V2.1.15及以上版本。

  • V2.0.35及以上版本。

升級到最新版本。

P2

使用regexp_split_to_array函數偶發報錯:ERROR:Illegel udf8 string in xxxx

regexp_split_to_array函數越界讀取到非預期的記憶體位址,導致查詢失敗。

出現版本:

V2.1.1V2.1.12版本。

修複版本:

V2.1.13及以上版本。

升級到最新版本。

P2

使用SELECT * FROM <table_name> LIMIT xxx;可能會偶發性卡住。

對於全表掃描帶LIMIT的情境,Hologres會通過惰性載入(lazy loading)的方式載入資料,一次性掃描太多資料導致卡住。

出現版本:

  • V2.1.1V2.1.11版本。

  • V2.0.33及以下版本。

修複版本:

  • V2.1.12及以上版本。

  • V2.0.34及以上版本。

升級到最新版本。

P2

對執行個體執行重啟、升級、升降配等涉及執行個體重啟的操作後,MaxCompute直讀Hologres外部表格時,偶發任務卡住。

對於Hologres表,後台會定期觸發中繼資料更新,執行個體重啟後,系統會重新重新整理一次表的中繼資料,MaxCompute直讀Hologres未能及時擷取中繼資料狀態,導致任務卡住。

出現版本:

  • V2.1.0V2.1.2版本。

  • V2.0.5及以下版本。

修複版本:

  • V2.1.3及以上版本。

  • V2.0.26及以上版本。

升級到最新版本。

2023年歷史缺陷

202312

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

修改執行個體的Shard replica數後,執行個體出現短暫重啟。樣本SQL:

--執行個體出現短暫重啟
CALL HG_CREATE_TABLE_GROUP ('tg', 1);
CALL HG_UPDATE_DATABASE_PROPERTY ('default_table_group', 'tg');
CALL hg_set_table_group_property ('tg', 'replica_count', '2'); 

修改執行個體的Shard replica數後,中繼資料未被更新,導致執行個體出現短暫重啟。

出現版本:

  • V2.1.1V2.1.10版本。

  • V2.0.33及以下版本。

修複版本:

  • V2.1.11及以上版本。

  • V2.0.34版本。

升級到最新版本。

P2

使用預存程序(hg_insert_overwrite)匯入資料失敗後,暫存資料表未被清理。

hg_insert_overwrite在執行過程中會建立一張暫存資料表,目前未實現暫存資料表清理機制,導致任務失敗後,暫存資料表未被清理。

出現版本:

V2.0.19及以下版本。

修複版本:

V2.0.30及以上版本。

  • 手動刪除暫存資料表

  • 升級到最新版本

P2

通過Fixed Plan將資料寫入HologresDECIMAL類型列,如果待寫入資料為負數,且最小有效小數位與目標欄位的小數精度相差19位以上,可能出現資料錯誤。樣本SQL:

CREATE TABLE fixed_plan_decimal (col decimal(38,19));

-- 待寫入資料為負數,其最小有效位為個位,與目標欄位的小數精度相差19位,觸發寫入資料錯誤
INSERT INTO fixed_plan_decimal VALUES (-1.000000000);

-- 寫入結果為7922816250.4264337593543950336
SELECT * FROM fixed_plan_decimal;
 

Fixed Plan鏈路對DECIMAL類型精度處理有誤,導致資料錯誤。

出現版本:

V2.1.11及以下版本。

修複版本:

V2.1.12及以上版本。

說明

修複後,Fixed Plan鏈路將與非Fixed Plan鏈路行為一致。

  • 資料寫入時,顯式指定資料精度,如:-1.000000000::decimal(38,19)

  • 升級到最新版本。

P1

執行個體開啟了Binlog,升級到V2.1.9版本後,CPU使用率顯著升高。

對於開啟Binlog的執行個體,升級到V2.1.9版本後,在某些情境上Binlog未能正確抓住錯誤,導致發生錯誤後無法正常退出,列印較多日誌,引起CPU使用率升高。

出現版本:

V2.1.1V2.1.9版本。

修複版本:

V2.1.10及以上版本。

升級到最新版本。

202311

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

使用var_sampFunction Compute方差,輸入資料類型為DECIMAL時結果不正確。樣本SQL:

CREATE TABLE t1(f1 decimal(38,18));
INSERT INTO t1 VALUES (123),(234),(456);

--decimal類型結果錯誤
SELECT var_samp(f1) FROM t1;
--返回結果
var_samp   
--------------
 0.2382402695

--轉成int類型,結果正確
SELECT var_samp(f1::int) FROM t1;
--返回結果
var_samp     
------------------
 28749.0000000000
 

var_samp方差計算函數在計算DECIMAL類型時,類型轉換錯誤,導致結果不正確。

出現版本:

V2.0.27及以下版本。

修複版本:

V2.0.28及以上版本。

升級到最新版本。

202310

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

使用date_part函數時要提取的欄位為大寫報錯:error:unsupport extract type xxx。樣本SQL如下:

SELECT date_part('HOUR',ts) FROM tt;
--error:unsupport extract type [HOUR]

最佳化器未能正確識別date_part函數中大寫欄位,導致查詢報錯。

出現版本:

V2.0.1V2.0.25版本。

修複版本:

V2.0.26及以上版本。

升級到最新版本。

P2

使用&&串連Array時查詢報錯:Unexpected expr type in array expr:145,樣本SQL如下:

CREATE TABLE test (
  channel_info text
);
SELECT regexp_split_to_array(LOWER('TMK'),',') && array[(regexp_split_to_array(LOWER(channel_info),'-'))[2]]  FROM test;

--error:Unexpected expr type in array expr:145

&&的執行引擎是HQE,當&&串連Array時,最佳化器對Array處理有誤,導致執行計畫錯誤,從而查詢報錯。

出現版本:

V2.0.25及以下版本。

修複版本:

V2.0.26及以上版本。

升級到最新版本。

P2

對於分區表,with語句選中0個分區時返回的結果中列的別名(alias)錯誤,樣本SQL如下:

CREATE TABLE t0_parent(ds text, v1 bigint, v2 bigint, v3 bigint) PARTITION BY list (ds);
CREATE TABLE t0_child1 PARTITION OF t0_parent FOR VALUES IN ('20230915');
CREATE TABLE t0_child2 PARTITION OF t0_parent FOR VALUES IN ('20230916');

--查詢語句,選中了0個分區
WITH cte1 AS (
  SELECT v1, v2, v3 FROM t0_parent
),
    cte2 AS (
      SELECT v1, v2 FROM cte1 WHERE v3 = 1 AND v3 = 2
    )
    SELECT v2 AS vb, v1 AS va FROM cte2 limit 1;

--錯誤結果,別名錯誤 
 v2 | v1 
----+----

--正確結果,別名正確
vb | va 
----+----

對於分區表的with cte查詢,當SQL中選中了0個分區時,最佳化器QO在產生執行計畫時會把0個分區節點給最佳化掉,導致返回結果不正確,從而列的別名丟失。

出現版本:

V2.0.25及以下版本。

修複版本:

V2.0.26及以上版本。

升級到最新版本。

P2

case when語句中有使用DECIMAL類型,且case when語句中有走PQE的函數,導致結果報錯:

error: column with id 0 has type decimal(38, 10) but ReadColumn returns array Array(type=decimal(20, 4) length=1 null_count=0 [1.0000]).

case when中有DECIMAL類型時,經過PQE的函數,DECIMAL的精度未被正常轉換,導致結果精度無法對齊而報錯。

出現版本:

V2.0.23及以下版本。

修複版本:

V2.0.24及以上版本。

升級到最新版本。

P2

父子表在不同Schema,往子表匯入資料時報錯:Can't find parent table for table name。樣本SQL如下:

CREATE schema haha;
CREATE TABLE haha.p(
  a text not null, 
  b int not null
) PARTITION BY LIST(a);
CREATE TABLE public.c1 PARTITION OF haha.p FOR VALUES IN('v1');

insert into public.c1 SELECT 'v1', generate_series(0,100);
--error:Can't find parent table for table name

Hologres中,父表和子表可以允許不在同一個Schema中,當前父子表不在同一個Schema執行INSERT操作時,未正確判斷父子表關係,導致報錯。

出現版本:

V2.0.23及以下版本。

修複版本:

V2.0.24及以上版本。

升級到最新版本。

P2

行存表設定Clustering KeyPK不一致,且沒有顯式設定TTL時,通過insert on conflict do updatebulkload離線匯入後,查詢時出現主鍵重複。樣本SQL如下:

--建表語句
BEGIN ;
CREATE TABLE test (
  id integer,
  phone_number text,
  create_time text
  ,PRIMARY KEY (id)
);
CALL set_table_property('test', 'orientation', 'row');
CALL set_table_property('test', 'storage_format', 'sst');
CALL set_table_property('test', 'clustering_key', 'create_time:asc');
CALL set_table_property('test', 'distribution_key', 'id');
CALL set_table_property('test', 'time_to_live_in_seconds', '3153600000');
COMMIT ;


--查詢時,主鍵重複
SELECT * FROM test;
id | phone_number |create_time
---|--------------|-----------
1  | 134xxxx      | 2023-11-06 19:25:42.483287+08
1  | 134xxxx      | 2023-11-06 19:25:42.483287+08

行存表insert on conflict do update的原理是標記delete+insert,當行存表的PKClustering Key不一致時,標記的delete檔案未被正確Compaction,從而導致主鍵重複。

出現版本:

V2.0.22及以下版本。

修複版本:

V2.0.23及以上版本。

  • 將行存表的PKClustering Key改為一致,或者設定表為列存表。

  • 升級到最新版本。

P2

多個count distinct對執行array_to_string(array_sort xxx))後的列group by報錯:ORCA failed to produce a plan : No plan has been computed for required properties。樣本SQL如下:

create table t1 (f1 int , f2 int , f3 int , f4 text[]);

SELECT 
f1,f5,
count(distinct f2),
count(distinct f3)
FROM 
(
  SELECT f1,f2,f3,array_to_string(array_sort(f4),',')as f5 FROM t1
)tt
group by f1,f5;

count distinct會產生CTE,array_sort函數不支援CTE inline,導致執行計畫推導錯誤,從而SQL報錯。

出現版本:

V2.0.22及以下版本。

修複版本:

V2.0.23及以上版本。

升級到最新版本。

P2

執行drop server之後,部分查詢卡住。

執行drop server後,FE節點間未能正常Replay,導致節點間版本不一致,從而查詢卡住。

出現版本:

V1.3.40V1.3.51版本。

修複版本:

V1.3.52及以上版本。

升級到最新版本。

202309

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

使用Proxima向量索引,當插入null向量並且不走Fixed Plan時,寫入就會報錯:internal error: check condition "and_handle_null" assert failed,樣本SQL如下:

BEGIN;
CREATE TABLE t (
  vector float4[] CHECK (array_ndims(vector) = 1 AND array_length(vector, 1) = 3)
);
CALL SET_TABLE_PROPERTY ('t', 'proxima_vectors', '{"vector":{"algorithm":"Graph","distance_method":"SquaredEuclidean"}}');
END;

set hg_experimental_enable_fixed_dispatcher = off;

-- 插入一個null向量
INSERT INTO t values (null);
-- ERROR:  internal error: check condition "and_handle_null" assert failed.

Fixed Plan模式下,寫入null的向量值,導致CHECK (array_ndims(vector) 時系統不匹配,從而報錯。

出現版本:

V2.0.21及以下版本。

修複版本:

V2.0.22及以上版本。

升級到最新版本。

P1

MaxCompute專案開啟儲存加密後,Hologres外部表格查詢MaxCompute資料偶發報錯:query next FROM foreign table executor failed或者Channel is empty或者internal error: Connect timeout

Hologres在 V2.0.15版本為修複讀MaxCompute加解密的密鑰傳遞異常問題,引入了多線程記憶體寫壞問題,在MaxCompute外表處於Schema Evolution狀態時,會引發SQE組件偶發Coredump重啟,引起應用程式層訪問外部表格偶發出現報錯。

出現版本:

V2.0.15V2.0.20版本。

V1.3.61V1.3.62版本

修複版本:

V2.0.21及以上版本。

升級到最新版本。

P2

具有not null屬性的欄位使用string_agg處理時報錯:Column column0 should be non-nullable but the values contain 1 nulls,樣本SQL如下:

create table test(id int not null, msg text not null);    insert into test values (1, 'b');SELECT count(distinct id), string_agg(distinct id::text) FROM test where msg = 'a';

string_agg的輸出可以是null,但最佳化器QO會根據他處理的欄位屬性進行推導結果是否為null。當欄位為not null時,QO會推導string_agg的結果不能為null,導致結果錯誤,從而出現報錯。

出現版本:

V2.0.20及以下版本。

修複版本:

V2.0.21及以上版本。

升級到最新版本。

P2

當執行個體的Table GroupShard Count較多時(Shard Count大於100),Shard CountWorker掛掉等原因分配不均,使用Rebalance命令後仍然不均勻。

當執行個體的Table GroupShard Count較多時(Shard Count大於100),Rebalance命令在重新分配Shard時不準確,導致仍然不均勻。

出現版本:

V2.0.20及以下版本。

修複版本:

V2.0.21及以上版本。

升級到最新版本。

P2

表欄位有4位元組長度的UTF-8資料,使用substring處理時結果錯誤(FROM 表),單獨使用substring處理4位元組長度的UTF-8資料,結果正確。樣本SQL如下:

-- 返回結果為3,正確SELECT length(substring (E'\U0001F345' || '23456789', 1, 3));-- substring FROM 表時,結果錯誤create table t (emoji text);insert into t values (E'\U0001F345' || '23456789');-- 返回結果為1,結果錯誤,實際應該為3SELECT length(substring(emoji, 1, 3)) FROM t;

目前實現中,substring只支援了3位元組長度的UTF-8資料,導致從表資料使用substring時結果出錯。

出現版本:

V2.0.19及以下版本。

修複版本:

V2.0.20及以上版本。

升級到最新版本。

P2

開啟Binlog消費後,CPU消耗顯著增加。

由於系統預設參數設定不合理,在消費Binlog時,產生了高頻的系統日誌,造成CPU消耗增加。

出現版本:

V2.0.17-V2.0.19。

修複版本:

V2.0.20及以上版本。

升級到最新版本。

P2

string_aggarray_agg在有agg filter的情況下結果錯誤,樣本SQL如下:

  • DDL和匯入資料:

    create table test(x text, y int);insert into test values(null, 1), (null, 2),(null, 1), (null, 2);
  • 查詢1:

    SELECT array_agg(x) filter (where x is not null) FROM test group by y;sql--預期返回結果[null][null]--實際返回結果,結果錯誤{null}{null}
  • 查詢2:

    SELECT array_agg(x) filter (where x is  null) FROM test group by y;--預期返回{null,null}{null,null}--實際返回,結果錯誤{null,null}{null}

string_aggarray_agg在有agg filter的情況下,未能正確處理filter,導致結果錯誤或者filter結果不穩定。

出現版本:

V2.0.18及以下版本。

修複版本:

V2.0.19及以上版本。

升級到最新版本。

P2

具有not null屬性的欄位使用array_agg filter出來的結果有null時,導致執行個體出現短暫重啟,樣本SQL如下:

create table bbb(x int not null, y int);insert into bbb values (1, 1);SELECT array_agg(x) filter (where x > 1) FROM bbb group by y;

使用array_agg filter時,如果這個欄位本身是not null,那麼QE會將結果推導成not null,而實際結果中有null,導致與推導結果衝突,執行個體出現coredump。

出現版本:

V2.0.18及以下版本。

修複版本:

V2.0.19及以上版本。

升級到最新版本。

P1

使用Proxima時,將min_flush_proxima_row_count參數設定為0導致執行個體重啟。

對於Hologres儲存引擎SE,min_flush_proxima_row_count參數值必須大於0,當把min_flush_proxima_row_count設定為0時,SE檢驗不通過,導致執行個體重啟。

出現版本:

V2.0.18及以下版本。

修複版本:

V2.0.19及以上版本。

升級到最新版本。

P2

開啟自動建立分區後,將表移動至另一個Schema,並在原Schema下建立同名表時報錯:ERROR: auto_partitioning.time_unit could only be specified once,樣本SQL如下:

--開啟自動分區begin;CREATE TABLE ads.test (  olap_date integer NOT NULL default 0,  pk text NOT NULL default ''::text,  sid text  ,PRIMARY KEY (olap_date, pk))  PARTITION BY LIST (olap_date);CALL set_table_property('ads.test', 'auto_partitioning.enable', 'true');CALL set_table_property('ads.test', 'auto_partitioning.time_unit', 'day');CALL set_table_property('ads.test', 'auto_partitioning.time_zone', 'PRC');CALL set_table_property('ads.test', 'auto_partitioning.num_precreate', '4');CALL set_table_property('ads.test', 'auto_partitioning.num_retention', '33');CALL set_table_property('ads.test', 'auto_partitioning.num_hot', '15');commit;--切換表的schemaalter table test set schema to public;--重新建立同名表begin;CREATE TABLE ads.test (  olap_date integer NOT NULL default 0,  pk text NOT NULL default ''::text,  sid text  ,PRIMARY KEY (olap_date, pk))  PARTITION BY LIST (olap_date);CALL set_table_property('ads.test', 'auto_partitioning.enable', 'true');CALL set_table_property('ads.test', 'auto_partitioning.time_unit', 'day');CALL set_table_property('ads.test', 'auto_partitioning.time_zone', 'PRC');CALL set_table_property('ads.test', 'auto_partitioning.num_precreate', '4');CALL set_table_property('ads.test', 'auto_partitioning.num_retention', '33');CALL set_table_property('ads.test', 'auto_partitioning.num_hot', '15');commit;ERROR: auto_partitioning.time_unit could only be specified once

開啟自動建立分區後,對原表切換Schema,自動分區的配置未能一起切換,導致在原Schema下建立同名表時,自動分區配置衝突,從而出現報錯。

出現版本:

V2.0.18及以下版本。

修複版本:

V2.0.19及以上版本。

升級到最新版本。

202308

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

使用Concat函數入參為單列時報錯:Function concat node must have at least 2 arguments but it only has 1。樣本如下:

create table aaa(x text);insert into aaa values ('11111111');SELECT concat(x) FROM aaa;HGERR_msge internal error: Function concat node must have at least 2 arguments but it only has 1

低版本不支援Concat函數入參為單列,導致報錯。

出現版本:

V2.0.17及以下版本。

修複版本:

V2.0.18及以上版本。

建議升級到最新版本。

P1

分區表開啟冷存後,對分區父表執行alter schema操作,例如add column,導致分區子錶轉化為冷存動作不符合預期,具體可能有如下幾種:

  • 部分分區子錶轉為冷存的狀態持續為transferring

  • 預期應該轉化為冷存的子表,未正常轉換,例如設定10天前子表為冷存,但是存在10天前子表是熱存。

  • 已經為冷存的子表,查看儲存時仍然按照熱存的形式儲存。

對於分區表設定冷存的情境,如果父表執行alter schema操作,會同時對子表生效,導致分區子表的儲存屬性在FE節點與中繼資料管理器SM不一致(子表在FE上儲存為冷存,SM為其他模式),從而導致子表的冷存動作不符合預期。可以通過如下SQL擷取不符合預期的冷存表:

SELECT db_name, schema_name, table_name FROM hologres.hg_table_info where collect_time::date = date '20230901' and table_meta::json#>>'{table_storage_mode}' = 'cold' and hot_storage_size > 0 order by table_name;

出現版本:

V2.0.17及以下版本。

修複版本:

V2.0.18及以上版本。

  • 在一個事務內修改已經轉換為冷存子表的儲存屬性,樣本如下:

    begin;call set_table_property('schema.<冷存子表名>', 'storage_mode', 'hot');call set_table_property('schema.<冷存子表名>', 'storage_mode', 'cold');commit;
  • 建議升級到最新版本。

    說明

    升級後,對於升級前的儲存冷存子表還需要再做一次儲存屬性訂正。

P2

唯讀從執行個體無法消費Hologres Binlog。

唯讀從執行個體某項預設屬性變更導致。

出現版本:

V1.3V2.0早期版本。

修複版本:

V1.3.61、V2.0.17及以上版本。

建議使用主執行個體消費Hologres Binlog,或升級到最新版本。

P2

某列和不同類型列做比較且用or串連時,如:col::type = const1::type1 or col::type = const2::type2,導致結果為空白或者不符合預期。樣本SQL如下:

create table t (a date, b timestamp, c text, d int);--adate類型,or後轉成了timestamp類型,導致結果不符合預期SELECT * FROM t where a in (timestamp '2023-06-12', timestamp '2023-06-13') or a = timestamp '2023-06-14';--or串連的欄位類型不一致SELECT * FROM t where a in (timestamp '2023-06-12', timestamp '2023-06-13') or a = '2023-06-14';

or串連的欄位類型不一致時,最佳化器QO在產生執行計畫時,沒有將類型對齊,導致最終輸出結果與預期有差異。

出現版本:

V1.3.59及以下版本和

V2.0.14及以下版本。

修複版本:

V1.3.60及以上版本和V2.0.15及以上版本。

建議升級到最新版本。

P2

主從執行個體,執行HG_MOVE_TABLE_TO_TABLE_GROUP或者設定表為readonly,有一定機率會觸發從執行個體不可用。

由於從執行個體啟動了Lazy Open機制,在主執行個體執行Resharding或者手動設定readonlytrue後,並再次寫入資料後,主從執行個體Shard狀態存在不一致,造成從執行個體不可用。

出現版本:

V1.3.42V2.0.16版本。

修複版本:

V2.0.17及以上版本。

  • 如果需要執行Resharding或者設定表唯讀,可以首先在從執行個體執行以下命令,提前關閉Lazy Open機制。

    SELECT hg_admin_command('set_global_flag', 'enable_dynamic_close_tablet=false');    SELECT hg_admin_command('set_global_flag', 'enable_lazy_open_tablet=false');

    。並需要設定完重啟一次執行個體,新配置會引起記憶體水位有一定程度上升。

202307

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

使用PQE引擎查詢時報錯:

ERROR: status { code: SERVER_INTERNAL_ERROR message: "query next FROM pg executor failed FROM xxx: ERPC_ERROR_CONNECTION_CLOSED, reason: Drain packet failed, peer address:xxx" }

PQE進程在處理SQL請求時存在機率性缺陷,可能導致進程泄漏。當泄漏的進程數量達到512上限時,該執行個體將無法處理任何新的發送到PQE進程的查詢請求。

出現版本:

V2.0.1V2.0.11版本。

修複版本:

V2.0.12及以上版本。

建議升級到最新版本。

P2

共用叢集讀取ODPS加密資料報錯:

error query next FROM foreign table executor failed ,pangu://xxxx validate userinfao fail xxxx

共用叢集不支援加密資料。

出現版本:

V2.0.15及以下版本。

修複版本:

V2.0.16及以上版本。

建議升級到最新版本。

P2

使用備份恢複功能,原執行個體中有冷存表,且冷存表有頻繁寫入,備份失敗。

冷存表有頻繁寫入時,資料會一直執行compaction,備份恢複使用的是不停機備份,compaction一直無法完成,導致shard之間的version一直無法對齊,備份擷取不到shard最新狀態,從而失敗。

出現版本:

V2.0.15及以下版本。

修複版本:

V2.0.16及以上版本。

  • 將有頻繁寫入的冷存錶轉換為熱存表再進行備份,轉熱存操作請參見資料階層式存放區

  • 建議升級到最新版本。

P2

查詢PQESQL手動cancel/系統逾時cancel後,執行個體出現短暫重啟。

PQESQL比較耗費資源,當SQL被系統逾時cancel/手動cancel,沒有被正常cancel,導致出現null 指標,執行個體coredump。

出現版本:

V2.0.12V2.0.14版本。

修複版本:

V2.0.15及以上版本。

建議升級到最新版本。

P2

case when查詢中有array[]類型,查詢報錯:

Filter has x rows but length of columns is y

case when處理array[]類型的欄位時,會丟失array[]內的一些資料,導致查詢報錯。

出現版本:

V2.0.10及以下版本。

修複版本:

V2.0.11及以上版本。

建議升級到最新版本。

P2

對開啟Binlog的表執行DROP操作後,執行個體有重啟過,重啟後執行個體儲存並沒有下降,監控的儲存比pg_database_size查詢結果多。

開啟Binlog的表DROP後,執行個體重啟導致表Binlog的目錄沒有被正常刪除,從而導致儲存未下降。

出現版本:

V2.0.12及以下版本。

修複版本:

V2.0.13及以上版本。

建議升級到最新版本。

P2

建表時指定distribution keyasc/desc順序,導致查詢報錯/執行個體短暫重啟。樣本如下:

BEGIN ;CREATE TABLE test(a int);CALL set_table_property('test', 'distribution_key', 'a:asc');COMMIT ;

distribution key不支援指定asc/desc順序,導致FE執行DDLreplay失敗,從而出現coredump或者查詢/寫入對應表報錯。

出現版本:

V1.3.55及以下版本。

修複版本:

V1.3.56及以上版本。

  • 建立distribution key時不指定asc/desc順序。

  • 升級到最新版本解決coredump問題,建表時指定distribution keyasc/desc將會報錯invalid distribution column: xx:asc

202306

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

SLPM模式下,通過slpm_alter_view_owner函數開啟在不同的Schema下建兩個同名View,報錯:ERROR: more than one row returned by a subquery used as an expression。樣本SQL如下:

call slpm_enable();call slpm_enable_multi_schema_view();create schema test_schema;create table tb1(id int);create view public.v1 as SELECT * FROM public.tb1;create view test_schema.v1 as SELECT * FROM public.tb1;

SLPM模式下,跨Schema建立視圖會引用pg_class系統資料表,當不同Schema下有同名View時,pg_class裡有relname列重複,子查詢查出來不止一行,從而導致結果錯誤。

出現版本:

V2.0.3V2.0.9版本。

修複版本:

V2.0.10及以上版本。

建議升級到最新版本。

P2

開啟冷存後,唯讀從執行個體訪問冷存表,執行個體出現短暫重啟。

目前的版本唯讀從執行個體配置缺少冷存相關的環境變數,因此當唯讀從執行個體訪問冷存表時報錯。

出現版本:

V1.3.54及以下版本。

修複版本:

V1.3.55及以上版本。

  • 將冷存錶轉成標準儲存表。

  • 建議升級到最新版本。

P2

Hologres執行個體升級 V1.3版本後在MaxCompute中建立Hologres外部表格,通過雙簽名方式訪問華東2(上海)和美國(維吉尼亞)地區的Hologres執行個體時查詢報錯:

ERROR: pooler: xxxx: authentication failed

華東2(上海)和美國(維吉尼亞)地區升級後因環境配置錯誤,導致缺少MaxCompute訪問Hologres的雙簽名帳號鑒權,導致MaxComputeHologres時出現鑒權錯誤。

出現版本:

V1.3.54及以下版本。

修複版本:

V1.3.55及以上版本。

建議升級到最新版本。

P2

Hologres執行個體升級 V1.3版本後華東2(上海)和美國(維吉尼亞)地區通過如下命令查看到單節點串連數上限不是128。

show max_connections;

華東2(上海)和美國(維吉尼亞)地區升級後因環境配置錯誤,導致單節點最大串連數實際值與預設值128不同。

出現版本:

V1.3.54及以下版本。

修複版本:

V1.3.55及以上版本。

建議升級到最新版本。

P2

開啟資料脫敏後,查詢SQL使用CTE+union脫敏欄位,導致查詢報錯:

ERROR: pooler: xxxx: remote server read/write error yy。樣本如下:

set hg_anon_enable = on;create table if not exists test_anon_cte(id text);security label for hg_anon on column test_anon_cte.id is 'hash';with tt2 as (SELECT * FROM test_anon_cte) SELECT count(1) FROM tt2 where id != 'a' group by id union all SELECT count(1) FROM tt2 where id != 'b' group by id;

開啟資料脫敏後,脫敏欄位不支援union all,在CTE+union的情況下,最外層查詢出現null 指標,導致執行個體出現coredump,從而查詢報錯。

出現版本:

V1.3.51及以下版本。

修複版本:

V1.3.52及以上版本。

建議升級到最新版本解決執行個體coredump,但脫敏欄位不支援union,查詢會報錯UNION is not supported on security item

P2

HologresV1.1版本升級至V1.3版本後,cast array to text的結果中,會出現轉義符號(\),樣本如下:

create table arrary_to_text (  a text, b text, c text);insert into arrary_to_text values ('7416461', 'czzzzz', '2023-04-16 23:13:34');SELECT CAST(ARRAY_AGG(CONCAT('[','"', a,'"',',','"', b,'"',',','"', c,'"',']')) AS TEXT) AS list_vin FROM arrary_to_text limit 1;--1.3最新版本的返回結果"{"[\"7416461\",\"czzzzz\",\"2023-04-16 23:13:34\"]"}"--1.1版本返回結果"{"["7416461","czzzzz","2023-04-16 23:13:34"]"}"

Hologres V1.3.51以下的版本對cast array to text的轉換支援不完善,未添加轉義符號(\)。從V1.3.51版本開始,Hologres完善了cast array to text的支援,將行為保持與PostgreSQL標準協議一致,查詢結果相比老版本結果中將會有轉義符號(\),因此結果不一致是符合預期的。

出現版本:

V1.3.50及以下版本。

修複版本:

V1.3.51及以上版本。

結果多了轉義符號(\)是符合預期的。

202305

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

執行包含Nested Loop JoinSQL報錯:Schema has 1 fields but 2 are expected。樣本SQL如下:

SELECT "_"."table_name"    FROM "public"."test" "_"    where "_"."table_name" = 'hello'     and (case when lower("_"."user_id") is not null        then lower("_"."user_id")        else ''        end) = 'ssss';

HologresNested Loop Join輸出資料行包含OuterInner,需要額外的project來指定輸出的列,目前的版本的Hologres最佳化器會將多餘的project最佳化掉,導致表的列對不齊,從而查詢報錯。

出現版本:

V1.3.45及以下版本。

修複版本:

V1.3.49及以上版本。

建議升級到最新版本。

P2

TEXT類型資料轉換成JSON類型時,如果TEXT類型的資料不符合標準JSON格式,也會被轉成JSON類型。樣本SQL如下:

create table test1(data text);insert into test1 values('{"a","b"}');SELECT data::json FROM test1;--錯誤的結果:{"a","b"}

正確的結果應該是報錯:invalid input syntax for type json" detail: "Expected \":\", but found \",\"."

執行text::json類型轉換時,::json被處理成了cast,導致執行引擎QE觸發JSON資料格式校正,導致資料被錯誤地轉換成了JSON類型資料。

出現版本:

V1.3.20V1.3.46版本。

修複版本:

V1.3.47及以上版本。

建議升級到最新版本。

P2

使用to_number函數(傳回型別是DECIMAL),再將結果轉換成STRING類型,後續的計算結果錯誤。樣本SQL如下:

create table test(x text);insert into test values ('0');SELECT (to_number(x, '9') || ' days')::interval FROM test;結果為:-------0.E-10 days

Hologres中,to_number會將0.0000000000轉換成TEXT類型,然後變成科學計數法,計算引擎QE對於科學計數法目前處理不當,導致查詢結果不正確。

出現版本:

V1.3.44及以下版本。

修複版本:

V1.3.46及以上版本。

建議升級到最新版本。

P2

讀取MaxCompute Cluster、Cfile等特殊類型的表時,相比讀取普通MaxCompute表,查詢變慢。

目前的版本讀取MaxCompute Cluster 、Cfile時,Hologres的計算引擎會將讀取的外表小檔案拆分成更小的檔案,導致單次查詢的檔案變多,因此查詢變慢。

出現版本:

V1.3.20V1.3.40版本。

修複版本:

V1.3.45及以上版本。

建議升級到最新版本。

202304

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P0

修改表Schema時(如修改TTL、Bitmap、Dictionary等),執行個體出現重啟。如修改表的TTLSQL樣本如下:

call set_table_property('tablename', 'time_to_live_in_seconds', '946080');

執行個體從V1.1等低版本升級上來,導致系統中存在部分表歷史版本Schema中繼資料有缺失,這部分缺失資訊在對應表完成FlushCompaction操作之後可能需要被訪問,目前的版本對Schema缺失資訊處理不當,觸發執行個體coredump。

出現版本:

V1.3.20V1.3.44版本。

修複版本:

V1.3.45及以上版本。

建議升級到最新版本。

P2

使用早於197011日的timestamptz資料時,函數to_char(to_timestamp(hour))的返回結果會比實際時間少1小時,樣本SQL如下:

create table t (a int);insert into t values (2);SELECT to_char(to_timestamp(a || '', 'HH24'), 'HH24:00:00') FROM t;

執行結果是:01:00:00,實際結果應該是02:00:00

執行引擎在時間戳記處理過程中,時間精度轉化錯誤,導致結果錯誤。

出現版本:

V1.3.20V1.3.43版本。

修複版本:

V1.3.44及以上版本。

建議升級到最新版本。

P2

SQL中帶有JSONB類型轉NUMERIC類型,且NUMERIC沒有指定精度,查詢報錯:HGERR_msge numeric field overflow HGERR_detl A field with precision 0, scale 0 must round to an absolute value less than 1. HGERR_ctxt func_name:jsonb_numeric HGERR_end。樣本SQL如下:

create table t1(f1 jsonb);insert into t1 values('1.1');SELECT f1::numeic FROM t1;

JSONB類型轉NUMERIC類型未指定精度,最佳化器QO產生的執行計畫沒有給出預設精度,QE在執行的時候將NUMERIC轉換為DECIMAL的時候對於沒有指定精度的情況,預設值是0,0。因此無法運行導致報錯。

出現版本:

V1.3.20V1.3.41版本。

修複版本:

V1.3.42及以上版本。

  • JSONB類型轉NUMERIC類型時指定精度。

  • 建議升級到最新版本。

P2

查詢OSS資料湖資料時,報錯:query next FROM foreign table executor failed, Failed to call iterateForeignScan: ArrayIndexOutOfBoundsException

讀取OSS資料時,Hologres資料湖查詢引擎出現記憶體泄露,導致查詢報錯。

出現版本:

V1.3.20V1.3.41版本。

修複版本:

V1.3.42及以上版本。

建議升級到最新版本。

202303

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

union all兩個Decimal欄位時,如果Decimal欄位的精度不一致,查詢報錯:NUMERIC precision 65535 must be between 1 and 1000。樣本SQL如下:

create table t1(a int ,b numeric(38,0), c bigint);create table t2(a int ,b numeric(38,0), c numeric(30,0));SELECT b / power(10, 18),c FROM t1UNION allSELECT a / power(10, a), c FROM t2

union all兩邊的Decimal精度不一致時,QO未做精度對齊,導致執行時QE發現精度不一致,從而查詢報錯。

出現版本:

V1.3.20V1.3.40版本。

修複版本:

V1.3.41及以上版本。

建議升級到最新版本。

P2

在同一個事務內,對已經存在的分區父表執行call set_table_property命令報錯:SET_TABLE_PROPERTY and CREATE TABLE statement are not in the same transaction for table 。樣本SQL如下:

--樣本分區父表存在的情況下,執行如下sql:BEGIN;CREATE TABLE IF NOT EXISTS "public".test ( "parent_node_id" text, "parent_node_name" text, "is_leaf" text, "node_flag" text, "ds" text) PARTITION BY LIST(ds);CALL SET_TABLE_PROPERTY('"public".test', 'orientation', 'row');COMMIT;

Hologres V1.3.38之前的版本,當分區父表存在時,使用set_table_property命令設定的屬性與原表相同時,SQL會被自動忽略。在Hologres V1.3.38版本加強了對set_table_property設定屬性的校正,原則上不允許對已經存在的表修改部分屬性,比如orientation、distribution_key、clustering_key等屬性,如果修改則會報錯。

出現版本:

V1.3.38V1.3.40版本。

修複版本:

V1.3.41及以上版本。

建議升級到最新版本。

說明

升級後將會保持與V1.3.38之前的版本行為一致,即如果表存在,修改表屬性時如果屬性相同則忽略掉SQL。

P2

to_dateto_charto_timestamp函數在處理有首碼空格的資料時查詢報錯:HGERR_detl Field requires 4 characters, but only 0 could be parsed。樣本SQL如下:

CREATE TABLE test2 (x text);INSERT INTO test2 VALUES (' 2022 03');SELECT to_date(x, 'YYYYMM')FROM test2;

當資料有首碼空格時,to_dateto_charto_timestamp函數對空格處理有誤,導致資料轉換失敗,從而查詢報錯。

出現版本:

V1.3.20V1.3.40版本。

修複版本:

V1.3.42及以上版本。

  • 修改SQL處理首碼空格,樣本:to_char(year, 'FM9999')

  • 建議升級到最新版本。

202302

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

rb_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數組的雙向轉換,所以執行失敗。

出現版本:

V1.3.37及以下版本。

修複版本:

V1.3.38及以上版本。

建議升級到最新版本。

P2

SQL中包含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沒有下推,導致查詢結果不正確。

出現版本:

V1.3.20V1.3.36版本。

修複版本:

V1.3.37及以上版本。

  • 修改SQL,將SQLoffset的值改為小於limit的值。

  • 建議升級到最新版本。

P2

執行ANALYZE操作時報錯:ERROR: store statistic results for table `public.table_name` failed: basic_string::_M_create

ANALYZE在解析表的欄位時未處理正確,導致報錯。

出現版本:

V1.3.36版本。

修複版本:

V1.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 exist;

使用set search_path to 命令指定特定Schema後,create table as文法中表名稱未添加Schema首碼的情況下,系統還是會預設從public Schema下搜尋源表、插入資料,但public Schema下沒有此表,導致報錯。

出現版本:

V1.3.20V1.3.36版本。

修複版本:

V1.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 exist test_tb(  id bigserial not null,  f1 text,  primary key (id,f1));--在insert語句中,給f1欄位插入資料。insert into test_tb(f1) values('1'),('2'),('3');-- 修改自增起始值100000000000alter 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 | 12 | 23 | 31128270048 | 61128270049 | 7

目前的版本對bigserial類型起始值支援的資料範圍是int4的範圍(-2147483648 ~ 2147483647)。當設定的起始值超過支援的範圍後,會出現精度溢出,從而導致結果不正確。

出現版本:

V1.3.20V1.3.35版本。

修複版本:

V1.3.36及以上版本。

建議升級到新版本。

P2

Hologres執行個體從V1.1版本升級到V1.3版本後,查詢、寫入分區表Array類型時報錯:internal error: Datasets has different schema Schema,且SQL命中的分區有升級前的分區和升級後建立的分區。

分區表父表的Array類型的欄位未指定not null屬性,目前的版本處理Arraynullable屬性處理有誤,升級前預設為nullable,升級後新建立子表預設為not null,當查詢同時命中升級前後多個分區時,由於分區子表中繼資料不一致,導致執行報錯。

出現版本:

V1.3.20V1.3.35版本。

修複版本:

V1.3.36及以上版本。

  • 對分區父表執行一次修改表屬性操作,樣本:

    call set_table_property('table_name', 'time_to_live_in_seconds', 'xx');
  • 建議升級到新版本。

202301

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

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,從而效能變差。

出現版本:

V1.3.20V1.3.34版本。

修複版本:

V1.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,從而出現效能退化。

出現版本:

V1.3.20V1.3.34版本。

修複版本:

V1.3.35及以上版本。

  • 開啟JSONB列存後不加LIMIT

  • 建議升級到最新版本。

P0

在開啟MC外表直讀情境下,執行個體因為某些原因重啟(如擴容計算節點、OOM等)造成執行個體服務無法啟動。

MC直讀時在因為系統實現缺陷,存在一定機率造成中繼資料與資料狀態不一致,造成儲存引擎無法正常載入資料,造成啟動失敗。後續修正問題時,有可能存在丟失刪除狀態的問題。

出現版本:

V1.3.14V1.3.33版本。

修複版本:

V1.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,為其他值。

列存表設定了BinlogSegment Key,在WHERE條件中使用Segment Key過濾,產生了錯誤的執行計畫,導致過濾無效。

出現版本:

V1.3.33及以下版本。

修複版本:

V1.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類型時,預設使用PostgresASCII碼,導致報錯。

出現版本:

V1.3.33及以下版本。

修複版本:

V1.3.34及以上版本。

建議升級到新版本。

2022年歷史缺陷

202212

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

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報錯。

出現版本:

V1.3.20V1.3.32版本。

修複版本:

V1.3.33及以上版本。

  • 先切換至專家許可權模型授權再使用SPM模型消費Binlog或者直接使用專家許可權模型消費Binlog。

  • 建議升級到新版本。

P1

Hologres執行個體升級到V1.3.30版本後,記憶體使用量率不明原因上漲,業務QPS、資料量等均沒有變化。

Hologres中預設會有Result Cache,在Result Cache插入失敗時資源沒有及時析構,從而出現記憶體使用量率上漲。

出現版本:

V1.3.30V1.3.31版本。

修複版本:

V1.3.32及以上版本。

建議升級到新版本。

P2

jsonb_object_filed嵌套jsonb_array_element時報錯:internal error: Only jsonb_object_field 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;

函數嵌套邏輯錯誤,導致值不匹配。

出現版本:

V1.3.20V1.3.29版本。

修複版本:

V1.3.30及以上版本。

建議升級到新版本。

P2

查詢唯讀從執行個體中的表時出現主鍵重複,查詢主執行個體中相同的表則沒有主鍵重複。

資料剛匯入時就執行刪除,且唯讀從執行個體剛好因為升級、擴容等原因Failover,導致從執行個體中重複的主鍵資料沒有及時清理掉,從而出現從執行個體主鍵資料重複。

出現版本:

V1.3.27V1.3.28版本。

修複版本:

V1.3.29及以上版本。

  • 使用主執行個體提供查詢。

  • 建議升級到新版本。

202211

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

建表時,nullable的欄位設定為Clustering KeySegment Key ,查詢資料時有偶髮結果不一致的現象。

含有nullable Clustering KeySegment Key的表,查詢的時候,Result Cache中的結果緩衝錯誤,導致查詢結果不一致。

出現版本:

V1.1.30V1.3.27版本。

修複版本:

V1.3.28及以上版本。

  • 重建立表並指定設定Clustering KeySegment Key的欄位不可為空。

  • 建議升級到新版本。

P2

使用ST_Collect(col)函數時報錯:ERPC_CONNECTION _CLOSED

PostGIS函數相容PostgreSQL,Hologres中使用原生PostgreSQLnode tag值進行判斷,判斷錯誤導致報錯。

出現版本:

V1.3.27及以下版本。

修複版本:

V1.3.28及以上版本。

建議升級到新版本。

P2

使用string_agg(text)函數出現報錯:An I/O error occurred while sending to the backend

string_agg函數在Hologres中是走PQE,當string_agg(text)沒有指定分隔字元時,PQE處理該函數出現null 指標,導致查詢報錯。

出現版本:

V1.3.20V1.3.27版本。

修複版本:

V1.3.28及以上版本。

  • 修改SQL,為string_agg(text,',')顯式指定分隔字元。

  • 建議升級到新版本。

P2

讀取MaxCompute外部表格資料時,使用WITH語句,查詢結果與不帶WITH語句的結果不一致。

在讀取CFile、RANGE TABLE等格式的MaxCompute外部表格時,同時命令語句中含有WITH子句且WITH子句輸出的列順序與表中列順序不一致,Hologres外部表格介面輸出的結果順序錯誤,導致查詢結果不一致。

出現版本:

V1.3.24V1.3.26版本。

修複版本:

V1.3.27及以上版本。

  • 不使用WITH語句進行查詢。

  • 建議升級到新版本。

P2

查詢MaxCompute外部表格ARRAY類型的欄位報錯:Array length did not match record batch length

訪問MaxCompute ORC格式的表時,Hologres外部表格對於ARRAY類型的欄位介面長度處理不一致,導致ARRAY資料長度超過限制,出現報錯。

出現版本:

V1.3.20V1.3.26版本。

修複版本:

V1.3.27及以上版本。

建議升級到新版本。

202210

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

Distribution Key設定為空白字串時查詢報錯:Failed to get bh reader: internal error CONTEXT。樣本DDL如下:

call set_table_property('<table_name>', 'distribution_key', ' ');

Distribution Key設定為空白字串時,無法正確路由到資料所在的Shard,導致查詢報錯。

出現版本:

V1.3.24及以下版本。

修複版本:

V1.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類型轉換錯誤,導致查詢報錯。

出現版本:

V1.3.20V1.3.24版本。

修複版本:

V1.3.25及以上版本。

建議升級到新版本。

P2

Hologres執行個體升級 V1.3.20版本後,查詢帶有數群組類型欄位的MaxCompute外部表格時報錯:internal error: IOError: Invalid flatbuffers message

讀取MaxCompute外部表格時,因讀取介面版本較低,無法識別數群組類型,導致查詢報錯。

出現版本:

V1.3.20V1.3.24版本。

修複版本:

V1.3.25及以上版本。

  • 暫時避免查詢數群組類型的欄位。

  • 建議升級到新版本。

P2

PostgreSQL系統資料表匯入至Hologres表,Hologres表結果隨機變化,不穩定。樣本如下:

-- 查詢結果 22505SELECTcount(1)FROMpg_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.tables11SELECT'tmp'FROMpg_class c inner join pg_attribute a on c.oid = a.attrelidSELECT count(1) FROM public.tables11

PostgreSQL系統資料表為PostgreSQL原生系統資料表,Hologres是分布式系統,每個FE節點因為不斷執行DDL導致節點的版本不一致。查PostgreSQL系統資料表時,從不同的節點擷取資料,導致結果不穩定。

出現版本:

V1.3.22V1.3.24版本。

修複版本:

V1.3.25及以上版本。

建議升級到新版本。

P2

Hologres執行個體升級至V1.3.20及以上版本後,case when語句中含有DECIMAL類型欄位的查詢報錯:internal error: column with id 0 has type decimal(38, 3) but ReadColumn returns array Array(type=decimal(38, 10) length=3 null_count=0

case when語句中,DECIMAL未被顯示轉換精度,最佳化器(QO)在推導執行計畫時,精度推導錯誤,從而導致執行報錯。

出現版本:

V1.3.20V1.3.24版本。

修複版本:

V1.3.24及以上版本。

建議升級到新版本。

P2

PostgreSQL系統檢視表匯入到業務建立的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"]),此類型在轉執行計畫的時候被錯誤轉成某個無意義的數值,導致沒有資料命中。

出現版本:

V1.3.22V1.3.24版本。

修複版本:

V1.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"}}');

出現版本:

V1.3.24及以下版本。

修複版本:

V1.3.25及以上版本。

  • 重建立表並將設定索引DDL改為正確的書寫格式。

  • 建議升級到新版本。

    說明

    升級最新版本後,仍然不支援該錯誤的書寫,但是建表時會報錯。

P2

Superuser使用者執行SELECT hg_dump_script('xxxx')命令時報錯:ERROR: permission denied for table pg_subscription

hg_dump_script函數間接調用pg_subscription進行邏輯複製,pg_subscription鑒權失敗導致出現報錯。

出現版本:

V1.3.20V1.3.24版本。

修複版本:

V1.3.25及以上版本。

  • 使用Superuser帳號進行授權,命令樣本如下。

    grant SELECT on pg_subscription to "xx";
  • 建議升級到新版本。

P2

使用RAM使用者通過Flink消費Hologres Binlog或者通過DataHub寫入資料至Hologres時,報錯:NoSuchProject

接入節點(Frontend)對RAM使用者解析錯誤,導致報錯。

出現版本:

V1.3.23及以下版本。

修複版本:

V1.3.24及以上版本。

建議升級到新版本。

P2

Hologres執行個體從 V1.1版本升級至 V1.3版本後,MaxCompute外部表格查詢耗時增加,通過查看執行計畫(explain sql)發現,表統計資訊的row_count1000,即統計資訊未自動更新。

Hologres執行個體升級到 V1.3版本後,Auto Analyze未檢測到外部表格的Schema,導致未能及時擷取到外部表格的統計資訊。

出現版本:

V1.3.14V1.3.23版本。

修複版本:

V1.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類型的精度進行了額外裁剪,導致結果精度錯誤。

出現版本:

V1.3.20V1.3.23版本。

修複版本:

V1.3.24及以上版本。

建議升級到新版本。

202209

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

JDBC串連串指定了Schema,但是Schema沒有生效,仍然為public Schema。串連樣本如下:

String jdbcUrl = "jdbc:postgresql://hostname: port /dbname?currentSchema=demo;

FE節點對於串連串中?後的字串未處理,導致currentSchema設定未生效。

出現版本:

V1.3.14V1.3.22版本。

修複版本:

V1.3.23及以上版本。

建議升級到新版本。

P1

建立了物化視圖,SQL查詢命中物化視圖自動改寫,導致執行個體出現短暫重啟。

命中物化視圖自動改寫的SQL,最佳化器在產生執行計畫時擷取表的Meta資料失敗,導致執行個體異常。

出現版本:

V1.3.14V1.3.22版本。

修複版本:

V1.3.23及以上版本。

建議升級到新版本。

P2

在一個執行個體內為不同使用者佈建不同的IP白名單策略,這些使用者在白名單的IP內無法訪問Hologres執行個體,報錯:reject ip xxx

為使用者佈建IP白名單後,網關攔截了使用者,導致實際上使用者並沒有被設定在白名單內。

出現版本:

V1.3.21及以下版本。

修複版本:

V1.3.22及以上版本。

  • 不設定IP白名單,或者將白名單的使用者策略改為ALL(即將數據庫限制參數設定為ALL)。

  • 建議升級到新版本。

P2

Fixed Plan的點查情境下查詢 Decimal類型資料報錯:get result failed:scale should between 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類型精度推導錯誤,導致結果報錯。

出現版本:

V1.3.20及以下版本。

修複版本:

V1.3.21及以上版本。

建議升級到新版本。

P2

開啟IP白名單之後,Flink消費Hologres Binlog報錯:reject ip 1.xxx

Flink消費Hologres binlog使用的介面為Hologres即時資料匯入介面(非JDBC模式),該介面暫不支援開啟IP白名單功能。

出現版本:

V1.3.20及以下版本。

修複版本:

V1.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類型。

出現版本:

V1.3.20及以下版本。

修複版本:

V1.3.21及以上版本。

建議升級到新版本。

P1

在查詢MC外表時,查詢卡住,在重啟執行個體後,卡住現象消失。

Hologres讀取MC中繼資料時, 如果MC中繼資料服務發生主備切換,Hologres沒有能夠正確處理異常情境,造成重試失敗,引起查詢卡頓。

出現版本:

V1.3.20及以下版本。

修複版本:

V1.3.21及以上版本。

建議升級到新版本。

202208

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

使用JDBC Prepare Statement模式執行SQL查詢時報錯:cannot push query id when transaction is not start

JDBC Prepare Statement模式下,執行SQL實際上還沒有開始事務,導致無法產生Query ID,從而報錯。

出現版本:

V1.1.80V1.1.86版本。

修複版本:

V1.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');導致資料很快被刪除。

帶逗號的TTL315,360,000屬於非法數值,在解析SQL時會預設將逗號後的值去掉,導致TTL被設定成了315s,資料因為到期被清理。

出現版本:

V1.1.85及以下版本。

修複版本:

V1.3.20及以上版本。

  • 設定TTL時使用INT類型且不使用逗號。

  • 建議升級到新版本。

    說明

    升級後,帶逗號的非法TTL值在建表、修改TTL時,將會報錯。

P2

行存表Clustering KeyPK設定不一致時,查詢報錯: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 KeyPK設定不一致時,儲存引擎會錯誤地產生相同的Record,導致查詢報錯。

出現版本:

V1.1.84及以下版本。

修複版本:

V1.3.20及以上版本。

  • 行存表設定相同的Clustering KeyPK。

  • 建議升級到新版本。

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_properties

JDBC消費Hologres Binlog時需要使用Superuser帳號,否則會沒有許可權。

出現版本:

V1.1.83及以下版本。

修複版本:

V1.3.20及以上版本。

  • 使用Superuser帳號。

  • 建議升級到新版本,同時給非Superuser帳號設定一定的許可權,詳情請參見通過JDBC消費Hologres Binlog

P2

查詢慢Query日誌時缺少日誌,但是監控資訊上卻顯示延遲和QPS。

同一事務(Transaction)中不同Query有相同Query ID,元倉收集Query去重後只保留了一條Query,導致其他Query丟失。

出現版本:

V1.1.80及以下版本。

修複版本:

V1.3.20及以上版本。

建議升級到新版本。

P2

消費Hologres Binlog時報錯:com.alibaba.hologres.org.postgresql.util.PSQLException: ERROR: relation "hologres.hg_replication_slot_properties" does not exist

執行個體因某個原因有過FE節點重啟,節點恢複後沒有將Hologres BinlogExtension恢複,導致消費失敗。

出現版本:

V1.3以下版本。

修複版本:

V1.3.20及以上版本。

建議升級到新版本。

202207

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

熱升級之後查詢表報錯:File(fn: xxx) real size != size in meta: 0 != yyyy

執行個體進行熱升級,熱升級過程中表有離線BulkLoad寫入,離線寫入時資料會進行Compaction,導致中繼資料存在相容性問題從而出現報錯。

出現版本:

V1.1.80及以下版本。

修複版本:

V1.1.81及以上版本。

  • 執行個體熱升級時暫停表的離線寫入或者使用普通冷升級。

  • 建議升級到新版本。

P2

同時回寫MaxCompute同一表的不同分區時報錯:ERROR:commit uploder failedErrorMessage=Operation failed due to concurrent upload/insert operationson the same table

不同的MaxCompute分區屬於同一個表,在回寫時,回寫介面執行commit upload session時會共用同一個表鎖,導致鎖衝突報錯。

出現版本:

V1.1.78及以下版本。

修複版本:

V1.1.79及以上版本。

建議升級到新版本。

202206

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

Analyze OSS外部表格時,出現OOM(Out Of Memory)。

在對OSS外部表格執行Analyze時,OSS行數擷取介面會預設採樣的行數較大(超過3萬行),從而出現OOM。

出現版本:

V1.1.76及以下版本。

修複版本:

V1.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)端報錯。

出現版本:

V1.1.73及以下版本。

修複版本:

V1.1.74及以上版本。

  • in中的常量類型和列的類型保持一致。

  • 建議升級到新版本。

P2

建立OSS外部表格時,只選擇部分欄位建立外部表格,建立時報錯:Open ORC file failed for schema mismatch

選擇部分OSS欄位建立外部表格時,引擎對部分外部表格的支援有限制,只能選擇全部欄位。

出現版本:

V1.1.73及以下版本。

修複版本:

V1.1.74及以上版本。

  • 選擇全部欄位建立外部表格。

  • 建議升級到新版本。

P2

刪除某一段區間的資料之後(如刪除某個分區),立即對同一張表執行insert命令,寫入的速度變慢。

當刪除了一個區間或者一段連續的值之後,此時Compaction還未全部完成,執行insert命令時,會先去查詢該時間段是否有相同的記錄,直到遇到第一條沒被刪除的記錄才能停下來,如果查詢的Key附近有大量連續刪除的記錄,會消耗很多時間在遍曆這些記錄上,導致insert命令寫入速度慢。

出現版本:

V1.1.70及以下版本。

修複版本:

V1.1.71及以上版本。

建議升級到新版本。

202205

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

MaxCompute表報錯:Timestamp overflow detected while converting timestampFROM orc VectorBatch to arrow

MaxCompute表中有TIMESTAMP類型,使用Tunnel寫入後TIMESTAMP精度會變成納秒,目前Hologres暫不支援精度為納秒的TIMESTAMP,導致報錯。

出現版本:

V1.1.69及以下版本。

修複版本:

V1.1.70及以上版本。

  • 修改MaxCompute表的TIMESTAMP類型為DATETIME類型。

  • 建議升級到新版本。

P2

查詢OSS Parquet資料時,通過count語句每次查出的結果不一致,而OSS資料沒發生過變化。

HologresOSS Parquet檔案時,介面版本較老,導致讀取非Null資料中會隨機出現Null值,從而查詢結果錯誤。

出現版本:

V1.1.67及以下版本。

修複版本:

V1.1.68及以上版本。

建議升級到新版本。

P2

Hologres中使用SQL方式將資料回寫MaxCompute時報錯:Blocks not match, server:xx client yy

在回寫MaxCompute時,逾時時間預設為300s,導致產生了空的Block,從而出現報錯。

出現版本:

V1.1.64及以下版本。

修複版本:

V1.1.65及以上版本。

  • 通過執行如下命令修改逾時時間。

    alter server odps_server options (add socket_timeout '600');

    修改逾時時間為600s,不容易產生空Block。

  • 建議升級到新版本。

P2

Hologres 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狀態的檢查,當增加多列時,狀態檢查錯誤,導致增加列失敗。

出現版本:

V1.1.1V1.1.58版本。

修複版本:

V1.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過濾的資料被識別為了非法資料進行轉換,導致報錯。

出現版本:

V1.1.58及以下版本。

修複版本:

V1.1.59及以上版本。

建議升級到新版本。

P2

並發讀取MaxCompute加密的表時,出現報錯:failed to load row group data FROM file pangu

在並發讀取MaxCompute加密表時,Reader並發解析加密對象,導致解密錯誤。

出現版本:

V1.1.57及以下版本。

修複版本:

V1.1.58及以上版本。

建議升級到新版本。

P2

NUMERIC或者DECIMAL類型的欄位執行求餘(%)計算,且下推至HQE中執行,導致計算結果不正確。

HQE不支援NUMERICDECIMAL類型的求餘,但未做類型校正,導致結果出錯。

出現版本:

V1.1.55及以下版本。

修複版本:

V1.1.56及以上版本。

  • 不對NUMERICDECIMAL類型的欄位執行求餘計算。

  • 建議升級到新版本。

    說明

    升級後仍然不支援對NUMERICDECIMAL類型的欄位執行求餘計算,會直接報錯。

202204

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

通過JDBC訂閱Hologres Binlog,啟動JDBC消費Binlog作業pgreplicationstream.start()在資料庫端同時執行drop table xx;刪除對應表,導致執行個體出現短暫重啟。

訂閱Binlog時刪除表,會導致訂閱時表不存在,但是訂閱Binlog需要擷取表的table_properties,導致null 指標,出現執行個體重啟現象。

出現版本:

V1.1.54及以下版本。

修複版本:

V1.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

出現版本:

V1.1.52及以下版本。

修複版本:

V1.1.53及以上版本。

建議升級到新版本。

P2

當使用Grouping sets和多個Count Distinct對分區表進行查詢時,查詢結果不正確。

Grouping sets和多個Count Distinct對分區表查詢時,最佳化器未對分區進行裁剪,導致分區過濾條件未命中,從而出現結果不正確。

出現版本:

V1.1.52及以下版本。

修複版本:

V1.1.53及以上版本。

建議升級到新版本。

202203

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

通過DLF查詢OSS外部表格時報錯:failed to import foreign schema ,建立user-mapping後能正常查詢。

沒有設定user-mapping時,鑒權介面傳遞許可權錯誤,導致查詢報錯。

出現版本:

V1.1.50及以下版本。

修複版本:

V1.1.51及以上版本。

  • 顯式設定user-mapping,詳情請參見基於DLF訪問OSS資料湖加速

  • 建議升級到新版本。

    說明

    升級到新版本後不需要顯示建立user-mapping即可正常訪問相關資料。

P2

PrepareStatement模式下查詢SQL報錯:unrecognized node type: 0或者Hologres執行個體出現短暫重啟。

PrepareStatement模式下可以對反覆執行的SQL產生Plan cache,減少接入端的開銷。而在目前的版本PrepareStatement模式對SQLPlan cache擷取不及時,導致查詢出錯。

出現版本:

V1.1.47V1.1.50版本。

修複版本:

V1.1.51及以上版本。

  • 使用jdbc:postgresql://<host>:<port>/<dbname>?preferQueryMode=simple命令將JDBC串連串修改為Simple模式。

  • 建議升級到新版本。

P1

Blink或者Flink RPC模式寫入Hologres時報錯:failed to create channel into server xxx,connection refused to rpc proxy endpoint

使用Blink或者Flink RPC模式寫入Hologres時,介面未返回Rpcproxy連接埠,導致寫入報錯。

出現版本:

V1.1.50及以下版本。

修複版本:

V1.1.51及以上版本。

  • Flink作業切換為JDBC寫入模式,詳情請參見Flink全託管

  • 建議升級到新版本。

P2

執行含有union allJoin SQL命令時報錯:internal error: 0 shard end shard value: xxx doesn\'t

union allJOIN SQL在推導執行計畫時錯誤,導致報錯。

出現版本:

V1.1.49及以下版本。

修複版本:

V1.1.50及以上版本。

建議升級到新版本。

P2

使用json_array_elements函數且SQL中含有Join命令時,報錯:Duplicate keys detected when building hash table

執行引擎(QE)在執行Join運算元時會構建雜湊表,但是實際讀資料時,沒有正常過濾json_array_elements處理後的資料,導致讀取的資料有重複從而報錯。

出現版本:

V1.1.49及以下版本。

修複版本:

V1.1.50及以上版本。

建議升級到新版本。

P2

執行Join SQL時報錯:Explicit remote seek FROM a source is not supported

Join SQL產生的執行計畫(通過explain sql查看)是Nested Loop Join時,執行引擎擷取Nested Loop Join相關的執行計畫錯誤,導致執行報錯。

出現版本:

V1.1.49及以下版本。

修複版本:

V1.1.50及以上版本。

建議升級到新版本。

P2

SQL過濾條件中含有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過濾條件丟失,結果出錯。

出現版本:

V1.1.48及以下版本。

修複版本:

V1.1.49及以上版本。

建議升級到新版本。

P2

SLPM許可權模型下,修改Schema名稱時執行CALL slpm_rename_schema ( old_name, new_name )命令,報錯:UPDATE is not supported

SLPM許可權模型下修改Schema時,許可權介面判斷錯誤,導致執行報錯。

出現版本:

V1.1.47及以下版本。

修複版本:

V1.1.48及以上版本。

建議升級到新版本。

202202

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

SPM或者SLPM模式下,開啟資料脫敏後,進行Auto Analyze或者Analyze失敗。

後端會使用表Owner去執行Auto Analyze,但SPM或者SLPM模式下,表的OwnerDeveloper,沒有登入許可權,而對脫敏列採樣時會走PQE,導致Auto Analyze或者Analyze失敗。

出現版本:

V1.1.1V1.1.46版本。

修複版本:

V1.1.47及以上版本。

  • 關閉資料脫敏。

  • 建議升級到新版本。

P1

Analyze外部表格時,外部表格分區太多(通常是多級分區情境)報錯超過分區限制(大於512分區),導致Analyze失敗。

Analyze時未對外部表格分區進行相應裁剪,導致Analyze失敗。

出現版本:

V1.1.1V1.1.46版本。

修複版本:

V1.1.47及以上版本。

  • 若是外部表格分區數在1024以內,可以先將外表分區限制調大再執行Analyze。

  • 建議升級到新版本。

    說明

    升級後預設Analyze 最多512個外部表格分區,若是需要更多分區,請將Analyze分區限制數調大,詳情請參見最佳化MaxCompute外部表格的查詢效能

P1

執行explain analyze SQL命令時,結果中partitions SELECTed 0,與實際命中分區不符。

產生執行計畫時對partitions SELECTed 判斷錯誤,導致結果為0。

出現版本:

V1.1.1V1.1.46版本。

修複版本:

V1.1.47及以上版本。

建議升級到新版本。

P2

查看慢Query日誌時,無法顯示查詢讀取的行數(read_rows)、返回行數(result_rows)等資訊。

元倉採集資訊不全導致。

出現版本:

V1.1.1V1.1.46版本。

修複版本:

V1.1.47及以上版本。

建議升級到新版本。

說明

Hologres V1.1.36版本開始可以通過GUC參數查看,V1.1.47版本後可以不使用GUC參數。

P2

使用JDBC PrepareStatement模式時,insert或者SELECT多個值時,多執行幾次(大於3次)結果出現錯行錯列,而一次insert或者SELECT一個值分多次執行時結果正確。樣本如下:一條SQL包含32values一次寫入,總共寫4次,每次這32行資料在values中的順序隨機變化。而一條SQL只包含一個values,分32sql寫入,結果正確。

PrepareStatement模式下對多個values進行多次insert或者SELECT時,最佳化器(QO)產生了錯誤的執行計畫,導致結果出錯。

出現版本:

V1.1.46及以下版本。

修複版本:

V1.1.47及以上版本。

  • Query符合Fixed Plan特徵時,可以開啟Fixed Plan加速SQL執行

  • PrepareStatement模式更改為Simple模式。

  • 建議升級到新版本。

P2

執行非JoinSQL(例如含有count distinct)時,報錯:error: Hash32 shard function does not support decimal or fixed binary type

JoinSQL也可能會使用Shard Function產生執行計畫,而目前Shard Function不支援NUMERIC等類型,導致部分非精確類型在執行時報錯。

出現版本:

V1.1.46及以下版本。

修複版本:

V1.1.47及以上版本。

建議升級到新版本。

P1

在使用key = max(key)時,出現的結果不符合預期,一直只出現一行資料,使用key in max(key)時符合預期。

最佳化器在產生執行計畫時,會將key = max(key),轉化成order by id asc limit 1 , 這種查詢永遠只有一行資料,導致結果不符合預期。

出現版本:

V1.1.46及以下版本。

修複版本:

V1.1.47及以上版本。

  • 使用key in max(key)

  • 建議升級到新版本。

P2

PostgreSQL來源(如JDBC)的DDLSQL代碼注釋,樣本:create table ttxwsx1(i int); -- comments -- xxxxx執行成功後,寫入或者查詢時出現卡死的現象。

DDL命令末尾有注釋,會使得同一行最後的分號失去命令間的分隔作用,導致新產生的命令追加到注釋後面失效,從而使得SQL不合法,導致節點間Replay失敗,造成寫入或者查詢卡死。

出現版本:

V1.1.45及以下版本。

修複版本:

V1.1.46及以上版本。

  • 刪除DDL語句最後的注釋。

  • 建議升級到新版本。

P1

按照主鍵點查方式查詢行存表時,存在一定機率情境,出現部分行存資料查詢不到的情況。

行存表在做後台檔案compaction時,在處理並發情境有缺陷,致使部分索引檔案定位有誤,導致部分行存資料查詢不到。

出現版本:

V1.1.44及以下版本。

修複版本:

V1.1.45及以上版本。

建議升級到新版本

P2

Hologres執行個體升級至 V1.1版本後,查詢MaxCompute外部表格,當外部表格有多級分區時(一般3級分區),SQL過濾條件中帶有or,查詢相比V0.10版本變慢(之前查詢只需要幾秒鐘)或者出現OOM。

Hologres V1.1版本,在多級分區過濾中,最佳化器對or條件產生的運算元無法識別,導致產生的filter為空白,即不做任何過濾,從而掃描了所有分區,導致查詢變慢或者出現OOM。

出現版本:

V1.1.44及以下版本。

修複版本:

V1.1.45及以上版本。

建議升級到新版本

P1

CPU佔用不高時記憶體也長期處於高水位,通過監控發現QPS比較高(幾百及以上),但是串連數只用了幾十個,即一個Connection保持幾百個QPS的速度執行SQL。

當執行SQL時,最佳化器會去擷取表的statistics,當一個Connection保持幾百個QPS的速度執行SQL,且Connection長期不關閉,導致擷取statistics時泄漏,造成記憶體高水位。

出現版本:

V1.1.44及以下版本。

修複版本:

V1.1.45及以上版本。

  • 通過添加set hg_experimental_always_show_execution_statistics=off;參數解決。

  • 建議升級到新版本。

P2

SQL中含有not like xxx%條件,但是查詢結果中仍然出現not like過濾後的資料。

最佳化器在產生執行計畫時,對like相關的函數預先處理規則出錯,進行了錯誤的改寫,導致結果不正確。

出現版本:

V1.1.44及以下版本。

修複版本:

V1.1.45及以上版本。

  • likeSQL出錯時可以通過添加hg_experimental_remove_redundant_cmp=off;參數解決。

  • 建議升級到新版本。

P1

STS帳號登入時,報錯:Cloud authentication failed,並且檢查帳號密碼等都沒有填寫錯誤。

帳號認證介面對STS帳號的狀態判斷錯誤,導致報錯。

出現版本:

V1.1.43V1.1.44版本。

修複版本:

V1.1.45及以上版本。

建議升級到新版本

P0

在應用側資料寫入完成,但引擎側資料寫入進程崩潰,有機率存在資料丟失,使用者查詢時探索資料缺少。

正常流程是使用者寫資料,WAL(Write Ahead Log)落盤後才返回給上層調用,表示寫入完成,保證資料持久化和一致性。但當落盤進程寫入逾時觸發系統重試後,資料會首先寫入記憶體緩衝部分,並返回給上層調用,如果此時記憶體緩衝進程崩潰後,會造成應用程式層返回成功,但實際資料存放區層丟失的問題。

出現版本:

V0.8及以下版本。

修複版本:

V0.9及以上版本。

建議升級到新版本

P1

執行個體寫入和查詢資料時失敗並報錯:ERROR: Invoke StoreMasterClient failed:ERPC_ERROR_CONNECTION_CLOSED

出現報錯後,業務側進行Query重試疊加後端接入節點(FE)重試,導致請求量太高,Store Master(中繼資料管理)處理不及時而報錯。

出現版本:

V1.1.43及以下版本。

修複版本:

V1.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)時沒有做精度校正,導致查詢報錯。修複後在新增列時會對精度校正,未指定精度會報錯。

出現版本:

V1.1.42及以下版本。

修複版本:

V1.1.43及以上版本。

  • 新增列時含有DECIMAL欄位時需要指定精度。

  • 建議升級到新版本。

P0

AccessKey被禁用後,仍然能使用被禁用的AccessKey訪問Hologres執行個體。

AccessKey介面對于禁用的AccessKey狀態調用錯誤,導致禁用的AccessKey被當成了正常的AccessKey使用。

出現版本:

V1.1.42及以下版本。

修複版本:

V1.1.43及以上版本。

  • 取消帳號的存取權限。

  • 建議升級到新版本。

P2

建表時有Default欄位,使用copy命令語句時,執行個體出現重啟。

copy功能不支援建表時帶有Default值,導致執行個體OOM發生重啟。

出現版本:

V1.1.42及以下版本。

修複版本:

V1.1.43及以上版本。

建議升級到新版本。

P2

執行有外表關聯的INNER JOIN查詢語句時,報錯找不到某一列,如:ERROR: column "id" does not exist,而SQL中並沒有這一列。

最佳化器在產生執行計畫時,對於等價運算式的推導不對,沒有輸出的列也作為了等價運算式的推導,導致報錯。

出現版本:

V1.1.42及以下版本。

修複版本:

V1.1.43及以上版本。

建議升級到新版本。

P1

使用行列共存的表,帶有複雜的Nested Loop Join,出現執行個體重啟後又快速恢複。

最佳化器在檢測行列共存的表時,沒有產生正確的執行計畫,導致報錯從而觸發執行個體重啟。

出現版本:

V1.1.42及以下版本。

修複版本:

V1.1.43及以上版本。

  • 不使用行列共存的表

  • 建議升級到新版本。

P1

多表(如6個表)Join的複雜匯入作業在手動取消後,CPU使用率仍然為100%,持續幾個小時不結束,執行drop table時也卡住。

比較複雜的Query,執行計畫包括Hash Join運算元,涉及到的資料量很大,後端出現鎖死,導致取消後仍然在後端運行中。

出現版本:

V1.1.42及以下版本。

修複版本:

V1.1.43及以上版本。

  • 重啟執行個體。

  • 建議升級到新版本。

202201

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2

資料通過DataHub寫入Hologres分區表時,分區表未提前建立分區子表,Hologres執行個體重啟。

DataHub寫入Hologres分區表時,寫入介面未做分區校正,引發執行個體Coredump。

出現版本:

V1.1.41及以下版本。

修複版本:

V1.1.42及以上版本。

  • Hologres中提前建立好分區子表再寫入資料。

  • 建議升級到新版本。

    說明

    若是分區表,升級後仍然需要提前建立分區子表才能寫入資料。

P2

分區子表通過attach到分區父表後,查分區表時報錯:partition_table_missing

分區子表的建表屬性與分區父表不一致(比如not null約束、PK設定,Clustering Key設定等),在attach時沒有對屬性進行校正,導致查詢報錯。

出現版本:

V1.1.41及以下版本。

修複版本:

V1.1.42及以上版本。

  • 建分區子表時,子表的Schema和屬性需要同attach的分區父表保持一致。

  • 建議升級到新版本。

P1

使用JDBC PreparedStatement模式時,SQL中的where命令中含有"<"或者">"過濾條件,執行後出現執行個體重啟。

使用JDBC PreparedStatement模式時,where中的"<"或者">"過濾條件會在產生執行計畫時,轉換成INTERVAL,在轉換時遇見null 指標,導致SQL出錯引發執行個體重啟。

出現版本:

V1.1.0V1.1.40及以下版本。

修複版本:

V1.1.41及以上版本。

建議升級到新版本。

P1

使用JDBC PreparedStatement模式時,IN條件超過100個時,有一定機率結果出錯或者不符合預期。

當使用JDBC PreparedStatement模式時,IN條件超過100個時,產生執行計畫時會錯誤地把IN條件刪除,導致資料結果出錯。

出現版本:

V1.1.0V1.1.40及以下版本。

修複版本:

V1.1.41及以上版本。

建議升級到新版本。

P2

行列共存的表使用IN條件查詢時報錯:An I/O error occurred while sending to the backend.,使用行存表則不會報錯。

IN條件中的欄位類型是TEXT時,並且該欄位設定了Bitmap,導致行列共存的表產生了錯誤的執行計畫,從而報錯。

出現版本:

V1.1.0V1.1.40及以下版本。

修複版本:

V1.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 類型),導致執行失敗。

出現版本:

V1.1.0V1.1.40及以下版本。

修複版本:

V1.1.41及以上版本。

建議升級到新版本。

P2

修改分區子表的生命週期(TTL)後出現報錯:Invoke StoreMasterClient failed:ERPC_ERROR_CONNECTION_CLOSED

修改子表TTL時,中繼資料管理器Store Manager(SM)檢驗Schema變動時出錯,導致SQL出現報錯。

出現版本:

V1.1.0V1.1.40及以下版本。

修複版本:

V1.1.41及以上版本。

  • 暫不修改子表TTL。

  • 建議升級到新版本。

P2

使用DROP語句刪除表時報錯:invalid table id,重試時報錯:SE object lock failed

一個執行個體會有多個接入節點,執行SQL時,是先在一個節點執行,再去其他節點重放(reply),當某個節點因為版本等原因無法跟其他節點保持中繼資料資訊一致時,會進行重試(retry)。當並發執行drop table時,會觸發節點的主動,retry時沒有釋放表鎖導致報錯。

出現版本:

V1.1.39及以下版本。

修複版本:

V1.1.40及以上版本。

  • 串列執行drop tableDDL。

  • 建議升級到新版本。

P1

開啟Auto Analyze功能之後,執行個體沒有明顯上漲的QPS,出現報錯:database is not accepting commands to avoid wraparound data loss in database

開啟Auto Analyze功能之後,接入節點的系統資料表沒有及時執行auto vacuum,導致後台不斷提交帶事務的SQL,導致執行個體報錯。

出現版本:

V1.1.38及以下版本。

修複版本:

V1.1.39及以上版本。

建議升級到新版本。

P2

基於分區表建立視圖,並對分區列做cast,導致不能使用靜態分區裁剪,導致掃描所有分區效能變差。樣本SQL如下:

--建viewcreate view test_partition_table_view asSELECTtest_partition_table.ds::text as dsFROMtest_partition_table;--查詢sqlSELECT * FROM test_partition_table_view where ds='20211116';

封裝成View之後,在最佳化器中的過濾條件是基於cast之後的列,而非分區列。分區裁剪只能對分區列生效,導致效能變差。

出現版本:

V1.1.38及以下版本。

修複版本:

V1.1.39及以上版本。

  • View中不對分區列進行cast

  • 建議升級到新版本。

P2

  • 當日期是周日時,執行to_char(xxx, 'Day')函數,執行個體發生重啟。

  • 當日期是周日時,執行to_char(xxx, 'D')函數,結果有誤。

當日期是周日時,to_char()函數的底層執行邏輯是toDayOfWeek(),其傳回值為7,發生數組越界,導致Hologres執行個體重啟或者結果有誤。

出現版本:

V1.1.36及以下版本。

修複版本:

V1.1.37及以上版本。

建議升級到新版本。

P1

執行個體開啟資料脫敏後,子查詢(Sub Query)中含有CTE函數,執行個體短暫出現串連報錯或者I/O口報錯。

遞迴調用處理CTE函數時,資料脫敏處理不正確,導致Hologres執行個體重啟。

出現版本:

V1.1.36及以下版本。

修複版本:

V1.1.37及以上版本。

  • 關閉資料脫敏。

  • 建議升級到新版本。

2021年歷史缺陷

202112

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P0

TEXT類型欄位設定Dictionary索引時,執行個體出現短暫重啟,樣本SQL如下。

call set_table_property('tbl', 'dictionary_encoding_columns', 'a');

,其中aTEXT類型。

Hologres會給TEXT類型的欄位預設設定Dictionary,即為auto屬性,手動再給TEXT類型指定Dictionary時,會變為on屬性,導致檔案狀態不一致,無法進行壓縮合并(Compaction),從而引發Coredump。

出現版本:

V1.1V1.1.35及版本。

修複版本:

V1.1.36及以上版本。

  • 手動設定dictionary時,設定為auto屬性,即:call set_table_property('tbl', 'dictionary_encoding_columns', 'a:auto');

  • 建議升級到新版本。

P2

查看慢Query日誌時,無法顯示查詢讀取的行數(read_rows)、返回行數(result_rows)等資訊。

元倉採集資訊不全導致無法顯示。

出現版本:

V1.1V1.1.35及版本。

修複版本:

V1.1.36及以上版本。

建議升級到新版本,且需要在查看慢QuerySQL前添加如下命令。

  • set hg_experimental_force_sync_collect_execution_statistics = on;
  • alter database <dbname> set hg_experimental_force_sync_collect_execution_statistics = on;

P1

SQLwhere條件中含有case when xx in ('')時,結果不正確。

Hologres會預設對TEXT類型構建Bitmap,且該列是Nullable屬性的情況下,後端對case when xx in ('')產生了錯誤的執行計畫,導致結果不正確。

出現版本:

V1.1.35及以下版本。

修複版本:

V1.1.36及以上版本。

建議升級到新版本。

P1

報錯: Cannot reserve capacity larger than 2^31 - 1 for binary\n

Hologres會預設對TEXT列構建Dictionary字典編碼,當插入的欄位太大(單欄位超過2GB)時,導致構建的Dictionary過大,查詢時報錯。

出現版本:

V1.1.35及以下版本。

修複版本:

V1.1.36及以上版本。

建議升級到新版本。

P1

Binlog時,帶有Binlog欄位的SQL查主鍵(PK)欄位時查不出資料,不帶BinlogSQLPK欄位時能查詢出資料。樣本查詢(其中atest表的PK欄位)如下。

--帶BinlogSQLSELECT, hg_binlog_lsn ,hg_binlog_event_type,hg_binlog_timestamp_usFROM testwhere a = '723295948321120659';--不帶BinlogSQL“SELECT * FROM testwhere a = '723295948321120659';

後端最佳化器根據PK欄位查詢時產生了錯誤的執行計畫,導致查詢錯誤。

出現版本:

V1.1.35及以下版本。

修複版本:

V1.1.36及以上版本。

建議升級到新版本。

P2

執行個體在CPU負載滿的情況下,在HoloWeb中無法查詢活躍Query、活躍串連等資訊。

CPU負載滿時,pg_stat_activity等系統資料表會受資源限制,導致查詢失敗。

出現版本:

V1.1.35及以下版本。

修複版本:

V1.1.36及以上版本。

建議升級到新版本。

P1

使用ANY數組為空白時,Hologres執行個體出現重啟。

對於ANY數組為空白時後端處理不正確,導致執行個體Coredump。

出現版本:

V1.1.35及以下版本。

修複版本:

V1.1.36及以上版本。

建議升級到新版本。

P1

Query包含LeadLag函數,同時函數的第三個參數預設時報錯:Column column5 should be non-nullable but the values contain 1 nulls

執行器對於LeadLag函數的輸出結果的Nullable推導不正確,導致報錯。

出現版本:

V1.1.34及以下版本。

修複版本:

V1.1.35及以上版本。

建議升級到新版本。

P2

Flink寫入Hologres時,有RoaringBitmap欄位,寫入很慢。

帶有RoaringBitmap的寫入鏈路沒有在後端最佳化導致寫入效能差。

出現版本:

V1.1.35及以下版本。

修複版本:

V1.1.36及以上版本。

  • 不使用Roaring Bitmap。

  • 建議升級到新版本。

P1

使用Roaring Bitmap時報錯:An I/O error occurred while sending to the backend並且在CPU使用率很低時,記憶體使用量率很高。

Roaring Bitmap存在記憶體流失。

出現版本:

V1.1.34及以下版本。

修複版本:

V1.1.35及以上版本。

  • 不使用Roaring Bitmap。

  • 建議升級到新版本。

P1

SQL中有order by時報錯:PlStmt Translation: Attribute number 4 not found in project list

order by會產生sort運算元,最佳化器在產生執行計畫時下推錯誤,導致無法產生執行計畫,從而報錯。

出現版本:

V1.1.33及以下版本。

修複版本:

V1.1.34及以上版本。

建議升級到新版本。

P1

使用Proxima查詢時報錯:HGERR_code XX000 HGERR_msge internal error: record batches is empty

後端讀取Proxima的檔案狀態有誤,從而報錯。

出現版本:

V1.1.33及以下版本。

修複版本:

V1.1.34及以上版本。

建議升級到新版本。

P2

執行個體升級至V1.1版本或者在V1.1版本對執行個體執行升降配等重啟操作後,第一次查詢時,Query的速度變慢,查看執行計畫,統計資訊不準確。再次執行Query,統計資訊正確且效能恢複。

執行個體升級重啟後,第一次執行Query時未能拿到正確的統計資訊版本,導致統計資訊不準確,效能變差。

出現版本:

V1.1V1.1.32版本。

修複版本:

V1.1.33及以上版本。

  • 可以多次執行Query,使得統計資訊變正確,恢複效能。

  • 建議升級到新版本。

P0

使用drop/truncate命令時同時查詢表,造成執行個體重啟。

查詢結束到資料析構之間,發生表的drop/truncate,造成執行個體coredump,從而重啟。

出現版本:

V1.1.32及以下版本。

修複版本:

V1.1.33及以上版本。

建議升級到新版本。

P1

升級至V1.1版本後,多表(十幾個表)Join出現OOM異常,且升級前運行正常。

最佳化器預估表的行數過多,導致執行器在初始化階段OOM,無法進行下一步計算。

出現版本:

V1.1V1.1.31版本。

修複版本:

V1.1.32及以上版本。

建議升級到新版本。

P2

Serving點查情境,因為用戶端湊批導致延遲變高。

每個Worker節點上只有一個點查寫入節點,當請求都發到寫入節點時容易產生湊批行為,而當前湊批上限過大,導致等待攢批耗時較長,造成點查延遲變高。

出現版本:

V1.1V1.1.31版本。

修複版本:

V1.1.32及以上版本。

建議升級到新版本。

P1

儲存加密的表limit offset命令不加order by limit能查到結果,加了就查不出結果。

對於儲存加密的表,沒有按照文檔正確的配置進行操作,產生了錯誤版本,導致記憶體表(MemTable)資料丟失,從而無法出結果。

出現版本:

V1.1V1.1.31版本。

修複版本:

V1.1.32及以上版本。

建議升級到新版本。

P1

執行Truncate命令時,當表名稱有大寫時會報錯找不到表。例如執行#truncate "Abc";,報錯:ERROR: relation "abc" does not exist

當前Truncate對大小寫處理邏輯錯誤。

出現版本:

V1.1.30及以下版本。

修複版本:

V1.1.31及以上版本。

建議升級到新版本。

P1

使用函數to_charto_dateto_timestamp時報錯:time after 2282 not supported

函數to_charto_dateto_timestamp支援的時間範圍是1925 ~ 2282年,超出時間範圍就會報錯。

出現版本:

V1.1.30及以下版本。

修複版本:

V1.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’;

P1

SQL中有內串連(inner join),執行後運算結果偏少。

Join運算元要求相同的join key資料分布推導在相同並發節點,實際執行時,資料分布推導錯誤,會錯誤地將相同資料Shuffle到不同的節點,導致Join結果錯誤,表現為結果比實際少。

出現版本:

V1.1.30及以下版本。

修複版本:

V1.1.31及以上版本。

建議升級到新版本。

P1

執行SQL時報錯:Query could not generate plan by Hologres : PlStmt Translation: Attribute number 4 not found in project list

表串連時沒有Join Key,導致執行計畫產生失敗報錯。

出現版本:

V1.1V1.1.27版本。

修複版本:

V1.1.28及以上版本。

  • 重建立表,然後執行analyze table命令。

  • 建議升級到新版本。

P1

使用get_json_object函數時報錯:Column column0 should be non-nullable but the values contain 1 nulls

get_json_object函數的兩個參數為非Nullable類型,但是UDF的結果可能為Nullable類型,在產生執行計畫時,檢查非Nullable失敗,導致報錯。

出現版本:

V1.1.27及以下版本。

修複版本:

V1.1.28及以上版本。

建議升級到新版本。

P1

報錯:ERROR: Build query failed: Table group [] FROM table must equals table group [] FROM QO.

執行計畫產生中,DML節點對下遊TG有資訊要求,但下遊某節點推斷出的TG屬性為NULL,沒有滿足DMLTG要求,導致報錯。

出現版本:

V1.1.27及以下版本。

修複版本:

V1.1.28及以上版本。

建議升級到新版本。

P1

執行DROP TABLE命令時卡死,且重試之後CPU突然飆高。

執行個體開啟了Auto AnalyzeAuto Analyze會加share_update_exclusive鎖, 同時Auto Analyze會使用串連,新的串連load_stats,會加access_shared_lock;這兩個步驟期間,如果使用者進行DROP TABLE 就會卡死。

出現版本:

V1.1.27及以下版本。

修複版本:

V1.1.28及以上版本。

  • 建議在業務低峰期開啟Auto Analyze功能。

  • 建議升級到新版本。

202111

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P2(最佳化)

當執行個體重啟後,查詢部分資料結果不一致。

後端某一個節點重啟後,需要與其他節點版本追齊,在追齊過程中,重啟的節點版本較低,查詢的還是原資料,導致結果查詢不一致。最佳化後的行為是,當節點重啟後,若是與其他節點版本不一致,則不提供服務,直到追齊版本後再提供服務,保證資料一致性。

出現版本:

V1.1.24及以下版本。

修複版本:

V1.1.26及以上版本。

建議升級到新版本。

P2

MaxCompute資料匯入時,執行set hg_experimental_foreign_table_split_size = 64; INSERT INTO public.lineitem SELECT * FROM public.odps_lineitem_1t ;時記憶體很高或者報錯OOM,當設定參數值為128時,則沒有問題。

底層在Meta中,載入了所有StripesMeta導致記憶體飆高。

出現版本:

V1.1.24及以下版本。

修複版本:

V1.1.26及以上版本。

  • 暫時不使用set hg_experimental_foreign_table_split_size = 64;命令。

  • 建議升級到新版本。

P1

當對Distribution Key或者Primary Key使用IN操作,IN數組超過100個的時候,導致最終結果不正確。

IN超過100個後,Shard pruning之後的Shard數量隨機變化,導致產生的計劃錯誤,結果不正確。

出現版本:

V1.1.24及以下版本。

修複版本:

V1.1.26及以上版本。

  • 減少IN的數量至100以內。

  • 建議升級到新版本。

P1

在外部表格資料匯入內部表的時候,先insert 然後delete歷史資料,但是insert 語句取出來的分區不是最新分區,導致插入資料為0。

在匯入處理程序中,存在儲存空間異常問題,導致未擷取到最新資料。

出現版本:

V1.1.24及以下版本。

修複版本:

V1.1.26及以上版本。

建議升級到新版本。

P1

當行很寬,資料量超過數百MB時,單行記錄就超出了RECORDBATCH記錄批規格的上限,就會輸出0行的RECORDBATCH,從而引發缺陷,執行個體進行重啟。

當行很寬時,後端對行數的處理不夠,導致執行個體進行重啟。

出現版本:

V1.1.24及以下版本。

修複版本:

V1.1.26及以上版本。

建議升級到新版本。

P2

報錯:internal error: string decimal literal can not be tentative

SQL中有in運算式,例如:SELECT * FROM tbl where col in (1.11, 1.2, 1.333);in運算式裡面的DECIMAL精度不一致的時候,後端計算引擎處理結果不一致導致報錯。

出現版本:

V1.1.24及以下版本。

修複版本:

V1.1.26及以上版本。

  • in運算式裡只用一個資料。

  • 建議升級到新版本。

P2(最佳化)

報錯:org.postgresql.util.PSQLException: ERROR: Total memory used by all existing queries exceeded memory limitation 20132659200: xxxxx bytes used.

單個節點計算記憶體超過20GB的上限(單個節點總上限是64GB,1/3用於計算,1/3用於緩衝,1/3用於中繼資料)。

出現版本:

V1.1.23及以下版本。

修複版本:

V1.1.24及以上版本。

V1.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無法產生計劃,從而導致報錯。

出現版本:

V1.1.23及以下版本。

修複版本:

V1.1.24及以上版本。

建議升級到新版本。

P1

使用Flink或者Holo Client,往Binlog表裡一次寫入多條重複的資料,中間資料的Binlog丟失。

Binlog表,其中有重複的資料時,後端執行器會只產生最後一條資料的Binlog,其他重複的資料會被忽略。

出現版本:

V1.1.23及以下版本。

修複版本:

V1.1.24及以上版本。

建議升級到新版本。

P0

查詢MaxCompute外部表格時,最後兩行資料會隨機變化,資料類型是DECIMAL類型。

直讀MaxComputeORC格式資料,當檔案中存在DECIMAL類型,儲存最佳化時,Hologres讀出來的DECIMAL統計資訊存在隨機問題。

出現版本:

V1.1.23及以下版本。

修複版本:

V1.1.24及以上版本。

建議升級到新版本。

P1

報錯:Remote seek with parameters is not supported

sort運算元預設具有rewindable屬性,但底層並不支援,Query產生計劃時報錯。

出現版本:

V1.1.23及以下版本。

修複版本:

V1.1.24及以上版本。

建議升級到新版本。

P1

HologresV1.1版本設定了資源群組,但是在跑QueryOOM(Out Of Memory),出現報錯:used by all existing queries exceeded memory limitation,即使不跑任何Query,查詢慢SQL和活躍Query這些也報錯OOM。

QE記憶體使用量超過閾值,跑新Query超過資源群組配額,異常時會導致記憶體流失。

出現版本:

V1.1V1.1.23版本。

修複版本:

V1.1.24及以上版本。

  • 重新建立資源群組。

  • 建議升級到新版本。

P2

偶發報錯:fail to setremoteost invalid remon ip

後台進程在檢查IP白名單的變數時,變數沒有初始化導致偶發報錯。

出現版本:

V1.1.23及以下版本。

修複版本:

V1.1.24及以上版本。

  • 請重試幾次。

  • 建議升級到新版本。

P1

對錶執行Analyze或者auto analyze時,當表中存在同名但是大小寫不同的列名時,報錯:CheckSchema failed

Frontend節點在從最佳化以後的樹結構裡面轉化成PowerBuilderTree的時候對應列的序號找錯,導致報錯。

出現版本:

V1.1.22及以下版本。

修複版本:

V1.1.23及以上版本。

建議升級到新版本。

P1

執行多表RightOuterJoinSQL時,不帶有limit子句查詢結果僅一條,加上limit子句之後會出現多條重複的資料。

實現RightOuterJoin的時候,在最佳化器中產生了錯誤的計劃,導致最終結果資料重複。

出現版本:

V1.1.22及以下版本。

修複版本:

V1.1.23及以上版本。

建議升級到新版本。

P1

case when語句中,TEXT欄位同時作為group byagg的參數時,無法產生計劃,出現報錯:ERROR: Query could not generate plan by Hologres : PlStmt Translation: Attribute number 46046320 not found in project list

case when中取法找到agg參數欄位的colref導致計劃無法產生。

出現版本:

V1.1.22及以下版本。

修複版本:

V1.1.23及以上版本。

建議升級到新版本。

P1

報錯:ERROR: internal error: Writing column: item_emb with array size: 682790219 violates fixed size list (32) constraint declared in schema

const數組最佳化機制在SE沒有判斷導致執行出錯。

出現版本:

V1.1V1.1.21版本。

修複版本:

V1.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資訊不存在,導致執行個體重啟。

出現版本:

V1.1.21及以下版本。

修複版本:

V1.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),小數點儲存太多位元導致溢出,從而報錯。

出現版本:

V1.1.21及以下版本。

修複版本:

V1.1.22及以上版本。

  • 使用round函數進行繞過。

  • 建議升級到新版本。

202109-10

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P0

報錯:"database is not accepting commands to avoid wraparound data loss in database ""template0""

後台會給Query設定自增transaction id,對於QPS高的執行個體,ID會超過INT上界,從而導致報錯。

出現版本:

V0.10.19V0.10.42版本。

修複版本:

V1.1及以上版本。

建議升級到新版本。

P1

資料局部列更新入表偶發報錯:internal error: Record batch has 519 rows but length of columns is 7407

欄位中包含TEXT[],當前TEXT[]沒有進行二層數組的slice(),導致其長度不正確,在執行reverse()命令時取到了-1導致超過容量。

出現版本:

V0.10.41。

修複版本:

V0.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集合裡面,導致順序丟失。

出現版本:

V0.10.42。

修複版本:

V0.10.45及以上版本。

  • 手動執行create語句建立行存表。

  • 建議升級到新版本。

P2

刪除分區時報錯:FAILED: ERROR: query id[27xxxxxxxxxxxxxx37] SE object lock failed

刪除分區時,Query被後端異常退出,導致報錯。

出現版本:

V0.10.41及以下版本。

修複版本:

V0.10.42及以上版本。

  • 不對該表進行操作。

  • 聯絡值班重啟執行個體。

  • 建議升級到新版本。

P2

查詢或者寫入資料時報錯:ERROR: internal error: Invalid table id : 641 MDTableGroup

一般是因為剛做完DDL,後端節點還在重啟,這個時候執行DML,就會導致節點間的版本不一致而報錯。

出現版本:

V1.1.18及以下版本。

修複版本:

V1.1.19及以上版本。

  • 等待一段時間重試。

  • 建議升級到新版本。

202108

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P1

表開啟Hologres Binlog,且建表時BinlogTTL設定比較小的時間,但表的儲存資料一直增長(業務資料量並沒有增加)。

建表(create table)時,顯式指定的Binlog TTL未真正生效,預設為100年。

出現版本:

V0.10版本。

修複版本:

V1.1版本。

  • 需要重新手動更改表Binlog TTL為較小的值,執行call set_table_property('schema.table', 'binlog.ttl', '86400');

  • 建議升級到V1.1版本。

P1

列存表頻繁進行Update、Delete、Insert on Conflict操作,引起儲存空間持續增長。

Hologres為提高更高的效率,採用標記刪除演算法,當檔案中被標記記錄達到一定比率,會觸發後台Compaction進程,進行空間的釋放。Hologres存在缺陷,在某些情況下Compaction未啟動。

出現版本:

V0.10.25以下版本。

修複版本:

V0.10.25及以上版本。

建議升級到最新版本。

P1

當表正在即時寫入(通過Flink、Data Integration等方式)時,同時查詢資料報錯: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再落到磁碟,在寫入期間去查詢,查詢列標記長度和真實資料長度未對齊,導致查詢失敗報錯。

出現版本:

V0.10.41版本。

修複版本:

V0.10.42及以上版本。

建議升級到最新版本。

P1

業務沒有增加,記憶體突然增長。

SQL中有如下函數,會出現記憶體流失,導致記憶體突然增長。

  • extract(xxx FROM time)

  • extract(xxx FROM interval)

  • date_part(xx, interval)

出現版本:

V0.10.31以下版本。

修複版本:

V0.10.32及以上版本。

  • 不使用列表中的函數。

  • 建議升級到最新版本。

P2

提示報錯:time before epoch time not supported

SQL中使用了to_charto_dateto_timestamp這些函數的其中一個或多個,且資料有1970年之前的資料,Hologres不支援1970年之前的資料。

出現版本:

V0.10及以下版本。

修複版本:

V1.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才可以訪問這個表。

出現版本:

V0.10版本。

修複版本:

V1.1版本。

  • pg_subscription並未實際儲存對於hg_dump_script有用的資訊,已修改該預設行為,在V1.1版本解決。

  • 遇到沒有許可權問題,可以給目前使用者授予pg_subscription的存取權限

P2

SQL中含有left join,不帶有limit子句查詢結果僅一條,加上limit之後會出現多條重複的資料。

left join在底層會轉換成right outer join,引擎在實現right outer join的時候,產生的right sidebroadcast的錯誤執行計畫,導致最終結果資料重複,可以通過執行explain sql查看執行計畫是否走broadcast。

出現版本:

V0.10.40及以下版本。

修複版本:

V1.1版本。

建議升級到最新版本。

P2

Binlog表裡一次寫入多條重複的資料時,中間資料的Binlog會丟失,未保留所有Binlog中間狀態變化。

重複資料會被引擎去重,預設保留最後一條,導致中間狀態變化丟失。

出現版本:

V0.10.30及以下版本。

修複版本:

V0.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有\ + 字元或數位情況處理不夠完善,導致報錯。

出現版本:

V0.10.38及以下版本。

修複版本:

V0.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');

出現版本:

V0.10.37及以下版本。

修複版本:

V0.10.38及以上版本。

  • 重建立表,將主鍵和Clustering Key的順序保持一致。

  • 建議升級到新版本。

P2

在建立的schema下使用資料脫敏,查詢脫敏資料時報錯:hg_anon_mask_name(text) doesnt exist

資料脫敏函數被建立在public schema下,導致在新schema下無法查詢脫敏資料。

出現版本:

V0.10.35及以下版本。

修複版本:

V0.10.36及以上版本。

  • 只在public schema下使用資料脫敏函數。

  • 建議升級到新版本。

P2

報錯:internal error:string decimal literal can not be tentative

SQL語句裡in中包含不同精度的decimal資料,樣本SQL如下。

SELECT * FROM table where sval in(170344.964,1339107.84);

出現版本:

V0.10.34及以下版本。

修複版本:

V0.10.35及以上版本。

  • 修改SQL語句裡in中包含的decimal資料精度一致。

  • 建議升級到最新版本。

202107

等級

報錯/問題描述

缺陷原因

出現/修複版本

規避建議

P0

RoaringBitmap欄位被配置為字典編碼(Dictionary Encoding)時,造成寫入失敗,執行個體不可查詢。

RoaringBitmap類型並不支援字典編碼,強行設定造成編碼邏輯故障,導致寫入一直失敗。

出現版本:

V0.10.24及以下版本。

修複版本:

V0.10.25及以上版本。

  • RoaringBitmap欄位取消Dictionary Encoding。

  • 建議升級到新版本。

P0

在非public schema執行add comment on tablename is "is comment" 導致寫入或查詢卡住。

在非public schema下執行add comment操作:add comment on tablename is "comment",SQL語句中未指定Schema名,導致單個節點異常,從而導致出現寫入/查詢卡住現象。

出現版本:

V0.10.20及以下版本。

修複版本:

V0.10.21及以上版本。

  • SQLadd comment時加上Schema名:add comment on schema.tablename is "comment"

  • 建議升級到新版本。

P0

報錯:cannot acquire lock in time

在原有的版本中,會對DDL加鎖,高並發查詢和刪除(Drop)同一張表時,後端節點出現死結,導致有關這張表的操作都卡住,從而報錯

出現版本:

V0.9.22及以下版本。

修複版本:

V0.9.23及以上版本。

建議升級到新版本。

P1

在資料沒有寫入時,儲存空間持續線性增長。

使用insert on conflict do update set pk =pk語句匯入資料,實際上匯入前和匯入後資料並沒有實際變化,觸發底層最佳化BUG,導致儲存線性增長。

出現版本:

V0.10.23及以下版本。

修複版本:

V0.10.24及以上版本。

  • 可以通過執行insert into values語句,觸發資料更新,多餘的資料將會被刪除。

  • 建議升級到新版本。

P1

在執行extract XXX FROM timestamptz/timestamp時,提示報錯:time before epoch time not supported

EXTRACT函數在處理資料中的NULL值會有誤。

出現版本:

V0.10.20及以下版本。

修複版本:

V0.10.21及以上版本。

  • SQL通過過濾條件過濾掉NULL。

  • 建議升級到新版本。

P1

報錯:cant determine shard id of shard value

SQL語句中有union all語句,並且Group by欄位中有distribution key,導致執行計畫錯誤,從而導致找不到對應的Shard

出現版本:

V0.10.20及以下版本。

修複版本:

V0.10.21及以上版本。

建議升級到新版本。

P1

ERROR: Query could not generate plan by gporca : Group by key is type of unsupported type. not supported

Group by的欄位類型是非精確類型,導致出現報錯。

出現版本:

V0.9及以下版本。

修複版本:

V0.10已開發限制。

  • Group by中避免非精確資料類型。

  • 建議升級到新版本。

P1

讀外表時報錯:unsupported column type:list

MaxCompute已有表中新增一列array column且該列不匯入資料,外表查詢該MaxCompute時報錯

出現版本:

V0.9.22及以下版本。

修複版本:

V0.9.23及以上版本。

  • MaxCompute新增一列array column後,即時為該列寫入資料。

  • 建議升級到新版本。

P1

報錯ERROR: internal error: The left child should be column ref, num_children: 1

查詢的SQL中,Clustering keyvarchar類型就會觸發。

出現版本:

V0.9.24及以下版本。

修複版本:

V0.9.25及以上版本。

  • varchar欄位改成TEXT欄位。

  • 建議升級到新版本。

P2

查詢外表報錯:code: SERVER_INTERNAL_ERROR message: "query next FROM foreign table executor failed,Unknown file type: xxx

MaxCompute叢集發生配置更新,同時Hologres依賴的外表中繼資料未及時更新導致。

出現版本:

V0.10.20及以下版本。

修複版本:

V0.10.21及以上版本。

無法規避,需要執行個體重啟或者升級到新版本。