すべてのプロダクト
Search
ドキュメントセンター

Hologres:注目すべき修正内容

最終更新日:Jun 13, 2026

このドキュメントでは、各 Hologres バージョンで解決された問題を一覧にしています。問題の説明と影響分析も含まれています。エラーメッセージや問題の説明を使用して、ご利用のインスタンスが影響を受けていないかを確認できます。Hologres リアルタイムデータウェアハウスユーザーグループに参加し、テクニカルサポートに連絡してインスタンスを最新バージョンにアップグレードすることを推奨します。詳細については、「オンラインサポートの受け方」をご参照ください。

背景情報

  • バグと修正

    • 特定のバージョンで見つかったバグは、特に明記されていない限り、それ以前のすべてのバージョンにも存在します。

      たとえば、V1.3 で見つかったバグは、V1.1 や V0.10 にも存在します。

    • 特定のバージョンで修正されたバグは、その後のすべてのバージョンで修正されたままです。

      たとえば、V1.1 で修正されたバグは、V1.3 以降でも修正されたままです。

  • バグの重大度

    • P0 (重大): 直ちにアップグレードしてください。これらのバグは、クエリの正確性や書き込み成功率など、本番サービスに影響を与える可能性があります。

    • P1 (高): 潜在的な問題を回避するためにアップグレードする必要があります。

    • P2 (中): 必要に応じてアップグレードしてください。これらの断続的なバグは、メソッドを書き換えるか、インスタンスを再起動することで解決できます。

2026 の不具合

2026 年 6 月

重大度レベル

説明

根本原因

影響を受けたバージョン

修正済みバージョン

回避策

P0

主キーの一部が更新される論理パーティションテーブルでデータフラッシュを行うと、インスタンスが再起動する可能性があります。

フラッシュ操作中に、論理パーティションテーブルが主キー更新シナリオを処理する方法に不具合があります。

V3.1.1

V3.2.29、V3.1.43

修正済みバージョンにアップグレードします。

P0

Partition count [65535] in memtable has exceed the limit [65535] というエラーでデータ書き込みが失敗し、ワーカーが再起動します。

memtable のパーティション数検証に不具合があり、現在の書き込みバッチからのパーティションがカウントされないため、ワーカーが予期せず終了します。

V4.0.1

V4.1.21、V4.2.2、V4.0.37

2026 年 5 月

重大度レベル

説明

根本原因

影響を受けたバージョン

修正済みバージョン

回避策

P1

Binlog が有効になっているテーブルで Rebuild を実行すると、フロントノードがハングし、インスタンスが利用できなくなる可能性があります。

Binlog が有効になっているテーブルを Rebuild する際の処理に不具合があり、ロック競合が発生してフロントノードがハングします。

V4.1.1 ~ V4.1.20

V4.1.21

  • 修正済みバージョンにアップグレードします。

  • Rebuild を実行する前に、GUC パラメーター set hg_experimental_rebuild_try_to_using_dynamic_table_mode=off を無効にします。

P2

接続文字列で複数のオプションを指定すると、接続が失敗するか、パラメーター値が正しくなくなります。たとえば、options を -c statement_timeout=1000 -c search_path=public に設定すると、次のエラーが発生します。Connect to FE failed, invalid value for parameter "statement_timeout": "1000-csearch_path=public"

ゲートウェイモジュールが options フィールドを解析する際に、空白文字を誤って削除するため、複数のパラメーターが 1 つの不正な値に結合されます。

  • V2.0.18 ~ V2.0.35

  • V2.1.1 ~ V2.1.15

  • V2.0.36

  • V2.1.16

  • 修正済みバージョンにアップグレードします。

  • 接続オプション文字列に複数のオプションを指定しないでください。

2026 年 4 月

重大度レベル

説明

根本原因

影響を受けたバージョン

修正済みバージョン

回避策

P2

Data Masking 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

修正予定

  • クエリエラーを解決するには、GUC パラメーター hg_experimental_enable_shard_pruning を無効にしてください。

  • 修正済みバージョンがリリースされたら、アップグレードしてください。

2026 年 3 月

重大度

説明

根本原因

影響を受けたバージョン

修正済みバージョン

回避策

P1

全文転置インデックスのフレーズ検索モードで、slop パラメーターが 255 を超えると、不正確な検索結果が生成される場合があります。

slop 値が 255 より大きい場合、全文転置インデックスのマッチングロジックに不具合があります。

V4.0.1

V4.1.9

  • 最新バージョンにアップグレードします。

  • slop パラメーターに 255 より大きい値を設定しないでください。

P2

dynamic table の更新が incremental refresh mode で失敗します。これは、Volatile 関数が集計関数の前にあり、最後の列にない場合に発生します。エラーは次のとおりです。

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

分散キーのリストが内部クエリに渡されますが、これは最終的な出力列に対応しており、内部クエリの列にマッピングできません。

V3.1

  • V4.1.8

  • V4.0.24

  • 完全モードを使用するか、Volatile 関数を分散キーの後に配置します。

  • 最新バージョンにアップグレードします。

P2

virtual warehouse にテーブルグループをロードする際、FE (Frontend)SE (Storage Engine) からシャードの場所情報を完全に取得できない場合があり、FixedFE 書き込み操作が約 1 秒間失敗します。

関数 DDLReadService::DoGetTableGroupShards で、ShardInfos が空の場合に break が使用され、continue が使用されなかったため、データ取得が不完全になります。

V1.1

  • V4.1.7

  • V4.0.24

  • 最新バージョンにアップグレードします。

P2

可変長データ型を持つ配列列を 64 MB を超えてバッチ処理すると、次のエラーが報告されます。Copy overflow with offset xx, length xx, and array length xx

ミュータブル配列は 1 行分のスペースしか確保しませんが、追加された配列には複数の行が含まれています。テキスト列が 64 MB を超えると、ビルダーのサイズが 1 行分のみ確保され、必要な最小サイズが考慮されません。

V4.0

  • V4.1.6

  • V4.0.21

  • 回避策: alter database xxx set hg_experimental_enable_batch_accumulator_v2=off; を実行します。

  • 最新バージョンにアップグレードします。

P2

ユーザーが SQL ステートメントを実行する際、Alibaba Cloud アカウント名が自動的に 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

バッチコピー処理中に共有メモリが一杯になると、ERROR: Parse data from copy encountered internal error というエラーが発生するか、コアダンプが発生します。スタックトレースには holo_copy または CopyReadLineText が含まれます。

バッチコピーモードでは、クライアントデータは行数でバッチ処理され、共有メモリに書き込まれます。1 行が大きい場合(バッチあたり約 600 MB)、複数の接続からの同時書き込みにより共有メモリが枯渇する可能性があります。これにより、後続の書き込みが失敗するか、読み取り側がオーバーフローにより無効な値を読み取るためプロセスがクラッシュします。

V1.1

  • V4.1.5

  • V4.0.21

  • V3.2.31

  • 回避策: ストリーミングコピー書き込みを使用するか、hg_experimental_query_batch_size パラメーターの値を減らします(デフォルト: 8192)。例: alter user xx set hg_experimental_query_batch_size = 512;

  • 最新バージョンにアップグレードします。

P2

Parquet ファイルから配列列を読み取る際、ページインデックススキッピングによりエラーが発生します。この問題は、ページインデックスが有効になっている場合(デフォルト)、SQL クエリが配列列を読み取り、述語プッシュダウンが Parquet リーダーに任意の列のページをフィルタリングする場合にトリガーされます。

ページインデックススキッピングロジックと配列列の読み取りの間に互換性の問題があります。述語プッシュダウンによりページがスキップされると、配列列の読み取り状態が正しく同期されません。

V3.1

  • V4.1.5

  • V4.0.19

  • V3.2.29

  • V3.1.43

  • 回避策: ページインデックスを無効にします。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 に競合がなくても行が書き込まれません。

WHERE 条件が定数式の場合、条件が正しく書き換えられず、条件を満たすデータが書き込まれません。

V4.0

  • V4.1.6

  • V4.0.24

  • INSERT OR IGNORE 構文を使用し、ON CONFLICT 式で定数条件を使用しないでください。

  • 最新バージョンにアップグレードします。

P2

Parquet リーダーは空の行グループを処理できません。行数が 0 の行グループを読み取ろうとするとエラーが報告されます。Hologres V3.1 以降では、これによりコアダンプが発生し、スタックトレースに hologram::spi::parquet::RowRange が含まれます。

リーダーは行グループにデータが含まれていることを前提としています。空の行グループを処理する際、データページパーサーが返すファイルの終わり (EOF) マーカーが無視され、エラー処理ロジックが誤ってトリガーされます。

V3.0

  • V4.1.4

  • V4.0.19

  • V3.2.29

  • 回避策: hiveqe を使用してクエリを実行し、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

バルクロード操作中に空のファイルを送信すると、フラッシュ操作が失敗します。サイズが 0 のファイルを送信すると、後続のフラッシュ操作でファイルを開いてメタデータを読み取ることができないため失敗します。

バルクロード操作が削除コンパクションをトリガーすると、選択されたファイルのすべての行が削除対象としてマークされ、空のファイルが生成されます。

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

Fixed plan で、グローバルセカンダリインデックスにブール型が含まれるテーブルへの書き込み操作が失敗します。グローバルインデックスを作成してデータを挿入すると、次のエラーが報告されます。ERROR: XX000: internal error: unexpected error, failed to write, detail: Unsupported type in fixed dispatcher.

Fixed ディスパッチャーは、グローバルセカンダリインデックスへのブール値の書き込みをサポートしていません。

V4.0.0

  • V4.0.16

  • V4.1.2

  • 最新バージョンにアップグレードします。

P2

Holo FDW を使用したクロスインスタンスクエリが失敗します。V4.0 にアップグレードした後、外部テーブルをクエリすると、次のエラーが報告されます。Fetch table group shards failed on meta proxy:Loading cached shard location value for table group[...] failed

FDW がキャッシュされたシャードの場所値をロードできません。

V4.0.6

  • V4.0.15

  • V4.1.1

  • 最新バージョンにアップグレードします。

P2

マスキングされたテーブルから、自動インクリメント列を持つ宛先テーブルにデータを書き込むと、予期しない動作が発生します。Hologres V4.0 以前では、この操作によりコアダンプまたは異常なエラー動作が発生する可能性があります。

コードは parsetree->targetListrte_insert->insertedCols の間に 1 対 1 のマッピングがあることを前提としています。この前提は、宛先テーブルに自動インクリメント列が含まれる場合に無効になります。なぜなら、parsetree->targetList には自動インクリメント列とユーザー指定列の両方が含まれるのに対し、rte_insert->insertedCols にはユーザー指定列のみが含まれるためです。

V3.1

  • V3.2.26

  • V4.0.14

  • V3.1.42

  • 自動インクリメント列の使用を避けてください。

  • 最新バージョンにアップグレードします。

P2

Array Ref インターフェイスはスレッドセーフではなく、コアダンプを引き起こす可能性があります。Hologres V2.2 以降では、ワーカーレベルのシャッフルおよび QE v2 のシャッフルロジックにおいて、マルチスレッドによる array->type へのアクセスによりコアダンプが発生し、配列の type フィールドが無効な値になります。

ArrayRef 型取得インターフェイスは const としてマークされていますが、mutable キーワードにより type_ メンバー変数の変更が許可されています。複数のスレッドによる type への同時アクセスにより、type_ の制御ブロックが破損し、スレッドセーフの問題が発生します。

V3.1

  • V4.1.6

  • V4.0.21

  • V3.2.31

  • V3.1.45

  • 一時的な回避策: ワーカーレベルのシャッフルおよび QE v2 を無効にします。set hg_experimental_enable_worker_level_connection = off; set hg_experimental_enable_qe_v2 = off;

  • 最新バージョンにアップグレードします。

P2

ALTER DEFINITION ステートメントを使用して既存の動的テーブルに列を追加する際、ベーステーブルが物理パーティションテーブルで、動的テーブル (DT) が論理パーティションテーブルの場合、ALTER DEFINITION ステートメントを DT に対して実行すると、次のいずれかのエラーが報告されます。ERROR: New definition is not supported in incremental mode: Multiple partitions of table XXX is selected または ERROR: New definition is not supported in incremental mode: No partitions of table XXX is selected

作成プロセス中に、クエリオプティマイザーのパーティション数チェックを無視する GUC パラメーターが設定されましたが、このロジックは ALTER DEFINITION プロセスで同期されませんでした。

V3.1

  • V3.1.40

  • V3.2.24

  • V4.0.12

  • V4.0.13

  • 回避策: GUC パラメーターを設定してから ALTER DEFINITION を実行します。set hg_experimental_check_selected_partition_table_number_for_dynamic_table = off;

  • 最新バージョンにアップグレードします。

P2

外部動的テーブルを作成する際、重複する主キーエラーが報告されます。これは、外部 DT の SELECT クエリが同一のテーブルを複数回結合またはユニオンする場合に発生します。その結果、生成されたベーステーブルリストに重複が含まれ、システムテーブルへのデータ挿入時にエラーが発生します。ERROR: duplicate key value violates unique constraint "pg_holo_external_dynamic_table_dependencies_name_index"

この問題は、動的テーブルと外部動的テーブルの両方に影響します。動的テーブルのシステムテーブルには主キーがありませんが、外部動的テーブルのシステムテーブルには主キー制約があるため、重複レコードの挿入が禁止されます。

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 型の集計結果の type_modifier フィールドが推論されません。そのため、集計結果の 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

ビューにエイリアスのないサブクエリが含まれている場合、スナップショット SQL の実行が失敗します。ビューの SELECT 文で subquery alias optional 特徴を使用してエイリアスのないサブクエリを作成する場合、hg_dump_script によって生成されたスナップショット SQL を実行すると、エラー「unnamed_subquery は存在しません」が返されます。

PostgreSQL がビュー定義 SQL をビュー規則から推測する際、サブクエリのエイリアスを強制しません。ユーザーのビューにエイリアスのないサブクエリがある場合、推測されたビュー定義 SQL もエイリアスを欠き、ターゲットリストがそれを指定しているため、SQL 解析に失敗します。

V4.0

  • V4.1.6

  • V4.0.12

  • CREATE OR REPLACE を使用して、各サブクエリにエイリアスを提供するようにビューを再作成します。

  • 最新バージョンにアップグレードします。

P1

Paimon Deletion Vector (DV) テーブルを主キーでグループ化した後、重複レコードが表示されます。これは、Parquet ファイルに FIXED_LEN_BYTE_ARRAY 物理形式、decimal 論理形式、および plain エンコーディングを持つページが含まれ、その列から読み取られたレコードバッチがページ境界をまたぐ場合に発生します。境界をまたいだバッチ内のデータが、レコードバッチの先頭に誤って配置されます。

Parquet デコーダーはデータ配置時にオフセットを適用しないため、レコードバッチがページ境界をまたぐ場合にデータの位置が不正確になります。

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

MaxCompute テーブルクエリが Common Table アクセスパスに切り替わった後、Auto Analyze がテーブルの最新の最終更新時刻を取得できなくなり、メモリ不足 (OOM) エラーが発生する可能性があります。Hologres V3.0.51 にアップグレードした後、Common Table パスを使用して外部テーブルをクエリすると、OOM エラーが継続する可能性があります。MaxCompute テーブルの 3 レベルモデルでは、Common Table アクセスパスからの応答のスキーマ名が Hologres のプロジェクト名ではなく default になります。これにより、Auto Analyze が外部テーブルの最終更新タイムスタンプのバッチ取得に失敗し、変更情報が収集されません。

Common Table アクセスパスと holo_native は、3 レベルモデルの処理において整合していません。fetcher->GetTables インターフェイスの 3 レベルモデルでは、holo_nativeproject_nameschema_name として返しますが、Common Table アクセスパスは defaultschema_name として返します。これにより、データバックフィルが失敗します。

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 から V3.1.30 へのアップグレード後、CommonTable が有効な MC パーティションテーブルに対する高頻度クエリにより、長期的にメモリ使用量が継続的かつ緩やかに増加します。

oct_get_partition_names インターフェイスに遅いメモリリークがあり、時間の経過とともにメモリ使用量が継続的に増加します。

V3.0

  • V3.0.51

  • V3.1.36

  • V3.2.18

  • V4.0.7

  • メモリリークは遅いため、holo_worker メモリが高くなった場合は、メモリ使用量が高い Pod を再起動して回復できます。Pod が多い場合は、インスタンスを再起動してください。

  • 最新バージョンにアップグレードします。

P1

ハッシュ結合のプローブ側で、UNION ALL の最初の子から生成された runtime filter が 2 番目の子にプッシュダウンされ、クエリ結果のデータが失われる可能性があります。

UNION ALL 操作の 2 番目の子へのマッピングおよびプッシュダウンプロセス中に、最初の子からの runtime filter が誤ってマージされ、誤ったプッシュダウンが行われます。

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

Hologres V4.0.7 以降にアップグレードした後、名前が変更された、またはスキーマが変更された動的テーブルは自動更新できなくなります。次のエラーメッセージが報告されます。ExecuteQuery failed, last errmsg: Can not find dynamic table properties of XXX または relation "XXX" does not exist

動的テーブルは、ドライバーで FE (Frontend) から最新のプロパティを定期的にフェッチする必要があります。コードがテーブルドライバーからドライバーマスターに移動された際、最新のテーブル名とスキーマ名を同期するロジックが省略されました。このため、作成時の初期名が使用されることになり、アップグレード後のリフレッシュが失敗します。

V4.0.7

  • V4.0.10

  • V4.0.13

  • 最新バージョンにアップグレードします。

P2

CREATE TABLE AS SELECT (CTAS) ステートメントのパフォーマンスが低下します。これは、クエリ最適化の createstmt フェーズ中の特定の最適化ステップが原因です。

CTAS ステートメントのクエリ最適化フェーズで、不要な最適化ステップがパフォーマンスに悪影響を及ぼします。

V4.0

  • V4.0.10

  • V4.0.13

  • 最新バージョンにアップグレードします。

P1

増分更新された動的テーブルで ANY_VALUE 集計関数を使用すると、不正確な結果が生成されます。ベーステーブルフィールドに 1 つの値しかない場合でも、動的テーブルをクエリすると複数の値が返されます。

FinalizeStateRows で、result_array がループ内で誤って生成されます。このバグは V3.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

Auto Analyze コレクション中の Common Table アクセスパスの権限変更により、システムがテーブルの最終更新時刻を取得できなくなります。これにより、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

serverless モードで、複数の行レベルトランザクションが開いている間に動的テーブルを更新すると、エラーが発生します。

パッチにより、存在しないテーブルグループのチェックが FE (Frontend) に移動されましたが、serverless シナリオは考慮されませんでした。この問題は、フォロワー virtual warehouse 上で自動ルーティングできない DML ステートメントを実行した場合にトリガーされます。

V4.0

  • V4.0.9

  • V4.0.13

  • リーダー virtual warehouse に権限を付与するか、リーダー virtual warehouse に接続して SQL ステートメントを実行するか、動的テーブルを作成することで、DML 自動ルーティングを使用します。

  • 最新バージョンにアップグレードします。

P2

クエリの結果がメモリ不足 (OOM) エラーになります。

シャッフル操作の実行クラス (EC) 優先度が低下したため、CPU 使用率が高い場合に十分なタイムスライスを取得できなくなりました。これにより、ビルド側のデータ取得が遅れ、runtime filter の構築が遅延し、プローブ側が過剰なデータを読み取るようになり、フィルタリング効率が低下します。

V4.0.x 以降のバージョン

  • V4.0.10

  • V4.0.13

  • 回避策: 次の GUC パラメーターを設定します。hg_experimental_enable_qe_v2 = onhg_experimental_runtime_filter_wait_time_ms = 10000、および hg_experimental_wait_for_all_runtime_filters = on

  • 最新バージョンにアップグレードします。

P1

ログイン監査ログの一部で client_addr フィールドが空になります。

ゲートウェイがログイン監査ログを報告する際、クライアント IP アドレスを取得するために追加で getpeername を呼び出します。クライアント接続がすでに異常切断されている場合、IP アドレスを取得できません。

ログイン監査ログをサポートするすべてのバージョン

V4.0.13

  • 最新バージョンにアップグレードします。

P2

クラスタリングキーを含むクエリを preparestmt を使用して実行すると、次のエラーが発生します。ERROR: XX000: Dispatch query failed: internal error: DataType::STRING column range conjuncts should use string literal or parameter ref.

mask_md5 はクラスタリングキーです。プリペアドステートメントフェーズでは、式 mask_md5 in (md5($1),md5($2)) を定数畳み込みできません。これにより、抽出されたクラスタリングフィルターに md5 関数が含まれ、バックエンドがこのフィルターを解析できないためエラーが報告されます。

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

まれに、LIMIT 句を含むクエリを実行中または手動で早期キャンセルした場合、クエリが失敗し、ワーカーが再起動します。

SplitFactory::Close 関数はリソースを解放しますが、独自の ExecutionContext を使用しません。これにより、他の関数が終了する前にリソースが解放され、コアダンプがトリガーされます。

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 のアンロード後、Holoweb ログインが失敗し、メタデータウェアハウスが次のエラーを報告します。ERROR: 42704: Table group[bizp.bizp_tg_default] is not found in warehouse bdmp_api_warehoue。ゲートウェイメトリクスは新しい接続リクエストの数とレイテンシが高くなっていることを示し、短時間で多数の新しい fixed fe 接続が作成されます。起動時に binlog を消費している際、ロック取得に時間がかかり、高い同時実行性により insert 操作が停止することがあります。

アンロードが発生すると、古い virtual warehouse 上の binlog や Fixed Plan リクエストなどの新しいリクエストが bhclient で 27.5 秒間リトライします。FixedFE 上の EC への接続時に binlog 消費が同期的にこのメソッドを呼び出すため、リトライが発生すると EC への接続がブロックされ、新しい FixedFE 接続の作成が停止し、接続が滞留します。

V3.2

V4.0.8

  • binlog 消費タスクを停止し、Flink ジョブを正しい virtual warehouse を使用するように変更します。または、HoloWeb にログインして、アンロードされたテーブルグループをターゲット virtual warehouse にロードします。HoloWeb にアクセスできない場合は、バックエンドから FE (Frontend) 開発者に連絡してゲートウェイを再起動してもらってください。

  • 最新バージョンにアップグレードします。

P2

Hologres V3.1 では、動的テーブルの自動更新を有効にした後、7 日間の期間で観察すると、コンテナメモリが継続的に増加します。FE メモリは増加しますが、holo worker メモリは安定しています。hg_generate_query_options_for_dynamic_table を繰り返し実行しても、メモリは継続的に増加します。

UDF hg_generate_query_options_for_dynamic_table にメモリリークがあります。UDF は HoloQmDispatcher オブジェクトをインスタンス化します。このオブジェクトは shared_ptr によって管理されますが、DispatcherManager は query_id をキーとするマップに格納します。コードによって作成された query_id は個別の ID であり、UDF を実行するクエリの query_id ではありません。クエリが完了すると、RemoveDispatcher(query_id) を呼び出してディスパッチャーを削除する必要がありますが、この手順がコードに欠落しています。DispatcherManager のライフサイクルは接続 (conn) プロセスにバインドされているため、ディスパッチャーオブジェクトが時間の経過とともに蓄積されます。

V3.1.0

  • V4.0.0

  • V3.1.26

  • V3.2.8

  • 回避策: pg_stat_activity で長時間稼働している接続を見つけて終了するか、1 時間以上経過した接続を自動的にクリーンアップする cron ジョブを登録します。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

インスタンス内で、他のワーカーよりもメモリ使用量が高い 2 つのワーカーが存在し、シャードの偏りはありません。監視では、FE (Frontend) メモリに大きな差異が見られます。メモリが増加し始めた時点からのクエリを調べると、クエリ数が 1000 を超える DDL ステートメントを実行した長時間稼働している接続が明らかになります。

DDL 実行プロセスにメモリリークがあります。QueryDesc オブジェクトのメモリは、クエリレベルの MemoryContext がクエリ終了時に解放されるときに解放されます。しかし、UtilityStmt (広義の DDL) は長時間稼働する MemoryContext にメモリを割り当てるため、クエリレベルの 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;

  • 最新バージョンにアップグレードします。

2026 年 2 月

重大度

説明

原因

影響を受けたバージョン

修正済みバージョン

回避策

P1

スペース、特殊文字、大文字小文字が混在した名前を持つテーブルを作成すると、インスタンスが一時的に再起動する可能性があります。

システムテーブルからテーブルプロパティを取得する際に、インスタンスが誤った状態を読み取るため、コアダンプが発生します。

  • 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_gen 関数を to_file と共に使用する際、型変換エラーが発生します。

  • V4.1.5

  • V4.0.21

  • V4.1.6

  • V4.0.22

  • 最新バージョンにアップグレードします。

P1

仮想ウェアハウスが lightweight connection モードでソーステーブルの binlog を消費し、ソーステーブルの Table Group がロードされていない場合、インスタンスが新しい接続を作成できなくなる可能性があります。このモードは、Flink ソーステーブルパラメーター connection.fixed.enabled が有効になっている場合、または特定のインスタンスバージョンでデフォルトで有効になります。

lightweight connection モードでの初期化中に、現在の仮想ウェアハウスが Table Group をロードしていないため、リクエストが自動的にリトライされます。これらのリトライ中に、エラーハンドリングパスが誤ってグローバルロックを保持するため、新しい接続リクエストがブロックされます。

  • V3.1.13

  • V3.2.10

  • V4.0.0

  • V4.0.8

  • 最新バージョンにアップグレードします。

  • インスタンスに十分な接続がある場合は、ソーステーブルの connection.fixed.enabled パラメーターを false に設定します。

P1

ストリーム-ストリーム結合を含む増分動的テーブルの最初の更新時、または REFRESH OVERWRITE を実行時に失敗する可能性があります。

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

テーブル定義にストリーム-ストリーム結合結果に基づく集計が含まれる場合、集計結果が不正確になる可能性があります。

最初の増分更新時に、最近削除されたデータが計算に含まれることがあり、エラーまたは不正確な結果を引き起こします。

  • V3.2.5

  • V4.0.1

  • V4.1.1

  • V4.0.21

  • V4.1.6

  • 最新バージョンにアップグレードします。

P2

array_to_string 関数を 2 つの引数で呼び出すと、入力データの NULL 値が計算に含まれます。この動作は PostgreSQL と一致しません。PostgreSQL では、NULL 値は除外されます。

説明

3 つの引数を指定した呼び出しでは、NULL 値も計算に含まれますが、これは PostgreSQL の動作と一致します。

HQE エンジンのロジック不具合により、array_to_string 関数の 2 引数呼び出しが影響を受けます。

  • V3.0.1

  • V3.1.1

  • V3.2.1

  • V3.0.46

  • V3.1.25

  • V3.2.24

  • 最新バージョンにアップグレードします。

2026 年 1 月

重大度

説明

原因

影響を受けたバージョン

修正済みバージョン

回避策

P2

JOIN を使用するクエリが PQE 実行エンジンで処理されると失敗します。

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

JOIN オペレーターの出力列と PQE 実行エンジンへの入力列の間に不一致があるため、エラーが発生します。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.33

  • V3.2.24

  • V4.0.13

  • PQE 実行エンジンを使用しないように SQL を書き直します。

  • 最新バージョンにアップグレードします。

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 列をセグメントキーまたはクラスタリングキーとして使用したフィルタリングが、結果セットのフィルタリングに失敗します。

ストレージエンジンのセグメントキー抽出ロジックに問題があり、フィルタリングが正しく行われません。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.38

  • V3.2.24

  • V4.0.13

最新バージョンにアップグレードします。

P1

V4.0 へのアップグレード後、メモリ使用量が継続的に増加し、アクティブなクエリがなくても安定化または減少しません。

V4.0 の結果キャッシュパスで、ディクショナリ配列を処理する際にメモリリークが発生します。

  • V4.0.0

  • V4.0.10

  • この問題を回避するには、機能フラグを無効にしてください。

     select hg_admin_command('set_global_flag', 'enable_dict_array=false');
  • 最新バージョンにアップグレードします。

P2

CTE を再利用する場合、システムがクエリプランを生成できず、エラーが返されます。

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

  • 回避策として、CTE 戦略をインライン化に変更します。

    ALTER DATABASE <database_name> 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

PQE 出力がシャッフルフェーズをバイパスし、同じテーブルグループ内の別の列指向テーブルからのスキャン結果と直接 JOIN または UNION ALL で使用される場合、PQE 結果にデータが欠落する可能性があります。これは、次の条件がすべて満たされる場合に発生します。

  • 列指向テーブルが主キーインデックスを使用しており、ポイントシークがトリガーされます。

  • データが PQE によって直接処理されます。

列指向テーブルが主キーインデックスを使用している場合、クエリオプティマイザー (QO) によって生成されたプランには Gather オペレーターが含まれません。バケット数がシャード数と等しくなく、1 つのバケットに複数のシャードが含まれる場合、PQE が 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 すると失敗します。進捗ビューに一時テーブルに列が見つからないというエラーが報告されます。

古いバージョンの Rebuild プロセスは、大文字小文字を区別する識別子を正しく処理できませんでした。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.40

  • V3.2.25

  • V4.0.13

最新バージョンにアップグレードします。

P2

CASE WHEN 式を含むサブクエリにより、次のエラーが発生します。

ERROR: column "xxx" does not exist

このシナリオに対して、クエリオプティマイザーが有効なプランを生成できません。

  • 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 を消費する際、ソーステーブルが物理テーブルの列のサブセットを定義している場合、予期しない NULL 値が取り込まれる可能性があります。

Hologres の Flink コネクタは、投影された列を使用した binlog 消費を正しく処理できません。

  • Flink VVR 11.3 または 11.4 と Hologres V4.0.1 以降。

  • Flink VVR 11.3 および 11.4 のホットフィックスは 2026 年 1 月 9 日にリリースされました。

  • 修正がリリースされた後、Flink ジョブを再起動します。

  • 修正が利用可能になる前は、Flink ソーステーブルの WITH 句に次の設定を追加してジョブを再起動します。source.binlog.project-columns.enabled' = 'false'

P1

完了したクエリが正しくクリーンアップされず、テーブルロックを保持する残留トランザクションが残る可能性があります。

完了したクエリのガベージコレクション (GC) ロジックに不具合があり、残留クエリ識別子 (query_id) が発生します。

  • V2.2.0 以前

  • V3.0.0

  • V2.2.32

  • V3.0.12

  • 最新バージョンにアップグレードします。

  • 残留クエリを手動でクリーンアップするには、次の SQL コマンドを実行します。

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

2025 不具合

2025 年 12 月

重大度

説明

原因

影響を受けたバージョン

修正済みバージョン

回避策

P0

DLF Paimon Postpone テーブルをクエリすると、圧縮されていないコミット済みデータが読み取られ、主キーの重複が発生する可能性があります。

Hologres の V3.2.12 へのアップグレード後、Paimon SnapshotReader クラスの動作が変更されました。

  • 古い Paimon SDK バージョン: Postpone テーブルの SnapshotReader は自動的に onlyReadRealBuckets オプションを追加しました。このオプションにより、最終的な圧縮済みデータのみが読み取られました。

  • 新しい Paimon SDK バージョン: この自動ロジックが削除されました。最終データのみを読み取るには、SnapshotReader に手動でこのオプションを設定する必要があります。

  • V3.2.12

  • V4.0.0

  • V3.2.24

  • V4.0.11

  • 最新バージョンにアップグレードします。

P1

bucket_num=-2 を使用して DLF 外部テーブルをクエリする際、マルチテーブル結合で不正確な結合プランが生成され、クエリ結果が不正確になる可能性があります。

Paimon テーブルの bucket_num がマルチテーブル JOIN シナリオで -2 に設定されている場合、不正確な JOIN プランが生成され、データが効果的に結合されず、クエリ結果が不正確になります。

  • 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

必要な権限を持っていても、hologres.hg_query_log および hologres.hg_table_info のクエリ結果が空になります。

hologres.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

マルチストリーム結合を持つ動的テーブルの増分更新中に、1 つのストリームのみにデータが含まれ、そのデータに取り消しが含まれる場合、直接クエリした場合と比較して更新結果が不正確になります。

動的テーブルの増分更新中に、単一ストリームからのデータ取り消しが正しく処理されません。その結果、結果テーブルから削除されるべき行が削除されず、結果テーブルが不正確になります。

  • V4.0.1

  • V4.0.9

  • まずテーブルデータを変更し、次に refresh overwrite を使用して誤ったデータを修正します。次の 2 つの 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 へのアップグレード後、ワーカーの OOM エラーが発生する可能性があります。エラーメッセージは次のとおりです。

  1. エラー: ERROR: XX000: ERPC_ERROR_CONNECTION_CLOSED

  2. エラー: ERROR: Dispatch query failed: Connect to xxx.xxx.xxx:xxx failed

V4.0 では、より多くのデータをメモリにキャッシュするためにメモリ構造が最適化されています。ただし、この新しい構造には Decimal 型を処理する際の不具合があります。Decimal 列を含むテーブルがハッシュ結合に参加すると、インスタンスがコアダンプを生成する可能性があります。

  • V4.0.0

V4.0.10

  • 一時的な回避策として、次の SQL コマンドでクエリメモリ最適化を無効にします。

    select hg_admin_command('set_global_flag', 'enable_selection_vector=false');
  • 最新バージョンにアップグレードします。

P1

MaxCompute Append Delta テーブルが空でないにもかかわらず、クエリ結果が空の結果セットを返します。

スプリットキャッシュのバグにより、クエリが空の結果を返します。

  • V4.0.0

V4.0.9

  • 一時的な回避策として、次のコマンドでスプリットキャッシュを無効にします。

ALTER DATABASE <database_name> set hg_experimental_enable_maxcompute_sdk_splits_cache=off;
  • 最新バージョンにアップグレードします。

P0

V4.0 では、主キーとクラスタリングキーを持つ論理パーティションテーブルを使用する際、重複する主キー値が発生する可能性があります。

論理パーティションテーブルの書き込みパフォーマンスを向上させるために、V4.0 ではマルチパーティションフラッシュがサポートされています。ただし、この操作中のクラスタインデックス処理ロジックにバグがあり、Pangu に保存されている AliORC ファイル(内部列指向テーブルのデータファイル)のクラスタインデックスが破損する可能性があります。破損したクラスタインデックスにより、既存のデータが読み取れなくなります。その結果、更新時に古いデータが見つからず、新しい行が挿入され、重複が発生します。

  • V4.0.0

V4.0.9

  • 最新バージョンにアップグレードします。アップグレード後、システムは破損したファイルを検出するロジックを追加します。破損したファイルがスキャンされると、次のエラーが報告されます。clustered_index size [x] incorrect. このエラーが発生した場合は、影響を受けたテーブルに対して完全コンパクションを実行して修復してください。詳細については、「パーティションテーブル FAQ」をご参照ください。

P1

V4.0 へのアップグレード後、ワーカーの OOM エラーが発生する可能性があります。エラーメッセージは次のとおりです。Error 1: ERROR: XX000: ERPC_ERROR_CONNECTION_CLOSED

Error 2: ERROR: Dispatch query failed: Connect to xxx.xxx.xxx:xxx failed

V4.0 では、より多くのデータをメモリにキャッシュするためにメモリ構造が最適化されています。ただし、この新しい構造ではデータサイズの計算を誤り、必要なメモリ量を過小評価するため、ワーカーの OOM が発生します。

  • V4.0.0

V4.0.7

  • 一時的な回避策として、次のコマンドで結果キャッシュを無効にします。

ALTER DATABASE <database_name> set hg_experimental_enable_result_cache=off;
  • 最新バージョンにアップグレードします。

2025 年 11 月

レベル

説明

原因

影響を受けたバージョン

修正済みバージョン

回避策

P1

Flink リアルタイム書き込みシナリオで、ユーザーを削除して同じ名前と権限を持つユーザーを再作成しても、新しいユーザーに権限エラーが発生する可能性があります。これは、新しい接続を使用していても発生します。

FixedFE コンポーネントのユーザーパーミッションキャッシュ更新戦略に問題があります。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.38

  • V3.2.21

  • V4.0.9

  • 最新バージョンにアップグレードします。

P1

動的テーブルのストリームモードでの増分更新中に、ソーステーブルに対して INSERTUPDATE、または DELETE 操作を実行した直後に TRUNCATE または INSERT OVERWRITE を実行すると、後続の更新に不正確なデータが含まれる可能性があります。

ソーステーブルの DML 操作 (INSERTUPDATE、または DELETE) の直後に TRUNCATE または INSERT OVERWRITE を実行すると、動的テーブルが同じ主キーに対する重複する DELETE メッセージを処理し、データが不正確になります。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.37

  • V3.2.20

  • V4.0.8

  • 最新バージョンにアップグレードします。

P2

汎用インスタンスのリバランス操作を実行するために SELECT hg_rebalance_instance() を実行すると、shard group not found エラーが発生します。

汎用インスタンスのリバランス時に、誤ったデフォルトパラメーターが渡されます。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.37

  • V3.2.20

  • V4.0.8

  • 最新バージョンにアップグレードします。

P2

スケーリング操作中に、テーブルグループのプライマリおよびセカンダリ仮想ウェアハウスでまれに ShardPermissionDenied エラーが発生し、一時的な書き込みエラーが発生する可能性があります。

スケーリング中に ShardPermissionDenied エラーを再試行可能な kShardHotMigrationInProgress エラーに変換するようにシステムが設計されています。ただし、この変換が失敗し、元のエラーがクライアントに返されます。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • V3.1.37

  • V3.2.20

  • V4.0.8

  • 最新バージョンにアップグレードします。

P2

MaxCompute の Common Table アクセスパスに切り替えた後、MaxCompute 外部テーブルを使用する動的テーブルの更新が次のエラーで失敗します。

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

動的テーブルのクエリプランの渡し方は通常の OLAP クエリとは異なります。送信中にプランのバイナリデータが破損し、フィルターの解析に失敗します。

  • 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

標準 PostgreSQL 権限モデルを使用する際、動的テーブルに所有者権限を付与していても、所有者として履歴テーブルまたはパーティションを更新すると、Permission Denied エラーが発生する可能性があります。

更新に使用される ID がキャッシュされます。権限が変更された後、キャッシュされた古い ID が後続の更新で誤って使用され、エラーがトリガーされます。

  • V3.1.0

  • V3.2.0

  • V4.0.0

  • 修正予定

  • 最新バージョンにアップグレードします。

P2

DLF で timestamp 列に対する範囲フィルターを使用してデータをクエリすると、次のエラーが発生します。

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: "" } }

システムがリテラル型を誤って処理し、long リテラルとして扱います。

  • V3.2.0

  • V4.0.0

  • V3.2.17

  • V4.0.6

  • 一時的な回避策として、Bigmeta アクセスパスを無効にします。

ALTER DATABASE <database_name> set hg_experimental_enable_big_meta=off;
  • 最新バージョンにアップグレードします。

P2

主キーにブール型列を含むテーブルに 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

クエリエンジンはブール配列を uint8 配列に変換します。ハイブリッド DML が行グループフィルターを作成する際、このシナリオを考慮していません。その結果、行グループフィルター内のリテラル型 (bool) と実際の値型 (long) の間に不一致が生じます。

  • V3.1.0

  • V3.2.0

  • V3.1.25

  • V3.2.7

  • 一時的な回避策として、ハイブリッド DML を無効にします。

ALTER DATABASE <database_name> set hg_experimental_enable_hybrid_dml = off;
  • 最新バージョンにアップグレードします。

P2

リモート 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

動的テーブルの増分更新のストリームモードを使用する際、ソーステーブルのコンパクション直後に更新を実行すると、増分データの順序が乱れる可能性があります。

同じキーに対する順序が乱れた増分イベントにより、シンクテーブルの結果が不正確になる可能性があります。

  • V3.1.0

  • V3.2.0

  • V3.1.23

  • V3.2.6

  • 最新バージョンにアップグレードします。

P1

REBUILD コマンドを使用する際:

  • binlog 無効時: binlog が無効になっている場合、物理パーティションテーブルを論理パーティションテーブルに再構築すると、結果テーブルで binlog が誤って有効になります。

  • binlog 有効時: binlog が有効になっている場合、物理パーティションテーブルを論理パーティションテーブルに再構築すると、結果テーブルで 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

高階配列関数を使用する際、結果配列のすべての要素が同一の場合、結果が誤って単一要素配列に重複排除される可能性があります。例:

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

  • 最新バージョンにアップグレードします。

2025 年 10 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P0

HoloWeb のテーブル再シャーディング機能を使用する際、タスクが失敗してキャンセルされた後、一時テーブルが正しくクリーンアップされません。この一時テーブルに対して手動で DROP TABLE を実行すると、フロントエンド (FE) が応答しなくなります。
































































































































HoloWeb のクリーンアップ関数に不具合があります。

影響を受けたバージョン:

  • V2.0.24

修正済みバージョン:

  • V2.2.28

最新バージョンにアップグレードします。

P2

HG_MOVE_TABLE_TO_TABLE_GROUP (再シャーディング) 関数が、特殊文字を含むテーブル名またはキーワードであるテーブル名に対して失敗します。この関数は静かに失敗し、テーブルグループは変更されません。

HG_MOVE_TABLE_TO_TABLE_GROUP 関数が文字のエスケープ処理を誤っています。

影響を受けたバージョン: すべてのバージョン

修正済みバージョン: なし。回避策を参照してください。

V3.1 以降にアップグレードし、Rebuild 機能を使用します。

P2

Hologres Serverless Computing リソースの従量課金請求書で、インスタンス ID フィールドが誤って <instance_id>_<uid>_<region_id> と表示されます。期待される表示は <instance_id> です。

基盤となる設定に問題があります。

この問題はバージョン固有ではなく、2025-09-09 16:00:00 から 2025-10-14 16:00:00 までに生成された請求書に影響します。

この問題は解決されました。2025-10-14 16:00:00 以降に生成された請求書は正しいです。

影響を受ける期間の請求書を個別に処理します。

2025 年 9 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P0

shard rebalance 操作 (スケーリングまたは再起動など) 中に、複数のリクエストが同時に完了すると、バックグラウンドプロセスが失敗する可能性があります。これにより、インスタンスの読み取りおよび書き込みが失敗する可能性があります。

バックエンドが同時に完了する複数のリクエストを誤って処理します。

影響を受けたバージョン: V3.0.9。

修正済みバージョン: V3.0.14 以降。

最新バージョンにアップグレードします。

P0

Hologres 外部テーブルから内部テーブルにデータをインポートする際、適応型インポート機能によりデータが失われる可能性があります。次のすべての条件を満たす場合に発生します。

  • INSERT INTO ... SELECT ... ステートメントを使用してデータをインポートします。

  • システムがリソースの高負荷によりインポート速度を自動調整します。外部テーブルの読み取りが SQE path にフォールバックすると、一部のデータセグメントがスキップされ、部分的なデータ損失が発生します。

外部テーブルの読み取りが SQE path にフォールバックすると、適応型インポート機能によりデータセグメントがドロップされ、データ損失が発生します。

影響を受けたバージョン:

  • 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 以降。

インスタンスレベルで adaptive import 機能を無効にします。次の GUC を設定します。

ALTER ROLE ALL SET hg_experimental_enable_adaptive_adjust_bulkload_dop = off;

P1

データマスキングを設定した後、テーブルの UPDATE 操作によりクエリ結果にマスクされていないデータが返される可能性があります。例:

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

インスタンスを再起動した後、動的テーブルが自動的に更新されなくなります。

バックエンドのスケジューリングシステムに問題があります。

影響を受けたバージョン:

  • V3.0.0-V3.0.45

  • V3.1.0-V3.1.24

  • V3.2.0-V3.2.6

修正済みバージョン:

  • V3.0.46

  • V3.1.25

  • V3.2.7

  • V4.0.0

最新バージョンにアップグレードします。

P1

論理パーティションと自動更新が有効な動的テーブルで、アクティブパーティションが非アクティブになると、増分更新から完全更新への切り替えに失敗し、ストレージが継続的に増加する可能性があります。

動的テーブルのアクティブパーティションの状態遷移をシステムが誤って処理します。

影響を受けたバージョン:

  • V3.1.0-V3.1.23

  • V3.2.0-V3.2.6

修正済みバージョン:

  • V3.1.24

  • V3.2.7

最新バージョンにアップグレードします。

P2

クラスタリングキーが NULL 許容の動的テーブルを設定する際、ALTER DYNAMIC TABLE ステートメントを実行すると、clustering_key should not be nullable というエラーが発生します。

ALTER DYNAMIC TABLE ステートメントがクラスタリングキーのプロパティを正しく推測できません。

影響を受けたバージョン:

  • V3.1.0-V3.1.31

  • V3.2.0-V3.2.11

修正済みバージョン:

  • V3.1.32

  • V3.2.12

最新バージョンにアップグレードします。

P2

クラスタリングキーを持たない列指向テーブルで、主キーに重複が発生する可能性があります。これは、INSERT ON CONFLICT DO UPDATE を使用したオフラインインポート後にリアルタイム書き込みを実行した場合に発生します。


オフラインインポート中に主キーのデータが正しく処理されないため、後続のリアルタイム書き込みで既存のキーを検出できず、主キーの重複が発生する可能性があります。

影響を受けたバージョン:

  • 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 GUC が有効であっても、依然として duplicate key value violates unique constraint エラーが報告される可能性があります。

重複データに遭遇した際、hg_experimental_affect_row_multiple_times_keep_last GUC が有効にならず、主キー制約違反が発生します。

影響を受けたバージョン:

  • 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 を使用して外部データベースの外部テーブルから読み取る際、SQL クエリがハングする可能性があります。

hg_insert_overwrite コマンドが外部データベースへのアクセスでタイムアウトし、クエリがハングします。

影響を受けたバージョン:

  • V3.1.0-V3.1.21

  • V3.2.0-V3.2.4

修正済みバージョン:

  • V3.1.22

  • V3.2.5

最新バージョンにアップグレードします。

2025 年 8 月

レベル

説明

原因

バージョン

回避策

P1

worker node が、クエリリクエストの完了後にハングする可能性があります。これにより、関連テーブルに対する DDL 操作や LIMIT 句を含むクエリがブロックされます。次のいずれかの理由でクエリリクエストが完了した場合に発生します。

  • メモリ不足 (OOM) エラーが発生しました。

  • 手動でキャンセルされました。

  • 例外により手動でキャンセルまたは終了された場合。

クエリ完了後のクエリエンジンのリソースクリーンアッププロセスに不具合があります。

影響を受けたバージョン:

  • 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 を使用して、Alibaba Cloud AccessKey (Alibaba Cloud アカウント、RAM user、または RAM role のもの) を持つ Hologres instance に接続する際、1 日の特定の時間帯に接続が失敗します。この時間帯は client time zone に依存します。たとえば、UTC+8 では 00:00:00+08 から 08:00:00+08 まで、UTC-5 では 19:00:00-05 から 00:00:00-05 までです。

Holo Client V2.6.0 のタイムゾーン処理に問題があります。

この問題は Holo Client V2.6.0 固有であり、Hologres instance バージョンとは無関係です。

Holo Client を V2.6.1 以降にアップグレードします。

P0

Hologres V3.1 では、ストリームモードでベーステーブルデータを消費する読み取り専用の動的テーブルを持つインスタンスが、連続再起動ループに入る可能性があります。

動的テーブルが読み取り専用状態にある場合、データフラッシュが失敗し、連続インスタンス再起動がトリガーされます。

影響を受けたバージョン:

  • V3.1.1 ~ V3.1.20

  • V3.2.1 ~ V3.2.2

修正済みバージョン:

  • V3.1.21 以降

  • V3.2.3 以降

最新バージョンにアップグレードします。

2025 年 7 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

Serverless Computing を使用したデータインポートジョブが失敗した場合、削除されない中間ファイルが残り、インスタンスのストレージ使用量が増加します。

中間ファイルのクリーンアップロジックが時折失敗します。

影響: V3.1.1。

修正: V3.1.20 以降。

  • インスタンスを再起動して中間ファイルをクリーンアップします。

  • 最新バージョンにアップグレードします。

P2

Data Lake Formation (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

動的テーブルを作成し、ソースクエリに BOOLEAN データ型が含まれている場合、更新操作が次のエラーで失敗します。ERROR: Internal error: HGERR_code XX000 HGERR_msge can not get pg type string %s: id: UINT8

動的テーブル機能が BOOLEAN フィールドのデータ型を誤って推測するため、更新操作が失敗します。

影響: 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 では、増分更新が有効な動的テーブルを削除しても、その状態テーブルは削除されません。

増分更新を使用する動的テーブルを削除する際、関連付けられた状態テーブルのクリーンアップが失敗します。

影響: V3.1.1 ~ V3.1.12。

修正: V3.1.13 以降。

最新バージョンにアップグレードします。

P2

異なるスキーマ間で 64 ビット RoaringBitmap 関数 (例: rb_or_cardinality_agg) を使用すると、次のエラーが発生します。Unsupported agg function:public.rb_or_cardinality_agg

64 ビット RoaringBitmap 関数のスキーマ推論が誤っており、クロススキーマクエリが失敗します。

影響:

  • V3.1.1 ~ V3.1.11

  • V3.2.0

修正:

  • V3.1.12 以降

  • V3.2.1 以降

最新バージョンにアップグレードします。

P2

ベーステーブルが NOT NULL 列を持つ論理パーティションテーブルとして動的テーブルを作成すると失敗し、次のエラーが返されます。failed:the index xx "xxx" should not by nullable。SQL の例:

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

失敗の原因は、動的テーブルの NOT NULL 属性の推論が誤っているためです。

影響:

  • V3.1.1 ~ V3.1.11

  • V3.2.0

修正:

  • V3.1.12 以降

  • V3.2.1 以降

最新バージョンにアップグレードします。

P2

単一テーブル上のマテリアライズドビューに SUM(DECIMAL) 集計を含めると、インスタンスが一時的に再起動する可能性があります。

SUM(DECIMAL) をマテリアライズドビューで計算する際、メモリのアライメントミスによりインスタンスがコアダンプを生成する可能性があります。

影響:

  • 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

修正:

  • バージョン 3.1.17 以降。

  • V3.0.44 以降

  • V3.2.2 以降

最新バージョンにアップグレードします。

P0

特定の同時実行シナリオで、Serverless Computing を使用してテーブルに対して DML 操作を実行しながら、同じテーブルに対して TRUNCATE TABLE または DROP TABLE を実行すると、テーブルのシャードで読み取り/書き込み例外が発生する可能性があります。これは、内部エンジンの状態同期の問題が原因です。

エンジンの同時実行の問題により、シャード内で異常な内部状態が発生し、一時的に読み取り/書き込みリクエストを処理できなくなります。この問題は他のテーブルへのアクセスにも影響を与える可能性があります。

影響:

  • V2.1.45 以前

  • V2.2.45 以前

修正:

  • V2.1.46

  • V2.2.46

  • V3.0.27 以降

  • V3.1.1 以降

  • 一時的な回避策:

    • DML と TRUNCATE TABLE/DROP TABLE 操作を異なるタイミングで実行します。

    • DML 操作に Serverless Computing を使用しないでください。

  • 推奨ソリューション:

    最新バージョンにアップグレードします。

2025 年 6 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P1

仮想ウェアハウスインスタンスのスケールアウト中に、compute node が時折再起動する可能性があります。

テーブルに対する DML タスクとコンパクションタスクの同時実行が、スケールアウト中にこの問題をトリガーする可能性があります。

影響を受けたバージョン: V3.0.1。

修正済みバージョン: V3.0.28 以降。

最新バージョンにアップグレードします。

P1

GIN インデックスを使用した JSONB 列指向ストレージ最適化を有効にしているインスタンスが、予期せず再起動する可能性があります。

JSONB 列指向ストレージ最適化と GIN index の間に互換性の問題があります。

影響を受けたバージョン: V3.1.1。

修正済みバージョン:

  • V3.0.42 以降。

  • V3.1.10 以降。

  • テーブルから GIN index を削除します。

  • 最新バージョンにアップグレードします。

P2

完全にビューに基づく動的テーブルリフレッシュすると、インスタンスが再起動する場合があります。

ビューを base tables として使用する動的テーブルを更新する際、処理エラーによりコアダンプが発生します。

影響を受けたバージョン: V3.1.8。

修正済みバージョン: V3.1.9 以降。

最新バージョンにアップグレードします。

P2

動的テーブルの incremental refresh mode で、ARRAY_AGG 関数を使用するクエリが、すべてのデータがフィルターによって削除された場合、null ではなく空の結果を返します。

なし。

影響を受けたバージョン:

  • V3.0.40。

  • V3.1.7。

修正済みバージョン:

  • V3.0.41 以降。

  • V3.1.8 以降。

最新バージョンにアップグレードします。

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 関数が指定された time zone を誤って破棄し、デフォルトで UTC を使用します。

影響を受けたバージョン: V3.0.40。

修正済みバージョン: V3.0.41 以降。

最新バージョンにアップグレードします。

P2

virtual warehouse instance で、PG_RELATION_SIZEPG_DATABASE_SIZE、および HOLOGRES.HG_RELATION_SIZE 関数が不正確なストレージサイズを返します。

仮想ウェアハウスインスタンスで PG_RELATION_SIZE を使用してストレージサイズをクエリすると、値が過大評価され、結果が不正確になります。

影響を受けたバージョン: V3.0.39。

修正済みバージョン: V3.0.40 以降。

最新バージョンにアップグレードします。

P2

incremental refresh mode で、ベーステーブルに複数の重複行が含まれている場合、動的テーブルの更新が ERROR: internal error: Filter has 1 rows but length of columns エラーで失敗します。

増分更新プロセスが、1 回の更新操作中に複数の重複行を正しく処理できません。

影響を受けたバージョン: V3.0.39。

修正済みバージョン: V3.0.40 以降。

最新バージョンにアップグレードします。

P2

マルチテーブル結合を含み、いずれかのテーブルに ARRAY フィールドが含まれる動的テーブルの増分更新操作が、XX000: internal error: Not Implements エラーで失敗します。

マルチテーブル結合の増分更新プロセスが、ARRAY フィールドを含むテーブルを正しく処理できません。

影響を受けたバージョン:

  • V3.0.38。

  • V3.1.2。

修正済みバージョン:

  • V3.0.39 以降。

  • V3.1.3 以降。

最新バージョンにアップグレードします。

P1

論理パーティションを持つテーブルへのトランザクションのコミット中に、パーティションキーのカーディナリティが高すぎてパーティション数が 5,200 を超える場合、インスタンスが再起動する可能性があります。

transactioncommit 中に、process がテーブル内の logical partitions の数が上限を超えたことを検出したため、instancecore dump を作成しました。

影響を受けたバージョン: V3.1.1。

修正済みバージョン: V3.1.9 以降。

インポートジョブのパーティションキーのデータをクリーンアップして、過剰なパーティションが作成されないようにします。

2025 年 4 月

レベル

説明

原因

影響を受けたバージョン、修正済みバージョン

回避策

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 を使用してテーブルコメントをコピーする際に失敗する問題を修正しました。

hg_create_table_like 関数がテーブルコメントを列コメントとして誤ってコピーしていました。

影響を受けたバージョン: 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 クエリが次のエラーで失敗する問題を修正しました。Cannot open a fragment with explicit_seek set to false

オプティマイザーが結合順序を誤って推論していました。

影響を受けたバージョン: 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

query_id フィールドが hg_stat_activity ビューで不正確になる問題を修正しました。これは、engine_type{PG} に設定されている場合に発生します。

hg_stat_activity{PG}query_id を報告する際、順序が乱れていました。

影響を受けたバージョン: V3.0.1 ~ V3.0.25。

修正済みバージョン: V3.0.26 以降。

最新バージョンにアップグレードします。

2025 年 3 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

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

動的テーブルで手動で指定された分散キーが有効にならない問題を修正しました。

エンジンの推論エラーにより、手動で指定された分散キーが無視されました。

影響: V3.0.24 以前。

修正: V3.0.25 以降。

最新バージョンにアップグレードします。

2025 年 2 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P1

Hologres インスタンスに BI ツールや開発者ツールで接続すると、権限のないユーザーでもデータベース、スキーマ、テーブルのメタデータが表示されてしまいます。

メタデータのアクセス制御が十分に厳格ではありません。

影響: V3.0.23 以前。

修正: V3.0.24 以降。

最新バージョンにアップグレードします。

P2

MaxCompute 外部テーブルと hologres_fdw 外部テーブルを結合すると、クエリが error: Build desc failed: Fetch table group shards failed on meta proxy エラーで失敗します。

hologres_fdw 外部テーブルと MaxCompute 外部テーブルの結合中に、内部テーブルのシャードプルーニングで論理エラーが発生します。

影響: 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 Convert FailedJava heap space などの例外をスローしたり、一部のシャードからのデータ消費が予期せず停止したりすることがあります。

バイナリログ消費中にダウンストリームの Flink オペレーターでバックプレッシャーが発生すると、ソーステーブルのデータが迅速に消費されません。これにより、バックエンドがタイムアウト例外をスローします。ゲートウェイはこの例外を誤ってクライアントに転送し、データ消費ジョブがハングしたり、解析エラーで失敗したりします。

  • 影響: V2.2.21 以前。

  • 修正: V2.2.22 以降。

最新バージョンにアップグレードし、Flink ジョブを再起動します。

P2

JSONB 列に対して列指向ストレージ最適化が有効で、かつビットマップインデックスも存在する場合、データ書き込み後にフラッシュとコンパクションが失敗する可能性があります。これにより、インスタンスのストレージ消費量とメモリ使用量が増加します。

JSONB 列指向ストレージ最適化の不具合により、BINARY 型のビットマップインデックスを正しく処理できません。

影響:

  • V3.0.1 ~ V3.0.9。

  • V2.2.31 以前。

修正:

  • V3.0.10 以降。

  • V2.2.32 以降。

  • 最新バージョンにアップグレードします。

  • または、テーブルの列指向ストレージ最適化を無効にし、テーブルを再構築します。

2025 年 1 月

レベル

説明

原因

バージョン

回避策

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 (ORDER 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

列名に大文字が含まれている場合、外部テーブルのクエリが失敗します。

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

大文字小文字の変換エラーにより、大文字の列名を持つ外部テーブルのクエリが失敗します。

  • 影響を受けたバージョン: V3.0.18 以前。

  • 修正: V3.0.19 以降。

最新バージョンにアップグレードします。

P2

OSS エンドポイントが設定されていない場合、DLF のテーブルをクエリすると失敗します。次のエラーが報告されます。

SELECT * FROM openlake_demo_dlf.github_events.ods_github_events_raw;

--エラーメッセージ
ERROR: internal error: external dataset reader missing required oss_endpoint option.

OSS エンドポイントが設定されていない場合、システムは対応する OSS テーブルにルーティングできず、クエリが失敗します。

  • 影響を受けたバージョン: V3.0.17 以前。

  • 修正: V3.0.18 以降。

最新バージョンにアップグレードします。

説明

アップグレード後、OSS エンドポイントを設定しなくてもテーブルをクエリできます。

2024 年の不具合

2024 年 12 月

レベル

説明

原因

影響を受けた/修正済みバージョン

回避策

P2

DECIMAL フィールドを含む動的テーブルの完全または増分更新が、column type doesn't match, decimal(28, 10) v.s. decimal(38, 10) エラーで失敗します。

システムが DECIMAL フィールドの精度を誤って推測するため、更新が失敗します。

影響: V3.0.16 以前。

修正: V3.0.17 以降。

  • クエリで DECIMAL フィールドの精度を手動で指定します。

  • 最新バージョンにアップグレードします。

P2

UNION ALL オペレーターの両側のクエリスキーマが一致しない場合、クエリは schema's field number from producers are not equal [1 vs 0] エラーで失敗します。

UNION ALL オペレーターのスキーマ推論が誤っているため、このエラーが発生します。

影響: V3.0.16 以前。

修正: V3.0.17 以降。

最新バージョンにアップグレードします。

P2

増分更新中に動的テーブルの SMALLINT フィールドを集計すると、「unsupported」エラーが発生します。

動的テーブルの増分更新プロセスは、SMALLINT 型を完全にはサポートしていません。

影響: V3.0 ~ V3.0.16。

修正: V3.0.17 以降。

最新バージョンにアップグレードします。

P2

仮想ウェアハウスインスタンスをアップグレードした後、クエリが CreateFile ignore since it's not leader エラーで失敗します。

仮想ウェアハウスのアップグレード中に、システムがテーブルメタデータを迅速に更新できません。これにより、後続のクエリが古いテーブルメタデータを使用し、エラーが発生します。

影響:

  • 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 テーブルメタデータへのアクセスに対する権限チェックが厳格化されました。これらの新しいチェックにより、フロントエンド (FE) ノードが複数回の冗長な呼び出しを行い、MaxCompute 外部テーブルのクエリパフォーマンスが低下します。

影響: V3.0 ~ V3.0.13。

修正: V3.0.14 以降。

最新バージョンにアップグレードします。

2024 年 11 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

動的テーブルの完全更新モードで Binlog を有効にすると、更新操作で ERROR: internal error: refresh table failed: internal error: new_values is missing col エラーが報告されます。

dynamic tablefull refresh modebinary log を有効にすると、hidden column の導出が一致しないため、更新操作が失敗します。

影響を受けたバージョン: V3.0.11 以前。

修正済みバージョン: V3.0.12 以降。

最新バージョンにアップグレードします。

説明

完全更新モードで Binlog を有効にすることは推奨しません。各完全更新は INSERT OVERWRITE の実行と同等であり、Binlog が不完全になるためです。

P2

SLPM 権限モデルで、Orafce 拡張機能を削除してから再作成すると、"role slpm xxx already exists" エラーが発生します。

SLPM permission model では、Orafce extension を削除しても user group の権限が完全に削除されません。その結果、user group が残り、拡張機能の再作成が妨げられます。

影響を受けたバージョン: V3.0.9 以前。

修正済みバージョン: V3.0.10 以降。

  • SLPM permission model から standard PostgreSQL authorization model に切り替えてから、Orafce extension を再作成します。

  • 最新バージョンにアップグレードします。

P2

Decimal フィールドを含む動的テーブルを更新すると、invalid definition of a numeric type エラーが発生します。

Decimal field の精度推論が誤っているため、dynamic table の更新中に精度が一致しません。

影響を受けたバージョン: V3.0.9 以前。

修正済みバージョン: V3.0.10 以降。

  • dynamic table を作成する際に、Decimal field の精度を手動で指定します。

  • 最新バージョンにアップグレードします。

P2

10 秒以上実行されるクエリの場合、metadata warehousePlan columnEXPLAIN ANALYZE の結果が時々表示されません。

10 秒以上実行されるクエリの報告が時々遅れるため、Plan column が結果を収集できません。

影響を受けたバージョン:

  • V3.0.8 以前。

  • V2.2.33 以前。

修正済みバージョン:

  • V3.0.9 以降。

  • V2.2.34 以降。

最新バージョンにアップグレードします。

P2

BIS 型のテーブルを分析すると、Not supported type: bsi0.] in cache failed エラーが報告されます。

BSI 型フィールドの分析サポートが不完全なため、この問題が発生します。

影響を受けたバージョン:

  • V3.0.9 以前。

  • V2.2.31 以前。

修正済みバージョン:

  • V3.0.10 以降。

  • V2.2.32 以降。

最新バージョンにアップグレードします。

P2

hg_insert_overwrite を使用した後、生成された一時テーブルが自動的にクリーンアップされません。

hg_insert_overwrite プロセス中にクリーンアップメカニズムがトリガーされなかったため、一時テーブルがクリーンアップされませんでした。

影響を受けたバージョン: V2.2.30 以前。

修正済みバージョン: V2.2.31 以降。

最新バージョンにアップグレードします。

P2

FE node のバージョンが一致しない場合、TRUNCATE 操作を実行すると、操作をキャンセルできなくなり、データの不整合が発生する可能性があります。

FE node のバージョンが一致しないと、ノードリレーが停止し、後続の DDL 操作が失敗する可能性があります。その結果、この期間中に実行された DROP または TRUNCATE 操作はキャンセルできません。

影響を受けたバージョン: V2.2.26 以前。

修正済みバージョン: V2.2.27 以降。

最新バージョンにアップグレードします。

P2

長すぎる SQL ステートメントを実行すると、次のエラーが発生します。ERROR: Current query length xxx exceeds the limit 10000000

Hologres は、SQL ステートメントの長さをデフォルトで 10,000,000 文字に制限しています。

導入されたバージョン:

  • V2.2.22 以降。

  • V3.0.1 以降。

SQL の長さ制限を解除するには、次のパラメーターを設定します。

ALTER DATABASE db_name SET hg_experimental_query_length_limit = 0;

2024 年 9 月

レベル

説明

原因

影響を受けた/修正済みバージョン

回避策

P1

データベースの最初の DML トランザクションの後に実行された場合、テーブルに対する同時 DDL 操作によりクエリがハングする可能性があります。

データベースの最初の DML トランザクションがテーブルロックを取得しました。その後、同じテーブルに対する同時 DDL 操作により、システムが作成ループに入り、デッドロックが発生してクエリがハングしました。

影響を受けたバージョン: V2.2.24 以前。

修正済みバージョン: V2.2.25 以降。

最新バージョンにアップグレードします。

P2

roaringbitmap 型のフィールドを含む Hologres テーブルに対して、CREATE FOREIGN TABLE コマンドを使用して roaringbitmap フィールドを含めずにクロスデータベースクエリ用の外部テーブルを作成すると、外部テーブルは正常に作成されます。しかし、SELECT * FROM を使用してこのテーブルをクエリすると、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 コマンドをループで繰り返し実行すると、キャッシュが破損し、失敗しました。

影響を受けたバージョン:

  • V2.2.23 以前。

  • V3.0.3 以前。

修正済みバージョン:

  • V2.2.24 以降。

  • V3.0.4 以降。

  • CREATE EXTENSION コマンドをデータベースごとに 1 回だけ実行します。

  • 最新バージョンにアップグレードします。

P2

メタデータウェアハウスのクエリログの result_rowsaffected_rows の値が実際の値と一致しません。

メタデータウェアハウスが result_rowsaffected_rows の値を誤って報告したため、不一致が発生しました。

影響を受けたバージョン: V2.2.22 以前。

修正済みバージョン: V2.2.23 以降。

最新バージョンにアップグレードします。

P2

プライマリ仮想ウェアハウスを再起動すると、セカンダリ仮想ウェアハウスのポイントクエリが遅くなる可能性があります。

プライマリ仮想ウェアハウスが再起動すると、セカンダリ仮想ウェアハウスのシャードがプライマリシャードの状態を継続的にポーリングします。このポーリングにより、すべてのシャードが回復するまでポイントクエリがハングします。

影響を受けたバージョン: 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.22 以前、V2.1.42 以前、V2.0.45 以前、V1.3.70 以前。

修正済みバージョン: V3.0.4、V2.2.23、V2.1.43、V2.0.46、V1.3.71 以降のバージョン。

  • 短期的な解決策: インスタンスを再起動して一時的に問題を解決します。

  • 長期的な解決策: メジャーバージョンの最新パッチバージョンにアップグレードします。

2024 年 8 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

仮想ウェアハウスが利用できなくなった場合 (再起動中など)、そのウェアハウスによってロードされたテーブルグループ内のテーブルに対する他の仮想ウェアハウスからのポイントクエリのレイテンシが増加します。

リアルタイム読み書きパスの内部モジュールのバグにより、仮想ウェアハウスがポイントクエリ中にテーブルグループのステータスを待機し、レイテンシが増加します。

影響: V2.1.1 ~ V2.2.21。

修正: V2.2.22 以降。

最新バージョンにアップグレードします。

P1

Fixed Plan を使用して 100 万 QPS を超えるリアルタイム書き込みを行うと、書き込みエラーやインスタンスの再起動のリスクがわずかにあります。

リアルタイム読み書きパスのメモリマネージャーにバグがあります。

影響:

  • 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)。

最新バージョンにアップグレードします。

2024 年 7 月

レベル

説明

原因

影響を受けたバージョン

回避策

P1

Flink ジョブが jdbc または jdbc_fixed モードで Hologres バイナリログを読み取る際、バックプレッシャーによりバックエンドがタイムアウトすると、ジョブがハングしたりフェールオーバーしたりする可能性があります。

ゲートウェイがバックエンドのタイムアウト例外をクライアントに返す方法に問題があり、データ読み取りがハングしたり、解析エラーで失敗したりします。

影響: V1.3 以降。

修正: V2.2.21 以降。

Flink ジョブを最新のチェックポイントから再起動し、最新バージョンにアップグレードします。

P2

V2.2 以降、Parallel Query Engine (PQE) は、シャードプルーニングを使用する COUNT DISTINCT 操作 (実行プランにシャードプルーニング演算子が含まれる場合) を実行すると、パフォーマンスが低下します。

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

シャードプルーニングが適用されると、システムは COUNT DISTINCT の実行プランを誤って推論します。これにより、PQE がクエリを実行し、パフォーマンスが低下します。

影響: V2.2.1 ~ V2.2.18。

修正: V2.2.19 以降。

  • 最新バージョンにアップグレードします。

  • COUNT DISTINCTUNIQ に置き換えます。

P2

スロークエリログ (query_log テーブル) で、query_start フィールドの日付形式は 2024-07-08 22:00:00 ですが、query_date フィールドの形式は 19700101 です。

システムがスロークエリログの query_date フィールドを誤って収集します。

影響: V2.2.1 ~ V2.2.18。

修正: V2.2.19 以降。

最新バージョンにアップグレードします。

P2

パーティション分割された子テーブルに書き込む際、COPY 列リストにパーティションキー列が含まれている場合、値 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 の場合、システムはパーティションキーを検証しません。これにより、ダーティデータが書き込まれる可能性があります。

影響: V2.2.1 ~ V2.2.18。

修正: V2.2.19 以降。

最新バージョンにアップグレードします。

P2

接続文字列でタイムゾーンを明示的に SET timezone='+8' に設定し、クエリに to_char などの PQE 日付関数が含まれている場合、クエリは期待される UTC+8 ではなく、誤って UTC-8 タイムゾーンの結果を返します。例:

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.1 ~ V2.2.18。

修正: V2.2.19 以降。

最新バージョンにアップグレードします。

P2

pad_sub_cost 関数を呼び出すと、Column should be non-nullable but the values contain 609 nulls エラーで失敗します。

pad_sub_cost 関数が計算中に NULL 許容プロパティを誤って推論するため、クエリが失敗します。

影響: V2.2.1 ~ V2.2.18。

修正: V2.2.19 以降。

最新バージョンにアップグレードします。

P0

動的パーティション管理を使用し、time_unitMONTH (月次動的パーティション) に設定すると、システムが誤って将来のパーティションを作成したり、現在のパーティションを削除したりする可能性があります。

V2.2 以降、動的パーティション管理機能はカスタムスケジューリング開始時刻をサポートしていますが、月次パーティションの時間計算が正しくありません。

影響: V2.2.1 ~ V2.2.17。

修正: V2.2.18 以降。

最新バージョンにアップグレードします。

2024 年 6 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

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.1 ~ V2.2.14。

修正済みバージョン:

V2.2.15 以降。

最新バージョンにアップグレードします。

P1

ソーステーブルに重複データが含まれている場合、主キーに基づく重複排除を伴うUPDATE またはUPSERT 操作を実行すると、テーブルデータの TTL が期限切れになっていなくても、ターゲットテーブルに重複データが時々発生する可能性があります。

UPDATE またはUPSERT 操作中に、ターゲットテーブルとソーステーブルが結合されます。2 つのテーブルの結合キーが異なる場合、ターゲットテーブルが再配布される可能性があります。このシナリオで、ソーステーブルに重複データがある場合、オプティマイザーがそれを誤って処理する可能性があります。これにより、重複排除が失敗し、重複した主キーが発生する可能性があります。

影響を受けたバージョン:

V2.2.13 以前。

修正済みバージョン:

V2.2.14 以降。

最新バージョンにアップグレードします。

P2

Flink を使用して Paimon からデータを読み取り、Hologres に書き込むと、VARCHAR データが文字化けして書き込まれる可能性があります。

Paimon の VARCHAR データ: 中国語文字
Hologres の VARCHAR データ: ??? (文字化け)

Hologres が Paimon 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 値よりも大きいと見なす比較ルールを定義しています。しかし、Hologres は C++ 標準の比較ルールに従い、NaN 値は互いに等しくありません。この不一致により、結果が PostgreSQL と一致しなくなります。

影響を受けたバージョン:

V2.1.37 以前。

修正済みバージョン:

  • V2.1.38 以降。

  • V2.2.10 以降。

最新バージョンにアップグレードします。

2024 年 5 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

Fixed Plan を使用して、複数の同一の主キー条件を持つポイントクエリ (例: select * from table_name where (pk=1) or (pk=1);) を実行すると、重複した結果が返されます。

Fixed Plan が同じ主キーに対する複数のフィルター条件を重複排除できませんでした。

影響を受けたバージョン:

V2.2.8 以前。

修正済みバージョン:

V2.2.9 以降。

  • 1 つの SQL ステートメントの WHERE 句に、同じ主キー (pk) に対する複数のフィルター条件を含めないでください。

  • 最新バージョンにアップグレードします。

P1

リバランス中にスキーマを変更すると、インスタンスが書き込みやクエリを処理できなくなる可能性があります。

リバランスは、レプリケーションの遅延が 10 秒未満の場合、シャードのリーダーとフォロワー間の切り替えをトリガーします。この切り替え中にユーザーがスキーマを変更すると、ストレージエンジンが異常な状態になり、インスタンスが書き込みやクエリ操作を処理できなくなります。Hologres V2.1 では、インスタンスに空のワーカーノードがある場合、システムが自動的にリバランスをトリガーするため、この問題が発生しやすくなります。

影響を受けたバージョン:

  • V2.1.16 ~ V2.1.23

  • V2.0.0 ~ V2.0.41

修正済みバージョン:

  • V2.1.24 以降

  • V2.0.42 以降

最新バージョンにアップグレードします。

P2

Hologres インスタンスを V2.1.25 以降にアップグレードした後、システムは非公開スキーマのテーブルに対して insert overwrite ステートメントによって生成された一時テーブルを自動的にクリーンアップできません。

insert overwrite ステートメントの実行中に検出が見落とされたため、一時テーブルが適切にクリーンアップされませんでした。

影響を受けたバージョン:

V2.1.25 ~ V2.1.32。

修正済みバージョン:

V2.1.33 以降。

  • HoloWeb のテーブル管理機能を使用して、一時テーブルをワンクリックでクリーンアップします。

  • 最新バージョンにアップグレードします。

P2

FixedFE (コネクタの jdbc_fixed モードに対応) を使用して Hologres にデータを書き込む際、SLPM モデルが有効で、ユーザーが指定されたスキーマの開発者権限を持っているにもかかわらず、FixedFE が permission denied for schema XXX エラーを報告します。

FixedFE は、SLPM モデルで権限が変更されたときにキャッシュを迅速に更新できませんでした。その結果、ユーザーがすでに必要な権限を持っているにもかかわらず、FixedFE はエラーを報告しました。

影響を受けたバージョン:

V2.0.31 以前

修正済みバージョン:

V2.0.32 以降

最新バージョンにアップグレードします。

2024 年 4 月

レベル

説明

原因

バージョン

回避策

P2

datediff 関数を使用して指定された単位で 2 つの時間値の差を計算すると、返される結果が時々 1 ずれることがあります。

関数にロジックバグが含まれています。

影響を受けたバージョン:

V2.0.31。

修正済みバージョン:

V2.1.27 以降。

最新バージョンにアップグレードします。

P2

Hologres インスタンスを V2.1.26 にアップグレードした後、クエリのメモリ使用量メトリックがゆっくりと継続的に増加します。

V2.1.26 へのアップグレード後、クエリが OOM エラーに遭遇すると、そのメモリ使用量が複数回カウントされます。これにより、対応する監視メトリックが膨張して表示されます。

説明

インスタンスの実際のメモリ使用量は増加しません。この問題は、監視統計の計算ミスが原因です。

影響を受けたバージョン:

V2.1.26。

修正済みバージョン:

V2.1.27 以降。

最新バージョンにアップグレードします。

P1

Hologres インスタンスを V2.1 にアップグレードした後、MaxCompute 外部テーブルをクエリすると、メモリ使用量が徐々に増加したり、クエリパフォーマンスが変動したり、OOM エラーが増加したりする可能性があります。

V2.1 インスタンスで MaxCompute 外部テーブルをクエリすると、システムが開いているファイルを迅速に閉じません。これにより、メモリ使用量が徐々に増加し、クエリパフォーマンスとインスタンスの安定性に影響します。

影響を受けたバージョン:

V2.1.1 ~ V2.1.25。

修正済みバージョン:

V2.1.26 以降。

最新バージョンにアップグレードします。

P2

V2.1 では、プライマリ/セカンダリインスタンスおよび仮想ウェアハウスインスタンスのストレージ使用量が増加し、監視メトリクスからの合計使用量が pg_relation_size 関数の計算値を超えます。

システムが V2.1 プライマリ/セカンダリインスタンスまたは仮想ウェアハウスインスタンスから古いファイルを迅速に回収しません。これにより、ストレージが増加し、監視されるストレージ量が膨張します。

影響を受けたバージョン:

V2.1.1 ~ V2.1.25。

修正済みバージョン:

V2.1.26 以降。

最新バージョンにアップグレードします。

P1

Flink ジョブが JDBC モードで Hologres バイナリログを消費する際、起動時の消費率は高いですが、時間の経過とともに継続的に低下します。

Flink ジョブが JDBC モードで Hologres バイナリログを消費する際にメモリリークが発生します。

影響を受けたバージョン:

VVR V6.0.7 以前のバージョン。

修正済みバージョン:

VVR V6.0.7 以降。

最新バージョンにアップグレードします。

2024 年 3 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P0

クエリリソースが解放されず、次の問題が発生します。

  • メモリの継続的な増加。

  • 多数のロックが保持される。

  • リソースを割り当てられないため、多数のクエリが停止します。インスタンスを再起動しても問題は解決せず、クエリはすぐに再び停止します。

クエリがシャードデータのみを含み、PQE または SQE を使用して MaxCompute 外部テーブルまたはデータレイク外部テーブルをクエリする場合、クエリ完了後にシステムがリソースを自動的に解放しません。Query Master のガベージコレクションメカニズムのみがこれらのリソースを回収できます。Query Master が高負荷の場合、終了が遅れるとクエリ操作が過剰なリソースを保持し、後続のクエリをブロックします。

影響を受けたバージョン:

V2.1.23 ~ V2.1.24。

修正済みバージョン:

V2.1.25 以降。

最新バージョンにアップグレードします。

P1

辞書エンコードされた非 NULL 列にビットマップを追加すると、NULL 値を含む不正確な結果が返されます。

辞書エンコードされた列のビットマップを構築する際、バックエンドがすべてのデータにビットマップを適用できないため、不正確な結果が発生します。

影響を受けたバージョン:

V2.1.21 以前。

修正済みバージョン:

V2.1.22 以降。

最新バージョンにアップグレードします。

P1

Fixed Plan を使用してリアルタイムデータ書き込みやポイントクエリを行うと、インスタンスのメモリ使用量が徐々に増加します。

Hologres V2.1 では、Fixed Plan 実行エンジンがリファクタリングされました。読み書きテーブル用に作成されたオペレーターが迅速にクリーンアップされないため、メモリリークが発生します。

影響を受けたバージョン:

V2.1.1 ~ V2.1.9。

修正済みバージョン:

V2.1.10 以降。

最新バージョンにアップグレードします。

P1

PQE で実行中のクエリをキャンセルすると、対応する PQE ノードでプロセスデッドロックが発生し、新しい PQE リクエストを処理できなくなる可能性があります。

キャンセルシグナルを受信すると、PQE I/O 同時実行制御機能に不具合が発生する可能性があります。この問題はすべての PQE プロセスに影響します。

影響を受けたバージョン:

  • V2.1.2 ~ V2.1.8。

  • V2.0.23 ~ V2.0.30。

修正済みバージョン:

  • V2.1.9 以降。

  • V2.0.31 以降。

最新バージョンにアップグレードします。

P2

INTERSECT または EXCEPT 関数は、シャードプルーニングがアクティブな場合に不正確な結果を返します。たとえば、シャードプルーニングがアクティブな場合、次の 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

INTERSECT または EXCEPT 関数は現在、JOIN を使用して実装されています。シャードプルーニング中にこれらの関数を処理すると、不正確な実行プランが生成され、クエリ結果が不正確になる可能性があります。

影響を受けたバージョン:

V2.1.21 以前。

修正済みバージョン:

V2.1.22 以降。

最新バージョンにアップグレードします。

P2

PQE プロセスが終了する際、ハングすることがあります。これが時間とともに蓄積され、PQE が新しいリクエストを処理できなくなる可能性があります。

PQE プロセスが終了する際、RPC 終了スレッドとメインスレッド間の同時実行の問題により、RPC 終了スレッドが完了できなくなります。これにより、PQE プロセスが正常に終了できなくなります。

影響を受けたバージョン:

V2.1.0 ~ V2.1.14。

修正済みバージョン:

V2.1.15 以降。

最新バージョンにアップグレードします。

P2

PQE で同時クエリを実行すると、インスタンスが一時的に再起動することがあります。

Hologres V2.0 以前のバージョンでは、PQE にマルチスレッドの同時実行の問題があり、インスタンスのコアダンプを引き起こす可能性があります。

影響を受けたバージョン:

V2.0 以前。

修正済みバージョン:

V2.1.0 以降。

最新バージョンにアップグレードします。

P2

プリペアドステートメントモードで in ($1....) を含む SQL ステートメントを実行し、シャードセレクターによって処理されると、インスタンスが一時的に再起動する可能性があります。

オプティマイザーが不正確な実行プランを生成し、インスタンスのコアダンプを引き起こす可能性があります。

影響を受けたバージョン:

V2.0 以前。

修正済みバージョン:

V2.1.0 以降。

最新バージョンにアップグレードします。

2024 年 2 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

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; 


--text から bit への変換が失敗: Cast FROM STRING to BINARY is not supported.
--text から bit、そして bigint への変換が失敗: ERROR: syntax error at or near ")"

TEXT 型から BIT 型への変換サポートが不完全なため、Cast FROM STRING to BINARY is not supported. エラーが発生します。その後、BIGINT 型に変換する際、システムが BIT 型を誤って識別し、syntax error at or near ")" エラーが発生します。

影響を受けたバージョン:

V2.1.20 以前

修正済みバージョン:

V2.1.21 以降

最新バージョンにアップグレードします。

P2

主キーを持つ行指向テーブルのクラスタリングキーを空文字列に設定すると、メタデータの不整合が発生し、クエリがハングします。テーブル作成 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;

行指向テーブルのクラスタリングキーが空文字列で、主キーと異なる場合、FE ノードがリクエストに応答できなくなり、メタデータの不整合が発生してクエリがハングします。

影響を受けたバージョン:

V2.1.20 以前

修正済みバージョン:

V2.1.21 以降

  • テーブルを再作成し、クラスタリングキーを明示的に指定します。最適なパフォーマンスを得るには、行指向テーブルのクラスタリングキーと主キーを一致させることを推奨します。

  • 最新バージョンにアップグレードします。

P2

フィルター条件 (WHERE 句) にクラスタリングキーが含まれ、ORDER BY もそのキーでソートするために使用されている場合、クエリが不正確な結果を返します。例として、a 列がクラスタリングキーである WHERE a >= xxx LIMIT x ORDER BY a のようなクエリがあります。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 行を返す可能性があります。

フィルター条件にクラスタリングキーが含まれ、ORDER BY がそのクラスタリングキーでソートするために使用されている場合、ORDER BY 句のアルゴリズムが誤って一致し、返される結果と LIMIT の結果が不正確になります。

影響を受けたバージョン:

V2.1.19 以前

修正済みバージョン:

V2.1.20 以降

最新バージョンにアップグレードします。

P1

Hologres V2.1 では、インスタンスのメモリ使用量が徐々に増加し、MaxCompute 外部テーブルのクエリが時々 ERPC_ERROR_CONNECTION_CLOSED エラーで失敗します。

インスタンスを V2.1 にアップグレードした後、外部テーブルの基になるデータファイルを迅速に閉じることができず、メモリリークが発生し、時々インスタンスの再起動がトリガーされます。

影響を受けたバージョン:

V2.1.10 ~ V2.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

--PostgreSQL の結果、正確
1.111111111100000000
1.111111111200000000
2.222222222200000000
2.222222222400000000

DECIMAL 型の乗算のデフォルトの精度は 18 です。2 つの DECIMAL 型の乗算結果が 18 桁を超える場合、システムは計算前にデータを切り捨てるため、不正確な結果になります。

影響を受けたバージョン:

V2.1.18 以前

修正済みバージョン:

V2.1.19 以降

  • DECIMAL 型の値を TEXT 型に変換 (CAST) します。

  • 最新バージョンにアップグレードします。

2024 年 1 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

Hologres V2.1 へのアップグレード後、truncate 操作に続く INSERT 操作を実行すると、時々 Invalid table id in schema エラーが発生します。

Hologres V2.1 では、FrontEnd コンポーネントがリプレイキャッシュ時間を過度に長く設定していました。これにより、DDL 操作に続く DML 操作の DDL リプレイが遅くなりました。

影響を受けたバージョン:

V2.1.1 ~ V2.1.14。

修正済みバージョン:

V2.1.15 以降。

最新バージョンにアップグレードします。

P2

jsonb_to_textarray 関数は定数畳み込みをサポートしていないため、定数計算を含む SQL ステートメントが ERROR: internal error: The left deepest leaf node of columnar access ref エラーで失敗します。例:

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

jsonb_to_textarray 関数を SQL ステートメントで定数と共に使用すると、不正確なプッシュダウンが発生し、エラーが発生します。

影響を受けたバージョン:

  • V2.1.1 ~ V2.1.14。

  • V2.0.34 以前。

修正済みバージョン:

  • V2.1.15 以降。

  • V2.0.35 以降。

最新バージョンにアップグレードします。

P2

regexp_split_to_array 関数を使用すると、時々 ERROR: Illegal udf8 string in xxxx エラーが発生します。

regexp_split_to_array 関数がメモリ境界を超えて読み取るため、クエリが失敗します。

影響を受けたバージョン:

V2.1.1 ~ V2.1.12。

修正済みバージョン:

V2.1.13 以降。

最新バージョンにアップグレードします。

P2

SELECT * FROM <table_name> LIMIT xxx; を使用したクエリが時々ハングすることがあります。

Hologres は LIMIT 句を含む全表スキャンに遅延読み込みを使用します。スキャンが一度に大量のデータを読み取るため、クエリがハングします。

影響を受けたバージョン:

  • V2.1.1 ~ V2.1.11。

  • V2.0.33 以前。

修正済みバージョン:

  • V2.1.12 以降。

  • V2.0.34 以降。

最新バージョンにアップグレードします。

P2

インスタンスの再起動、アップグレード、またはスケーリング後、Hologres 外部テーブルから直接読み取る MaxCompute タスクが時々ハングすることがあります。

インスタンスの再起動後、システムはテーブルメタデータを更新します。MaxCompute が直接読み取り中に更新されたメタデータステータスを時間内に取得できないため、タスクがハングします。

影響を受けたバージョン:

  • V2.1.0 ~ V2.1.2。

  • V2.0.5 以前。

修正済みバージョン:

  • V2.1.3 以降。

  • V2.0.26 以降。

最新バージョンにアップグレードします。

2023 年の不具合

2023 年 12 月

レベル

説明

原因

影響を受けた/修正済みバージョン

回避策

P1

インスタンスのシャードレプリカ数を変更すると、インスタンスが一時的に再起動します。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'); 

シャードレプリカ数を変更すると、メタデータが正しく更新されず、インスタンスが再起動します。

影響を受けたバージョン:

  • V2.1.1 ~ V2.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 を使用して Hologres の DECIMAL 列にデータを書き込むと、不正確なデータが書き込まれる可能性があります。この問題は、入力値が負の数で、その最小有効小数点以下の桁数と宛先列のスケールの差が 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 パスと一致します。

  • データを書き込む際、入力値を明示的に正しい DECIMAL 型にキャストします。例: -1.000000000::decimal(38,19)

  • 最新バージョンにアップグレードします。

P1

binlog が有効なインスタンスでは、V2.1.9 へのアップグレード後に CPU 使用率が大幅に増加します。

binlog が有効なインスタンスを V2.1.9 にアップグレードした後、特定のシナリオで binlog がエラーを正しくキャッチできない場合があります。この失敗により、エラー発生後にプロセスが正常に終了せず、過剰なログ記録と CPU 使用率の増加が発生します。

影響を受けたバージョン:

V2.1.1 ~ V2.1.9

修正済みバージョン:

V2.1.10 以降

最新バージョンにアップグレードします。

2023 年 11 月

レベル

説明

原因

バージョン

推奨事項

P1

var_samp 関数は、入力データ型が 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 以降。

最新バージョンにアップグレードします。

2023 年 10 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

date_part 関数を大文字のフィールドで使用すると、error: unsupport extract type xxx エラーが発生します。

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

クエリが失敗したのは、オプティマイザーが date_part 関数で大文字のフィールドを正しく認識しなかったためです。

影響を受けたバージョン:

V2.0.1 ~ V2.0.25

修正済みバージョン:

V2.0.26 以降

最新バージョンにアップグレードします。

P2

&& 演算子を使用して配列を連結すると、Unexpected expr type in array expr:145 エラーが発生します。

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

&& 演算子の実行エンジンは Hologres Query Engine (HQE) です。&& 演算子を Array と共に使用すると、オプティマイザーが Array を誤って処理します。これにより、不正確な実行プランが生成され、クエリがエラーを返します。

影響を受けたバージョン:

V2.0.25 以前

修正済みバージョン:

V2.0.26 以降

最新バージョンにアップグレードします。

P2

パーティションテーブルで、0 個のパーティションを選択する with ステートメントが、不正確な列エイリアスを返します。

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 句を含むクエリで、クエリが 0 個のパーティションを選択した場合、クエリオプティマイザー (QO) が実行プランを生成する際にパーティションノードを誤ってプルーニングします。これにより、結果セットで列エイリアスが失われます。

影響を受けたバージョン:

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 型と Parallel Query Engine (PQE) によって実行される関数の両方が含まれている場合、システムは DECIMAL 型の精度を正しく変換できません。その結果、不一致が発生し、クエリが失敗します。

影響を受けたバージョン:

V2.0.23 以前

修正済みバージョン:

V2.0.24 以降

最新バージョンにアップグレードします。

P2

親テーブルが異なるスキーマにある場合、子テーブルへのデータ挿入が Can't find parent table for table name エラーで失敗します。

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 は異なるスキーマの親テーブルと子テーブルをサポートしていますが、INSERT 操作中にシステムがこの関係を識別できず、挿入が失敗しました。

影響を受けたバージョン:

V2.0.23 以前

修正済みバージョン:

V2.0.24 以降

最新バージョンにアップグレードします。

P2

insert on conflict do update を使用したバルクロードインポートにより、行指向テーブルに重複した主キーが作成される可能性があります。この問題は、テーブルのクラスタリングキーと主キー (PK) が異なり、生存時間 (TTL) が明示的に設定されていない場合に発生しました。

--テーブル作成ステートメント
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 はレコードを削除対象としてマークし、新しいレコードを挿入します。主キー (PK) とクラスタリングキーが異なる場合、コンパクションが削除対象としてマークされたファイルを正しく処理せず、主キーの重複が発生しました。

影響を受けたバージョン:

V2.0.22 以前

修正済みバージョン:

V2.0.23 以降

  • 行指向テーブルの主キー (PK) とクラスタリングキーを同じに設定するか、テーブルを列指向テーブルに変換します。

  • 最新バージョンにアップグレードします。

P2

group byarray_to_string(array_sort(...)) 式の列に対して実行し、複数の count(distinct ...) 集計も含むクエリが、次のエラーで失敗します。ORCA failed to produce a plan : No plan has been computed for required properties

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 インライン化をサポートしていません。この非互換性により、オプティマイザーが有効な実行プランを作成できず、クエリが失敗します。

影響を受けたバージョン:

V2.0.22 以前

修正済みバージョン:

V2.0.23 以降

最新バージョンにアップグレードします。

P2

drop server コマンドを実行した後、一部のクエリがハングします。

drop server コマンドを実行すると、FE ノード間のリプレイ操作が失敗しました。その結果、ノード間のバージョンが一致しなくなり、クエリがハングしました。

影響を受けたバージョン:

V1.3.40 ~ V1.3.51

修正済みバージョン:

V1.3.52 以降

最新バージョンにアップグレードします。

2023 年 9 月

レベル

説明

原因

バージョン

回避策

P2

Proxima ベクターインデックスを使用する際、Fixed Plan を使用せずに NULL ベクターを挿入すると、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 failedChannel is empty、または internal error: Connect timeout のいずれかのエラーで断続的に失敗します。

Hologres V2.0.15 では、MaxCompute データ復号中のキー転送の問題を修正しましたが、これによりマルチスレッドのメモリ破損バグが発生しました。MaxCompute 外部テーブルがスキーマ進化すると、このバグにより SQE コンポーネントがコアダンプして再起動し、アプリケーションが外部テーブルにアクセスする際に断続的なエラーが発生します。

影響を受けたバージョン:

V2.0.15 ~ V2.0.20

V1.3.61 ~ V1.3.62

修正済みバージョン:

V2.0.21 以降

最新バージョンにアップグレードします。

P2

string_agg 関数を not null 制約を持つフィールドで使用すると、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

テーブルグループが多く、シャード数が多い (100 以上) インスタンスでは、ワーカー障害後にシャードが不均等に分散されることがあります。rebalance コマンドを実行しても、分散は不均等なままです。

テーブルグループが多く、シャード数が多い (100 以上) インスタンスでは、リバランスコマンドがシャードを不正確に再割り当てし、不均等な分散を修正できません。

影響を受けたバージョン:

V2.0.20 以前

修正済みバージョン:

V2.0.21 以降

最新バージョンにアップグレードします。

P2

substring 関数を 4 バイト UTF-8 データを含むテーブルフィールドで使用すると、不正確な結果が生成されます。ただし、同じ 4 バイト UTF-8 データに substring 関数を独立して適用すると、正しく動作します。以下は SQL の例です。

-- 3 を返します。これは正しいです。
SELECT length(substring (E'\U0001F345' || '23456789', 1, 3));

-- テーブルデータに substring を使用すると、不正確な結果が返されます。
create table t (emoji text);
insert into t values (E'\U0001F345' || '23456789');

-- 1 を返します。これは不正確です。期待される結果は 3 です。
SELECT length(substring(emoji, 1, 3)) FROM t;

substring 関数の現在の実装は、最大 3 バイトの UTF-8 文字のみをサポートしています。その結果、4 バイト文字を含むテーブルデータに substring を使用すると、不正確な結果が返されます。

影響を受けたバージョン:

V2.0.19 以前

修正済みバージョン:

V2.0.20 以降

最新バージョンにアップグレードします。

P2

Binlog 消費を有効にした後、CPU 消費量が大幅に増加します。

不適切なデフォルトのシステムパラメータ設定により、Binlog 消費中に高頻度のシステムログ記録が発生し、CPU 使用率が増加します。

影響を受けたバージョン:

V2.0.17 ~ V2.0.19

修正済みバージョン:

V2.0.20 以降

最新バージョンにアップグレードします。

P2

string_agg または array_agg 関数は、集計フィルターが使用されると不正確な結果を返します。以下は 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;
    -- 期待される結果: [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_agg または array_agg で集計フィルターを使用した場合、フィルターが正しく処理されず、不正確または不安定な結果になりました。

影響を受けたバージョン:

V2.0.18 以前

修正済みバージョン:

V2.0.19 以降

最新バージョンにアップグレードします。

P2

array_agg filter 操作を not null プロパティを持つフィールドに対して実行し、結果に 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 filternot null フィールドで使用する際、クエリオプティマイザー (QO) は結果も not null であると誤って推論しました。実際の結果に null 値が含まれている場合、この競合によりインスタンスがコアダンプしました。

影響を受けたバージョン:

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

自動パーティション作成を有効にした後、テーブルを別のスキーマに移動し、元のスキーマに同じ名前の新しいテーブルを作成すると、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;

-- テーブルのスキーマを変更する
alter 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

自動パーティション作成を有効にした後、テーブルのスキーマが変更されると、その自動パーティション設定は移動しません。これにより、元のスキーマに同じ名前の新しいテーブルが作成されると、設定の競合とエラーが発生します。

影響を受けたバージョン:

V2.0.18 以前

修正済みバージョン:

V2.0.19 以降

最新バージョンにアップグレードします。

2023 年 8 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

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 日以上経過した子テーブルをコールドストレージに変換するポリシーを設定した場合、一部のテーブルがホットストレージに残る可能性があります。

  • すでにコールドストレージにある子テーブルが、誤ってホットストレージにあると報告されます。

コールドストレージが有効なパーティションテーブルで、親テーブルに対して 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.<cold_child_table_name>', 'storage_mode', 'hot');call set_table_property('schema.<cold_child_table_name>', 'storage_mode', 'cold');commit;
  • 最新バージョンにアップグレードします。

    説明

    アップグレード後、アップグレード前に影響を受けた子テーブルのストレージプロパティを手動で修正する必要があります。

P2

読み取り専用のセカンダリインスタンスは Hologres Binlog を消費できません。

読み取り専用のセカンダリインスタンスのデフォルトプロパティの変更が原因です。

影響を受けたバージョン:

V1.3 および V2.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);-- 'a' 列は DATE 型ですが、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 メカニズムが有効になっているため、プライマリインスタンスで再シャーディングを実行するか、手動で readonlytrue に設定してから再度データを書き込むと、プライマリインスタンスとセカンダリインスタンスのシャードステータスが一致しなくなり、セカンダリインスタンスが利用できなくなります。

影響を受けたバージョン:

V1.3.42 ~ V2.0.16。

修正済みバージョン:

V2.0.17 以降。

  • 再シャーディング操作を実行するか、テーブルを読み取り専用に設定するには、まず次のコマンドを実行してセカンダリインスタンスの 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');

    これらの設定を適用した後、インスタンスを再起動します。この新しい設定により、メモリ使用量がわずかに増加する可能性があります。

2023 年 7 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

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 の制限に達すると、インスタンスは新しいクエリを処理できなくなりました。

影響:

V2.0.1 ~ V2.0.11。

修正:

V2.0.12 以降。

最新バージョンにアップグレードします。

P2

共有クラスターが ODPS から暗号化されたデータを読み取れず、次のエラーを報告します。

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

共有クラスターは暗号化されたデータをサポートしていません。

影響:

V2.0.15 以前。

修正:

V2.0.16 以降。

最新バージョンにアップグレードします。

P2

ソースインスタンスに頻繁な書き込み操作があるコールドストレージテーブルが含まれている場合、バックアップと復元操作が失敗します。

コールドストレージテーブルへの頻繁な書き込みは、継続的なデータコンパクションをトリガーします。非破壊的なバックアップ方法ではシャードバージョンを揃える必要があるため、この継続的なコンパクションにより、バックアッププロセスが最新のシャード状態をキャプチャできず、バックアップが失敗します。

影響:

V2.0.15 以前。

修正:

V2.0.16 以降。

  • バックアップする前に、頻繁な書き込みがあるコールドストレージテーブルをホットストレージテーブルに変換します。詳細については、「データ階層化ストレージ」をご参照ください。

  • 最新バージョンにアップグレードします。

P2

PQE SQL クエリを手動でキャンセルするか、タイムアウトすると、インスタンスが一時的に再起動します。

PQE SQL クエリはリソースを大量に消費します。手動でキャンセルされたり、タイムアウトしたりしたクエリが正常に終了せず、ヌルポインタエラーとインスタンスのコアダンプを引き起こす可能性があります。

影響:

V2.0.12 ~ V2.0.14。

修正:

V2.0.15 以降。

最新バージョンにアップグレードします。

P2

case when クエリに array[] 型が含まれていると、次のエラーメッセージが返されます。

フィルターには x 行ありますが、列数は y です

case when ステートメントが array[] 型のフィールドを処理する際、array[] 内の一部のデータが失われ、クエリエラーが発生します。

影響:

V2.0.10 以前。

修正:

V2.0.11 以降。

最新バージョンにアップグレードします。

P2

バイナリロギングが有効なテーブルで DROP 操作を実行し、インスタンスを再起動した後、インスタンスのストレージが減少しません。また、監視によって報告されるストレージ使用量が pg_database_size クエリの結果よりも大きくなります。

binlog が有効なテーブルを DROP した後、インスタンスを再起動すると、テーブルの binlog のディレクトリが正しく削除されず、ストレージ使用量が減少しません。

影響:

V2.0.12 以前。

修正:

V2.0.13 以降。

最新バージョンにアップグレードします。

P2

テーブル作成時に分散キーに asc または desc の順序を指定すると、クエリエラーやインスタンスの一時的な再起動が発生します。例:

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

分散キーは asc または desc の順序指定をサポートしていません。これにより、FE での DDL ステートメントのリプレイが失敗し、テーブルへのクエリまたは書き込み時にコアダンプまたはエラーが発生しました。

影響:

V1.3.55 以前。

修正:

V1.3.56 以降。

  • 分散キーを作成する際に、asc または desc の順序を指定しないでください。

  • コアダンプの問題を解決するために最新バージョンにアップグレードします。アップグレード後、テーブル作成時に分散キーに asc/desc を指定すると、invalid distribution column: xx:asc エラーが報告されます。

2023 年 6 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

SLPM モードで、slpm_alter_view_owner 関数を使用して異なるスキーマに同じ名前の 2 つのビューを作成すると、ERROR: more than one row returned by a subquery used as an expression エラーが報告されます。

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 モードで、スキーマをまたいでビューを作成すると、pg_class システムテーブルが参照されます。異なるスキーマに同じ名前のビューが存在する場合、pg_classrelname 列に重複した値が含まれます。これにより、サブクエリが複数の行を返し、エラーがトリガーされます。

影響を受けたバージョン:

V2.0.3 ~ V2.0.9。

修正済みバージョン:

V2.0.10 以降。

最新バージョンにアップグレードします。

P2

コールドストレージを有効にした後、読み取り専用のセカンダリインスタンスがコールドストレージテーブルにアクセスすると、一時的に再起動します。

読み取り専用のセカンダリインスタンスには、コールドストレージに必要な環境変数が不足しているため、コールドストレージテーブルにアクセスしようとするとエラーが発生します。

影響を受けたバージョン:

V1.3.54 以前。

修正済みバージョン:

V1.3.55 以降。

  • コールドストレージテーブルを標準ストレージテーブルに変換します。

  • 最新バージョンにアップグレードします。

P2

Hologres インスタンスを V1.3 にアップグレードした後、MaxCompute で Hologres 外部テーブルを作成し、デュアル署名を使用して中国 (上海) および米国 (バージニア) リージョンの Hologres インスタンスにアクセスすると、次のエラーでクエリが失敗します。

ERROR: pooler: xxxx: authentication failed

アップグレード後、中国 (上海) および米国 (バージニア) リージョンの環境設定エラーにより、MaxCompute がデュアル署名を使用して Hologres で認証できなくなりました。

影響を受けたバージョン:

V1.3.54 以前。

修正済みバージョン:

V1.3.55 以降。

最新バージョンにアップグレードします。

P2

Hologres インスタンスを V1.3 にアップグレードした後、中国 (上海) および米国 (バージニア) リージョンで次のコマンドを実行すると、単一ノードの最大接続数が 128 ではないことが示されます。

show max_connections;

アップグレード後、中国 (上海) および米国 (バージニア) リージョンの環境設定エラーにより、単一ノードの最大接続数がデフォルトの 128 と異なりました。

影響を受けたバージョン:

V1.3.54 以前。

修正済みバージョン:

V1.3.55 以降。

最新バージョンにアップグレードします。

P2

データマスキングを有効にした後、共通テーブル式 (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 を使用すると、外部クエリがヌルポインタに遭遇します。これにより、インスタンスがコアダンプし、クエリが失敗します。

影響を受けたバージョン:

V1.3.51 以前。

修正済みバージョン:

V1.3.52 以降。

インスタンスのコアダンプを解決するために最新バージョンにアップグレードします。ただし、UNION はマスクされたフィールドでは引き続きサポートされず、クエリは UNION is not supported on security item エラーで失敗します。

P2

Hologres を V1.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;--最新の V1.3 バージョンの結果"{"[\"7416461\",\"czzzzz\",\"2023-04-16 23:13:34\"]"}"--V1.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 以降。

結果に追加のエスケープ文字 (\) が含まれることは想定内です。

2023 年 5 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

Nested Loop Join を含む SQL ステートメントを実行すると、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';

現在のバージョンの Hologres のオプティマイザーは、余分なプロジェクトを削除するため、テーブルの列が一致せず、クエリが失敗します。

影響を受けたバージョン:

V1.3.45 以前。

修正済みバージョン:

V1.3.49 以降。

最新バージョンにアップグレードします。

P2

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 をキャストとして処理します。これにより、実行エンジン (QE) が JSON データ形式の検証をスキップし、データを誤って JSON 型に変換します。

影響を受けたバージョン:

V1.3.20 ~ V1.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;Result:-------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 実行エンジンが外部テーブルの小さなファイルをさらに小さなファイルに分割します。これにより、1 回のクエリで処理されるファイル数が増加し、クエリパフォーマンスが低下します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.40。

修正済みバージョン:

V1.3.45 以降。

最新バージョンにアップグレードします。

2023 年 4 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P0

TTL、Bitmap、Dictionary などのテーブルスキーマのプロパティを変更すると、インスタンスが再起動します。次の例では、テーブルの TTL を変更しています。

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

V1.1 などの古いバージョンからインスタンスをアップグレードした場合、一部のテーブルの履歴スキーマメタデータが欠落している可能性があります。システムは、テーブルのフラッシュまたはコンパクション操作後にこの欠落した情報にアクセスする可能性があります。現在のバージョンでは、欠落したスキーマ情報が正しく処理されず、コアダンプがトリガーされます。

影響を受けたバージョン:

V1.3.20 ~ V1.3.44

修正済みバージョン:

V1.3.45 以降

最新バージョンにアップグレードします。

P2

to_char(to_timestamp(hour)) 関数は、1970 年 1 月 1 日より前の timestamptz データと共に使用すると、実際の時刻より 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.20 ~ V1.3.43

修正済みバージョン:

V1.3.44 以降

最新バージョンにアップグレードします。

P2

JSONB 型を精度を指定せずに 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::numeric FROM t1;

JSONB 型を精度を指定せずに NUMERIC 型に変換する場合、オプティマイザーによって生成された実行プランはデフォルトの精度を提供しません。このシナリオで実行エンジンが NUMERICDECIMAL に変換すると、精度がデフォルトで 0,0 になり、クエリが失敗します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.41

修正済みバージョン:

V1.3.42 以降

  • JSONB 型を NUMERIC 型に変換する際に精度を指定します。

  • 最新バージョンにアップグレードします。

P2

OSS データレイクからデータをクエリすると、次のエラーで失敗します。query next FROM foreign table executor failed, Failed to call iterateForeignScan: ArrayIndexOutOfBoundsException

Hologres データレイククエリエンジンが OSS からデータを読み取る際にメモリリークが発生し、クエリが失敗します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.41

修正済みバージョン:

V1.3.42 以降

最新バージョンにアップグレードします。

2023 年 3 月

レベル

説明

原因

影響を受けたバージョン

回避策

P2

union all を精度が一致しない 2 つの 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

クエリオプティマイザー (QO) は、union all 操作で decimal フィールドの精度を調整しません。その結果、クエリエンジン (QE) が実行中にこの不一致を検出し、エラーを返します。

影響を受けたバージョン:

V1.3.20 ~ V1.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.38 ~ V1.3.40。

修正:

V1.3.41 以降。

最新バージョンにアップグレードします。

説明

アップグレード後、動作は V1.3.38 以前のバージョンと一致します。テーブルが存在し、テーブルプロパティを既存の値に設定した場合、システムは SQL ステートメントを無視します。

P2

to_dateto_char、および to_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_char、および to_timestamp 関数はスペースを誤って処理します。これにより、データ変換が失敗し、クエリがエラーを返します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.40。

修正:

V1.3.42 以降。

  • SQL を変更して先頭のスペースを処理します。例: to_char(year, 'FM9999')

  • 最新バージョンにアップグレードします。

2023 年 2 月

レベル

説明

原因

バージョン

推奨

P2

rb_build 関数をテーブル名と共に使用すると、Not support calling pg udf for type (23, LIST) エラーで失敗します。

CREATE TABLE rb_build_test(a int[]);INSERT INTO rb_build_test VALUES ('{1,2,3}');SELECT rb_build(a) FROM rb_build_test;--Error: 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}');--Result:rb_build\x3a300000010000000000020010000000010002000300                                

rb_build 関数をテーブル名と共に実行すると、まず計算が行われ、次に結果がテーブルに書き込まれます。この関数は HQE で実行されますが、現在のバージョンの HQE は配列と PQE 配列間の双方向変換をサポートしていないため、実行が失敗します。

影響を受けたバージョン:

V1.3.37 以前。

修正済みバージョン:

V1.3.38 以降。

最新バージョンにアップグレードします。

P2

LIMIT x OFFSET y 句を含む SQL クエリで、y > x の場合、不正確な行数が返されます。たとえば、次のクエリは 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.20 ~ V1.3.36。

修正済みバージョン:

V1.3.37 以降。

  • SQL ステートメントを変更して、OFFSET 値が LIMIT 値より小さくなるようにします。

  • 最新バージョンにアップグレードします。

P2

ANALYZE 操作が次のエラーで失敗します。ERROR: store statistic results for table `public.table_name` failed: basic_string::_M_create

操作がテーブルフィールドを正しく解析できません。

影響を受けたバージョン:

V1.3.36。

修正済みバージョン:

V1.3.37 以降。

最新バージョンにアップグレードします。

P2

CREATE TABLE AS コマンドが、public 以外のスキーマに対して使用されると、relation "xxx" does not exist エラーで失敗します。

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 コマンドを使用してスキーマを指定した後、create table as 構文のテーブル名にスキーマプレフィックスがない場合、システムはデフォルトで public スキーマでソーステーブルを検索し、データを挿入します。しかし、このテーブルは public スキーマに存在しないため、エラーメッセージが報告されます。

影響を受けたバージョン:

V1.3.20 ~ V1.3.36。

修正済みバージョン:

V1.3.37 以降。

  • CREATE TABLE AS ステートメントで、テーブル名の前にスキーマを付けます。例:

    CREATE TABLE AS test_schema.test_src_1 SELECT * FROM test_src;
  • 最新バージョンにアップグレードします。

P2

bigserial フィールドの開始値を int4 の範囲 (–2147483648 ~ 2147483647) 外に設定すると、その後生成されるそのフィールドの値が不正確になります。

CREATE TABLE IF NOT EXISTS test_tb(  id bigserial NOT NULL,  f1 text,  PRIMARY KEY (id,f1));--f1 フィールドにデータを挿入します。INSERT INTO test_tb(f1) VALUES('1'),('2'),('3');-- 自動インクリメントの開始値を 100,000,000,000 に変更します。ALTER SEQUENCE public.test_tb_id_seq RESTART WITH 100000000000;-- テスト用にさらに 2 行挿入します。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.20 ~ V1.3.35。

修正済みバージョン:

V1.3.36 以降。

最新バージョンにアップグレードします。

P2

Hologres インスタンスを V1.1 から V1.3 にアップグレードした後、パーティションテーブルへの Array データのクエリまたは書き込みが internal error: Datasets has different schema Schema エラーで失敗します。この問題は、アップグレード前後に作成されたパーティションにクエリがアクセスする場合に発生します。

パーティションテーブルの親テーブルの Array 型フィールドに not null 属性が指定されていない場合、現在のバージョンは nullable 属性を誤って処理します。アップグレード前は、フィールドはデフォルトで nullable になりますが、アップグレード後に新しく作成された子パーティションテーブルでは、デフォルトで not null になります。アップグレード前後に作成された複数のパーティションにクエリがヒットすると、子パーティションテーブルのメタデータが一致しないため、実行エラーが発生します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.35。

修正済みバージョン:

V1.3.36 以降。

  • 親パーティションテーブルのプロパティを変更します。例:

    CALL set_table_property('table_name', 'time_to_live_in_seconds', 'xx');
  • 最新バージョンにアップグレードします。

2023 年 1 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

JSONB 列ストアがパーティションテーブルで有効になっている場合、親テーブルのクエリは遅くなりますが、子テーブルのクエリは高速です。

CREATE TABLE public.hologres_parent(a text, b jsonb) PARTITION BY LIST(a);CREATE TABLE public.hologres_child1 PARTITION OF public.hologres_parent FOR VALUES IN('v1');SELECT b->>'xxx' FROM hologres_parent;

JSONB 列ストアが有効で、親テーブルがクエリされると、オプティマイザーはクエリを子テーブルにプッシュダウンできません。これにより、JSONB 列全体のスキャンが強制され、パフォーマンスが低下します。

影響:

バージョン 1.3.20 ~ 1.3.34。

修正:

バージョン 1.3.35 以降。

  • 子テーブルを直接クエリします。

  • 最新バージョンにアップグレードします。

P2

JSONB 列ストアを使用する場合、LIMIT 句を含むクエリは、列ストア最適化が適用されないため遅くなります。

create table jsonb_test(inputvalues JSONB );SELECT inputvalues ->> 'price' pos_id FROM jsonb_test where inputvalues ->> 'price' = 'aaa' limit 100;

LIMIT 句が存在すると、実行プランで列ストアのプッシュダウンが失敗します。これにより、計算中に JSONB 列全体のスキャンが強制され、パフォーマンスが低下します。

影響:

バージョン 1.3.20 ~ 1.3.34。

修正:

バージョン 1.3.35 以降。

  • JSONB 列ストアが有効な場合は、LIMIT 句を使用しないでください。

  • 最新バージョンにアップグレードします。

P0

MC ダイレクトリードが有効なインスタンスが再起動 (コンピュートノードのスケールアウトや OOM イベントなど) すると、起動に失敗します。

MC ダイレクトリードが有効な場合、メタデータとデータステータスの間に不整合が生じるバグがありました。これにより、ストレージエンジンがデータを正しくロードできず、起動に失敗しました。この問題の修正により、削除ステータスが失われる可能性があることに注意してください。

影響:

バージョン 1.3.14 ~ 1.3.33。

修正:

バージョン 1.3.34 以降。

  • 影響を受けるバージョンでは MC ダイレクトリードを有効にしないでください。

  • 最新バージョンにアップグレードします。

P2

セグメントキーが設定された列指向テーブルの Binlog をクエリする際、WHERE 句でセグメントキーを使用するフィルター条件が無視されます。

BEGIN;CREATE TABLE test (  id int PRIMARY KEY,  title text NOT NULL,  c_time timestamptz);CALL set_table_property ('test', 'orientation', 'column');call set_table_property('test', 'event_time_column', 'c_time');call set_table_property('test', 'binlog.level', 'replica');call set_table_property('test', 'binlog.ttl', '86400');COMMIT;SELECT hg_binlog_lsn,hg_binlog_event_type,hg_binlog_timestamp_us,* FROM test where c_time = 1;

この例では、クエリは c_time の値が 1 以外の行を返します。

Binlog とセグメントキーの両方が設定された列指向テーブルで、WHERE 句でセグメントキーを使用すると、不正確な実行プランが生成され、フィルターが無効になります。

影響:

バージョン 1.3.33 以前。

修正:

バージョン 1.3.34 以降。

最新バージョンにアップグレードします。

P2

#> 演算子を使用して JSONB を解析すると、次のエラーが返されます。Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8. テーブル作成 SQL の例:

create table t1 (f1 json);insert into t1 values ('{"a":"Hello\u00F7"}');SELECT f1 #> ARRAY['a'] FROM t1;

#> 演算子は json_extract_path 関数で実装されており、JSONB を解析する際にデフォルトで PostgreSQL ASCII エンコーディングを使用します。この動作によりエラーが発生します。

影響:

バージョン 1.3.33 以前。

修正:

バージョン 1.3.34 以降。

最新バージョンにアップグレードします。

2022 年の不具合履歴

2022 年 12 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

SPM 権限モデルで新しいデータベースを作成した後、JDBC を使用して初めて Hologres Binlog を消費すると、次のエラーで失敗します。ERROR: internal error: create table hologres.hg_replication_progress failed

JDBC を使用して Hologres Binlog を消費するには、システムが GRANT SELECT ON TABLE hologres.hg_replication_progress TO PUBLIC; コマンドを実行して、すべてのユーザーに hg_replication_progress テーブルの表示権限を付与します。しかし、SPM 権限モデルは GRANT コマンドを無効にするため、テーブルが作成されず、Binlog の消費が失敗します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.32。

修正済みバージョン:

V1.3.33 以降。

  • 標準 PostgreSQL 権限モデルに切り替えて権限を付与し、その後 SPM 権限モデルに戻して Binlog を消費します。または、標準 PostgreSQL 権限モデルを使用して直接 Binlog を消費します。

  • 修正済みバージョンにアップグレードします。

P1

Hologres V1.3.30 へのアップグレード後、QPS とデータ量が変わらないにもかかわらず、インスタンスのメモリ使用量が予期せず増加します。

Hologres にはデフォルトで結果キャッシュがあります。このキャッシュへの挿入操作が失敗した場合、Hologres は関連リソースを迅速に解放しないため、メモリ使用量が増加します。

影響を受けたバージョン:

V1.3.30 ~ V1.3.31。

修正済みバージョン:

V1.3.32 以降。

修正済みバージョンにアップグレードします。

P2

jsonb_array_element 関数を jsonb_object_field 関数内にネストすると、次のエラーが発生します。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.20 ~ V1.3.29。

修正済みバージョン:

V1.3.30 以降。

修正済みバージョンにアップグレードします。

P2

読み取り専用のセカンダリインスタンスのクエリで重複した主キーが返されることがありますが、プライマリインスタンスのクエリでは返されません。

データがインポートされた直後に削除された場合、読み取り専用のセカンダリインスタンスでの後続のフェールオーバー (アップグレードまたはスケールアウトによってトリガー) により、重複した主キーデータのクリーンアップが妨げられる可能性があります。これにより、クエリが重複キーを返します。

影響を受けたバージョン:

V1.3.27 ~ V1.3.28。

修正済みバージョン:

V1.3.29 以降。

  • 代わりにプライマリインスタンスをクエリします。

  • 修正済みバージョンにアップグレードします。

2022 年 11 月

レベル

説明

原因

影響を受けた/修正済みバージョン

回避策

P2

テーブルを作成し、NULL 許容フィールドをクラスタリングキーまたはセグメントキーとして設定すると、クエリ結果が時々一致しなくなります。

NULL 許容のクラスタリングキーまたはセグメントキーを持つテーブルの場合、結果キャッシュがクエリ結果を誤って保存するため、クエリ結果が一致しなくなります。

影響を受けたバージョン:

V1.1.30 ~ V1.3.27。

修正済みバージョン:

V1.3.28 以降。

  • テーブルを再作成し、クラスタリングキーまたはセグメントキーとして設定されたフィールドが NULL 許容でないことを確認します。

  • 修正済みバージョンにアップグレードします。

P2

ST_Collect(col) 関数を使用すると、ERPC_CONNECTION _CLOSED エラーが発生します。

Hologres が PostGIS との互換性を確保するために使用するネイティブ PostgreSQL node 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 がヌルポインタに遭遇し、クエリエラーが発生します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.27。

修正済みバージョン:

V1.3.28 以降。

  • SQL ステートメントを変更して、区切り文字を明示的に指定します。例: string_agg(text, ',')

  • 修正済みバージョンにアップグレードします。

P2

MaxCompute 外部テーブルからデータを読み取る際、WITH ステートメントを含むクエリの結果が、WITH ステートメントを含まないクエリの結果と一致しません。

CFile や RANGE TABLE などの形式で MaxCompute 外部テーブルを読み取る際、クエリに WITH 句が含まれ、WITH 句からの出力の列順序がテーブルの列順序と一致しない場合、Hologres 外部テーブルインターフェイスが結果を誤った順序で出力し、クエリ結果が一致しなくなります。

影響を受けたバージョン:

V1.3.24 ~ V1.3.26。

修正済みバージョン:

V1.3.27 以降。

  • クエリで WITH ステートメントを使用しないでください。

  • 修正済みバージョンにアップグレードします。

P2

MaxCompute 外部テーブルの ARRAY 型フィールドをクエリすると、Array length did not match record batch length エラーが発生します。

ORC 形式の MaxCompute テーブルにアクセスする際、Hologres 外部テーブルインターフェイスが ARRAY 型フィールドの長さを一貫して処理しません。これにより、データ長が制限を超え、エラーが発生する可能性があります。

影響を受けたバージョン:

V1.3.20 ~ V1.3.26。

修正済みバージョン:

V1.3.27 以降。

修正済みバージョンにアップグレードします。

2022 年 10 月

レベル

説明

原因

影響を受けた/修正済みバージョン

回避策

P2

分散キーを空文字列に設定すると、クエリが次のエラーで失敗します。Failed to get bh reader: internal error CONTEXT。以下は DDL ステートメントの例です。

call set_table_property('<table_name>', 'distribution_key', ' ');

分散キーが空文字列の場合、データが正しいシャードにルーティングされず、クエリエラーが発生します。

影響を受けたバージョン:

V1.3.24 以前。

修正済みバージョン:

V1.3.26 以降。

  • テーブルを再作成し、有効な分散キーを設定します。

  • 最新バージョンにアップグレードします。

    説明

    アップグレード後、分散キーを空文字列に設定することは引き続きサポートされず、テーブル作成時にエラーがトリガーされます。

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.20 ~ V1.3.24。

修正済みバージョン:

V1.3.25 以降。

最新バージョンにアップグレードします。

P2

Hologres インスタンスを V1.3.20 にアップグレードした後、配列フィールドを含む MaxCompute 外部テーブルをクエリすると、internal error: IOError: Invalid flatbuffers message エラーが報告されます。

システムが古い読み取りインターフェイスを使用しており、配列型を認識しないため、クエリエラーが発生します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.24。

修正済みバージョン:

V1.3.25 以降。

  • 一時的に配列フィールドのクエリを避けます。

  • 最新バージョンにアップグレードします。

P2

PostgreSQL システムテーブルから Hologres 内部テーブルにデータをインポートすると、Hologres テーブルの結果が不安定になり、ランダムに変化します。例:

-- クエリ結果は 22505
SELECTcount(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.tables11
SELECT'tmp'FROMpg_class c inner join pg_attribute a on c.oid = a.attrelid
SELECT count(1) FROM public.tables11

PostgreSQL システムテーブルはネイティブの PostgreSQL オブジェクトです。Hologres は分散システムであり、継続的な DDL 操作により FE 間でバージョンが一致しなくなる可能性があります。PostgreSQL システムテーブルをクエリすると、異なる FE からデータが取得され、結果が不安定になる可能性があります。

影響を受けたバージョン:

V1.3.22 ~ V1.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 型の精度が明示的にキャストされません。オプティマイザーが実行プランを生成する際に精度を誤って推論するため、クエリが失敗します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.24。

修正済みバージョン:

V1.3.24 以降。

最新バージョンにアップグレードします。

P2

PostgreSQL システムビューからユーザー作成の 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.22 ~ V1.3.24。

修正済みバージョン:

V1.3.25 以降。

最新バージョンにアップグレードします。

P2

テーブルに 2 つの Proxima ベクターインデックスを設定すると、1 つだけを設定した場合と比較して Proxima ベクタークエリのパフォーマンスが低下する可能性があります。DDL の例:

call set_table_property('t1', 'proxima_vectors', '{"f2":{"algorithm":"Graph","distance_method":"InnerProduct"}},{"f3":{"algorithm":"Graph","distance_method":"InnerProduct"}}');

2 つのインデックスを定義する場合、DDL ステートメントの {} ブロックの構文が正しくありません。各インデックスには独自の {} ブロックが必要です。FE はこの形式の DDL ステートメントを拒否できませんでした。その結果、最初のインデックスは正常に作成されましたが、2 番目のインデックスは破棄され、クエリパフォーマンスが低下しました。正しい形式は次のとおりです。

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

非スーパーユーザーが SELECT hg_dump_script('xxxx') コマンドを実行すると、次のエラーが報告されます。ERROR: permission denied for table pg_subscription

hg_dump_script 関数は、論理レプリケーションのために間接的に pg_subscription を呼び出します。pg_subscription の権限チェックが失敗するため、エラーが発生します。

影響を受けたバージョン:

V1.3.20 ~ V1.3.24。

修正済みバージョン:

V1.3.25 以降。

  • スーパーユーザーアカウントを使用して権限を付与します。コマンドの例:

    GRANT SELECT ON pg_subscription TO "xx";
  • 最新バージョンにアップグレードします。

P2

RAM ユーザーが Flink を使用して Hologres binlog を消費したり、DataHub を使用して Hologres にデータを書き込んだりすると、NoSuchProject エラーが発生します。

フロントエンドが RAM ユーザーを誤って解析するため、エラーが発生します。

影響を受けたバージョン:

V1.3.23 以前。

修正済みバージョン:

V1.3.24 以降。

最新バージョンにアップグレードします。

P2

Hologres インスタンスを V1.1 から V1.3 にアップグレードした後、MaxCompute 外部テーブルに対するクエリが遅くなることがあります。EXPLAIN を実行して実行プランを確認すると、テーブル統計の row_count フィールドが 1000 になっています。これは、テーブル統計が自動的に更新されていないことを示します。

Hologres インスタンスを V1.3 にアップグレードした後、Auto Analyze が外部テーブルスキーマを検出しません。その結果、外部テーブルのテーブル統計が迅速に収集されません。

影響を受けたバージョン:

V1.3.14 ~ V1.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.20 ~ V1.3.23。

修正済みバージョン:

V1.3.24 以降。

最新バージョンにアップグレードします。

2022 年 9 月

レベル

説明

原因

影響を受けた/修正済みバージョン

回避策

P2

JDBC 接続文字列で指定されたスキーマが適用されず、デフォルトで public スキーマになります。以下は接続文字列の例です。

String jdbcUrl = "jdbc:postgresql://hostname: port /dbname?currentSchema=demo;

FE ノードは、接続文字列の疑問符 (?) に続く文字列を無視するため、currentSchema 設定が無視されます。

影響を受けたバージョン:

V1.3.14 ~ V1.3.22。

修正済みバージョン:

V1.3.23 以降。

修正済みバージョンにアップグレードします。

P1

SQL クエリがマテリアライズドビューを使用するように自動的に書き換えられると、インスタンスが一時的に再起動します。

マテリアライズドビューを使用するように書き換えられたクエリの実行プランを生成する際、オプティマイザーがテーブルメタデータを取得できず、インスタンス障害が発生します。

影響を受けたバージョン:

V1.3.14 ~ V1.3.22。

修正済みバージョン:

V1.3.23 以降。

修正済みバージョンにアップグレードします。

P2

インスタンス内の異なるユーザーに異なる IP ホワイトリストポリシーを設定した場合、ユーザーはホワイトリスト内の IP アドレスからでも Hologres インスタンスにアクセスできず、reject ip xxx エラーが返されます。

ゲートウェイが IP ホワイトリストを設定した後にユーザーを誤ってブロックします。これにより、ユーザーはホワイトリストに登録されているにもかかわらず、インスタンスにアクセスできなくなります。

影響を受けたバージョン:

V1.3.21 以前。

修正済みバージョン:

V1.3.22 以降。

  • IP ホワイトリストを設定しないでください。あるいは、Accessible Databases パラメーターを 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 シナリオでは、オプティマイザーが Decimal 型の精度を誤って推論するため、エラーが発生します。

影響を受けたバージョン:

V1.3.20 以前。

修正済みバージョン:

V1.3.21 以降。

修正済みバージョンにアップグレードします。

P2

IP ホワイトリストを有効にした後、Hologres Binlog を消費する Flink ジョブが次のエラーで失敗します。reject ip 1.xxx

Flink は Hologres リアルタイムデータインポートインターフェイス (非 JDBC モード) を使用して Hologres Binlog を消費しますが、このインターフェイスは IP ホワイトリスト機能をサポートしていません。

影響を受けたバージョン:

V1.3.20 以前。

修正済みバージョン:

V1.3.21 以降。

  • IP ホワイトリストを設定しないでください。

  • 修正済みバージョンにアップグレードします。

P2

配列型を文字列型に明示的にキャストすると、次のエラーが発生します。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 は、配列型を文字列型に明示的にキャストすることをサポートしていません。

影響を受けたバージョン:

V1.3.20 以前。

修正済みバージョン:

V1.3.21 以降。

修正済みバージョンにアップグレードします。

P1

MaxCompute 外部テーブルをクエリすると、クエリがハングします。インスタンスを再起動すると問題が解決します。

MaxCompute メタデータサービスのプライマリ/セカンダリ切り替え中にメタデータを読み取る際、Hologres が例外を処理できません。これにより、リトライが失敗し、クエリがハングします。

影響を受けたバージョン:

V1.3.20 以前。

修正済みバージョン:

V1.3.21 以降。

修正済みバージョンにアップグレードします。

2022 年 8 月

レベル

説明

原因

バージョン

回避策

P2

JDBC Prepare Statement モードで SQL クエリを実行すると、次のエラーで失敗します。cannot push query id when transaction is not start

JDBC Prepare Statement モードでは、SQL 実行時にトランザクションが開始されていません。これにより、Query ID の生成が妨げられ、エラーがトリガーされます。

影響:

V1.1.80 ~ V1.1.86。

修正:

V1.3.20 以降。

  • JDBC 接続文字列を Simple モードに変更します。jdbc:postgresql://<host>:<port>/<dbname>?preferQueryMode=simple

  • 最新バージョンにアップグレードします。

P2

TTL 値にカンマが含まれている場合 (例: CALL set_table_property('wdt_qyb.wdt_qyb_trade', 'time_to_live_in_seconds', '315,360,000');)、データが早期に削除されます。

カンマを含む TTL 値 (例: 315,360,000) は誤って解析されます。SQL パーサーはカンマの後の値を無視し、TTL を 315 秒に設定するため、データが早期に期限切れになります。

影響:

V1.1.85 以前。

修正:

V1.3.20 以降。

  • TTL を設定する際は、カンマを含まない整数値を使用します。

  • 最新バージョンにアップグレードします。

    説明

    アップグレード後、カンマを含む無効な TTL 値を設定すると、テーブル作成時または TTL 変更時にエラーがトリガーされます。

P2

行指向テーブルのクラスタリングキーと主キー (PK) が一致しない場合、クエリが次のエラーで失敗します。internal error: Cannot build column col1

例:

CREATE TABLE test(col1 text,col2 text,col3 text,PRIMARY KEY (col1, col2)); CALL set_table_property('public.test', 'distribution_key', 'col1'); CALL set_table_property('public.test', 'clustering_key', 'col1:asc');SELECT * FROM public.test;

行指向テーブルのクラスタリングキーと PK が一致しない場合、ストレージエンジンが同一のレコードを誤って生成し、クエリエラーが発生します。

影響:

V1.1.84 以前。

修正:

V1.3.20 以降。

  • 行指向テーブルのクラスタリングキーと PK を同じに設定します。

  • 最新バージョンにアップグレードします。

P2

非スーパーユーザーアカウントが 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 データを消費するには、非スーパーユーザーアカウントには必要な権限がないため、スーパーユーザーアカウントが必要です。

影響:

V1.1.83 以前。

修正:

V1.3.20 以降。

  • スーパーユーザーアカウントを使用します。

  • 最新バージョンにアップグレードし、非スーパーユーザーアカウントに必要な権限を付与します。詳細については、「JDBC を使用して Hologres Binlog を消費する」をご参照ください。

P2

スロークエリログに一部のエントリが欠落していますが、監視では依然としてレイテンシと QPS が表示されます。

同じトランザクション内の異なるクエリが同じ Query ID を共有します。メタデータウェアハウスはこれらのクエリを重複排除し、1 つのエントリのみを保持し、他のクエリを破棄します。

影響:

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 Binlog 拡張機能を復元できず、消費が失敗しました。

影響:

V1.3 以前のバージョン。

修正:

V1.3.20 以降。

最新バージョンにアップグレードします。

2022 年 7 月

レベル

説明

原因

影響を受けたバージョンと修正済みバージョン

回避策

P2

ホットアップグレード後、テーブルのクエリが次のエラーで失敗します。File(fn: xxx) real size != size in meta: 0 != yyyy

ホットアップグレード中にテーブルへのオフライン BulkLoad 書き込みがコンパクションをトリガーし、メタデータの互換性の問題が発生してエラーが発生しました。

影響を受けたバージョン:

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 以降。

修正済みバージョンにアップグレードします。

2022 年 6 月

重大度

説明

原因

影響を受けた/修正済みバージョン

回避策

P2

OSS 外部テーブルを分析すると、OOM (メモリ不足) エラーが発生します。

OSS 外部テーブルで ANALYZE を実行すると、行数取得プロセスがデフォルトで多数の行 (30,000 行以上) をサンプリングするため、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 句の定数型が列型と異なる場合、オプティマイザーは定数を正しい型に cast できません。これにより、実行エンジンでエラーが発生します。

影響を受けたバージョン:

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 操作の書き込みパフォーマンスが低下します。

範囲または連続した値のシーケンスが削除された後、コンパクションがまだ完了していない場合、insert コマンドは、削除されていない最初のレコードが見つかるまで、その範囲内の重複レコードを最初にクエリします。クエリされたキーの近くに連続して削除されたレコードが多数存在する場合、これらのレコードを走査するとかなりの時間がかかり、insert コマンドの書き込み速度が低下します。

影響を受けたバージョン:

V1.1.70 以前

修正済みバージョン:

V1.1.71 以降

新しいバージョンにアップグレードします。

2022 年 5 月

レベル

説明

原因

バージョン

回避策

P2

MaxCompute テーブルをクエリすると、次のエラーが報告されます。Timestamp overflow detected while converting timestampFROM orc VectorBatch to arrow

このエラーは、Hologres が Tunnel が TIMESTAMP データに適用するナノ秒レベルの精度をサポートしていないために発生します。

影響を受けたバージョン:

V1.1.69 以前

修正済みバージョン:

V1.1.70 以降

  • MaxCompute テーブルの TIMESTAMP データ型を DATETIME に変更します。

  • 最新バージョンにアップグレードします。

P2

OSS Parquet データをクエリすると、count ステートメントが、OSS データが変更されていないにもかかわらず、一致しない結果を返します。

Hologres は古いインターフェイスを使用して OSS Parquet ファイルを読み取ります。これにより、非 NULL データをランダムに NULL 値として解釈し、不正確なクエリ結果になります。

影響を受けたバージョン:

V1.1.67 以前

修正済みバージョン:

V1.1.68 以降

最新バージョンにアップグレードします。

P2

SQL を使用して Hologres から MaxCompute にデータを書き戻す際に、次のエラーが発生する可能性があります。Blocks not match, server:xx client yy

MaxCompute への書き込み操作がタイムアウトし、空のブロックが生成されると、エラーが発生する可能性があります。デフォルトのタイムアウトは 300 秒です。

影響を受けたバージョン:

V1.1.64 以前

修正済みバージョン:

V1.1.65 以降

  • 次のコマンドを使用してタイムアウトを変更します。

    alter server odps_server options (add socket_timeout '600');

    タイムアウトを 600s に増やすと、空のブロックが生成される可能性が低くなります。

  • 最新バージョンにアップグレードします。

P2

Hologres V1.1 では、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.1 ~ V1.1.58

修正済みバージョン:

V1.1.59 以降

  • 一度に 1 つの列を追加するか、IMPORT FOREIGN SCHEMA 構文を使用して外部テーブルを更新します。

  • 最新バージョンにアップグレードします。

P1

to_date 関数を WHERE 句と共に使用すると、次のエラーが報告されます。invalid value \"\" for \"YYYY\" HGERR_detl Field requires 4 characters, but only 0 could be parsed。クエリの例:

SELECT *  FROM public.test where to_date(content, 'YYYYMMDD' ) BETWEEN  '2021-10-22' AND '2021-10-23' limit 10;

クエリオプティマイザーは、WHERE 句でフィルタリングされる前に、to_date 関数を行に誤って適用します。その結果、関数が無効なデータを処理し、変換エラーが発生します。

影響を受けたバージョン:

V1.1.58 以前

修正済みバージョン:

V1.1.59 以降

最新バージョンにアップグレードします。

P2

暗号化された MaxCompute テーブルの同時読み取り中に、次のエラーが報告されます。failed to load row group data FROM file pangu

複数のリーダーが暗号化された MaxCompute テーブルを並行して解析しようとすると、復号エラーが発生する可能性があります。

影響を受けたバージョン:

V1.1.57 以前

修正済みバージョン:

V1.1.58 以降

最新バージョンにアップグレードします。

P2

HQE が NUMERIC または DECIMAL フィールドの剰余計算 (%) を処理すると、不正確な結果が返されます。

HQE は NUMERIC および DECIMAL 型の剰余計算をサポートしていませんが、データ型を検証できないため、不正確な結果になります。

影響を受けたバージョン:

V1.1.55 以前

修正済みバージョン:

V1.1.56 以降

  • NUMERIC および DECIMAL フィールドで剰余計算を実行しないでください。

  • 最新バージョンにアップグレードします。

    説明

    アップグレード後、NUMERIC または DECIMAL フィールドで剰余計算を実行すると、操作がサポートされていないため、正しくエラーが返されます。

2022 年 4 月

レベル

説明

原因

影響を受けた/修正済みバージョン

推奨事項

P2

JDBC を介して Hologres Binlog をサブスクライブする際、pgreplicationstream.start() を使用して binlog を消費する JDBC ジョブを開始し、同時に drop table xx; を実行してデータベース側で対応するテーブルを削除すると、インスタンスが一時的に再起動します。

binlog サブスクリプション中にテーブルを削除すると、ヌルポインタ例外が発生します。これは、サブスクリプションプロセスが削除されたテーブルのtable_properties を取得しようとするため、インスタンスが再起動します。

影響を受けたバージョン:

V1.1.54 以前。

修正済みバージョン:

V1.1.55 以降。

  • binlog をサブスクライブしている間はテーブルを削除しないでください。

  • 修正済みバージョンにアップグレードします。

    説明

    アップグレード後、binlog サブスクリプション中にテーブルを削除すると、テーブルが存在しないというエラーが正しく報告されます。

P2

パーティション分割された子テーブルが親テーブルから detached された後、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 以降。

修正済みバージョンにアップグレードします。

2022 年 3 月

レベル

説明

原因

影響を受けた/修正済みバージョン

回避策

P2

user-mapping が設定されていない場合、Data Lake Formation (DLF) を使用して OSS 外部テーブルをクエリすると、failed to import foreign schema エラーで失敗します。

user-mapping が設定されていない場合、権限付与インターフェイスが不正確な権限を渡し、クエリが失敗します。

影響を受けたバージョン:

V1.1.50 以前。

修正済みバージョン:

V1.1.51 以降。

P2

PrepareStatement モードで、SQL クエリが unrecognized node type: 0 エラーで失敗するか、Hologres インスタンスが一時的に再起動する可能性があります。

PrepareStatement モードは、頻繁に実行される SQL ステートメントのプランキャッシュを生成して、クライアント側のオーバーヘッドを削減できます。影響を受けるバージョンでは、SQL ステートメントのプランキャッシュが迅速に取得されないため、クエリが失敗します。

影響を受けたバージョン:

V1.1.47 ~ V1.1.50。

修正済みバージョン:

V1.1.51 以降。

  • JDBC 接続文字列を jdbc:postgresql://<host>:<port>/<dbname>?preferQueryMode=simple 設定を使用して Simple モードに変更します。

  • 新しいバージョンにアップグレードします。

P1

Blink または Flink RPC モードで Hologres に書き込むと、failed to create channel into server xxx, connection refused to rpc proxy endpoint エラーが発生します。

Blink または Flink RPC モードで Hologres に書き込む際、API が RPC プロキシポートを返さないため、書き込み操作が失敗します。

影響を受けたバージョン:

V1.1.50 以前。

修正済みバージョン:

V1.1.51 以降。

  • Flink ジョブを JDBC 書き込みモードに切り替えます。詳細については、「Flink 完全管理」をご参照ください。

  • 新しいバージョンにアップグレードします。

P2

union all を含む JOIN ステートメントを実行すると、internal error: 0 shard end shard value: xxx doesn\'t エラーが報告されます。

オプティマイザーが union all を含む JOIN ステートメントの実行プランを誤って生成するため、実行が失敗します。

影響を受けたバージョン:

V1.1.49 以前。

修正済みバージョン:

V1.1.50 以降。

新しいバージョンにアップグレードします。

P2

JOIN 句を含む SQL ステートメントで json_array_elements 関数を使用すると、クエリが Duplicate keys detected when building hash table エラーで失敗します。

実行エンジン (QE) は join 演算子を実行する際にハッシュテーブルを構築します。しかし、データ読み取りフェーズで、実行エンジン (QE) は json_array_elements によって処理されたデータを正しくフィルタリングしません。これにより、重複データが読み取られ、エラーが発生します。

影響を受けたバージョン:

V1.1.49 以前。

修正済みバージョン:

V1.1.50 以降。

新しいバージョンにアップグレードします。

P2

JOIN ステートメントを実行すると、クエリが Explicit remote seek FROM a source is not supported エラーで失敗することがあります。

オプティマイザーが Nested Loop Join を使用する実行プランを生成した場合 (EXPLAIN <SQL> を使用して確認できます)、実行エンジンがプランを正しく実行できず、実行エラーが発生する可能性があります。

影響を受けたバージョン:

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 権限モデルで、CALL slpm_rename_schema ( old_name, new_name ) コマンドでスキーマの名前を変更しようとすると、UPDATE is not supported エラーが報告されます。

SLPM 権限モデルでは、スキーマの名前を変更する際にシステムが不正確な権限チェックを実行するため、コマンドが失敗します。

影響を受けたバージョン:

V1.1.47 以前。

修正済みバージョン:

V1.1.48 以降。

新しいバージョンにアップグレードします。

2022 年 2 月

レベル

説明

原因

影響を受けた/修正済みバージョン

回避策

P2

SPM または SLPM モードで、データマスキングを有効にした後、Auto Analyze または Analyze 操作が失敗します。

バックエンドはテーブル所有者を使用して Auto Analyze を実行します。しかし、SPM または SLPM モードでは、テーブル所有者はログイン権限のない開発者です。マスクされた列をサンプリングする際、リクエストは Parallel Query Engine (PQE) を介してルーティングされるため、Auto Analyze または Analyze 操作が失敗します。

影響を受けたバージョン:

V1.1.1 ~ V1.1.46。

修正済みバージョン:

V1.1.47 以降。

  • データマスキングを無効にします。

  • 新しいバージョンにアップグレードします。

P1

過剰なパーティション (通常はマルチレベルパーティションシナリオ) を持つ外部テーブルを分析すると、パーティション制限 (512 パーティション) を超えたことを示すエラーで操作が失敗します。

分析が外部テーブルのパーティションをプルーニングしないため、失敗が発生します。

影響を受けたバージョン:

V1.1.1 ~ V1.1.46。

修正済みバージョン:

V1.1.47 以降。

  • 外部テーブルのパーティション数が 1,024 未満の場合は、Analyze 操作を実行する前に外部テーブルのパーティション制限を増やします。

  • 新しいバージョンにアップグレードします。

    説明

    アップグレード後、Analyze 操作はデフォルトで最大 512 の外部テーブルパーティションを処理します。より多くのパーティションを処理するには、Analyze 操作のパーティション制限を増やします。詳細については、「MaxCompute 外部テーブルのクエリパフォーマンスを最適化する」をご参照ください。

P1

explain analyze SQL コマンドを実行すると、partitions SELECTed の結果が 0 になり、実際にアクセスされたパーティション数と一致しません。

オプティマイザーの partitions SELECTed のチェックが不正確だったため、値が 0 になりました。

影響を受けたバージョン:

V1.1.1 ~ V1.1.46。

修正済みバージョン:

V1.1.47 以降。

新しいバージョンにアップグレードします。

P2

スロークエリログを表示する際、読み取られた行数 (read_rows) や返された行数 (result_rows) などの情報が表示されません。

メタデータウェアハウスによって収集された情報が不完全でした。

影響を受けたバージョン:

V1.1.1 ~ V1.1.46。

修正済みバージョン:

V1.1.47 以降。

新しいバージョンにアップグレードすることを推奨します。

説明

Hologres V1.1.36 以降、GUC パラメーターを設定することで情報を表示できます。V1.1.47 以降では、GUC パラメーターを設定する必要はありません。

P2

JDBC PrepareStatement モードで、insert または SELECT を複数の値に対して 3 回以上実行すると、結果に行と列がずれて表示されます。ただし、insert または SELECT を複数の個別のステートメントで 1 つの値に対して実行すると、結果は正しくなります。たとえば、32 個の値を含む 1 つの SQL ステートメントを 4 回実行し、各実行で values 句の 32 行の順序をランダム化します。対照的に、1 つの値のみを含む 1 つの SQL ステートメントを 32 回実行すると、結果は正しくなります。

PrepareStatement モードで、複数の値に対して複数の insert または SELECT 操作を実行すると、オプティマイザーが不正確な実行プランを生成しました。

影響を受けたバージョン:

V1.1.46 以前。

修正済みバージョン:

V1.1.47 以降。

P2

count distinct を含むステートメントなど、非 JOIN SQL ステートメントを実行すると、次のエラーが報告されます。error: Hash32 shard function does not support decimal or fixed binary type

非 JOIN SQL ステートメントも、実行プランを生成するためにシャード関数を使用する場合があります。ただし、シャード関数は NUMERIC などのデータ型をサポートしていません。これにより、一部の非厳密なデータ型が使用されるとエラーが発生します。

影響を受けたバージョン:

V1.1.46 以前。

修正済みバージョン:

V1.1.47 以降。

新しいバージョンにアップグレードします。

P1

key = max(key) 条件を使用するクエリが、予期せず 1 行しか返しません。key in max(key) 条件を使用するクエリは、期待される結果を返します。

オプティマイザーが実行プランを生成する際、key = max(key)order by id asc limit 1 に変換しました。このタイプのクエリは常に 1 行しか返さないため、予期しない出力になりました。

影響を受けたバージョン:

V1.1.46 以前。

修正済みバージョン:

V1.1.47 以降。

  • key in max(key) 条件を使用します。

  • 新しいバージョンにアップグレードします。

P2

JDBC などの非 PostgreSQL ソースからの DDL ステートメントの末尾にコードコメントが含まれている場合、ステートメントが正常に実行された後、書き込みまたはクエリ操作がハングします。例: create table ttxwsx1(i int); -- comments -- xxxxx

DDL コマンドの末尾のコメントにより、最後のセミコロンがコマンド区切り文字として機能しなくなります。その結果、次のコマンドがコメントに追加され、SQL ステートメントが無効になります。これにより、ノード間のリプレイが失敗し、書き込みまたはクエリ操作がハングします。

影響を受けたバージョン:

V1.1.45 以前。

修正済みバージョン:

V1.1.46 以降。

  • DDL ステートメントの末尾のコメントを削除します。

  • 新しいバージョンにアップグレードします。

P1

プライマリキーで行指向テーブルをクエリすると、一部のデータが返されない場合があります。

行指向テーブルの同時バックグラウンドファイルコンパクションの処理にバグがあり、一部のマニフェストファイルが誤って配置されていました。その結果、クエリが一部のデータを見つけられないことがありました。

影響を受けたバージョン:

V1.1.44 以前。

修正済みバージョン:

V1.1.45 以降。

新しいバージョンにアップグレードします。

P2

Hologres インスタンスを V1.1 にアップグレードした後、SQL フィルター条件に or 演算子が含まれている場合、MaxCompute 外部テーブルのマルチレベルパーティションに対するクエリが遅くなるか、メモリ不足 (OOM) エラーが発生します。V0.10 では、これらのクエリは数秒しかかかりませんでした。

Hologres V1.1 では、オプティマイザーがマルチレベルパーティションフィルタリングで or 条件によって生成された演算子を認識できません。これにより、フィルターが空になり、すべてのパーティションがスキャンされ、クエリが遅くなったり、メモリ不足 (OOM) エラーが発生したりします。

影響を受けたバージョン:

V1.1.44 以前。

修正済みバージョン:

V1.1.45 以降。

新しいバージョンにアップグレードします。

P1

CPU 使用率が低いにもかかわらず、メモリ使用率が長時間高いままです。監視では、わずか数十の接続で高い QPS (毎秒数百クエリ以上) が示されており、単一の接続が非常に高いレートで SQL を実行していることを示しています。

SQL ステートメントが実行されると、オプティマイザーはテーブル統計を取得します。単一の接続が長時間にわたって高いレートで SQL を実行し、閉じられない場合、統計が取得される際にメモリリークが発生し、メモリ使用率が高くなります。

影響を受けたバージョン:

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 以降。

  • like 条件を含む SQL クエリでエラーが発生した場合は、次のパラメーターを設定します。hg_experimental_remove_redundant_cmp=off;

  • 新しいバージョンにアップグレードします。

P1

STS アカウントでのログインが、アカウントの認証情報が正しいにもかかわらず、Cloud authentication failed エラーで失敗します。

認証インターフェイスは、STS アカウントのステータスを不正に処理しました。

影響を受けたバージョン:

V1.1.43 ~ V1.1.44。

修正済みバージョン:

V1.1.45 以降。

新しいバージョンにアップグレードします。

P0

アプリケーション側の書き込み操作が完了した後、エンジン側のデータ書き込みプロセスがクラッシュすると、データが失われる可能性があります。その結果、ユーザーはクエリ中にデータが欠落していることに気づくことがあります。

通常、成功応答は、先行書き込みログ (WAL) がディスクにフラッシュされた後にのみクライアントに返されます。これにより、データの永続性と整合性が確保されます。しかし、ディスクフラッシュがタイムアウトしてリトライがトリガーされた場合、システムはまずデータをメモリキャッシュに書き込み、成功応答を返しました。このデータが永続化される前にインスタンスがクラッシュした場合、アプリケーションは成功確認を受け取りますが、データはデータストレージレイヤーから失われます。

影響を受けたバージョン:

V0.8 以前。

修正済みバージョン:

V0.9 以降。

新しいバージョンにアップグレードします。

P1

インスタンスの書き込みおよびクエリ操作が ERROR: Invoke StoreMasterClient failed:ERPC_ERROR_CONNECTION_CLOSED エラーで失敗します。

エラー発生後、クライアント側からのクエリリトライとバックエンドのフロントエンドノードからのリトライが重なり、リクエスト量が過剰になりました。メタデータ管理を行うストアマスターがリクエストを時間内に処理できず、エラーを報告しました。

影響を受けたバージョン:

V1.1.43 以前。

修正済みバージョン:

V1.1.44 以降。

  • set optimizer_join_order=query コマンドを使用します。

  • 新しいバージョンにアップグレードします。

P2

alter table add column c0 decimal; などのステートメントを実行して、精度を指定せずに DECIMAL 列を追加します。ステートメントは成功しますが、新しい列のクエリが Schema fields[] has type decimal(x,y) but decimal(x1, y1) is expected. エラーで失敗します。

精度を指定せずに DECIMAL 列を追加することはサポートされていません。しかし、列を追加する際に精度が検証されなかったため、クエリが失敗しました。修正後、列を追加する際に精度が検証され、精度が指定されていない場合はエラーが報告されます。

影響を受けたバージョン:

V1.1.42 以前。

修正済みバージョン:

V1.1.43 以降。

  • DECIMAL 列を追加する際に精度を指定します。

  • 新しいバージョンにアップグレードします。

P0

無効化された AccessKey が、Hologres インスタンスへのアクセスに引き続き使用できます。

AccessKey 認証インターフェイスが、無効化された AccessKey の状態を誤って処理し、有効として扱いました。

影響を受けたバージョン:

V1.1.42 以前。

修正済みバージョン:

V1.1.43 以降。

  • アカウントのアクセス権限を取り消します。

  • 新しいバージョンにアップグレードします。

P2

copy コマンドをデフォルトフィールドを持つテーブルで使用すると、インスタンスが再起動します。

copy 関数はデフォルト値を持つテーブルの作成をサポートしていないため、メモリ不足 (OOM) エラーによりインスタンスが再起動します。

影響を受けたバージョン:

V1.1.42 以前。

修正済みバージョン:

V1.1.43 以降。

新しいバージョンにアップグレードします。

P2

外部テーブルを含む INNER JOIN クエリが、SQL ステートメントで参照されていないにもかかわらず、ERROR: column "id" does not exist などの列が存在しないことを示すエラーを報告します。

実行プランを生成する際、オプティマイザーが同等の式を誤って導出しました。出力に含まれていない列を導出に含めたため、エラーが発生しました。

影響を受けたバージョン:

V1.1.42 以前。

修正済みバージョン:

V1.1.43 以降。

新しいバージョンにアップグレードします。

P1

ハイブリッド行列表ストアテーブルで複雑な Nested Loop Join を実行すると、インスタンスが再起動し、すぐに回復します。

オプティマイザーがハイブリッド行列表ストアテーブルを検出した際、正しい実行プランを生成できませんでした。これによりエラーが発生し、インスタンスの再起動がトリガーされました。

影響を受けたバージョン:

V1.1.42 以前。

修正済みバージョン:

V1.1.43 以降。

  • ハイブリッド行列表ストアテーブルを使用しないでください。

  • 新しいバージョンにアップグレードします。

P1

複数テーブル結合 (例: 6 テーブル結合) を含む複雑なインポートジョブを手動でキャンセルした後、CPU 使用率が数時間 100% のままで、プロセスが終了しません。その後の drop table 操作もハングします。

複雑なクエリの場合、実行プランには大量のデータを含む Hash Join オペレーターが含まれていました。バックエンドでデッドロックが発生し、キャンセルされた後もジョブが実行され続けました。

影響を受けたバージョン:

V1.1.42 以前。

修正済みバージョン:

V1.1.43 以降。

  • インスタンスを再起動します。

  • 新しいバージョンにアップグレードします。

2022年1月

レベル

説明

原因

バージョン

回避策

P2

DataHub から Hologres パーティションテーブルにデータを書き込む際、対応する子パーティションテーブルが作成されていない場合、Hologres インスタンスが再起動します。

DataHub から Hologres パーティションテーブルにデータを書き込む際、書き込みインターフェイスがパーティションチェックを実行しないため、インスタンスがコアダンプします。

影響を受けたバージョン:

V1.1.41 以前

修正:

V1.1.42 以降

  • データを書き込む前に、Hologres で子パーティションテーブルを作成します。

  • 新しいバージョンにアップグレードします。

    説明

    アップグレード後も、パーティションテーブルにデータを書き込む前に子パーティションテーブルを作成する必要があります。

P2

子パーティションテーブルを attach を使用して親パーティションテーブルにアタッチした後、パーティションテーブルをクエリすると partition_table_missing エラーが報告されます。

子パーティションテーブルのプロパティ (NOT NULL 制約、主キー、クラスタリングキー設定など) が親パーティションテーブルと一致しません。attach 操作がこれらのプロパティを検証しなかったため、クエリが失敗しました。

影響を受けたバージョン:

V1.1.41 以前

修正済み:

V1.1.42 以降

  • 子パーティションテーブルを作成する際、子テーブルのスキーマとプロパティは attach コマンドの親パーティションテーブルと一致している必要があります。

  • 新しいバージョンにアップグレードします。

P1

JDBC PreparedStatement モードで、where 句に「<」または「>」フィルターを含む SQL ステートメントを実行すると、インスタンスが再起動します。

JDBC PreparedStatement モードでは、where 句の「<」または「>」フィルター条件が実行プラン生成中に INTERVAL に変換されます。この変換プロセスでヌルポインタが発生し、SQL ステートメントが失敗してインスタンスが再起動します。

影響を受けたバージョン:

V1.1.0 ~ V1.1.40

修正:

V1.1.41 以降

新しいバージョンにアップグレードします。

P1

JDBC PreparedStatement モードを使用する場合、IN 条件に 100 個を超えるアイテムが含まれていると、クエリが不正確な、または予期しない結果を返すことがあります。

JDBC PreparedStatement モードで、IN 条件に 100 個以上の項目が含まれている場合、実行プランジェネレーターが IN 条件を誤って削除するため、クエリが不正確な結果を返します。

影響を受けたバージョン:

V1.1.0 ~ V1.1.40

修正:

V1.1.41 以降

新しいバージョンにアップグレードします。

P2

行ストアと列ストアの両方を持つテーブルを IN 条件でクエリすると、クエリが An I/O error occurred while sending to the backend. エラーで失敗します。行指向テーブルのクエリは影響を受けません。

行ストアと列ストアの両方を持つテーブルで、IN 条件のフィールドがビットマップインデックスを持つ TEXT 型の場合、オプティマイザーが不正確な実行プランを生成し、エラーが発生します。

影響を受けたバージョン:

V1.1.0 ~ V1.1.40

修正:

V1.1.41 以降

  • 行指向テーブルを使用します。

  • 新しいバージョンにアップグレードします。

P2

SQL ステートメントを実行すると、ERROR: serialized_error_msg is null エラーで失敗します。where 句が and を使用して in= 条件を接続している場合。例:

SELECT * FROM public.conflict_1 where a in (1,31) and a=1;

バックエンドが and 演算子の両側の条件のデータ型を誤って比較します。たとえば、a = 1 が整数型であるのに対し、a in (1,2,3) が配列型であることを調整できず、実行が失敗します。

影響を受けたバージョン:

V1.1.0 ~ V1.1.40

修正:

V1.1.41 以降

新しいバージョンにアップグレードします。

P2

子パーティションテーブルのライフサイクル (TTL) を変更すると、Invoke StoreMasterClient failed:ERPC_ERROR_CONNECTION_CLOSED エラーが発生します。

子パーティションテーブルの TTL を変更する際、メタデータマネージャー (Store Manager または SM) がスキーマ変更を検証できず、SQL エラーが発生します。

影響を受けたバージョン:

V1.1.0 ~ V1.1.40

修正:

V1.1.41 以降

  • 子パーティションテーブルの TTL を変更しないでください。

  • 新しいバージョンにアップグレードします。

P2

drop table ステートメントが invalid table id エラーで失敗します。操作を再試行すると、SE object lock failed エラーで失敗します。

インスタンスには複数のフロントエンドノードが存在する場合があります。SQL ステートメントはまず 1 つのノードで実行され、その後他のノードでリプレイされます。バージョン不一致などの理由でノードが他のノードとのメタデータ整合性を維持できない場合、リトライがトリガーされます。drop table コマンドが同時に実行されると、ノード起因のリトライがトリガーされる可能性があります。リトライプロセス中にテーブルロックが解放されないため、エラーが発生します。

影響を受けたバージョン:

V1.1.39 以前

修正:

V1.1.40 以降

  • drop table などの DDL ステートメントを順次実行します。

  • 新しいバージョンにアップグレードします。

P1

Auto Analyze を有効にした後、QPS が大幅に増加していないにもかかわらず、インスタンスが次のエラーを報告します。database is not accepting commands to avoid wraparound data loss in database

Auto Analyze を有効にした後、フロントエンドノードのシステムテーブルに対する auto vacuum プロセスの実行頻度が低すぎます。これにより、トランザクションが蓄積され、エラーメッセージに記載されているインスタンス障害が発生します。

影響を受けたバージョン:

V1.1.38 以前

修正:

V1.1.39 以降

新しいバージョンにアップグレードします。

P2

パーティションテーブルに基づいてビューを作成し、パーティションキー列に cast を適用すると、静的パーティションプルーニングが妨げられます。これにより、すべてのパーティションがスキャンされるため、パフォーマンスが低下します。以下は SQL ステートメントの例です。

--ビューを作成するcreate view test_partition_table_view asSELECTtest_partition_table.ds::text as dsFROMtest_partition_table;--sql をクエリするSELECT * FROM test_partition_table_view where ds='20211116';

ロジックがビューにカプセル化されている場合、オプティマイザーは cast 操作後の列にフィルター条件を適用し、元のパーティションキー列には適用しません。静的パーティションプルーニングはパーティションキー列でのみ機能するため、パフォーマンスが低下します。

影響を受けたバージョン:

V1.1.38 以前

修正:

V1.1.39 以降

  • ビュー内でパーティションキー列に cast を使用しないでください。

  • 新しいバージョンにアップグレードします。

P2

  • 入力日が日曜日の場合、to_char(xxx, 'Day') 関数を実行するとインスタンスが再起動します。

  • 入力日が日曜日の場合、to_char(xxx, 'D') 関数を実行すると不正確な結果が返されます。

入力日が日曜日の場合、基になる to_char() 関数は toDayOfWeek() を呼び出し、7 の値を返します。これにより、配列の範囲外アクセスが発生し、インスタンスの再起動または不正確な結果になります。

影響を受けたバージョン:

V1.1.36 以前

修正:

V1.1.37 以降

新しいバージョンにアップグレードします。

P1

インスタンスでデータマスキングを有効にした後、CTE 関数を含むサブクエリにより、インスタンスが一時的な接続エラーまたは I/O エラーを報告する可能性があります。

Hologres インスタンスが再起動するのは、CTE 関数を処理する再帰呼び出しがデータマスキングを正しく処理しないためです。

影響を受けたバージョン:

V1.1.36 以前

修正:

V1.1.37 以降

  • データマスキングを無効にします。

  • 新しいバージョンにアップグレードします。

2021 年の不具合履歴

2021 年 12 月

レベル

説明

原因

バージョン

回避策

P0

TEXT 列に辞書エンコーディングを設定すると、インスタンスが一時的に再起動します。例:

call set_table_property('tbl', 'dictionary_encoding_columns', 'a');

、ここで a は TEXT 列です。

辞書エンコーディングを手動で設定すると、そのプロパティがデフォルトの auto から on に変更されます。この状態の不一致により、コンパクションが妨げられ、コアダンプが発生します。

影響を受けたバージョン:

V1.1 ~ V1.1.35

修正済みバージョン:

V1.1.36 以降

  • 辞書エンコーディングを手動で設定する場合は、プロパティを明示的に auto に設定します。例: call set_table_property('tbl', 'dictionary_encoding_columns', 'a:auto');

  • 修正済みバージョンにアップグレードします。

P2

スロークエリログを表示する際、読み取られた行数 (read_rows) や返された行数 (result_rows) などの情報が表示されません。

メタデータウェアハウスが不完全な情報を収集するため、この問題が発生します。

影響を受けたバージョン:

V1.1 ~ V1.1.35

修正済みバージョン:

V1.1.36 以降

修正済みバージョンにアップグレードします。さらに、スロークエリログを表示する SQL ステートメントを実行する前に、次のいずれかのコマンドを実行します。

  • set hg_experimental_force_sync_collect_execution_statistics = on;
  • alter database <dbname> set hg_experimental_force_sync_collect_execution_statistics = on;

P1

WHERE 句に case when xx in ('') 式が含まれている場合、クエリが不正確な結果を返します。

Hologres はデフォルトで TEXT 列にビットマップインデックスを構築します。列が NULL 許容の場合、バックエンドは case when xx in ('') 式の実行プランを誤って生成し、不正確な結果を返します。

影響を受けたバージョン:

V1.1.35 以前

修正済みバージョン:

V1.1.36 以降

修正済みバージョンにアップグレードします。

P1

クエリが次のエラーで失敗します。Cannot reserve capacity larger than 2^31 - 1 for binary

Hologres はデフォルトで TEXT 列に辞書エンコーディングを適用します。2 GB を超える単一の値を挿入すると、辞書が大きくなりすぎ、クエリが失敗する可能性があります。

影響を受けたバージョン:

V1.1.35 以前

修正済みバージョン:

V1.1.36 以降

修正済みバージョンにアップグレードします。

P1

バイナリログをクエリする際、バイナリログフィールドを選択し、主キーでフィルタリングするクエリはデータを返しません。バイナリログフィールドを選択しない同様のクエリは、正しいデータを返します。次のサンプルクエリでは、a は test テーブルの主キーです。

--バイナリログフィールドを含む SQL
SELECT hg_binlog_lsn, hg_binlog_event_type, hg_binlog_timestamp_us FROM test WHERE a = '723295948321120659';
--バイナリログフィールドを含まない SQL
SELECT * FROM test WHERE a = '723295948321120659';

バックエンドオプティマイザーが主キーフィルターを含むクエリの実行プランを誤って生成し、不正確な結果を返します。

影響を受けたバージョン:

V1.1.35 以前

修正済みバージョン:

V1.1.36 以降

修正済みバージョンにアップグレードします。

P2

インスタンスの CPU が全負荷状態の場合、HoloWeb でアクティブなクエリやアクティブな接続などの情報をクエリできません。

CPU が全負荷状態の場合、pg_stat_activity などのシステムテーブルのクエリがリソース制限により失敗します。

影響を受けたバージョン:

V1.1.35 以前

修正済みバージョン:

V1.1.36 以降

修正済みバージョンにアップグレードします。

P1

クエリで空の ANY 配列を使用すると、Hologres インスタンスが再起動します。

バックエンドが空の ANY 配列を誤って処理するため、インスタンスがコアダンプします。

影響を受けたバージョン:

V1.1.35 以前

修正済みバージョン:

V1.1.36 以降

修正済みバージョンにアップグレードします。

P1

lead または lag 関数の第 3 引数を省略したクエリが、Column column5 should be non-nullable but the values contain 1 nulls エラーで失敗します。

エグゼキュータが lead および lag 関数の出力の NULL 許容性を誤って推論するため、クエリが失敗します。

影響を受けたバージョン:

V1.1.34 以前

修正済みバージョン:

V1.1.35 以降

修正済みバージョンにアップグレードします。

P2

Flink から Roaring Bitmap 列を持つ Hologres テーブルへのデータ書き込みが遅くなります。

Roaring Bitmap データのバックエンド書き込みパスが最適化されていないため、パフォーマンスが低下します。

影響を受けたバージョン:

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

order by 句を含む SQL クエリは、PlStmt Translation: Attribute number 4 not found in project list というエラーで失敗します。

order by 句はソート演算子を生成します。実行プランを作成する際、オプティマイザーがこの演算子に対して不正確なプッシュダウン決定を行います。その結果、プランの生成が失敗し、エラーが報告されます。

影響を受けたバージョン:

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 でアップグレード/ダウングレードのために再起動した後、最初のクエリが異常に遅くなります。実行プランには不正確な統計が表示されます。クエリを再実行すると、統計が修正され、パフォーマンスが回復します。

インスタンスをアップグレードして再起動した後、最初のクエリが正しい統計バージョンを取得できず、不正確な統計とパフォーマンスの低下につながります。

影響を受けたバージョン:

V1.1 ~ V1.1.32

修正済みバージョン:

V1.1.33 以降

  • クエリを再実行して統計を修正し、パフォーマンスを回復します。

  • 修正済みバージョンにアップグレードします。

P0

テーブルで drop または truncate コマンドを実行中にテーブルをクエリすると、インスタンスが再起動します。

テーブルに対するクエリが完了した後、リソースが解放される前に、そのテーブルでdrop または truncate 操作が発生すると、インスタンスがコアダンプして再起動します。

影響を受けたバージョン:

V1.1.32 以前

修正済みバージョン:

V1.1.33 以降

修正済みバージョンにアップグレードします。

P1

V1.1 へのアップグレード後、10 を超えるテーブルを含む結合でメモリ不足 (OOM) エラーが発生します。同じ操作は以前のバージョンでは正常に実行されていました。

オプティマイザーがテーブルの行数を過大評価します。その結果、エグゼキュータが初期化中にメモリ不足になり、計算が続行できなくなります。

影響を受けたバージョン:

V1.1 ~ V1.1.31

修正済みバージョン:

V1.1.32 以降

修正済みバージョンにアップグレードします。

P2

クライアント側のバッチ処理により、ポイントクエリシナリオのレイテンシが増加します。

各ワーカーノードには 1 つのポイントクエリ書き込みノードしかありません。リクエストが単一の書き込みノードに集中すると、バッチ処理が発生しやすくなります。バッチサイズの制限が大きすぎるため、待機時間が長くなり、ポイントクエリのレイテンシが高くなります。

影響を受けたバージョン:

V1.1 ~ V1.1.31

修正済みバージョン:

V1.1.32 以降

修正済みバージョンにアップグレードします。

P1

ストレージ暗号化が有効なテーブルで、LIMIT ... OFFSET ... を含むクエリは結果を返しますが、order by 句も含まれている場合、同じクエリは結果を返しません。

ストレージ暗号化が有効なテーブルで、ドキュメントから逸脱した設定により、不正確なバージョンが生成されます。これにより、MemTable でデータが失われ、クエリが結果を返さなくなります。

影響を受けたバージョン:

V1.1 ~ V1.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_date、または to_timestamp 関数を使用すると、time after 2282 not supported エラーで失敗します。

to_charto_date、および to_timestamp 関数は、1925 年から 2282 年までの時間範囲をサポートしています。時間がこの範囲外の場合、エラーが報告されます。

影響を受けたバージョン:

V1.1.30 以前

修正済みバージョン:

V1.1.31 以降

修正済みバージョンにアップグレードします。アップグレード後、Grand Unified Configuration (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

内部結合クエリが期待される結果よりも少ない結果を返します。

結合演算子は、同じ 結合キー を持つデータが同じワーカーノードに分散されることを要求します。しかし、オプティマイザーがデータ分散を誤って推論し、同じキーを持つデータを異なるノードにシャッフルします。これにより、不正確な 結合 が発生し、期待されるよりも少ない行が返されます。

影響を受けたバージョン:

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

結合キー なしでテーブル結合を実行すると、実行プランの生成が失敗します。

影響を受けたバージョン:

V1.1 ~ V1.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 関数の 2 つのパラメーターは非 NULL として定義されていますが、基になるユーザー定義関数 (UDF) は NULL 結果を返す可能性があります。この不一致により、実行プラン生成中に非 NULL チェックが失敗します。

影響を受けたバージョン:

V1.1.27 以前

修正済みバージョン:

V1.1.28 以降

修正済みバージョンにアップグレードします。

P1

クエリが次のエラーで失敗します。ERROR: Build query failed: Table group [] FROM table must equals table group [] FROM QO.

実行プランの生成中、DML ノードはダウンストリームノードから特定のテーブルグループ情報を必要とします。しかし、ダウンストリームノードがテーブルグループの NULL プロパティを推論するため、DML ノードの要件を満たせず、エラーが発生します。

影響を受けたバージョン:

V1.1.27 以前

修正済みバージョン:

V1.1.28 以降

修正済みバージョンにアップグレードします。

P1

drop table コマンドを実行するとハングし、コマンドを再試行すると CPU が急上昇します。

インスタンスで Auto Analyze が有効になっている場合、Auto Analyze は share_update_exclusive ロックを取得します。同時に、Auto Analyze は接続を使用し、新しい接続は統計をロードして access_shared_lock を取得します。ユーザーがこれらの 2 つのステップ中に DROP TABLE を実行すると、操作がハングします。

影響を受けたバージョン:

V1.1.27 以前

修正済みバージョン:

V1.1.28 以降

  • Auto Analyze 機能は、オフピーク時にのみ有効にします。

  • 修正済みバージョンにアップグレードします。

2021年11月

レベル

説明

原因

影響を受けるバージョン

回避策

P2 (最適化)

インスタンスの再起動後、一部のデータに対するクエリで一貫性のない結果が返されます。

バックエンドノードが再起動する際、他のノードとバージョンを同期する必要があります。このプロセス中に、古いバージョンのノードが元のデータにクエリを実行すると、結果に不整合が生じます。この修正により、再起動したノードは同期が完了するまでリクエストを処理できなくなり、データ整合性が確保されます。

影響を受けるバージョン:

1.1.24 以前

修正済みバージョン:

1.1.26 以降

最新バージョンにアップグレードしてください。

P2

MaxCompute からデータをインポートする際にset hg_experimental_foreign_table_split_size = 64; INSERT INTO public.lineitem SELECT * FROM public.odps_lineitem_1t ; を実行すると、メモリ使用量が高くなるか、OOM エラーが発生します。この問題は、パラメーターを 128 に設定した場合には発生しません。

システムがメタデータからすべての StripesMeta をロードするため、メモリ使用量が高くなります。

影響:

1.1.24 以前

修正:

1.1.26 以降

  • set hg_experimental_foreign_table_split_size = 64; コマンドは使用しないでください。

  • 最新バージョンにアップグレードしてください。

P1

分散キーまたは プライマリキー IN 演算子を使用する際、 IN リストの要素数が 100 を超えると、最終結果が不正になります。

IN リストに 100 を超える要素が含まれている場合、シャードプルーニング後のシャード数は予測不能になります。これにより、不正な実行計画が生成され、誤った結果につながる可能性があります。

影響範囲:

1.1.24 以前

修正済みバージョン:

1.1.26 以降

  • IN リストの要素数を 100 以下に減らします。

  • 最新バージョンにアップグレードします。

P1

外部テーブルから内部テーブルへデータをインポートする際、まずinsert 操作を実行し、続いて既存データに対してdelete 操作を実行すると、insert 文が古いパーティションを取得してしまい、挿入される行数が 0 になる場合があります。

インポートプロセス中にストレージの例外が発生すると、最新のデータを取得できなくなります。

対象:

1.1.24 およびそれ以前

修正済みバージョン:

1.1.26 およびそれ以降

最新バージョンにアップグレードしてください。

P1

行が非常に広く、データサイズが数百 MB を超える場合、単一のレコードが RECORDBATCH の上限を超えることがあります。これにより、行数がゼロの RECORDBATCH が出力され、バグがトリガーされてインスタンスが再起動します。

バックエンドが非常に幅の広い行の行数を誤って処理するため、インスタンスが再起動します。

影響範囲:

1.1.24 以前

修正済みバージョン:

1.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` 値の精度に一貫性がない場合、バックエンドコンピュートエンジンによる結果の処理に一貫性がなくなり、エラーが発生します。

対象:

1.1.24 およびそれ以前。

修正バージョン:

1.1.26 およびそれ以降。

  • in 式では、データ値を 1 つだけ使用してください。

  • 最新バージョンにアップグレードしてください。

P2 (最適化)

次のエラーが報告されます: org.postgresql.util.PSQLException: ERROR: Total memory used by all existing queries exceeded memory limitation 20132659200: xxxxx bytes used.

シングルノードのコンピューティングメモリが 20 GB の制限を超えています。シングルノードの合計メモリ制限は 64 GB で、3 分の 1 がコンピューティング用、3 分の 1 がキャッシュ用、3 分の 1 がメタデータ用に割り当てられています。

影響範囲:

1.1.23 以前

修正済みのバージョン:

1.1.24 以降

バージョン 1.1.24 では、弾性的なメモリ調整が導入されています。バックエンドがノードのメモリ使用量を検出し、コンピューティングメモリのサイズを調整して 20 GB の制限を緩和します。エラーが解決しない場合は、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 句のサブセットです。このため、クエリはプランを生成できず、エラーが発生します。

影響を受けるバージョン:

1.1.23 以前

修正:

1.1.24 以降

最新バージョンにアップグレードしてください。

P1

Flink または Holo Client を使用し、単一の操作でバイナリログテーブルに複数の重複データエントリを書き込むと、中間エントリのバイナリログが失われます。

重複データをバイナリログテーブルに書き込む際、バックエンドエグゼキュータは最終データエントリに対してのみバイナリログを生成し、その他は無視します。

対象:

1.1.23 以前

修正済みバージョン:

1.1.24 以降

最新バージョンにアップグレードしてください。

P0

DECIMAL データ型を持つ MaxCompute の外部テーブルをクエリすると、クエリごとに最後の 2 行の値がランダムに変わります。

MaxCompute から ORC フォーマットのデータを直接読み取る際、ファイルに DECIMAL 型が含まれている場合、ストレージの最適化中に Hologres によって読み取られる DECIMAL の統計情報がランダムになります。

影響範囲:

1.1.23 以前

修正済みのバージョン:

1.1.24 以降

最新バージョンにアップグレードしてください。

P1

次のエラーが報告されます: Remote seek with parameters is not supported

sort 演算子はデフォルトで rewindable プロパティを持ちますが、下位レイヤーがそれをサポートしていないため、クエリがプランを生成する際にエラーが報告されます。

影響を受けるバージョン:

1.1.23 以前のバージョン。

修正済みのバージョン:

1.1.24 以降のバージョン。

最新バージョンにアップグレードしてください。

P1

Hologres V1.1 でリソースグループが設定されている場合、クエリを実行すると OOM エラーが発生します。エラーメッセージは used by all existing queries exceeded memory limitation です。アクティブなクエリがない場合でも、低速クエリまたはアクティブなクエリについてシステムビューを照会すると、OOM エラーが発生します。

例外が原因で発生した可能性のあるメモリリークにより、クエリエンジン (QE) のメモリ使用量がしきい値を超えることがあります。その結果、リソースグループのクォータを超過したため、新しいクエリがブロックされます。

影響範囲:

1.1 から 1.1.23 まで。

修正済みのバージョン:

1.1.24 以降。

  • リソースグループを再作成してください。

  • 最新バージョンにアップグレードしてください。

P2

次のエラーが断続的に報告されます: fail to setremoteost invalid remon ip

バックエンドプロセスが IP ホワイトリスト変数を初期化される前にチェックするため、断続的にエラーが発生します。

影響範囲:

1.1.23 以前

修正済みのバージョン:

1.1.24 以降

  • 操作を再試行してください。

  • 最新バージョンにアップグレードしてください。

P1

テーブルに対してAnalyze またはauto analyze を実行する際に、テーブルに大文字と小文字が異なる同一のカラム名が含まれている場合、CheckSchema failed というエラーが報告されます。

フロントノードが、最適化されたツリー構造から PowerBuilderTree への変換中にカラムの序数を誤って識別することが、エラーの原因となります。

影響:

1.1.22 以前

修正済みのバージョン:

1.1.23 以降

最新バージョンにアップグレードしてください。

P1

複数テーブルのRightOuterJoin を含む SQL ステートメントを実行すると、limit 句がない場合にクエリが 1 行しか返しません。limit 句を追加すると、複数の重複した行が表示されます。

RightOuterJoin を実装する際に、オプティマイザーが不正な実行計画を生成し、結果セットに重複データが発生します。

影響を受けるバージョン:

1.1.22 以前

修正済みのバージョン:

1.1.23 以降

最新バージョンにアップグレードしてください。

P1

case when 文において、TEXT フィールドを group by agg の両方のパラメーターとして使用すると、プランを生成できず、次のエラーが発生します: ERROR: Query could not generate plan by Hologres : PlStmt Translation: Attribute number 46046320 not found in project list

case when 文において、 agg パラメーターフィールドの colref が見つからないため、プランを生成できません。

影響範囲:

1.1.22 以前

修正済みのバージョン:

1.1.23 以降

最新バージョンにアップグレードしてください。

P1

次のエラーが報告されます: ERROR: internal error: Writing column: item_emb with array size: 682790219 violates fixed size list (32) constraint declared in schema

ストレージエンジン (SE) が const 配列の最適化を正しく処理できないため、実行エラーが発生します。

対象:

1.1 から 1.1.21

修正済みバージョン:

1.1.22 以降

最新バージョンにアップグレードしてください。

P0

insert on conflict do update set 文を使用する際に、文中のサブクエリで複数行の値を 1 行に割り当てると (例: SET(mes1, mes2) = (SELECT mes1, mes2 FROM insert_on_conflict_do_update_negative_source))、インスタンスが再起動します。

サブクエリで複数行の値を 1 行に割り当てる構文は、複数式パラメーターを生成します。変換プロセスで、このパラメーターに必須の column id 情報を追加できないため、インスタンスが再起動します。

影響を受けるバージョン:

1.1.21 以前のバージョン。

修正済みのバージョン:

1.1.22 以降のバージョン。

最新バージョンにアップグレードしてください。

P2

DECIMAL データを乗算すると、次のエラーが発生します: code: kActorInvokeError msg: "HGERR_code 22003 HGERR_msge numeric field overflow HGERR_detl A field with precision 38, scale 36 must round to an absolute value less than 10^2. HGERR_ctxt HGERR_erno 2 HGERR_end" err_data { filename: "FunctionsCast.cc" lineno: 323 funcname: "DecimalOverflowCheck" sqlerrcode: 50331778 message: "numeric field overflow" detail: "A field with precision 38, scale 36 must round to an absolute value less than 10^2." context: "

DECIMAL 型のフィールド、例えば numeric(38, 18) numeric(38, 18) を乗算すると、結果は numeric(38, 36) になります。小数点以下の桁数が増加することでオーバーフローが発生し、エラーがトリガーされる可能性があります。

影響を受けるバージョン:

1.1.21 以前

修正:

1.1.22 以降

  • round 関数を使用してください。

  • 最新バージョンにアップグレードしてください。

2021年9月~10月

優先度

説明

原因

影響を受けるバージョンと修正済みバージョン

回避策

P0

次のエラーが発生します:"database is not accepting commands to avoid wraparound data loss in database ""template0""

バックエンドは、各クエリに自動増分の transaction id を割り当てます。QPS が高いインスタンスでは、ID が整数値の上限を超え、エラーがトリガーされることがあります。

影響を受けるバージョン:

V0.10.19 ~ V0.10.42

修正済みバージョン:

V1.1 以降

より新しいバージョンにアップグレードしてください。

P1

テーブルのカラムを部分的に更新すると、断続的に以下のエラーが発生します: internal error: Record batch has 519 rows but length of columns is 7407

フィールドに 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 に追加されますが、この Set は元の順序を保持しません。

影響を受けるバージョン:

V0.10.42

修正済みバージョン:

V0.10.45 以降

  • 手動で CREATE TABLE 文を実行して、行指向テーブルを作成します。

  • 新しいバージョンにアップグレードします。

P2

パーティションを削除すると、次のエラーが発生します:FAILED: ERROR: query id[27xxxxxxxxxxxxxx37] SE object lock failed

パーティションを削除する際に、バックエンドでクエリが異常終了するため、このエラーが発生します。

影響を受けるバージョン:

V0.10.41 以前

修正済みのバージョン:

V0.10.42 以降

  • テーブルに対していかなる操作も行わないでください。

  • インスタンスを再起動するには、サポートにお問い合わせください。

  • 新しいバージョンにアップグレードしてください。

P2

データのクエリまたは書き込み時に、次のエラーが発生します: ERROR: internal error: Invalid table id : 641 MDTableGroup

このエラーは通常、データ定義言語 (DDL) 操作が完了した後、バックエンドノードがまだ再起動中の場合に発生します。この間にデータ操作言語 (DML) 操作を実行すると、ノード間でバージョンの不一致が発生し、このエラーがトリガーされる可能性があります。

影響を受けるバージョン:

V1.1.18 以前

修正済みバージョン:

V1.1.19 以降

  • 少し時間をおいてから操作を再試行してください。

  • 新しいバージョンにアップグレードしてください。

2021年8月

レベル

説明

原因

影響を受けるバージョンと修正済みのバージョン

回避策

P1

テーブルで Hologres のバイナリログを有効化し、作成時に短いバイナリログ TTL を設定すると、ビジネスデータ量が増加していなくても、テーブルに保存されているデータは継続的に増加します。

テーブル作成時に指定した binlog TTL は有効にならず、システムのデフォルト値である 100年が使用されます。

影響を受けるバージョン:

V0.10

修正済みバージョン:

V1.1

  • call set_table_property('schema.table', 'binlog.ttl', '86400'); を実行して、テーブルの binlog TTL を手動でより小さい値に変更します。

  • V1.1 以降のバージョンにアップグレードします。

P1

列指向テーブルで UPDATE、DELETE、INSERT ON CONFLICT といった操作を頻繁に行うと、ストレージ領域が継続的に増加します。

効率を向上させるため、Hologres はマークデリートアルゴリズムを使用します。ファイル内のマークされたレコードの比率が一定のしきい値に達すると、Hologres は領域を回収するバックグラウンドのコンパクションプロセスをトリガーします。Hologres の不具合により、このプロセスが開始されない場合があります。

影響を受けるバージョン:

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 ステートメントに以下の関数が 1 つ以上含まれている場合、メモリリークが発生し、メモリ使用量が急激に増加する可能性があります:

  • 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

スーパーユーザー以外のユーザーが SELECT hg_dump_script('xxxx') 関数を実行すると、次のエラーが報告されます: ERROR: permission denied for table pg_subscription

hg_dump_scriptpg_subscription リレーションを間接的に呼び出しますが、pg_subscription には機密情報が含まれている可能性があります。デフォルトでは、スーパーユーザのみがこのテーブルにアクセスできます。

影響を受けるバージョン:

V0.10

修正済みバージョン:

V1.1

  • pg_subscription リレーションには、hg_dump_script にとって有用な情報が格納されていません。この問題は V1.1 で、デフォルトの動作を変更することで解決されています。

  • 権限の問題が発生した場合は、現在のユーザーに pg_subscription テーブルへのアクセス権を付与してください。

P2

left join を含む SQL ステートメントは 1 行を返しますが、このステートメントに limit 句を追加すると、複数の重複した行が返されます。

left join は、下位レイヤーで right outer join に変換されます。エンジンが right outer join を実装する際、右側でブロードキャストが使用されるため、不正な実行計画が生成されます。これにより、結果に重複行が発生します。explain sql を実行して、実行計画がブロードキャストを使用しているかどうかを確認できます。

影響を受けるバージョン:

V0.10.40 以前

修正済みバージョン:

V1.1

最新バージョンにアップグレードしてください。

P2

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 演算子のパターンに、バックスラッシュとそれに続く文字または数字が含まれている場合に発生します。 例:

SELECT * FROM test_tb where a like '%\c%';SELECT * FROM test_tb where a like '%F\G%';

エンジンはこのパターンを完全にはサポートしていないため、エラーが発生します。

影響を受けるバージョン:

V0.10.38 以前

修正済みバージョン:

V0.10.39 以降

最新バージョンにアップグレードしてください。

P2

行指向テーブルをプライマリキーでクエリすると、結果に一貫性がなくなるか、次のエラーが報告されます: Duplicate keys detected when building hash table

この問題は、行指向テーブルの作成時に、プライマリキーとクラスタリングキーの列の順序が一致しない場合に発生します。例:

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 以降

  • テーブルを再作成し、プライマリキーとクラスタリングキーの列の順序が同じになるようにします。

  • 最新バージョンにアップグレードします。

P2

新規作成されたスキーマでデータマスキングを使用する場合、マスクされたデータをクエリすると、次のエラーが表示されます: hg_anon_mask_name(text) doesnt exist

Hologres は public スキーマにデータマスキング関数を作成するため、他の新しく作成されたスキーマでは利用できません。

影響を受けるバージョン:

V0.10.35 以前

修正済みのバージョン:

V0.10.36 以降

  • データマスキング関数は、パブリックスキーマでのみ使用してください。

  • 最新バージョンにアップグレードしてください。

P2

次のエラーが報告されます:internal error:string decimal literal can not be tentative

SQL ステートメントの IN 句に、精度の異なる 10 進数値が含まれています。 例:

SELECT * FROM table where sval in(170344.964,1339107.84);

影響を受けるバージョン:

V0.10.34 以前

修正済みバージョン:

V0.10.35 以降

  • SQL ステートメントを修正し、IN 句内の 10 進数の値の精度が同じになるようにしてください。

  • 最新バージョンにアップグレードしてください。

2021年7月

レベル

説明

原因

バージョン

回避策

P0

RoaringBitmap フィールドに辞書エンコーディングが設定されている場合、書き込み操作は失敗し、インスタンスはクエリできなくなります。

RoaringBitmap タイプは辞書エンコーディングをサポートしていません。この設定を強制すると、エンコーディングロジックが破損し、継続的な書き込みの失敗を引き起こします。

影響:

V0.10.24 およびそれ以前

修正バージョン:

V0.10.25 およびそれ以降

  • RoaringBitmap フィールドの辞書エンコーディングを無効にします。

  • 新しいバージョンにアップグレードします。

P0

public schema 以外のスキーマで add comment on tablename is "is comment" を実行すると、書き込み操作やクエリ操作がハングします。

public schema 以外のスキーマで、SQL ステートメントにスキーマ名を指定せずに add comment 操作 (たとえば add comment on tablename is "comment") を実行すると、シングルノードに障害が発生し、その結果、書き込み/クエリ操作がハングします。

影響範囲:

V0.10.20 およびそれ以前

修正済みのバージョン:

V0.10.21 およびそれ以降

  • add comment 文を使用する際は、スキーマ名を含めてください: add comment on schema.tablename is "comment"

  • 新しいバージョンにアップグレードしてください。

P0

操作が失敗し、cannot acquire lock in time というエラーが表示されます。

以前のバージョンでは DDL 文がロックされていたため、同一テーブルに対してクエリと削除操作が同時に多数実行されると、バックエンドノードでデッドロックが発生し、そのテーブルに対するすべての操作がハングする可能性がありました。

影響範囲:

V0.9.22 以前

修正済みバージョン:

V0.9.23 以降

新しいバージョンにアップグレードしてください。

P1

新しいデータが書き込まれなくても、ストレージ容量は線形に増加します。

実際のデータ変更が発生しないデータインポートに insert on conflict do update set pk =pk 文を使用すると、最適化バグがトリガーされ、ストレージ領域が線形的に増加します。

対象:

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 句に 分散キー が含まれているため、実行計画が不正になり、対応する シャード が見つかりません。

影響範囲:

V0.10.20 以前

修正済みバージョン:

V0.10.21 以降

後継バージョンにアップグレードしてください。

P1

エラー: gporca でプランを生成できませんでした: Group by キーの型がサポートされていません。

このエラーは、GROUP BY 句で厳密でないデータ型のフィールドが使用されているために発生します。

対象:

V0.9 以前のバージョン。

修正済みバージョン:

V0.10 で制限が追加されました。

  • GROUP BY 句では、非厳密なデータ型を使用しないでください。

  • 新しいバージョンにアップグレードしてください。

P1

外部テーブルを照会すると、エラー: unsupported column type:list が返されます。

MaxCompute テーブルに array column を追加し、データを入力しないと、外部テーブルからこのテーブルに対する後続のクエリが失敗するエラーが発生します。

影響範囲:

V0.9.22 以前

修正済みのバージョン:

V0.9.23 以降

  • MaxCompute テーブルに 配列列 を追加した後、すぐにその列にデータを書き込みます。

  • 新しいバージョンにアップグレードしてください。

P1

操作が失敗し、次のエラーが表示されます:ERROR: internal error: The left child should be column ref, num_children: 1

クエリで varchar タイプをクラスタリングキーとして使用すると、このエラーが発生します。

影響範囲:

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 以降

回避策はありません。インスタンスを再起動するか、より新しいバージョンにアップグレードする必要があります。