diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBindContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBindContext.java index dede680594..94cb3dfed2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBindContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBindContext.java @@ -332,7 +332,7 @@ class DefaultBindContext extends AbstractBindContext { } else { sb.append("\""); - sb.append(o.toString().replaceAll("\"", "\"\"")); + sb.append(o.toString().replace("\\", "\\\\").replace("\"", "\\\"")); sb.append("\""); } diff --git a/jOOQ/src/test/java/org/jooq/impl/PostgresArrayEscapingTest.java b/jOOQ/src/test/java/org/jooq/impl/PostgresArrayEscapingTest.java index 2dd7f57943..effe7653d1 100644 --- a/jOOQ/src/test/java/org/jooq/impl/PostgresArrayEscapingTest.java +++ b/jOOQ/src/test/java/org/jooq/impl/PostgresArrayEscapingTest.java @@ -30,4 +30,14 @@ public class PostgresArrayEscapingTest { public void nulls() { assertEquals("{null}", DefaultBindContext.postgresArrayString(new Object[]{null})); } + + @Test + public void stringsWithQuotesShouldBeEscaped() { + assertEquals("{\"\\\"foo\"}", DefaultBindContext.postgresArrayString(new String[]{"\"foo"})); + } + + @Test + public void stringsWithBackslashesShouldBeEncoded() { + assertEquals("{\"\\\\foo\"}", DefaultBindContext.postgresArrayString(new String[]{"\\foo"})); + } }