public inbox for [email protected]  
help / color / mirror / Atom feed
[PATCH v24 03/10] Add default_toast_compression GUC
8+ messages / 5 participants
[nested] [flat]

* [PATCH v24 03/10] Add default_toast_compression GUC
@ 2021-01-30 03:37  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 8+ messages in thread

From: Justin Pryzby @ 2021-01-30 03:37 UTC (permalink / raw)

---
 src/backend/access/common/tupdesc.c |   2 +-
 src/backend/bootstrap/bootstrap.c   |   3 +-
 src/backend/commands/amcmds.c       | 143 +++++++++++++++++++++++++++-
 src/backend/commands/tablecmds.c    |   4 +-
 src/backend/utils/init/postinit.c   |   4 +
 src/backend/utils/misc/guc.c        |  12 +++
 src/include/access/amapi.h          |   2 +
 src/include/access/compressamapi.h  |  12 ++-
 8 files changed, 176 insertions(+), 6 deletions(-)

diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index ca26fab487..7afaea000b 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -668,7 +668,7 @@ TupleDescInitEntry(TupleDesc desc,
 	att->attcollation = typeForm->typcollation;
 
 	if (IsStorageCompressible(typeForm->typstorage))
-		att->attcompression = DefaultCompressionOid;
+		att->attcompression = GetDefaultToastCompression();
 	else
 		att->attcompression = InvalidOid;
 
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 9b451eaa71..ec3376cf8a 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -732,8 +732,9 @@ DefineAttr(char *name, char *type, int attnum, int nullness)
 	attrtypes[attnum]->attcacheoff = -1;
 	attrtypes[attnum]->atttypmod = -1;
 	attrtypes[attnum]->attislocal = true;
+
 	if (IsStorageCompressible(attrtypes[attnum]->attstorage))
-		attrtypes[attnum]->attcompression = DefaultCompressionOid;
+		attrtypes[attnum]->attcompression = GetDefaultToastCompression();
 	else
 		attrtypes[attnum]->attcompression = InvalidOid;
 
diff --git a/src/backend/commands/amcmds.c b/src/backend/commands/amcmds.c
index 3ad4a61739..1682afd2a4 100644
--- a/src/backend/commands/amcmds.c
+++ b/src/backend/commands/amcmds.c
@@ -13,8 +13,11 @@
  */
 #include "postgres.h"
 
+#include "access/amapi.h"
+#include "access/compressamapi.h"
 #include "access/htup_details.h"
 #include "access/table.h"
+#include "access/xact.h"
 #include "catalog/catalog.h"
 #include "catalog/dependency.h"
 #include "catalog/indexing.h"
@@ -27,13 +30,20 @@
 #include "parser/parse_func.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
+#include "utils/guc.h"
+#include "utils/inval.h"
 #include "utils/rel.h"
 #include "utils/syscache.h"
 
-
 static Oid	lookup_am_handler_func(List *handler_name, char amtype);
 static const char *get_am_type_string(char amtype);
 
+/* Compile-time default */
+char	*default_toast_compression = DEFAULT_TOAST_COMPRESSION; // maybe needs pg_dump support ?
+/* Invalid means need to lookup the text value in the catalog */
+static Oid	default_toast_compression_oid = InvalidOid;
+
+static void AccessMethodCallback(Datum arg, int cacheid, uint32 hashvalue);
 
 /*
  * CreateAccessMethod
@@ -277,3 +287,134 @@ lookup_am_handler_func(List *handler_name, char amtype)
 
 	return handlerOid;
 }
+
+/* check_hook: validate new default_toast_compression */
+bool
+check_default_toast_compression(char **newval, void **extra, GucSource source)
+{
+	if (**newval == '\0')
+	{
+		GUC_check_errdetail("%s cannot be empty.",
+							"default_toast_compression");
+		return false;
+	}
+
+	if (strlen(*newval) >= NAMEDATALEN)
+	{
+		GUC_check_errdetail("%s is too long (maximum %d characters).",
+							"default_toast_compression", NAMEDATALEN - 1);
+		return false;
+	}
+
+	/*
+	 * If we aren't inside a transaction, or not connected to a database, we
+	 * cannot do the catalog access necessary to verify the method.  Must
+	 * accept the value on faith.
+	 */
+	if (IsTransactionState() && MyDatabaseId != InvalidOid)
+	{
+		if (!OidIsValid(get_compression_am_oid(*newval, true)))
+		{
+			/*
+			 * When source == PGC_S_TEST, don't throw a hard error for a
+			 * nonexistent table access method, only a NOTICE. See comments in
+			 * guc.h.
+			 */
+			if (source == PGC_S_TEST)
+			{
+				ereport(NOTICE,
+						(errcode(ERRCODE_UNDEFINED_OBJECT),
+						 errmsg("compression access method \"%s\" does not exist",
+								*newval)));
+			}
+			else
+			{
+				GUC_check_errdetail("Compression access method \"%s\" does not exist.",
+									*newval);
+				return false;
+			}
+		}
+	}
+
+	return true;
+}
+
+/*
+ * assign_default_toast_compression: GUC assign_hook for default_toast_compression
+ */
+void
+assign_default_toast_compression(const char *newval, void *extra)
+{
+	/*
+	 * Invalidate setting, forcing it to be looked up as needed.
+	 * This avoids trying to do database access during GUC initialization,
+	 * or outside a transaction.
+	 */
+
+	default_toast_compression = NULL;
+fprintf(stderr, "set to null\n");
+}
+
+
+/*
+ * GetDefaultToastCompression -- get the OID of the current toast compression
+ *
+ * This exists to hide and optimize the use of the default_toast_compression
+ * GUC variable.
+ */
+Oid
+GetDefaultToastCompression(void)
+{
+	/* Avoid catalog access during bootstrap, and for default compression */
+	if (strcmp(default_toast_compression, DEFAULT_TOAST_COMPRESSION) == 0)
+		return PGLZ_COMPRESSION_AM_OID;
+
+	/* Cannot call get_compression_am_oid this early */
+	// if (IsBootstrapProcessingMode())
+		// return PGLZ_COMPRESSION_AM_OID;
+	Assert(!IsBootstrapProcessingMode());
+
+	/*
+	 * If cached value isn't valid, look up the current default value, caching
+	 * the result
+	 */
+	if (!OidIsValid(default_toast_compression_oid))
+		default_toast_compression_oid =
+			get_am_type_oid(default_toast_compression, AMTYPE_COMPRESSION,
+					false);
+
+	return default_toast_compression_oid;
+}
+
+/*
+ * InitializeAccessMethods: initialize module during InitPostgres.
+ *
+ * This is called after we are up enough to be able to do catalog lookups.
+ */
+void
+InitializeAccessMethods(void)
+{
+	if (IsBootstrapProcessingMode())
+		return;
+
+	/*
+	 * In normal mode, arrange for a callback on any syscache invalidation
+	 * of pg_am rows.
+	 */
+	CacheRegisterSyscacheCallback(AMOID,
+								  AccessMethodCallback,
+								  (Datum) 0);
+	/* Force cached default access method to be recomputed on next use */
+	// default_toast_compression_oid = InvalidOid;
+}
+
+/*
+ * AccessMethodCallback
+ *		Syscache inval callback function
+ */
+static void
+AccessMethodCallback(Datum arg, int cacheid, uint32 hashvalue)
+{
+	/* Force look up of compression oid on next use */
+	default_toast_compression_oid = false;
+}
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index dd81d5bf4e..72ba017814 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -11925,7 +11925,7 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
 		if (!IsStorageCompressible(tform->typstorage))
 			attTup->attcompression = InvalidOid;
 		else if (!OidIsValid(attTup->attcompression))
-			attTup->attcompression = DefaultCompressionOid;
+			attTup->attcompression = GetDefaultToastCompression();
 	}
 	else
 		attTup->attcompression = InvalidOid;
@@ -17762,7 +17762,7 @@ GetAttributeCompression(Form_pg_attribute att, char *compression)
 
 	/* fallback to default compression if it's not specified */
 	if (compression == NULL)
-		return DefaultCompressionOid;
+		return GetDefaultToastCompression();
 
 	amoid = get_compression_am_oid(compression, false);
 
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index e5965bc517..6a02bbd377 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -25,6 +25,7 @@
 #include "access/session.h"
 #include "access/sysattr.h"
 #include "access/tableam.h"
+#include "access/amapi.h"
 #include "access/xact.h"
 #include "access/xlog.h"
 #include "catalog/catalog.h"
@@ -1060,6 +1061,9 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
 	/* set default namespace search path */
 	InitializeSearchPath();
 
+	/* set callback for changes to pg_am */
+	InitializeAccessMethods();
+
 	/* initialize client encoding */
 	InitializeClientEncoding();
 
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index eafdb1118e..3a2b33fcd1 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -30,6 +30,7 @@
 #include <unistd.h>
 
 #include "access/commit_ts.h"
+#include "access/compressamapi.h"
 #include "access/gin.h"
 #include "access/rmgr.h"
 #include "access/tableam.h"
@@ -3915,6 +3916,17 @@ static struct config_string ConfigureNamesString[] =
 		check_default_table_access_method, NULL, NULL
 	},
 
+	{
+		{"default_toast_compression", PGC_USERSET, CLIENT_CONN_STATEMENT,
+			gettext_noop("Sets the default compression for new columns."),
+			NULL,
+			GUC_IS_NAME
+		},
+		&default_toast_compression,
+		DEFAULT_TOAST_COMPRESSION,
+		check_default_toast_compression, assign_default_toast_compression, NULL, NULL
+	},
+
 	{
 		{"default_tablespace", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the default tablespace to create tables and indexes in."),
diff --git a/src/include/access/amapi.h b/src/include/access/amapi.h
index d357ebb559..1513cafcf4 100644
--- a/src/include/access/amapi.h
+++ b/src/include/access/amapi.h
@@ -287,4 +287,6 @@ typedef struct IndexAmRoutine
 extern IndexAmRoutine *GetIndexAmRoutine(Oid amhandler);
 extern IndexAmRoutine *GetIndexAmRoutineByAmId(Oid amoid, bool noerror);
 
+void InitializeAccessMethods(void);
+
 #endif							/* AMAPI_H */
diff --git a/src/include/access/compressamapi.h b/src/include/access/compressamapi.h
index 5a8e23d926..d75a8e9df2 100644
--- a/src/include/access/compressamapi.h
+++ b/src/include/access/compressamapi.h
@@ -17,6 +17,7 @@
 
 #include "catalog/pg_am_d.h"
 #include "nodes/nodes.h"
+#include "utils/guc.h"
 
 /*
  * Built-in compression method-id.  The toast compression header will store
@@ -29,8 +30,17 @@ typedef enum CompressionId
 	LZ4_COMPRESSION_ID = 1
 } CompressionId;
 
-/* Use default compression method if it is not specified. */
+/* Default compression method if not specified. */
+#define DEFAULT_TOAST_COMPRESSION "pglz"
 #define DefaultCompressionOid	PGLZ_COMPRESSION_AM_OID
+
+/* GUC */
+extern char       *default_toast_compression;
+extern void assign_default_toast_compression(const char *newval, void *extra);
+extern bool check_default_toast_compression(char **newval, void **extra, GucSource source);
+
+extern Oid GetDefaultToastCompression(void);
+
 #define IsStorageCompressible(storage) ((storage) != TYPSTORAGE_PLAIN && \
 										(storage) != TYPSTORAGE_EXTERNAL)
 /* compression handler routines */
-- 
2.17.0


--m51xatjYGsM+13rf
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="v24-0004-default-to-with-lz4.patch"



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

* Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility
@ 2026-06-17 15:27  Nathan Bossart <[email protected]>
  1 sibling, 1 reply; 8+ messages in thread

From: Nathan Bossart @ 2026-06-17 15:27 UTC (permalink / raw)
  To: Baji Shaik <[email protected]>; +Cc: [email protected]; [email protected]

[RMT hat]

On Mon, May 11, 2026 at 05:21:57PM -0500, Baji Shaik wrote:
> Commit 45762084 [1] forced standard_conforming_strings to always be ON in
> PostgreSQL 19. The release notes mention this change, but neither the
> pg_dump/pg_restore reference pages nor the migration section note the
> implications for restoring older dump files.

There's an open item for this with Tom listed as the owner.  Tom, have you
had a chance to take a look at this?

-- 
nathan





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

* Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility
@ 2026-06-17 15:36  Tom Lane <[email protected]>
  parent: Nathan Bossart <[email protected]>
  0 siblings, 0 replies; 8+ messages in thread

From: Tom Lane @ 2026-06-17 15:36 UTC (permalink / raw)
  To: Nathan Bossart <[email protected]>; +Cc: Baji Shaik <[email protected]>; [email protected]

Nathan Bossart <[email protected]> writes:
> [RMT hat]
> On Mon, May 11, 2026 at 05:21:57PM -0500, Baji Shaik wrote:
>> Commit 45762084 [1] forced standard_conforming_strings to always be ON in
>> PostgreSQL 19. The release notes mention this change, but neither the
>> pg_dump/pg_restore reference pages nor the migration section note the
>> implications for restoring older dump files.

> There's an open item for this with Tom listed as the owner.  Tom, have you
> had a chance to take a look at this?

Oh, I didn't know this'd been assigned to me.  Will look.

			regards, tom lane






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

* Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility
@ 2026-06-17 17:29  Tom Lane <[email protected]>
  1 sibling, 2 replies; 8+ messages in thread

From: Tom Lane @ 2026-06-17 17:29 UTC (permalink / raw)
  To: Baji Shaik <[email protected]>; +Cc: [email protected]; Bruce Momjian <[email protected]>

Baji Shaik <[email protected]> writes:
> Commit 45762084 [1] forced standard_conforming_strings to always be ON in
> PostgreSQL 19. The release notes mention this change, but neither the
> pg_dump/pg_restore reference pages nor the migration section note the
> implications for restoring older dump files.

Okay, that's an oversight in the release notes for sure.  I'm more
skeptical about putting such information into the application
reference pages though.  It seems of only transient interest, but
any text we put there is likely to survive for many years.

Independently of that...

> The attached patch adds notes to:
> - pg_dump reference page (Notes section)
> - pg_restore reference page (Notes section)
> - release-19 migration section

I don't like this patch, because it presents much too rosy a view of
whether you can get away with not re-taking the dump.  It's unsafe
even with COPY-format data, because string literals in views, table
default expressions and constraints, function definitions, etc are all
at hazard of being misinterpreted.  I think we should just say it
won't work correctly, full stop.

I'm inclined to do more or less the attached, which also fixes what
seems a thinko in the existing text: we should say that clients still
support standard_conforming_strings = off, not
escape_string_warning = off.

			regards, tom lane



Attachments:

  [text/x-diff] v2-document-dump-restore-hazard.patch (1.1K, ../../[email protected]/2-v2-document-dump-restore-hazard.patch)
  download | inline diff:
diff --git a/doc/src/sgml/release-19.sgml b/doc/src/sgml/release-19.sgml
index 285bfa123f6..4943885cf01 100644
--- a/doc/src/sgml/release-19.sgml
+++ b/doc/src/sgml/release-19.sgml
@@ -109,7 +109,18 @@ Force <link linkend="guc-standard-conforming-strings"><varname>standard_conformi
 </para>
 
 <para>
-Server variable <varname>escape_string_warning</varname> has been removed as unnecessary.  Client applications still support <literal>escape_string_warning = off</literal> for compatibility with old servers.
+This carries some risk for upgrades: a dump file produced by
+pre-v19 <application>pg_dump</application> from a server that
+had <literal>standard_conforming_strings = off</literal>
+will not restore correctly into v19 or later.  Use
+v19 <application>pg_dump</application> to take the dump, or
+set <literal>standard_conforming_strings = on</literal>
+in the old server before dumping.
+Client applications still support operations with servers
+having <literal>standard_conforming_strings = off</literal>, for
+compatibility with old servers.
+Server variable <varname>escape_string_warning</varname> has been removed
+as unnecessary.
 </para>
 </listitem>
 


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

* Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility
@ 2026-06-17 19:55  Baji Shaik <[email protected]>
  parent: Tom Lane <[email protected]>
  1 sibling, 0 replies; 8+ messages in thread

From: Baji Shaik @ 2026-06-17 19:55 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: [email protected]; Bruce Momjian <[email protected]>

On Wed, Jun 17, 2026 at 12:29 PM Tom Lane <[email protected]> wrote:

> I'm inclined to do more or less the attached, which also fixes what
> seems a thinko in the existing text: we should say that clients still
> support standard_conforming_strings = off, not
> escape_string_warning = off.
>

Thanks Tom. Good point about views, defaults, and function bodies.
I was only thinking about the data rows. Your v2 looks good to me.

Thanks,
Baji Shaik.


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

* Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility
@ 2026-06-17 23:34  Bruce Momjian <[email protected]>
  parent: Tom Lane <[email protected]>
  1 sibling, 1 reply; 8+ messages in thread

From: Bruce Momjian @ 2026-06-17 23:34 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: Baji Shaik <[email protected]>; [email protected]

On Wed, Jun 17, 2026 at 01:29:09PM -0400, Tom Lane wrote:
> Baji Shaik <[email protected]> writes:
> > Commit 45762084 [1] forced standard_conforming_strings to always be ON in
> > PostgreSQL 19. The release notes mention this change, but neither the
> > pg_dump/pg_restore reference pages nor the migration section note the
> > implications for restoring older dump files.
> 
> Okay, that's an oversight in the release notes for sure.  I'm more
> skeptical about putting such information into the application
> reference pages though.  It seems of only transient interest, but
> any text we put there is likely to survive for many years.
> 
> Independently of that...
> 
> > The attached patch adds notes to:
> > - pg_dump reference page (Notes section)
> > - pg_restore reference page (Notes section)
> > - release-19 migration section
> 
> I don't like this patch, because it presents much too rosy a view of
> whether you can get away with not re-taking the dump.  It's unsafe
> even with COPY-format data, because string literals in views, table
> default expressions and constraints, function definitions, etc are all
> at hazard of being misinterpreted.  I think we should just say it
> won't work correctly, full stop.
> 
> I'm inclined to do more or less the attached, which also fixes what
> seems a thinko in the existing text: we should say that clients still
> support standard_conforming_strings = off, not
> escape_string_warning = off.

I have applied a slightly modified version to master, attached.  The git
commit suggested this problem, but I didn't understand the impact at the
time I read it.

-- 
  Bruce Momjian  <[email protected]>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Do not let urgent matters crowd out time for investment in the future.


Attachments:

  [text/x-diff] master.diff (1.3K, ../../[email protected]/2-master.diff)
  download | inline diff:
diff --git a/doc/src/sgml/release-19.sgml b/doc/src/sgml/release-19.sgml
index 285bfa123f6..911a198e676 100644
--- a/doc/src/sgml/release-19.sgml
+++ b/doc/src/sgml/release-19.sgml
@@ -109,7 +109,14 @@ Force <link linkend="guc-standard-conforming-strings"><varname>standard_conformi
 </para>
 
 <para>
-Server variable <varname>escape_string_warning</varname> has been removed as unnecessary.  Client applications still support <literal>escape_string_warning = off</literal> for compatibility with old servers.
+Dumps created using pre-<productname>PostgreSQL</productname> 19 versions of <link linkend="app-pgdump"><application>pg_dump</application></link>
+or <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>, and using <literal>standard_conforming_strings = off</literal>,
+will not properly load into <productname>PostgreSQL</productname> 19 and later servers.  Users should create dumps using <productname>PostgreSQL</productname> 19
+or later versions of these applications, or use <literal>standard_conforming_strings = on</literal>.
+</para>
+
+<para>
+Client applications still support <literal>escape_string_warning = off</literal> for compatibility with old servers.  The server variable <varname>escape_string_warning</varname> has been removed as unnecessary.
 </para>
 </listitem>
 


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

* Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility
@ 2026-06-18 15:34  Tom Lane <[email protected]>
  parent: Bruce Momjian <[email protected]>
  0 siblings, 1 reply; 8+ messages in thread

From: Tom Lane @ 2026-06-18 15:34 UTC (permalink / raw)
  To: Bruce Momjian <[email protected]>; +Cc: Baji Shaik <[email protected]>; [email protected]

Bruce Momjian <[email protected]> writes:
> On Wed, Jun 17, 2026 at 01:29:09PM -0400, Tom Lane wrote:
>> I'm inclined to do more or less the attached, which also fixes what
>> seems a thinko in the existing text: we should say that clients still
>> support standard_conforming_strings = off, not
>> escape_string_warning = off.

> I have applied a slightly modified version to master, attached.  The git
> commit suggested this problem, but I didn't understand the impact at the
> time I read it.

This didn't correct the point I complained of above: it still says

Client applications still support <literal>escape_string_warning = off</literal> for compatibility with old servers.

The notion of a client "supporting" escape_string_warning seems quite
meaningless.  I think this intended to say standard_conforming_strings =
off.

			regards, tom lane






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

* Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility
@ 2026-06-18 16:20  Bruce Momjian <[email protected]>
  parent: Tom Lane <[email protected]>
  0 siblings, 0 replies; 8+ messages in thread

From: Bruce Momjian @ 2026-06-18 16:20 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: Baji Shaik <[email protected]>; [email protected]

On Thu, Jun 18, 2026 at 11:34:46AM -0400, Tom Lane wrote:
> Bruce Momjian <[email protected]> writes:
> > On Wed, Jun 17, 2026 at 01:29:09PM -0400, Tom Lane wrote:
> >> I'm inclined to do more or less the attached, which also fixes what
> >> seems a thinko in the existing text: we should say that clients still
> >> support standard_conforming_strings = off, not
> >> escape_string_warning = off.
> 
> > I have applied a slightly modified version to master, attached.  The git
> > commit suggested this problem, but I didn't understand the impact at the
> > time I read it.
> 
> This didn't correct the point I complained of above: it still says
> 
> Client applications still support <literal>escape_string_warning = off</literal> for compatibility with old servers.
> 
> The notion of a client "supporting" escape_string_warning seems quite
> meaningless.  I think this intended to say standard_conforming_strings =
> off.

Ah, yes, I see my mistake now.  Attached patch applied using your wording.

-- 
  Bruce Momjian  <[email protected]>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Do not let urgent matters crowd out time for investment in the future.


Attachments:

  [text/x-diff] master.diff (789B, ../../[email protected]/2-master.diff)
  download | inline diff:
diff --git a/doc/src/sgml/release-19.sgml b/doc/src/sgml/release-19.sgml
index 7c73cba11b7..96a09d6cd6e 100644
--- a/doc/src/sgml/release-19.sgml
+++ b/doc/src/sgml/release-19.sgml
@@ -116,7 +116,7 @@ or later versions of these applications, or use <literal>standard_conforming_str
 </para>
 
 <para>
-Client applications still support <literal>escape_string_warning = off</literal> for compatibility with old servers.  The server variable <varname>escape_string_warning</varname> has been removed as unnecessary.
+Client applications still support operations with servers having <literal>standard_conforming_strings = off</literal>, for compatibility with old servers.  The server variable <varname>escape_string_warning</varname> has been removed as unnecessary.
 </para>
 </listitem>
 


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


end of thread, other threads:[~2026-06-18 16:20 UTC | newest]

Thread overview: 8+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2021-01-30 03:37 [PATCH v24 03/10] Add default_toast_compression GUC Justin Pryzby <[email protected]>
2026-06-17 15:27 ` Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility Nathan Bossart <[email protected]>
2026-06-17 15:36   ` Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility Tom Lane <[email protected]>
2026-06-17 17:29 ` Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility Tom Lane <[email protected]>
2026-06-17 19:55   ` Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility Baji Shaik <[email protected]>
2026-06-17 23:34   ` Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility Bruce Momjian <[email protected]>
2026-06-18 15:34     ` Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility Tom Lane <[email protected]>
2026-06-18 16:20       ` Re: [PATCH] Doc: document standard_conforming_strings dump/restore incompatibility Bruce Momjian <[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