From 3c520c03b65f617f10eafda881ca7661fc9175f5 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 4 Jan 2013 12:09:20 +0100 Subject: [PATCH] [#2082] Oracle PIVOT expression doesn't bind any variables of a derived table being pivoted --- .../src/org/jooq/test/_/testcases/ExoticTests.java | 12 ++++++++++-- jOOQ/src/main/java/org/jooq/impl/Pivot.java | 6 +++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/ExoticTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/ExoticTests.java index 21d60c74fc..8310f7f580 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/ExoticTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/ExoticTests.java @@ -45,7 +45,6 @@ import static org.jooq.impl.Factory.connectByRoot; import static org.jooq.impl.Factory.count; import static org.jooq.impl.Factory.field; import static org.jooq.impl.Factory.fieldByName; -import static org.jooq.impl.Factory.inline; import static org.jooq.impl.Factory.level; import static org.jooq.impl.Factory.lower; import static org.jooq.impl.Factory.max; @@ -315,13 +314,22 @@ extends BaseTest r2 = create().select() - .from(table(select(level().as("lvl")).connectBy(level().le(inline(5)))) + .from(table(select(level().as("lvl")).connectBy(level().le(5))) .pivot(max(fieldByName("lvl"))) .on(fieldByName("lvl")) .in(1, 2, 3, 4, 5) .as("t", "a", "b", "c", "d", "e")) .fetch(); + + assertEquals(1, r2.size()); + assertEquals(5, r2.getFields().size()); + assertEquals(1, r2.getValue(0, "a", Integer.class)); + assertEquals(2, r2.getValue(0, "b", Integer.class)); + assertEquals(3, r2.getValue(0, "c", Integer.class)); + assertEquals(4, r2.getValue(0, "d", Integer.class)); + assertEquals(5, r2.getValue(0, "e", Integer.class)); } @Test diff --git a/jOOQ/src/main/java/org/jooq/impl/Pivot.java b/jOOQ/src/main/java/org/jooq/impl/Pivot.java index 727cd63f22..f819051ad9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Pivot.java +++ b/jOOQ/src/main/java/org/jooq/impl/Pivot.java @@ -248,7 +248,11 @@ implements @Override public void bind(BindContext context) throws DataAccessException { - context.bind(table); + boolean declareTables = context.declareFields(); + + context.declareTables(true) + .bind(table) + .declareTables(declareTables); } }