From 10ae5b451f0706b2dba734b89feba258dd2e10f5 Mon Sep 17 00:00:00 2001 From: Haruka Takatsuka Date: Mon, 6 Jan 2025 16:24:36 +0900 Subject: [PATCH 1/2] =?UTF-8?q?custom-scan.sgml=20=E3=81=AE=20PG17=20?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C=E3=81=AE=E6=97=A5=E6=9C=AC=E8=AA=9E=E8=A8=B3?= =?UTF-8?q?=E3=81=A7=E3=81=99=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/src/sgml/custom-scan.sgml | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/doc/src/sgml/custom-scan.sgml b/doc/src/sgml/custom-scan.sgml index 43e388e4470..9f57ed55b41 100644 --- a/doc/src/sgml/custom-scan.sgml +++ b/doc/src/sgml/custom-scan.sgml @@ -64,9 +64,9 @@ Gather and Gather Merge paths, which are made after this call so that they can use partial paths added by the hook): --> -《マッチ度[90.062112]》カスタムスキャンプロバイダは、典型的には、以下のフックを設定することでベースリレーションのためのパスを追加します。 +カスタムスキャンプロバイダは、典型的には、以下のフックを設定することでベースリレーションのためのパスを追加します。 このフックはコアのコードがそのリレーションへのすべてのアクセスパスを生成した後で呼び出されます。 -(フックの呼び出しの後に作成されるギャザーパス(Gather path)を除きます。フックが追加した部分パスをギャザーパスが利用できるようにするためです。) +(フックの呼び出しの後に作成されるギャザーパス(Gather path)とギャザーマージパス(Gather Merge path)を除きます。フックが追加した部分パスをギャザーパスが利用できるようにするためです。) typedef void (*set_rel_pathlist_hook_type) (PlannerInfo *root, RelOptInfo *rel, @@ -86,12 +86,9 @@ extern PGDLLIMPORT set_rel_pathlist_hook_type set_rel_pathlist_hook; custom scan provider is responsible for initializing the CustomPath object, which is declared like this: --> -《マッチ度[81.488934]》このフックはコアシステムが生成したパスを検査し、修正し、あるいは削除するために使うことができますが、カスタムスキャンプロバイダは、典型的にはCustomPathオブジェクトを生成し、add_pathを使ってそれをrelに追加することのみを行います。 +このフックはコアシステムが生成したパスを検査し、修正し、あるいは削除するために使うことができますが、カスタムスキャンプロバイダは、典型的にはCustomPathオブジェクトを生成し、add_path、または、部分パスであるならadd_partial_pathを使って、それをrelに追加することのみを行います。 カスタムスキャンプロバイダはCustomPathオブジェクトの初期化を担当します。 このオブジェクトは以下のように宣言されています。 -《機械翻訳》このフック関数は、経路によって生成されたコアシステムを検査、変更、または削除するために使用できますが、カスタムスキャンプロバイダは通常、自分自身を生成するCustomPathオブジェクトに限定し、add_pathを使用して、またはadd_partial_pathを使用してrelに追加します。 -カスタムスキャンプロバイダは、CustomPathオブジェクトを初期化する責任があります。 -これは、次のように宣言されます。 typedef struct CustomPath { @@ -134,30 +131,19 @@ typedef struct CustomPath point to a (usually statically allocated) object implementing the required custom path methods, which are further detailed below. --> -《マッチ度[80.526021]》pathは、他のすべてのパスと同じく、行数の推定値、開始とトータルのコスト、このパスで提供されるソート順を含めて初期化される必要があります。 +pathは、他のすべてのパスと同じく、行数の推定値、開始とトータルのコスト、このパスで提供されるソート順を含めて初期化される必要があります。 flagsはビットマスクで、スキャンプロバイダが特定のオプションをサポートできるかどうかを指定します。 カスタムパスが逆向きスキャンをサポートできるならCUSTOMPATH_SUPPORT_BACKWARD_SCANを、マークとリストアをサポートできるならCUSTOMPATH_SUPPORT_MARK_RESTOREを、プロジェクションを実行できるならCUSTOMPATH_SUPPORT_PROJECTIONflagsに含めます。 (CUSTOMPATH_SUPPORT_PROJECTIONが設定されていなければ、スキャンノードはスキャンされるリレーションのVarを生成するよう依頼されるだけです。一方、そのフラグが設定されていれば、スキャンノードはこのVarのスカラ式を評価できないといけません。) オプションのcustom_pathsはこのカスタムパスのノードで使用されるPathのノードのリストです。 プランナがこれをPlanのノードに変換します。 +後述するように、結合リレーションに対してもカスタムパスを作成できます。 +このような場合には、カスタムパスが置き換える結合に適用する結合句の集合を格納するために、custom_restrictinfoを使用する必要があります。 +それ以外の場合はNILです。 custom_privateはカスタムパスのプライベートデータを格納するために使うことができます。 プライベートデータはnodeToStringが処理できるような形式で格納してください。 そうすることで、カスタムパスを出力するデバッグルーチンが設計通りに動作します。 methodsは要求されるカスタムパスのメソッドのオブジェクト(通常は静的に割り当てられる)を指している必要があり、以下でさらに詳しく説明します。 -《機械翻訳》pathは、このパスによって提供される行-カウントの推定値、スタートおよび総コスト、ソート順序付けを含む他のパスと同様に初期化する必要があります。 -flagsはビットマスクで、スキャンプロバイダが特定のオプショナル機能をサポートできるかどうかを指定します。 -flagsは、カスタムパスが後方スキャンをincludeできる場合はCUSTOMPATH_SUPPORT_BACKWARD_SCAN、サポートマークとリストアをサポートできる場合はCUSTOMPATH_SUPPORT_MARK_RESTORE、投影を実行できる場合はCUSTOMPATH_SUPPORT_PROJECTIONになります。 -CUSTOMPATH_SUPPORT_PROJECTIONが設定されていない場合、スキャンノードはスキャンされたリレーションの変数を生成するように要求されるだけです。 -一方、そのフラグが設定されている場合、スキャンノードはこれらの変数に対してスカラ式を評価できる必要があります。 -オプショナルcustom_pathsは、このカスタム-パスノードによって使用されるPathノードのリストであり、これらはプランナによってPlanノードに変換される。 -後述するように、結合経路に対してもカスタムリレーションを作成することができる。 -このようなケースでは、カスタム_restrictinfoを使用して、結合パスが置き換える結合に適用する一連のカスタム句を保存する必要があります。 -それ以外の場合はNILです。 -custom_privateは、カスタムパスのプライベートデータを格納するために使用できます。 -プライベートデータは、nodeToStringで処理できるフォームに格納する必要があります。 -これにより、カスタムパスをプリントしようとするデバッグルーチンが設計どおりに動作します。 -methodsは、必要なポイントオブジェクトメソッドを実装する(通常は静的に割り当てられた)カスタムにパスする必要があります。 -詳細については、以下を参照してください。 @@ -201,9 +187,8 @@ extern PGDLLIMPORT set_join_pathlist_hook_type set_join_pathlist_hook; CustomPath path into a plan, if it is selected by the planner as the best path for the joinrel. --> -《機械翻訳》ノートまた、extra->restrictlistとして渡される結合に適用される結合条項のセットは、内部リレーションと外部地域の組み合わせによって異なります。 -joinrelに対して生成されるCustomPathパスには、使用する結合句のセットが含まれている必要があります。 -プランナがjoinrelのベストパスとして選択した場合、CustomPathパスをプランに変換するためにプランナによって使用されます。 +extra->restrictlistとして渡される結合に適用される結合句のセットは、内部と外部のリレーションの組み合わせによって異なることにも注意してください。 +joinrelに対して生成されるCustomPathパスには、使用する結合句の集合が含まれていなければなりません。このパスをプランナがjoinrelに対する最適パスとして選択した場合、これらはCustomPathパスをプランに変換するためにプランナによって使用されます。 From 56355189d7b9dc22e92831acff7dc32a041e2c87 Mon Sep 17 00:00:00 2001 From: Haruka Takatsuka Date: Thu, 9 Jan 2025 12:50:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BA=8B=E9=A0=85?= =?UTF-8?q?=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 括弧外に「。」を出すために4文に分割されていたものを2文にまとめました。 --- doc/src/sgml/custom-scan.sgml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/src/sgml/custom-scan.sgml b/doc/src/sgml/custom-scan.sgml index 9f57ed55b41..1c43f1628ff 100644 --- a/doc/src/sgml/custom-scan.sgml +++ b/doc/src/sgml/custom-scan.sgml @@ -65,8 +65,7 @@ they can use partial paths added by the hook): --> カスタムスキャンプロバイダは、典型的には、以下のフックを設定することでベースリレーションのためのパスを追加します。 -このフックはコアのコードがそのリレーションへのすべてのアクセスパスを生成した後で呼び出されます。 -(フックの呼び出しの後に作成されるギャザーパス(Gather path)とギャザーマージパス(Gather Merge path)を除きます。フックが追加した部分パスをギャザーパスが利用できるようにするためです。) +このフックはコアのコードがそのリレーションへのすべてのアクセスパスを生成した後で呼び出されます(フックが追加した部分パスを利用できるようにするためにフックの呼び出しの後に作成される、ギャザーパス(Gather path)とギャザーマージパス(Gather Merge path)を除きます)。 typedef void (*set_rel_pathlist_hook_type) (PlannerInfo *root, RelOptInfo *rel,