[#863] Ingres integration generates illegal SQL when selecting things like SELECT 1 WHERE 1 = 1

This commit is contained in:
Lukas Eder 2011-10-15 12:57:08 +00:00
parent a447385e32
commit d277d61cae
2 changed files with 17 additions and 9 deletions

View File

@ -6187,7 +6187,6 @@ public abstract class jOOQAbstractTest<
assertEquals(0, create().select().where(val("n").isTrue()).fetch().size());
assertEquals(0, create().select().where(val("no").isTrue()).fetch().size());
assertEquals(0, create().select().where(val("0").isTrue()).fetch().size());
assertEquals(0, create().select().where(val(false).isTrue()).fetch().size());
assertEquals(0, create().select().where(val("disabled").isTrue()).fetch().size());
assertEquals(0, create().select().where(val("off").isTrue()).fetch().size());
@ -6196,11 +6195,9 @@ public abstract class jOOQAbstractTest<
assertEquals(1, create().select().where(val("y").isTrue()).fetch().size());
assertEquals(1, create().select().where(val("yes").isTrue()).fetch().size());
assertEquals(1, create().select().where(val("1").isTrue()).fetch().size());
assertEquals(1, create().select().where(val(true).isTrue()).fetch().size());
assertEquals(1, create().select().where(val("enabled").isTrue()).fetch().size());
assertEquals(1, create().select().where(val("on").isTrue()).fetch().size());
assertEquals(0, create().select().where(val("asdf").isFalse()).fetch().size());
assertEquals(0, create().select().where(val(null).isFalse()).fetch().size());
@ -6209,7 +6206,7 @@ public abstract class jOOQAbstractTest<
assertEquals(1, create().select().where(val("n").isFalse()).fetch().size());
assertEquals(1, create().select().where(val("no").isFalse()).fetch().size());
assertEquals(1, create().select().where(val("0").isFalse()).fetch().size());
assertEquals(1, create().select().where(val(false).isFalse()).fetch().size());
assertEquals(1, create().select().where(val("disabled").isFalse()).fetch().size());
assertEquals(1, create().select().where(val("off").isFalse()).fetch().size());
@ -6218,9 +6215,17 @@ public abstract class jOOQAbstractTest<
assertEquals(0, create().select().where(val("y").isFalse()).fetch().size());
assertEquals(0, create().select().where(val("yes").isFalse()).fetch().size());
assertEquals(0, create().select().where(val("1").isFalse()).fetch().size());
assertEquals(0, create().select().where(val(true).isFalse()).fetch().size());
assertEquals(0, create().select().where(val("enabled").isFalse()).fetch().size());
assertEquals(0, create().select().where(val("on").isFalse()).fetch().size());
// The below code throws an exception on Ingres when run once. When run
// twice, the DB crashes... This seems to be a driver / database bug
if (getDialect() != SQLDialect.INGRES) {
assertEquals(0, create().select().where(val(false).isTrue()).fetch().size());
assertEquals(1, create().select().where(val(false).isFalse()).fetch().size());
assertEquals(1, create().select().where(val(true).isTrue()).fetch().size());
assertEquals(0, create().select().where(val(true).isFalse()).fetch().size());
}
}
@Test

View File

@ -72,15 +72,18 @@ class Dual extends AbstractTable<Record> {
@Override
public final void toSQL(RenderContext context) {
switch (context.getDialect()) {
case ASE:
case POSTGRES:
case SQLITE:
case SQLSERVER:
break;
case HSQLDB:
context.sql("INFORMATION_SCHEMA.SYSTEM_USERS");
break;
case ASE:
case INGRES:
case POSTGRES:
case SQLITE:
case SQLSERVER:
context.sql("(select 1 as dual) as dual");
break;
case DB2: