From b7a9db1c488c0cfce926db6f3801ea3171be6094 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 11 Jan 2012 19:02:59 +0000 Subject: [PATCH] [#1060] Improve debug logging of H2 arrays. The syntax is not ARRAY[1, 2], but (1, 2) --- jOOQ/src/main/java/org/jooq/impl/Val.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Val.java b/jOOQ/src/main/java/org/jooq/impl/Val.java index 11fa2bd9b0..abe90582d4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Val.java +++ b/jOOQ/src/main/java/org/jooq/impl/Val.java @@ -38,6 +38,7 @@ package org.jooq.impl; import static java.util.Arrays.asList; import static org.jooq.SQLDialect.DB2; import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.INGRES; import static org.jooq.SQLDialect.POSTGRES; @@ -115,7 +116,7 @@ class Val extends AbstractField implements Param, BindingProvider { // [#722] TODO This is probably not entirely right. case INGRES: - // [#1029] Postgres and [#632] Sybase need explicit casting + // [#1029] Postgres and [#632] Sybase need explicit casting // in very rare cases. case POSTGRES: case SYBASE: { @@ -238,8 +239,17 @@ class Val extends AbstractField implements Param, BindingProvider { context.sql(val.toString()); } else if (type.isArray()) { - context.sql("ARRAY") - .sql(Arrays.toString((Object[]) val)); + + // H2 renders arrays as tuples + if (context.getDialect() == H2) { + context.sql(Arrays.toString((Object[]) val).replaceAll("\\[([^]]*)\\]", "($1)")); + } + + // By default, render HSQLDB / POSTGRES syntax + else { + context.sql("ARRAY") + .sql(Arrays.toString((Object[]) val)); + } } else if (ArrayRecord.class.isAssignableFrom(type)) { context.sql(val.toString());