public inbox for [email protected]  
help / color / mirror / Atom feed
[PATCH 13/21] doc review for FDW bulk inserts
31+ messages / 6 participants
[nested] [flat]

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/21] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 2e73d296d2..04bc052ee8 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -626,7 +626,7 @@ ExecForeignBatchInsert(EState *estate,
      Insert multiple tuples in bulk into the foreign table.
      The parameters are the same for <function>ExecForeignInsert</function>
      except <literal>slots</literal> and <literal>planSlots</literal> contain
-     multiple tuples and <literal>*numSlots></literal> specifies the number of
+     multiple tuples and <literal>*numSlots</literal> specifies the number of
      tuples in those arrays.
     </para>
 
@@ -655,7 +655,7 @@ ExecForeignBatchInsert(EState *estate,
      <literal>NULL</literal>, attempts to insert into the foreign table will
      use <function>ExecForeignInsert</function>.
      This function is not used if the <command>INSERT</command> has the
-     <literal>RETURNING></literal> clause.
+     <literal>RETURNING</literal> clause.
     </para>
 
     <para>
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--jI8keyz6grp/JLjh
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* [PATCH 13/18] doc review for FDW bulk inserts
@ 2021-01-23 23:17 Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: Justin Pryzby @ 2021-01-23 23:17 UTC (permalink / raw)

b663a4136331de6c7364226e3dbf7c88bfee7145
---
 doc/src/sgml/fdwhandler.sgml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml
index 854913ae5f..12e00bfc2f 100644
--- a/doc/src/sgml/fdwhandler.sgml
+++ b/doc/src/sgml/fdwhandler.sgml
@@ -672,9 +672,8 @@ GetForeignModifyBatchSize(ResultRelInfo *rinfo);
 
      Report the maximum number of tuples that a single
      <function>ExecForeignBatchInsert</function> call can handle for
-     the specified foreign table.  That is, The executor passes at most
-     the number of tuples that this function returns to
-     <function>ExecForeignBatchInsert</function>.
+     the specified foreign table.  The executor passes at most
+     the given number of tuples to <function>ExecForeignBatchInsert</function>.
      <literal>rinfo</literal> is the <structname>ResultRelInfo</structname> struct describing
      the target foreign table.
      The FDW is expected to provide a foreign server and/or foreign
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0014-doc-review-logical-decode-in-prepare.patch"



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails
@ 2023-10-25 12:12 Alvaro Herrera <[email protected]>
  2023-10-27 09:05 ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails tender wang <[email protected]>
  2024-07-18 06:34 ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
  0 siblings, 2 replies; 31+ messages in thread

From: Alvaro Herrera @ 2023-10-25 12:12 UTC (permalink / raw)
  To: tender wang <[email protected]>; +Cc: Jehan-Guillaume de Rorthais <[email protected]>; pgsql-hackers

On 2023-Oct-25, tender wang wrote:

> Hi
>    Is there any conclusion to this issue?

None yet.  I intend to work on this at some point, hopefully soon.

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/






^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails
  2023-10-25 12:12 Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
@ 2023-10-27 09:05 ` tender wang <[email protected]>
  1 sibling, 0 replies; 31+ messages in thread

From: tender wang @ 2023-10-27 09:05 UTC (permalink / raw)
  To: Alvaro Herrera <[email protected]>; +Cc: Jehan-Guillaume de Rorthais <[email protected]>; pgsql-hackers

Hi Alvaro,
I re-analyzed this issue, and here is my analysis process.
step 1: CREATE TABLE p ( id bigint PRIMARY KEY )
    PARTITION BY list (id);
 step2: CREATE TABLE p_1 PARTITION OF p FOR VALUES IN (1);
 step3: CREATE TABLE r_1 (
    id   bigint PRIMARY KEY,
    p_id bigint NOT NULL,
    FOREIGN KEY (p_id) REFERENCES p (id)
  );
After above step 3 operations, we have below catalog tuples:
postgres=# select oid, relname from pg_class where relname = 'p';
oid | relname
-------+---------
16384 | p
(1 row)
postgres=# select oid, relname from pg_class where relname = 'p_1';
oid | relname
-------+---------
16389 | p_1
(1 row)
postgres=# select oid, relname from pg_class where relname = 'r_1';
oid | relname
-------+---------
16394 | r_1
(1 row)
postgres=# select oid, conname,conrelid,conparentid,confrelid from
pg_constraint where conrelid = 16394;
oid | conname | conrelid | conparentid | confrelid
-------+-------------------+----------+-------------+-----------
16397 | r_1_p_id_not_null | 16394 | 0 | 0
16399 | r_1_pkey | 16394 | 0 | 0
16400 | r_1_p_id_fkey | 16394 | 0 | 16384
16403 | r_1_p_id_fkey1 | 16394 | 16400 | 16389
(4 rows)
postgres=# select oid, tgrelid, tgparentid,
tgconstrrelid,tgconstrindid,tgconstraint from pg_trigger where tgconstraint
= 16403;
oid | tgrelid | tgparentid | tgconstrrelid | tgconstrindid | tgconstraint
-------+---------+------------+---------------+---------------+--------------
16404 | 16389 | 16401 | 16394 | 16392 | 16403
16405 | 16389 | 16402 | 16394 | 16392 | 16403
(2 rows)
postgres=# select oid, tgrelid, tgparentid,
tgconstrrelid,tgconstrindid,tgconstraint from pg_trigger where tgconstraint
= 16400;
oid | tgrelid | tgparentid | tgconstrrelid | tgconstrindid | tgconstraint
-------+---------+------------+---------------+---------------+--------------
16401 | 16384 | 0 | 16394 | 16387 | 16400
16402 | 16384 | 0 | 16394 | 16387 | 16400
16406 | 16394 | 0 | 16384 | 16387 | 16400
16407 | 16394 | 0 | 16384 | 16387 | 16400
(4 rows)
Because table p is partitioned table and it has one child table p_1. So
when r_1 add foreign key constraint, according to addFkRecurseReferenced(),
each partition should have one pg_constraint row(e.g. r_1_p_id_fkey1).
After called addFkRecurseReferenced() in ATAddForeignKeyConstraint(),
addFkRecurseReferencing() will be called, in which
it will add INSERT check trigger and UPDATE check trigger for r_1_p_id_fkey
but not for r_1_p_id_fkey1.
So when detach r_1 from r, according to DetachPartitionFinalize(), the
inherited fks should unlink relationship from parent.
The created INSERT and UPDATE check triggers should unlink relationship
link fks. But just like I said above, the r_1_p_id_fkey1
actually doesn't have INSERT check trigger.

I slightly modified the previous patch,but I didn't add test case, because
I found another issue.
After done ALTER TABLE r ATTACH PARTITION r_1 FOR VALUES IN (1);
I run the oidjoins.sql and has warnings as belwo:
psql:/tender/postgres/src/test/regress/sql/oidjoins.sql:49: WARNING:  FK
VIOLATION IN pg_trigger({tgparentid}): ("(0,3)",16401)
psql:/tender/postgres/src/test/regress/sql/oidjoins.sql:49: WARNING:  FK
VIOLATION IN pg_trigger({tgparentid}): ("(0,4)",16402)
postgres=# select oid, tgrelid, tgparentid,
tgconstrrelid,tgconstrindid,tgconstraint from pg_trigger where oid >= 16384;
  oid  | tgrelid | tgparentid | tgconstrrelid | tgconstrindid |
tgconstraint
-------+---------+------------+---------------+---------------+--------------
 16404 |   16389 |      16401 |         16394 |         16392 |        16403
 16405 |   16389 |      16402 |         16394 |         16392 |        16403
 16415 |   16384 |          0 |         16408 |         16387 |        16414
 16416 |   16384 |          0 |         16408 |         16387 |        16414
 16418 |   16389 |      16415 |         16408 |         16392 |        16417
 16419 |   16389 |      16416 |         16408 |         16392 |        16417
 16420 |   16408 |          0 |         16384 |         16387 |        16414
 16421 |   16408 |          0 |         16384 |         16387 |        16414
 16406 |   16394 |      16420 |         16384 |         16387 |        16400
 16407 |   16394 |      16421 |         16384 |         16387 |        16400
(10 rows)
oid = 16401 and oid = 16402 has been deleted.
The two trigger tuples are deleted in tryAttachPartitionForeignKey called
by CloneFkReferencing.
/*
* Looks good!  Attach this constraint.  The action triggers in the new
* partition become redundant -- the parent table already has equivalent
* ones, and those will be able to reach the partition.  Remove the ones
* in the partition.  We identify them because they have our constraint
* OID, as well as being on the referenced rel.
*/
The attached patch can't fix above issue. I'm not sure about the impact of
this issue. Maybe redundant triggers no need removed.

But it surely make oidjoings.sql fail if I add test case into v2 patch, so
I don't add test case in v2 patch.
No test case is not good patch. I just share my idea about this issue. Hope
to get your reply.




Alvaro Herrera <[email protected]> 于2023年10月25日周三 20:13写道:

> On 2023-Oct-25, tender wang wrote:
>
> > Hi
> >    Is there any conclusion to this issue?
>
> None yet.  I intend to work on this at some point, hopefully soon.
>
> --
> Álvaro Herrera         PostgreSQL Developer  —
> https://www.EnterpriseDB.com/
>


Attachments:

  [application/x-patch] v2-0001-Fix-partition-detach-issue.patch (2.0K, ../../CAHewXNnZkxCwpOW25FXnOF96-5QBLJ-_q5aipvkYtq0DFJavWw@mail.gmail.com/3-v2-0001-Fix-partition-detach-issue.patch)
  download | inline diff:
From 24491419ad65871e54207d3ef481d8abe529e1e1 Mon Sep 17 00:00:00 2001
From: "tender.wang" <[email protected]>
Date: Fri, 27 Oct 2023 13:48:48 +0800
Subject: [PATCH v2] Fix partition detach issue.

---
 src/backend/commands/tablecmds.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 416a98e7ce..3b897b620a 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -19356,7 +19356,9 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 	{
 		ForeignKeyCacheInfo *fk = lfirst(cell);
 		HeapTuple	contup;
+		HeapTuple	parentConTup;
 		Form_pg_constraint conform;
+		Form_pg_constraint parentConForm;
 		Constraint *fkconstraint;
 		Oid			insertTriggerOid,
 					updateTriggerOid;
@@ -19374,6 +19376,24 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 			continue;
 		}
 
+		/* For referenced-side, if it is partitioned table, each partition
+		 * has one row in pg_constraint. But it doesn't have INSERT CHECK trigger
+		 */
+		Assert(OidIsValid(conform->conparentid));
+		parentConTup = SearchSysCache1(CONSTROID,
+									   ObjectIdGetDatum(conform->conparentid));
+		if (!HeapTupleIsValid(parentConTup))
+			elog(ERROR, "cache lookup failed for constraint %u",
+				 conform->conparentid);
+		parentConForm = (Form_pg_constraint)GETSTRUCT(parentConTup);
+		if (parentConForm->confrelid != conform->confrelid &&
+			parentConForm->conrelid == conform->conrelid)
+		{
+			ReleaseSysCache(contup);
+			ReleaseSysCache(parentConTup);
+			continue;
+		}
+
 		/* unset conparentid and adjust conislocal, coninhcount, etc. */
 		ConstraintSetParentConstraint(fk->conoid, InvalidOid, InvalidOid);
 
@@ -19421,6 +19441,7 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 									   NULL, NULL);
 
 		ReleaseSysCache(contup);
+		ReleaseSysCache(parentConTup);
 	}
 	list_free_deep(fks);
 	if (trigrel)
-- 
2.25.1



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails
  2023-10-25 12:12 Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
@ 2024-07-18 06:34 ` Tender Wang <[email protected]>
  2024-07-19 13:18   ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
  1 sibling, 1 reply; 31+ messages in thread

From: Tender Wang @ 2024-07-18 06:34 UTC (permalink / raw)
  To: Alvaro Herrera <[email protected]>; +Cc: Jehan-Guillaume de Rorthais <[email protected]>; pgsql-hackers; Alexander Lakhin <[email protected]>

Hi Alvaro,

Recently, Alexander reported the same issue on [1]. And before that,
another same issue was reported on [2].
So I try to re-work those  issues.  In my last email on this thread, I said
that
"
I slightly modified the previous patch,but I didn't add test case, because
I found another issue.
After done ALTER TABLE r ATTACH PARTITION r_1 FOR VALUES IN (1);
I run the oidjoins.sql and has warnings as belwo:
psql:/tender/postgres/src/test/regress/sql/oidjoins.sql:49: WARNING:  FK
VIOLATION IN pg_trigger({tgparentid}): ("(0,3)",16401)
psql:/tender/postgres/src/test/regress/sql/oidjoins.sql:49: WARNING:  FK
VIOLATION IN pg_trigger({tgparentid}): ("(0,4)",16402)
"

And I gave the explanation:
"
The two trigger tuples are deleted in tryAttachPartitionForeignKey called
by CloneFkReferencing.
/*
* Looks good!  Attach this constraint.  The action triggers in the new
* partition become redundant -- the parent table already has equivalent
* ones, and those will be able to reach the partition.  Remove the ones
* in the partition.  We identify them because they have our constraint
* OID, as well as being on the referenced rel.
*/
"
I try to fix above fk violation. I have two ideas.
i. Do not remove redundant, but when detaching parittion, the action
trigger on referenced side will be create again.
I have consider about this situation.

ii. We still remove redundant, and the remove the child action trigger,
too.  If we do this way.
Should we create action trigger recursively on referced side when detaching
partition.

I can't decide which one is better. And I'm not sure that keep this FK
VIOLATION will cause some problem.
I rebase and send v3 patch, which only fix NOT FOUND INSERT CHECK TRIGGER.


[1]
https://www.postgresql.org/message-id/18541-628a61bc267cd2d3%40postgresql.org
[2]
https://www.postgresql.org/message-id/GVAP278MB02787E7134FD691861635A8BC9032%40GVAP278MB0278.CHEP278...

-- 
Tender Wang


Attachments:

  [application/octet-stream] v3-0001-Fix-partition-detach-issue.patch (2.0K, ../../CAHewXNmF-dn+hMkcsWM=b_f7Zc4nwP7EN0uXK0NG_VNEk-q1uA@mail.gmail.com/3-v3-0001-Fix-partition-detach-issue.patch)
  download | inline diff:
From a7b1569820252f8d5a51910550a1eedaa8632ab3 Mon Sep 17 00:00:00 2001
From: "tender.wang" <[email protected]>
Date: Fri, 27 Oct 2023 13:48:48 +0800
Subject: [PATCH v3 1/2] Fix partition detach issue.

---
 src/backend/commands/tablecmds.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 721d24783b..d5c6da04fb 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -19185,7 +19185,9 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 	{
 		ForeignKeyCacheInfo *fk = lfirst(cell);
 		HeapTuple	contup;
+		HeapTuple	parentConTup;
 		Form_pg_constraint conform;
+		Form_pg_constraint parentConForm;
 		Constraint *fkconstraint;
 		Oid			insertTriggerOid,
 					updateTriggerOid;
@@ -19203,6 +19205,24 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 			continue;
 		}
 
+		/* For referenced-side, if it is partitioned table, each partition
+		 * has one row in pg_constraint. But it doesn't have INSERT CHECK trigger
+		 */
+		Assert(OidIsValid(conform->conparentid));
+		parentConTup = SearchSysCache1(CONSTROID,
+									   ObjectIdGetDatum(conform->conparentid));
+		if (!HeapTupleIsValid(parentConTup))
+			elog(ERROR, "cache lookup failed for constraint %u",
+				 conform->conparentid);
+		parentConForm = (Form_pg_constraint)GETSTRUCT(parentConTup);
+		if (parentConForm->confrelid != conform->confrelid &&
+			parentConForm->conrelid == conform->conrelid)
+		{
+			ReleaseSysCache(contup);
+			ReleaseSysCache(parentConTup);
+			continue;
+		}
+
 		/* unset conparentid and adjust conislocal, coninhcount, etc. */
 		ConstraintSetParentConstraint(fk->conoid, InvalidOid, InvalidOid);
 
@@ -19250,6 +19270,7 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 									   NULL, NULL);
 
 		ReleaseSysCache(contup);
+		ReleaseSysCache(parentConTup);
 	}
 	list_free_deep(fks);
 	if (trigrel)
-- 
2.34.1



  [application/octet-stream] v3-0002-Add-test-case.patch (3.1K, ../../CAHewXNmF-dn+hMkcsWM=b_f7Zc4nwP7EN0uXK0NG_VNEk-q1uA@mail.gmail.com/4-v3-0002-Add-test-case.patch)
  download | inline diff:
From 9344a0f5215c2745d875422b66120599878cfda1 Mon Sep 17 00:00:00 2001
From: Tender Wang <[email protected]>
Date: Thu, 18 Jul 2024 10:12:18 +0800
Subject: [PATCH v3 2/2] Add test case.

---
 src/backend/commands/tablecmds.c          |  2 +-
 src/test/regress/expected/foreign_key.out | 19 +++++++++++++++++++
 src/test/regress/sql/foreign_key.sql      | 20 ++++++++++++++++++++
 3 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index d5c6da04fb..2bdd63f0b6 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -19214,7 +19214,7 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 		if (!HeapTupleIsValid(parentConTup))
 			elog(ERROR, "cache lookup failed for constraint %u",
 				 conform->conparentid);
-		parentConForm = (Form_pg_constraint)GETSTRUCT(parentConTup);
+		parentConForm = (Form_pg_constraint) GETSTRUCT(parentConTup);
 		if (parentConForm->confrelid != conform->confrelid &&
 			parentConForm->conrelid == conform->conrelid)
 		{
diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out
index 46764bd9e3..e36ff9deb3 100644
--- a/src/test/regress/expected/foreign_key.out
+++ b/src/test/regress/expected/foreign_key.out
@@ -2917,3 +2917,22 @@ DETAIL:  drop cascades to table fkpart11.pk
 drop cascades to table fkpart11.fk_parted
 drop cascades to table fkpart11.fk_another
 drop cascades to function fkpart11.print_row()
+CREATE TABLE fk_p ( id bigint PRIMARY KEY ) PARTITION BY list (id);
+CREATE TABLE fk_p_1 PARTITION OF fk_p FOR VALUES IN (1);
+CREATE TABLE fk_r_1 (
+  id   bigint PRIMARY KEY,
+  p_id bigint NOT NULL,
+  FOREIGN KEY (p_id) REFERENCES fk_p (id)
+);
+CREATE TABLE fk_r (
+  id   bigint PRIMARY KEY,
+  p_id bigint NOT NULL,
+  FOREIGN KEY (p_id) REFERENCES fk_p (id)
+) PARTITION BY list (id);
+ALTER TABLE fk_r ATTACH PARTITION fk_r_1 FOR VALUES IN (1);
+ALTER TABLE fk_r DETACH PARTITION fk_r_1;
+DROP TABLE fk_p CASCADE;
+NOTICE:  drop cascades to 2 other objects
+DETAIL:  drop cascades to constraint fk_r_1_p_id_fkey on table fk_r_1
+drop cascades to constraint fk_r_p_id_fkey on table fk_r
+DROP TABLE fk_r CASCADE;
diff --git a/src/test/regress/sql/foreign_key.sql b/src/test/regress/sql/foreign_key.sql
index f5e0938999..d38b10613a 100644
--- a/src/test/regress/sql/foreign_key.sql
+++ b/src/test/regress/sql/foreign_key.sql
@@ -2069,3 +2069,23 @@ UPDATE fkpart11.pk SET a = 3 WHERE a = 4;
 UPDATE fkpart11.pk SET a = 1 WHERE a = 2;
 
 DROP SCHEMA fkpart11 CASCADE;
+
+CREATE TABLE fk_p ( id bigint PRIMARY KEY ) PARTITION BY list (id);
+CREATE TABLE fk_p_1 PARTITION OF fk_p FOR VALUES IN (1);
+
+CREATE TABLE fk_r_1 (
+  id   bigint PRIMARY KEY,
+  p_id bigint NOT NULL,
+  FOREIGN KEY (p_id) REFERENCES fk_p (id)
+);
+
+CREATE TABLE fk_r (
+  id   bigint PRIMARY KEY,
+  p_id bigint NOT NULL,
+  FOREIGN KEY (p_id) REFERENCES fk_p (id)
+) PARTITION BY list (id);
+
+ALTER TABLE fk_r ATTACH PARTITION fk_r_1 FOR VALUES IN (1);
+ALTER TABLE fk_r DETACH PARTITION fk_r_1;
+DROP TABLE fk_p CASCADE;
+DROP TABLE fk_r CASCADE;
-- 
2.34.1



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails
  2023-10-25 12:12 Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
  2024-07-18 06:34 ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
@ 2024-07-19 13:18   ` Alvaro Herrera <[email protected]>
  2024-07-22 05:52     ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
  2024-07-23 02:15     ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
  0 siblings, 2 replies; 31+ messages in thread

From: Alvaro Herrera @ 2024-07-19 13:18 UTC (permalink / raw)
  To: Tender Wang <[email protected]>; +Cc: Jehan-Guillaume de Rorthais <[email protected]>; pgsql-hackers; Alexander Lakhin <[email protected]>

Hello,

I think the fix for the check triggers should be as the attached.  Very
close to what you did, but you were skipping some operations that needed
to be kept.  AFAICS this patch works correctly for the posted cases.

I haven't looked at the action triggers yet; I think we need to create
one trigger for each partition of the referenced side, so we need to
loop instead of doing a single one.



I find this pair of queries useful; they show which constraints exist
and which triggers belong to each.  We need to make the constraints and
triggers match after a detach right as things would be if the
just-detached partition were an individual table having the same foreign
key.


-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"People get annoyed when you try to debug them."  (Larry Wall)


Attachments:

  [text/x-diff] 0001-Fix-partition-detach-on-tables-with-FKs-to-partition.patch (3.3K, ../../[email protected]/2-0001-Fix-partition-detach-on-tables-with-FKs-to-partition.patch)
  download | inline diff:
From 925739ef0c6b64c73b021ed930f65f140004ceb5 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <[email protected]>
Date: Fri, 19 Jul 2024 15:12:38 +0200
Subject: [PATCH] Fix partition detach on tables with FKs to partitioned tables

---
 src/backend/commands/tablecmds.c | 49 +++++++++++++++++++++++++-------
 1 file changed, 38 insertions(+), 11 deletions(-)

diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 721d24783b..ca777d3c88 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -19185,8 +19185,11 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 	{
 		ForeignKeyCacheInfo *fk = lfirst(cell);
 		HeapTuple	contup;
+		HeapTuple	parentConTup;
 		Form_pg_constraint conform;
+		Form_pg_constraint parentConForm;
 		Constraint *fkconstraint;
+		Oid			parentConstrOid;
 		Oid			insertTriggerOid,
 					updateTriggerOid;
 
@@ -19203,22 +19206,46 @@ DetachPartitionFinalize(Relation rel, Relation partRel, bool concurrent,
 			continue;
 		}
 
+		parentConstrOid = conform->conparentid;
+
 		/* unset conparentid and adjust conislocal, coninhcount, etc. */
 		ConstraintSetParentConstraint(fk->conoid, InvalidOid, InvalidOid);
 
 		/*
-		 * Also, look up the partition's "check" triggers corresponding to the
-		 * constraint being detached and detach them from the parent triggers.
+		 * Search for the partition's check triggers that implement the
+		 * constraint being detached, and make them no longer children of the
+		 * triggers on the parent table.  However, if the referenced side is a
+		 * partitioned table, there are no such check triggers (we know that
+		 * the referenced side is partitioned because our constraint row points
+		 * to a partition, whereas our parent constraint points to its parent
+		 * partitioned table.)
 		 */
-		GetForeignKeyCheckTriggers(trigrel,
-								   fk->conoid, fk->confrelid, fk->conrelid,
-								   &insertTriggerOid, &updateTriggerOid);
-		Assert(OidIsValid(insertTriggerOid));
-		TriggerSetParentTrigger(trigrel, insertTriggerOid, InvalidOid,
-								RelationGetRelid(partRel));
-		Assert(OidIsValid(updateTriggerOid));
-		TriggerSetParentTrigger(trigrel, updateTriggerOid, InvalidOid,
-								RelationGetRelid(partRel));
+		Assert(OidIsValid(conform->conparentid));
+		parentConTup = SearchSysCache1(CONSTROID,
+									   ObjectIdGetDatum(parentConstrOid));
+		if (!HeapTupleIsValid(parentConTup))
+			elog(ERROR, "cache lookup failed for constraint %u",
+				 conform->conparentid);
+		parentConForm = (Form_pg_constraint) GETSTRUCT(parentConTup);
+
+		if (parentConForm->conrelid != conform->conrelid)
+		{
+			/*
+			 * Also, look up the partition's "check" triggers corresponding to the
+			 * constraint being detached and detach them from the parent triggers.
+			 */
+			GetForeignKeyCheckTriggers(trigrel,
+									   fk->conoid, fk->confrelid, fk->conrelid,
+									   &insertTriggerOid, &updateTriggerOid);
+			Assert(OidIsValid(insertTriggerOid));
+			TriggerSetParentTrigger(trigrel, insertTriggerOid, InvalidOid,
+									RelationGetRelid(partRel));
+			Assert(OidIsValid(updateTriggerOid));
+			TriggerSetParentTrigger(trigrel, updateTriggerOid, InvalidOid,
+									RelationGetRelid(partRel));
+		}
+
+		ReleaseSysCache(parentConTup);
 
 		/*
 		 * Make the action triggers on the referenced relation.  When this was
-- 
2.39.2



^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails
  2023-10-25 12:12 Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
  2024-07-18 06:34 ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
  2024-07-19 13:18   ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
@ 2024-07-22 05:52     ` Tender Wang <[email protected]>
  1 sibling, 0 replies; 31+ messages in thread

From: Tender Wang @ 2024-07-22 05:52 UTC (permalink / raw)
  To: Alvaro Herrera <[email protected]>; +Cc: Jehan-Guillaume de Rorthais <[email protected]>; pgsql-hackers; Alexander Lakhin <[email protected]>

Alvaro Herrera <[email protected]> 于2024年7月19日周五 21:18写道:

> Hello,
>
> I think the fix for the check triggers should be as the attached.  Very
> close to what you did, but you were skipping some operations that needed
> to be kept.  AFAICS this patch works correctly for the posted cases.
>

After applying the attached, the r_1_p_id_fkey1 will have redundant action
triggers, as below:
postgres=# select oid, conname, contype, conrelid, conindid,conparentid,
confrelid,conislocal,coninhcount, connoinherit from pg_constraint where oid
= 16402;
  oid  |    conname     | contype | conrelid | conindid | conparentid |
confrelid | conislocal | coninhcount | connoinherit
-------+----------------+---------+----------+----------+-------------+-----------+------------+-------------+--------------
 16402 | r_1_p_id_fkey1 | f       |    16394 |    16392 |           0 |
16389 | t          |           0 | f
(1 row)

postgres=# select oid, tgrelid, tgparentid, tgconstrrelid, tgconstrindid,
tgconstraint from pg_trigger where tgconstraint = 16402;
  oid  | tgrelid | tgparentid | tgconstrrelid | tgconstrindid | tgconstraint
-------+---------+------------+---------------+---------------+--------------
 16403 |   16389 |      16400 |         16394 |         16392 |        16402
 16404 |   16389 |      16401 |         16394 |         16392 |        16402
 16422 |   16389 |          0 |         16394 |         16392 |        16402
 16423 |   16389 |          0 |         16394 |         16392 |        16402
(4 rows)


-- 
Tender Wang


^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails
  2023-10-25 12:12 Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
  2024-07-18 06:34 ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
  2024-07-19 13:18   ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
@ 2024-07-23 02:15     ` Tender Wang <[email protected]>
  1 sibling, 0 replies; 31+ messages in thread

From: Tender Wang @ 2024-07-23 02:15 UTC (permalink / raw)
  To: Alvaro Herrera <[email protected]>; +Cc: Jehan-Guillaume de Rorthais <[email protected]>; pgsql-hackers; Alexander Lakhin <[email protected]>

Alvaro Herrera <[email protected]> 于2024年7月19日周五 21:18写道:

>
> I find this pair of queries useful; they show which constraints exist
> and which triggers belong to each.  We need to make the constraints and
> triggers match after a detach right as things would be if the
> just-detached partition were an individual table having the same foreign
> key.
>

I don't find the useful queries in your last email. Can you provide them.
Thanks.


-- 
Tender Wang


^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* Re: Use Python "Limited API" in PL/Python
@ 2025-03-14 08:41 Peter Eisentraut <[email protected]>
  2025-03-17 06:08 ` Re: Use Python "Limited API" in PL/Python vignesh C <[email protected]>
  0 siblings, 1 reply; 31+ messages in thread

From: Peter Eisentraut @ 2025-03-14 08:41 UTC (permalink / raw)
  To: pgsql-hackers; +Cc: Jakob Egger <[email protected]>

On 05.03.25 17:40, Peter Eisentraut wrote:
> On 03.03.25 11:17, Peter Eisentraut wrote:
>> Update for the hackers list: This patch set was briefly committed but 
>> had to be reverted because it crashed on some older Python versions; 
>> see [0].
>>
>> I have locally reproduced the problem with Python 3.6 and 3.7; Python 
>> 3.8 is ok.  This matches the results from the buildfarm.
>>
>> I have poked at this a bit more but haven't gotten a good idea where 
>> or how to fix it so far.  Help welcome.
> 
> I have figured this out.  There was a Python API change/bugfix between 
> 3.7 and 3.8 that directly affects this patch.  The relevant commit is 
> <https://github.com/python/cpython/commit/364f0b0f19c>.  I have applied 
> the workarounds described there to my patch set, and now it works for 
> 3.6 and 3.7 as well.

This has all been committed now.






^ permalink  raw  reply  [nested|flat] 31+ messages in thread

* Re: Use Python "Limited API" in PL/Python
  2025-03-14 08:41 Re: Use Python "Limited API" in PL/Python Peter Eisentraut <[email protected]>
@ 2025-03-17 06:08 ` vignesh C <[email protected]>
  0 siblings, 0 replies; 31+ messages in thread

From: vignesh C @ 2025-03-17 06:08 UTC (permalink / raw)
  To: Peter Eisentraut <[email protected]>; +Cc: pgsql-hackers; Jakob Egger <[email protected]>

On Fri, 14 Mar 2025 at 14:11, Peter Eisentraut <[email protected]> wrote:
>
> On 05.03.25 17:40, Peter Eisentraut wrote:
> > On 03.03.25 11:17, Peter Eisentraut wrote:
> >> Update for the hackers list: This patch set was briefly committed but
> >> had to be reverted because it crashed on some older Python versions;
> >> see [0].
> >>
> >> I have locally reproduced the problem with Python 3.6 and 3.7; Python
> >> 3.8 is ok.  This matches the results from the buildfarm.
> >>
> >> I have poked at this a bit more but haven't gotten a good idea where
> >> or how to fix it so far.  Help welcome.
> >
> > I have figured this out.  There was a Python API change/bugfix between
> > 3.7 and 3.8 that directly affects this patch.  The relevant commit is
> > <https://github.com/python/cpython/commit/364f0b0f19c;.  I have applied
> > the workarounds described there to my patch set, and now it works for
> > 3.6 and 3.7 as well.
>
> This has all been committed now.

I felt we can mark this commitfest entry at [1] to commited now.
[1] - https://commitfest.postgresql.org/patch/5416/

Regards,
Vignesh





^ permalink  raw  reply  [nested|flat] 31+ messages in thread


end of thread, other threads:[~2025-03-17 06:08 UTC | newest]

Thread overview: 31+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/21] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2021-01-23 23:17 [PATCH 13/18] doc review for FDW bulk inserts Justin Pryzby <[email protected]>
2023-10-25 12:12 Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
2023-10-27 09:05 ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails tender wang <[email protected]>
2024-07-18 06:34 ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
2024-07-19 13:18   ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Alvaro Herrera <[email protected]>
2024-07-22 05:52     ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
2024-07-23 02:15     ` Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails Tender Wang <[email protected]>
2025-03-14 08:41 Re: Use Python "Limited API" in PL/Python Peter Eisentraut <[email protected]>
2025-03-17 06:08 ` Re: Use Python "Limited API" in PL/Python vignesh C <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox