public inbox for [email protected]  
help / color / mirror / Atom feed
Re: Fast COPY FROM based on batch insert
10+ messages / 6 participants
[nested] [flat]

* Re: Fast COPY FROM based on batch insert
@ 2022-03-21 23:58 Andres Freund <[email protected]>
  2022-03-22 02:36 ` Re: Fast COPY FROM based on batch insert Etsuro Fujita <[email protected]>
  0 siblings, 1 reply; 10+ messages in thread

From: Andres Freund @ 2022-03-21 23:58 UTC (permalink / raw)
  To: Andrey Lepikhov <[email protected]>; +Cc: [email protected] <[email protected]>; Etsuro Fujita <[email protected]>; Justin Pryzby <[email protected]>; Zhihong Yu <[email protected]>; Amit Langote <[email protected]>; [email protected] <[email protected]>; Ashutosh Bapat <[email protected]>; pgsql-hackers; Tomas Vondra <[email protected]>; [email protected] <[email protected]>

On 2021-06-07 16:16:58 +0500, Andrey Lepikhov wrote:
> Second version of the patch fixes problems detected by the FDW regression
> tests and shows differences of error reports in tuple-by-tuple and batched
> COPY approaches.

Patch doesn't apply and likely hasn't for a while...






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

* Re: Fast COPY FROM based on batch insert
  2022-03-21 23:58 Re: Fast COPY FROM based on batch insert Andres Freund <[email protected]>
@ 2022-03-22 02:36 ` Etsuro Fujita <[email protected]>
  0 siblings, 0 replies; 10+ messages in thread

From: Etsuro Fujita @ 2022-03-22 02:36 UTC (permalink / raw)
  To: Andres Freund <[email protected]>; +Cc: Andrey Lepikhov <[email protected]>; [email protected] <[email protected]>; Justin Pryzby <[email protected]>; Zhihong Yu <[email protected]>; Amit Langote <[email protected]>; [email protected] <[email protected]>; Ashutosh Bapat <[email protected]>; pgsql-hackers; Tomas Vondra <[email protected]>; [email protected] <[email protected]>

On Tue, Mar 22, 2022 at 8:58 AM Andres Freund <[email protected]> wrote:
>
> On 2021-06-07 16:16:58 +0500, Andrey Lepikhov wrote:
> > Second version of the patch fixes problems detected by the FDW regression
> > tests and shows differences of error reports in tuple-by-tuple and batched
> > COPY approaches.
>
> Patch doesn't apply and likely hasn't for a while...

Actually, it has bit-rotted due to the recent fix for cross-partition
updates (i.e., commit ba9a7e392).

Thanks!

Best regards,
Etsuro Fujita






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

* [PATCH v3 1/1] Handle a NULL short_desc in ShowAllGUCConfig
@ 2022-05-25 04:46 Steve Chavez <[email protected]>
  0 siblings, 0 replies; 10+ messages in thread

From: Steve Chavez @ 2022-05-25 04:46 UTC (permalink / raw)

Prevent a segfault when using a SHOW ALL, in case a DefineCustomXXXVariable()
was defined with a NULL short_desc.
---
 src/backend/utils/misc/guc.c | 16 +++++++++++++---
 src/include/c.h              | 10 ++++++++++
 src/include/utils/guc.h      | 10 +++++-----
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 8e9b71375c..55d41ae7d6 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -9780,7 +9780,16 @@ ShowAllGUCConfig(DestReceiver *dest)
 			isnull[1] = true;
 		}
 
-		values[2] = PointerGetDatum(cstring_to_text(conf->short_desc));
+		if (conf->short_desc)
+		{
+			values[2] = PointerGetDatum(cstring_to_text(conf->short_desc));
+			isnull[2] = false;
+		}
+		else
+		{
+			values[2] = PointerGetDatum(NULL);
+			isnull[2] = true;
+		}
 
 		/* send it to dest */
 		do_tup_output(tstate, values, isnull);
@@ -9792,7 +9801,8 @@ ShowAllGUCConfig(DestReceiver *dest)
 			pfree(setting);
 			pfree(DatumGetPointer(values[1]));
 		}
-		pfree(DatumGetPointer(values[2]));
+		if (conf->short_desc)
+			pfree(DatumGetPointer(values[2]));
 	}
 
 	end_tup_output(tstate);
@@ -10002,7 +10012,7 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
 	values[3] = _(config_group_names[conf->group]);
 
 	/* short_desc */
-	values[4] = _(conf->short_desc);
+	values[4] = conf->short_desc != NULL ? _(conf->short_desc) : NULL;
 
 	/* extra_desc */
 	values[5] = conf->long_desc != NULL ? _(conf->long_desc) : NULL;
diff --git a/src/include/c.h b/src/include/c.h
index 4f16e589b3..f253aa930b 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -144,6 +144,16 @@
 #define pg_attribute_no_sanitize_alignment()
 #endif
 
+/*
+ * pg_attribute_nonnull means the compiler should warn if the function is called
+ * with the listed arguments set to NULL.
+ */
+#if defined(__clang_major__) || defined(__GNUC__)
+#define pg_attribute_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))
+#else
+#define pg_attribute_nonnull(...)
+#endif
+
 /*
  * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only
  * used in assert-enabled builds, to avoid compiler warnings about unused
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index efcbad7842..be691c5e9c 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -303,7 +303,7 @@ extern void DefineCustomBoolVariable(const char *name,
 									 int flags,
 									 GucBoolCheckHook check_hook,
 									 GucBoolAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomIntVariable(const char *name,
 									const char *short_desc,
@@ -316,7 +316,7 @@ extern void DefineCustomIntVariable(const char *name,
 									int flags,
 									GucIntCheckHook check_hook,
 									GucIntAssignHook assign_hook,
-									GucShowHook show_hook);
+									GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomRealVariable(const char *name,
 									 const char *short_desc,
@@ -329,7 +329,7 @@ extern void DefineCustomRealVariable(const char *name,
 									 int flags,
 									 GucRealCheckHook check_hook,
 									 GucRealAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomStringVariable(const char *name,
 									   const char *short_desc,
@@ -340,7 +340,7 @@ extern void DefineCustomStringVariable(const char *name,
 									   int flags,
 									   GucStringCheckHook check_hook,
 									   GucStringAssignHook assign_hook,
-									   GucShowHook show_hook);
+									   GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomEnumVariable(const char *name,
 									 const char *short_desc,
@@ -352,7 +352,7 @@ extern void DefineCustomEnumVariable(const char *name,
 									 int flags,
 									 GucEnumCheckHook check_hook,
 									 GucEnumAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void MarkGUCPrefixReserved(const char *className);
 
-- 
2.25.1


--Dxnq1zWXvFF0Q93v--





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

* [PATCH v3 1/1] Handle a NULL short_desc in ShowAllGUCConfig
@ 2022-05-25 04:46 Steve Chavez <[email protected]>
  0 siblings, 0 replies; 10+ messages in thread

From: Steve Chavez @ 2022-05-25 04:46 UTC (permalink / raw)

Prevent a segfault when using a SHOW ALL, in case a DefineCustomXXXVariable()
was defined with a NULL short_desc.
---
 src/backend/utils/misc/guc.c | 16 +++++++++++++---
 src/include/c.h              | 10 ++++++++++
 src/include/utils/guc.h      | 10 +++++-----
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 8e9b71375c..55d41ae7d6 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -9780,7 +9780,16 @@ ShowAllGUCConfig(DestReceiver *dest)
 			isnull[1] = true;
 		}
 
-		values[2] = PointerGetDatum(cstring_to_text(conf->short_desc));
+		if (conf->short_desc)
+		{
+			values[2] = PointerGetDatum(cstring_to_text(conf->short_desc));
+			isnull[2] = false;
+		}
+		else
+		{
+			values[2] = PointerGetDatum(NULL);
+			isnull[2] = true;
+		}
 
 		/* send it to dest */
 		do_tup_output(tstate, values, isnull);
@@ -9792,7 +9801,8 @@ ShowAllGUCConfig(DestReceiver *dest)
 			pfree(setting);
 			pfree(DatumGetPointer(values[1]));
 		}
-		pfree(DatumGetPointer(values[2]));
+		if (conf->short_desc)
+			pfree(DatumGetPointer(values[2]));
 	}
 
 	end_tup_output(tstate);
@@ -10002,7 +10012,7 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
 	values[3] = _(config_group_names[conf->group]);
 
 	/* short_desc */
-	values[4] = _(conf->short_desc);
+	values[4] = conf->short_desc != NULL ? _(conf->short_desc) : NULL;
 
 	/* extra_desc */
 	values[5] = conf->long_desc != NULL ? _(conf->long_desc) : NULL;
diff --git a/src/include/c.h b/src/include/c.h
index 4f16e589b3..f253aa930b 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -144,6 +144,16 @@
 #define pg_attribute_no_sanitize_alignment()
 #endif
 
+/*
+ * pg_attribute_nonnull means the compiler should warn if the function is called
+ * with the listed arguments set to NULL.
+ */
+#if defined(__clang_major__) || defined(__GNUC__)
+#define pg_attribute_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))
+#else
+#define pg_attribute_nonnull(...)
+#endif
+
 /*
  * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only
  * used in assert-enabled builds, to avoid compiler warnings about unused
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index efcbad7842..be691c5e9c 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -303,7 +303,7 @@ extern void DefineCustomBoolVariable(const char *name,
 									 int flags,
 									 GucBoolCheckHook check_hook,
 									 GucBoolAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomIntVariable(const char *name,
 									const char *short_desc,
@@ -316,7 +316,7 @@ extern void DefineCustomIntVariable(const char *name,
 									int flags,
 									GucIntCheckHook check_hook,
 									GucIntAssignHook assign_hook,
-									GucShowHook show_hook);
+									GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomRealVariable(const char *name,
 									 const char *short_desc,
@@ -329,7 +329,7 @@ extern void DefineCustomRealVariable(const char *name,
 									 int flags,
 									 GucRealCheckHook check_hook,
 									 GucRealAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomStringVariable(const char *name,
 									   const char *short_desc,
@@ -340,7 +340,7 @@ extern void DefineCustomStringVariable(const char *name,
 									   int flags,
 									   GucStringCheckHook check_hook,
 									   GucStringAssignHook assign_hook,
-									   GucShowHook show_hook);
+									   GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomEnumVariable(const char *name,
 									 const char *short_desc,
@@ -352,7 +352,7 @@ extern void DefineCustomEnumVariable(const char *name,
 									 int flags,
 									 GucEnumCheckHook check_hook,
 									 GucEnumAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void MarkGUCPrefixReserved(const char *className);
 
-- 
2.25.1


--Dxnq1zWXvFF0Q93v--





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

* [PATCH v3 1/1] Handle a NULL short_desc in ShowAllGUCConfig
@ 2022-05-25 04:46 Steve Chavez <[email protected]>
  0 siblings, 0 replies; 10+ messages in thread

From: Steve Chavez @ 2022-05-25 04:46 UTC (permalink / raw)

Prevent a segfault when using a SHOW ALL, in case a DefineCustomXXXVariable()
was defined with a NULL short_desc.
---
 src/backend/utils/misc/guc.c | 16 +++++++++++++---
 src/include/c.h              | 10 ++++++++++
 src/include/utils/guc.h      | 10 +++++-----
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 8e9b71375c..55d41ae7d6 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -9780,7 +9780,16 @@ ShowAllGUCConfig(DestReceiver *dest)
 			isnull[1] = true;
 		}
 
-		values[2] = PointerGetDatum(cstring_to_text(conf->short_desc));
+		if (conf->short_desc)
+		{
+			values[2] = PointerGetDatum(cstring_to_text(conf->short_desc));
+			isnull[2] = false;
+		}
+		else
+		{
+			values[2] = PointerGetDatum(NULL);
+			isnull[2] = true;
+		}
 
 		/* send it to dest */
 		do_tup_output(tstate, values, isnull);
@@ -9792,7 +9801,8 @@ ShowAllGUCConfig(DestReceiver *dest)
 			pfree(setting);
 			pfree(DatumGetPointer(values[1]));
 		}
-		pfree(DatumGetPointer(values[2]));
+		if (conf->short_desc)
+			pfree(DatumGetPointer(values[2]));
 	}
 
 	end_tup_output(tstate);
@@ -10002,7 +10012,7 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
 	values[3] = _(config_group_names[conf->group]);
 
 	/* short_desc */
-	values[4] = _(conf->short_desc);
+	values[4] = conf->short_desc != NULL ? _(conf->short_desc) : NULL;
 
 	/* extra_desc */
 	values[5] = conf->long_desc != NULL ? _(conf->long_desc) : NULL;
diff --git a/src/include/c.h b/src/include/c.h
index 4f16e589b3..f253aa930b 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -144,6 +144,16 @@
 #define pg_attribute_no_sanitize_alignment()
 #endif
 
+/*
+ * pg_attribute_nonnull means the compiler should warn if the function is called
+ * with the listed arguments set to NULL.
+ */
+#if defined(__clang_major__) || defined(__GNUC__)
+#define pg_attribute_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))
+#else
+#define pg_attribute_nonnull(...)
+#endif
+
 /*
  * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only
  * used in assert-enabled builds, to avoid compiler warnings about unused
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index efcbad7842..be691c5e9c 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -303,7 +303,7 @@ extern void DefineCustomBoolVariable(const char *name,
 									 int flags,
 									 GucBoolCheckHook check_hook,
 									 GucBoolAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomIntVariable(const char *name,
 									const char *short_desc,
@@ -316,7 +316,7 @@ extern void DefineCustomIntVariable(const char *name,
 									int flags,
 									GucIntCheckHook check_hook,
 									GucIntAssignHook assign_hook,
-									GucShowHook show_hook);
+									GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomRealVariable(const char *name,
 									 const char *short_desc,
@@ -329,7 +329,7 @@ extern void DefineCustomRealVariable(const char *name,
 									 int flags,
 									 GucRealCheckHook check_hook,
 									 GucRealAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomStringVariable(const char *name,
 									   const char *short_desc,
@@ -340,7 +340,7 @@ extern void DefineCustomStringVariable(const char *name,
 									   int flags,
 									   GucStringCheckHook check_hook,
 									   GucStringAssignHook assign_hook,
-									   GucShowHook show_hook);
+									   GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void DefineCustomEnumVariable(const char *name,
 									 const char *short_desc,
@@ -352,7 +352,7 @@ extern void DefineCustomEnumVariable(const char *name,
 									 int flags,
 									 GucEnumCheckHook check_hook,
 									 GucEnumAssignHook assign_hook,
-									 GucShowHook show_hook);
+									 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
 
 extern void MarkGUCPrefixReserved(const char *className);
 
-- 
2.25.1


--Dxnq1zWXvFF0Q93v--





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

* Re: AIO writes vs hint bits vs checksums
@ 2025-04-01 15:08 ` Andres Freund <[email protected]>
  2 siblings, 0 replies; 10+ messages in thread

From: Andres Freund @ 2025-04-01 15:08 UTC (permalink / raw)
  To: Heikki Linnakangas <[email protected]>; +Cc: pgsql-hackers; Noah Misch <[email protected]>; Robert Haas <[email protected]>; Thomas Munro <[email protected]>

Hi,

On 2025-04-01 13:34:53 +0300, Heikki Linnakangas wrote:
> Here's a rebase of these patches.

Thanks!

Curious what made you do this? Do you need any parts of this soon?

I've been hacking on this a bit more, btw, just haven't gotten around to the
necessary README rephrasings... :(


> I went ahead and committed the "heapam: Only set tuple's block once per page
> in pagemode" patch, because it was trivial and independent of the rest.

Thanks!

I think I should just commit the kill_prior_tuples test, it's better than
nothing.

Greetings,

Andres Freund





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

* Re: AIO writes vs hint bits vs checksums
@ 2025-04-01 15:29 ` Nico Williams <[email protected]>
  2 siblings, 0 replies; 10+ messages in thread

From: Nico Williams @ 2025-04-01 15:29 UTC (permalink / raw)
  To: Heikki Linnakangas <[email protected]>; +Cc: Andres Freund <[email protected]>; pgsql-hackers

On Wed, Oct 30, 2024 at 02:16:51PM +0200, Heikki Linnakangas wrote:
> Acquiring the exclusive lock in step 4 is just a way to wait for all the
> existing share-lockers to release the lock. You wouldn't need to block new
> share-lockers. We have LW_WAIT_UNTIL_FREE, which is almost what we need, but
> it currently ignores share-lockers. So doing this "properly" would require
> more changes to LWLocks. Briefly acquiring an exclusive lock seems
> acceptable though.

The problem is starvation.  For this you really want something more like
rwlocks that do not have the writer starvation problem.  But rwlocks
have other problems too, like in this case forcing readers to wait.

What you want here is something more like a barrier where readers that
did not see that the page has BM_IO_IN_PROGRESS set get to act as though
it's not set while readers that did see that the page has
BM_IO_IN_PROGRESS set don't, and the process that did set that bit gets
to wait for the first set of readers all without blocking the second set
of readers.  That's something akin to an rwlock, but better -- in fact,
it resembles RCU.

Nico
-- 





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

* Re: AIO writes vs hint bits vs checksums
@ 2025-08-13 19:38 ` Andres Freund <[email protected]>
  2025-10-27 11:48   ` Re: AIO writes vs hint bits vs checksums Maxim Orlov <[email protected]>
  2 siblings, 1 reply; 10+ messages in thread

From: Andres Freund @ 2025-08-13 19:38 UTC (permalink / raw)
  To: Heikki Linnakangas <[email protected]>; +Cc: Noah Misch <[email protected]>; pgsql-hackers; Robert Haas <[email protected]>; Thomas Munro <[email protected]>

Hi,

On 2024-10-30 12:45:27 -0400, Andres Freund wrote:
> On 2024-10-30 13:29:01 +0200, Heikki Linnakangas wrote:
> > On 30/10/2024 04:21, Andres Freund wrote:
> > > Attached is a, unfortunately long, series of patches implementing what I
> > > described upthread.
> > 
> > Review of the preparatory patches:
> > 
> > > 0001 Add very basic test for kill_prior_tuples
> > > 
> > >      We currently don't exercise this patch for gist and hash, which seems
> > >      somewhat criminal.
> > 
> > Interesting to use the isolationtester for this. There's just one session,
> > so you're just using it to define reusable steps with handy names.
> 
> Yea. I had started out writing it as a pg_regress style test and it quickly got very
> hard to understand.
> 
> 
> > I'm fine with that, but please add a comment to explain it.
> 
> Makes sense.
> 
> 
> > I wonder if it'd be more straightforward to make it a regular pg_regress
> > test though. There would be some repetition, but would it be so bad?
> 
> I found it to be quite bad. If testing just one AM it's ok-ish, but once you
> test 2-3 it gets very long and repetitive. I guess we could use functions or
> such to make it a bit less painful - but that point, is it actually simpler?
> 
> 
> > You forgot to add the new test to 'isolation_schedule'.
> 
> Oops.
> 
> > typos:
> >  "inex" -> "index"
> >  "does something approximately reasonble" -> "do something approximately
> > reasonable"
> 
> Oops^2.

Pushed the test with these changes.

Greetings,

Andres Freund





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

* Re: AIO writes vs hint bits vs checksums
  2025-08-13 19:38 ` Re: AIO writes vs hint bits vs checksums Andres Freund <[email protected]>
@ 2025-10-27 11:48   ` Maxim Orlov <[email protected]>
  2025-10-28 04:06     ` Re: AIO writes vs hint bits vs checksums Michael Paquier <[email protected]>
  0 siblings, 1 reply; 10+ messages in thread

From: Maxim Orlov @ 2025-10-27 11:48 UTC (permalink / raw)
  To: Andres Freund <[email protected]>; +Cc: Heikki Linnakangas <[email protected]>; Noah Misch <[email protected]>; pgsql-hackers; Robert Haas <[email protected]>; Thomas Munro <[email protected]>

On Wed, 13 Aug 2025 at 22:38, Andres Freund <[email protected]> wrote:

>
> Pushed the test with these changes.


I think there is one thing that could be improved here. The isolation
test index-killtuples (377b7ab1452) adds a new dependency:
contrib/btree_gin. contrib/btree_gist. This must be taken into
account in the makefile.

Prior to this patch, isolation tests could be carried out independently
using "make check -C src/test/isolation", but they now require make
check-world to execute successfully, otherwise this test fails with:
====
 step create_ext_btree_gist: CREATE EXTENSION btree_gist;
+ERROR:  extension "btree_gist" is not available
 step create_gist: CREATE INDEX kill_prior_tuple_gist ON kill_prior_tuple
USING gist (key);
+ERROR:  data type integer has no default operator class for access method
"gist"
 step flush: SELECT FROM pg_stat_force_next_flush();
====

-- 
Best regards,
Maxim Orlov.


Attachments:

  [application/octet-stream] 0001-Fix-isolation-tests-run-after-adding-kill_prior_tupl.patch (758B, ../../CACG=ezYQf0Np-DN0DYehYoisVRiRK1RnmZFkr-0d8RoD1NUBXQ@mail.gmail.com/3-0001-Fix-isolation-tests-run-after-adding-kill_prior_tupl.patch)
  download | inline diff:
From d161c5d493b8851da9141282350ce6d77bb235a5 Mon Sep 17 00:00:00 2001
From: Maxim Orlov <[email protected]>
Date: Mon, 27 Oct 2025 14:28:31 +0300
Subject: [PATCH] Fix isolation tests run after adding kill_prior_tuples test

---
 src/test/isolation/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/test/isolation/Makefile b/src/test/isolation/Makefile
index ade2256ed3a..63594a18030 100644
--- a/src/test/isolation/Makefile
+++ b/src/test/isolation/Makefile
@@ -5,6 +5,8 @@
 PGFILEDESC = "pg_isolation_regress/isolationtester - multi-client test driver"
 PGAPPICON = win32
 
+EXTRA_INSTALL=contrib/btree_gin contrib/btree_gist
+
 subdir = src/test/isolation
 top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
-- 
2.43.0



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

* Re: AIO writes vs hint bits vs checksums
  2025-08-13 19:38 ` Re: AIO writes vs hint bits vs checksums Andres Freund <[email protected]>
  2025-10-27 11:48   ` Re: AIO writes vs hint bits vs checksums Maxim Orlov <[email protected]>
@ 2025-10-28 04:06     ` Michael Paquier <[email protected]>
  0 siblings, 0 replies; 10+ messages in thread

From: Michael Paquier @ 2025-10-28 04:06 UTC (permalink / raw)
  To: Maxim Orlov <[email protected]>; +Cc: Andres Freund <[email protected]>; Heikki Linnakangas <[email protected]>; Noah Misch <[email protected]>; pgsql-hackers; Robert Haas <[email protected]>; Thomas Munro <[email protected]>

On Mon, Oct 27, 2025 at 02:48:43PM +0300, Maxim Orlov wrote:
> I think there is one thing that could be improved here. The isolation
> test index-killtuples (377b7ab1452) adds a new dependency:
> contrib/btree_gin. contrib/btree_gist. This must be taken into
> account in the makefile.

Also mentioned here:
https://postgr.es/m/[email protected]

It looks that the conclusion would be to move this test into its own
test module to avoid the external contrib/ dependency in
src/test/isolation/, as duplicated Makefile rules in
src/test/isolation/Makefile are unpleasant.
--
Michael


Attachments:

  [application/pgp-signature] signature.asc (833B, ../../[email protected]/2-signature.asc)
  download

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


end of thread, other threads:[~2025-10-28 04:06 UTC | newest]

Thread overview: 10+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2022-03-21 23:58 Re: Fast COPY FROM based on batch insert Andres Freund <[email protected]>
2022-03-22 02:36 ` Etsuro Fujita <[email protected]>
2022-05-25 04:46 [PATCH v3 1/1] Handle a NULL short_desc in ShowAllGUCConfig Steve Chavez <[email protected]>
2022-05-25 04:46 [PATCH v3 1/1] Handle a NULL short_desc in ShowAllGUCConfig Steve Chavez <[email protected]>
2022-05-25 04:46 [PATCH v3 1/1] Handle a NULL short_desc in ShowAllGUCConfig Steve Chavez <[email protected]>
2025-04-01 15:08 ` Re: AIO writes vs hint bits vs checksums Andres Freund <[email protected]>
2025-04-01 15:29 ` Re: AIO writes vs hint bits vs checksums Nico Williams <[email protected]>
2025-08-13 19:38 ` Re: AIO writes vs hint bits vs checksums Andres Freund <[email protected]>
2025-10-27 11:48   ` Re: AIO writes vs hint bits vs checksums Maxim Orlov <[email protected]>
2025-10-28 04:06     ` Re: AIO writes vs hint bits vs checksums Michael Paquier <[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